Subversion Repositories Applications.papyrus

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1317 → Rev 1318

/trunk/api/js/dojo/README
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/README
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/Storage_version6.swf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/Storage_version6.swf
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/build.txt
New file
0,0 → 1,33
Files baked into this build:
dojoGuardStart.js
../src/bootstrap1.js
../src/loader.js
dojoGuardEnd.js
../src/hostenv_browser.js
../src/string/common.js
../src/string.js
../src/lang/common.js
../src/lang/extras.js
../src/io/common.js
../src/lang/array.js
../src/lang/func.js
../src/string/extras.js
../src/dom.js
../src/undo/browser.js
../src/io/BrowserIO.js
../src/io/cookie.js
../src/io/__package__.js
../src/event/common.js
../src/event/topic.js
../src/event/browser.js
../src/event/__package__.js
../src/gfx/color.js
../src/lfx/Animation.js
../src/html/common.js
../src/uri/Uri.js
../src/html/style.js
../src/html/display.js
../src/html/color.js
../src/html/layout.js
../src/lfx/html.js
../src/lfx/__package__.js
/trunk/api/js/dojo/Storage_version8.swf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/Storage_version8.swf
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/storage_dialog.swf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/storage_dialog.swf
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/LICENSE
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/LICENSE
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/flash6_gateway.swf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/flash6_gateway.swf
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/DojoFileStorageProvider.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/DojoFileStorageProvider.jar
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/dojo.js
New file
0,0 → 1,6411
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
/*
This is a compiled version of Dojo, built for deployment and not for
development. To get an editable version, please visit:
 
http://dojotoolkit.org
 
for documentation and information on getting the source.
*/
 
if(typeof dojo=="undefined"){
var dj_global=this;
var dj_currentContext=this;
function dj_undef(_1,_2){
return (typeof (_2||dj_currentContext)[_1]=="undefined");
}
if(dj_undef("djConfig",this)){
var djConfig={};
}
if(dj_undef("dojo",this)){
var dojo={};
}
dojo.global=function(){
return dj_currentContext;
};
dojo.locale=djConfig.locale;
dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
with(dojo.version){
return major+"."+minor+"."+patch+flag+" ("+revision+")";
}
}};
dojo.evalProp=function(_3,_4,_5){
if((!_4)||(!_3)){
return undefined;
}
if(!dj_undef(_3,_4)){
return _4[_3];
}
return (_5?(_4[_3]={}):undefined);
};
dojo.parseObjPath=function(_6,_7,_8){
var _9=(_7||dojo.global());
var _a=_6.split(".");
var _b=_a.pop();
for(var i=0,l=_a.length;i<l&&_9;i++){
_9=dojo.evalProp(_a[i],_9,_8);
}
return {obj:_9,prop:_b};
};
dojo.evalObjPath=function(_e,_f){
if(typeof _e!="string"){
return dojo.global();
}
if(_e.indexOf(".")==-1){
return dojo.evalProp(_e,dojo.global(),_f);
}
var ref=dojo.parseObjPath(_e,dojo.global(),_f);
if(ref){
return dojo.evalProp(ref.prop,ref.obj,_f);
}
return null;
};
dojo.errorToString=function(_11){
if(!dj_undef("message",_11)){
return _11.message;
}else{
if(!dj_undef("description",_11)){
return _11.description;
}else{
return _11;
}
}
};
dojo.raise=function(_12,_13){
if(_13){
_12=_12+": "+dojo.errorToString(_13);
}else{
_12=dojo.errorToString(_12);
}
try{
if(djConfig.isDebug){
dojo.hostenv.println("FATAL exception raised: "+_12);
}
}
catch(e){
}
throw _13||Error(_12);
};
dojo.debug=function(){
};
dojo.debugShallow=function(obj){
};
dojo.profile={start:function(){
},end:function(){
},stop:function(){
},dump:function(){
}};
function dj_eval(_15){
return dj_global.eval?dj_global.eval(_15):eval(_15);
}
dojo.unimplemented=function(_16,_17){
var _18="'"+_16+"' not implemented";
if(_17!=null){
_18+=" "+_17;
}
dojo.raise(_18);
};
dojo.deprecated=function(_19,_1a,_1b){
var _1c="DEPRECATED: "+_19;
if(_1a){
_1c+=" "+_1a;
}
if(_1b){
_1c+=" -- will be removed in version: "+_1b;
}
dojo.debug(_1c);
};
dojo.render=(function(){
function vscaffold(_1d,_1e){
var tmp={capable:false,support:{builtin:false,plugin:false},prefixes:_1d};
for(var i=0;i<_1e.length;i++){
tmp[_1e[i]]=false;
}
return tmp;
}
return {name:"",ver:dojo.version,os:{win:false,linux:false,osx:false},html:vscaffold(["html"],["ie","opera","khtml","safari","moz"]),svg:vscaffold(["svg"],["corel","adobe","batik"]),vml:vscaffold(["vml"],["ie"]),swf:vscaffold(["Swf","Flash","Mm"],["mm"]),swt:vscaffold(["Swt"],["ibm"])};
})();
dojo.hostenv=(function(){
var _21={isDebug:false,allowQueryConfig:false,baseScriptUri:"",baseRelativePath:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,delayMozLoadingFix:false,searchIds:[],parseWidgets:true};
if(typeof djConfig=="undefined"){
djConfig=_21;
}else{
for(var _22 in _21){
if(typeof djConfig[_22]=="undefined"){
djConfig[_22]=_21[_22];
}
}
}
return {name_:"(unset)",version_:"(unset)",getName:function(){
return this.name_;
},getVersion:function(){
return this.version_;
},getText:function(uri){
dojo.unimplemented("getText","uri="+uri);
}};
})();
dojo.hostenv.getBaseScriptUri=function(){
if(djConfig.baseScriptUri.length){
return djConfig.baseScriptUri;
}
var uri=new String(djConfig.libraryScriptUri||djConfig.baseRelativePath);
if(!uri){
dojo.raise("Nothing returned by getLibraryScriptUri(): "+uri);
}
var _25=uri.lastIndexOf("/");
djConfig.baseScriptUri=djConfig.baseRelativePath;
return djConfig.baseScriptUri;
};
(function(){
var _26={pkgFileName:"__package__",loading_modules_:{},loaded_modules_:{},addedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modulePrefixes_:{dojo:{name:"dojo",value:"src"}},setModulePrefix:function(_27,_28){
this.modulePrefixes_[_27]={name:_27,value:_28};
},moduleHasPrefix:function(_29){
var mp=this.modulePrefixes_;
return Boolean(mp[_29]&&mp[_29].value);
},getModulePrefix:function(_2b){
if(this.moduleHasPrefix(_2b)){
return this.modulePrefixes_[_2b].value;
}
return _2b;
},getTextStack:[],loadUriStack:[],loadedUris:[],post_load_:false,modulesLoadedListeners:[],unloadListeners:[],loadNotifying:false};
for(var _2c in _26){
dojo.hostenv[_2c]=_26[_2c];
}
})();
dojo.hostenv.loadPath=function(_2d,_2e,cb){
var uri;
if(_2d.charAt(0)=="/"||_2d.match(/^\w+:/)){
uri=_2d;
}else{
uri=this.getBaseScriptUri()+_2d;
}
if(djConfig.cacheBust&&dojo.render.html.capable){
uri+="?"+String(djConfig.cacheBust).replace(/\W+/g,"");
}
try{
return !_2e?this.loadUri(uri,cb):this.loadUriAndCheck(uri,_2e,cb);
}
catch(e){
dojo.debug(e);
return false;
}
};
dojo.hostenv.loadUri=function(uri,cb){
if(this.loadedUris[uri]){
return true;
}
var _33=this.getText(uri,null,true);
if(!_33){
return false;
}
this.loadedUris[uri]=true;
if(cb){
_33="("+_33+")";
}
var _34=dj_eval(_33);
if(cb){
cb(_34);
}
return true;
};
dojo.hostenv.loadUriAndCheck=function(uri,_36,cb){
var ok=true;
try{
ok=this.loadUri(uri,cb);
}
catch(e){
dojo.debug("failed loading ",uri," with error: ",e);
}
return Boolean(ok&&this.findModule(_36,false));
};
dojo.loaded=function(){
};
dojo.unloaded=function(){
};
dojo.hostenv.loaded=function(){
this.loadNotifying=true;
this.post_load_=true;
var mll=this.modulesLoadedListeners;
for(var x=0;x<mll.length;x++){
mll[x]();
}
this.modulesLoadedListeners=[];
this.loadNotifying=false;
dojo.loaded();
};
dojo.hostenv.unloaded=function(){
var mll=this.unloadListeners;
while(mll.length){
(mll.pop())();
}
dojo.unloaded();
};
dojo.addOnLoad=function(obj,_3d){
var dh=dojo.hostenv;
if(arguments.length==1){
dh.modulesLoadedListeners.push(obj);
}else{
if(arguments.length>1){
dh.modulesLoadedListeners.push(function(){
obj[_3d]();
});
}
}
if(dh.post_load_&&dh.inFlightCount==0&&!dh.loadNotifying){
dh.callLoaded();
}
};
dojo.addOnUnload=function(obj,_40){
var dh=dojo.hostenv;
if(arguments.length==1){
dh.unloadListeners.push(obj);
}else{
if(arguments.length>1){
dh.unloadListeners.push(function(){
obj[_40]();
});
}
}
};
dojo.hostenv.modulesLoaded=function(){
if(this.post_load_){
return;
}
if(this.loadUriStack.length==0&&this.getTextStack.length==0){
if(this.inFlightCount>0){
dojo.debug("files still in flight!");
return;
}
dojo.hostenv.callLoaded();
}
};
dojo.hostenv.callLoaded=function(){
if(typeof setTimeout=="object"||(djConfig["useXDomain"]&&dojo.render.html.opera)){
setTimeout("dojo.hostenv.loaded();",0);
}else{
dojo.hostenv.loaded();
}
};
dojo.hostenv.getModuleSymbols=function(_42){
var _43=_42.split(".");
for(var i=_43.length;i>0;i--){
var _45=_43.slice(0,i).join(".");
if((i==1)&&!this.moduleHasPrefix(_45)){
_43[0]="../"+_43[0];
}else{
var _46=this.getModulePrefix(_45);
if(_46!=_45){
_43.splice(0,i,_46);
break;
}
}
}
return _43;
};
dojo.hostenv._global_omit_module_check=false;
dojo.hostenv.loadModule=function(_47,_48,_49){
if(!_47){
return;
}
_49=this._global_omit_module_check||_49;
var _4a=this.findModule(_47,false);
if(_4a){
return _4a;
}
if(dj_undef(_47,this.loading_modules_)){
this.addedToLoadingCount.push(_47);
}
this.loading_modules_[_47]=1;
var _4b=_47.replace(/\./g,"/")+".js";
var _4c=_47.split(".");
var _4d=this.getModuleSymbols(_47);
var _4e=((_4d[0].charAt(0)!="/")&&!_4d[0].match(/^\w+:/));
var _4f=_4d[_4d.length-1];
var ok;
if(_4f=="*"){
_47=_4c.slice(0,-1).join(".");
while(_4d.length){
_4d.pop();
_4d.push(this.pkgFileName);
_4b=_4d.join("/")+".js";
if(_4e&&_4b.charAt(0)=="/"){
_4b=_4b.slice(1);
}
ok=this.loadPath(_4b,!_49?_47:null);
if(ok){
break;
}
_4d.pop();
}
}else{
_4b=_4d.join("/")+".js";
_47=_4c.join(".");
var _51=!_49?_47:null;
ok=this.loadPath(_4b,_51);
if(!ok&&!_48){
_4d.pop();
while(_4d.length){
_4b=_4d.join("/")+".js";
ok=this.loadPath(_4b,_51);
if(ok){
break;
}
_4d.pop();
_4b=_4d.join("/")+"/"+this.pkgFileName+".js";
if(_4e&&_4b.charAt(0)=="/"){
_4b=_4b.slice(1);
}
ok=this.loadPath(_4b,_51);
if(ok){
break;
}
}
}
if(!ok&&!_49){
dojo.raise("Could not load '"+_47+"'; last tried '"+_4b+"'");
}
}
if(!_49&&!this["isXDomain"]){
_4a=this.findModule(_47,false);
if(!_4a){
dojo.raise("symbol '"+_47+"' is not defined after loading '"+_4b+"'");
}
}
return _4a;
};
dojo.hostenv.startPackage=function(_52){
var _53=String(_52);
var _54=_53;
var _55=_52.split(/\./);
if(_55[_55.length-1]=="*"){
_55.pop();
_54=_55.join(".");
}
var _56=dojo.evalObjPath(_54,true);
this.loaded_modules_[_53]=_56;
this.loaded_modules_[_54]=_56;
return _56;
};
dojo.hostenv.findModule=function(_57,_58){
var lmn=String(_57);
if(this.loaded_modules_[lmn]){
return this.loaded_modules_[lmn];
}
if(_58){
dojo.raise("no loaded module named '"+_57+"'");
}
return null;
};
dojo.kwCompoundRequire=function(_5a){
var _5b=_5a["common"]||[];
var _5c=_5a[dojo.hostenv.name_]?_5b.concat(_5a[dojo.hostenv.name_]||[]):_5b.concat(_5a["default"]||[]);
for(var x=0;x<_5c.length;x++){
var _5e=_5c[x];
if(_5e.constructor==Array){
dojo.hostenv.loadModule.apply(dojo.hostenv,_5e);
}else{
dojo.hostenv.loadModule(_5e);
}
}
};
dojo.require=function(_5f){
dojo.hostenv.loadModule.apply(dojo.hostenv,arguments);
};
dojo.requireIf=function(_60,_61){
var _62=arguments[0];
if((_62===true)||(_62=="common")||(_62&&dojo.render[_62].capable)){
var _63=[];
for(var i=1;i<arguments.length;i++){
_63.push(arguments[i]);
}
dojo.require.apply(dojo,_63);
}
};
dojo.requireAfterIf=dojo.requireIf;
dojo.provide=function(_65){
return dojo.hostenv.startPackage.apply(dojo.hostenv,arguments);
};
dojo.registerModulePath=function(_66,_67){
return dojo.hostenv.setModulePrefix(_66,_67);
};
if(djConfig["modulePaths"]){
for(var param in djConfig["modulePaths"]){
dojo.registerModulePath(param,djConfig["modulePaths"][param]);
}
}
dojo.setModulePrefix=function(_68,_69){
dojo.deprecated("dojo.setModulePrefix(\""+_68+"\", \""+_69+"\")","replaced by dojo.registerModulePath","0.5");
return dojo.registerModulePath(_68,_69);
};
dojo.exists=function(obj,_6b){
var p=_6b.split(".");
for(var i=0;i<p.length;i++){
if(!obj[p[i]]){
return false;
}
obj=obj[p[i]];
}
return true;
};
dojo.hostenv.normalizeLocale=function(_6e){
var _6f=_6e?_6e.toLowerCase():dojo.locale;
if(_6f=="root"){
_6f="ROOT";
}
return _6f;
};
dojo.hostenv.searchLocalePath=function(_70,_71,_72){
_70=dojo.hostenv.normalizeLocale(_70);
var _73=_70.split("-");
var _74=[];
for(var i=_73.length;i>0;i--){
_74.push(_73.slice(0,i).join("-"));
}
_74.push(false);
if(_71){
_74.reverse();
}
for(var j=_74.length-1;j>=0;j--){
var loc=_74[j]||"ROOT";
var _78=_72(loc);
if(_78){
break;
}
}
};
dojo.hostenv.localesGenerated;
dojo.hostenv.registerNlsPrefix=function(){
dojo.registerModulePath("nls","nls");
};
dojo.hostenv.preloadLocalizations=function(){
if(dojo.hostenv.localesGenerated){
dojo.hostenv.registerNlsPrefix();
function preload(_79){
_79=dojo.hostenv.normalizeLocale(_79);
dojo.hostenv.searchLocalePath(_79,true,function(loc){
for(var i=0;i<dojo.hostenv.localesGenerated.length;i++){
if(dojo.hostenv.localesGenerated[i]==loc){
dojo["require"]("nls.dojo_"+loc);
return true;
}
}
return false;
});
}
preload();
var _7c=djConfig.extraLocale||[];
for(var i=0;i<_7c.length;i++){
preload(_7c[i]);
}
}
dojo.hostenv.preloadLocalizations=function(){
};
};
dojo.requireLocalization=function(_7e,_7f,_80,_81){
dojo.hostenv.preloadLocalizations();
var _82=dojo.hostenv.normalizeLocale(_80);
var _83=[_7e,"nls",_7f].join(".");
var _84="";
if(_81){
var _85=_81.split(",");
for(var i=0;i<_85.length;i++){
if(_82.indexOf(_85[i])==0){
if(_85[i].length>_84.length){
_84=_85[i];
}
}
}
if(!_84){
_84="ROOT";
}
}
var _87=_81?_84:_82;
var _88=dojo.hostenv.findModule(_83);
var _89=null;
if(_88){
if(djConfig.localizationComplete&&_88._built){
return;
}
var _8a=_87.replace("-","_");
var _8b=_83+"."+_8a;
_89=dojo.hostenv.findModule(_8b);
}
if(!_89){
_88=dojo.hostenv.startPackage(_83);
var _8c=dojo.hostenv.getModuleSymbols(_7e);
var _8d=_8c.concat("nls").join("/");
var _8e;
dojo.hostenv.searchLocalePath(_87,_81,function(loc){
var _90=loc.replace("-","_");
var _91=_83+"."+_90;
var _92=false;
if(!dojo.hostenv.findModule(_91)){
dojo.hostenv.startPackage(_91);
var _93=[_8d];
if(loc!="ROOT"){
_93.push(loc);
}
_93.push(_7f);
var _94=_93.join("/")+".js";
_92=dojo.hostenv.loadPath(_94,null,function(_95){
var _96=function(){
};
_96.prototype=_8e;
_88[_90]=new _96();
for(var j in _95){
_88[_90][j]=_95[j];
}
});
}else{
_92=true;
}
if(_92&&_88[_90]){
_8e=_88[_90];
}else{
_88[_90]=_8e;
}
if(_81){
return true;
}
});
}
if(_81&&_82!=_84){
_88[_82.replace("-","_")]=_88[_84.replace("-","_")];
}
};
(function(){
var _98=djConfig.extraLocale;
if(_98){
if(!_98 instanceof Array){
_98=[_98];
}
var req=dojo.requireLocalization;
dojo.requireLocalization=function(m,b,_9c,_9d){
req(m,b,_9c,_9d);
if(_9c){
return;
}
for(var i=0;i<_98.length;i++){
req(m,b,_98[i],_9d);
}
};
}
})();
}
if(typeof window!="undefined"){
(function(){
if(djConfig.allowQueryConfig){
var _9f=document.location.toString();
var _a0=_9f.split("?",2);
if(_a0.length>1){
var _a1=_a0[1];
var _a2=_a1.split("&");
for(var x in _a2){
var sp=_a2[x].split("=");
if((sp[0].length>9)&&(sp[0].substr(0,9)=="djConfig.")){
var opt=sp[0].substr(9);
try{
djConfig[opt]=eval(sp[1]);
}
catch(e){
djConfig[opt]=sp[1];
}
}
}
}
}
if(((djConfig["baseScriptUri"]=="")||(djConfig["baseRelativePath"]==""))&&(document&&document.getElementsByTagName)){
var _a6=document.getElementsByTagName("script");
var _a7=/(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
for(var i=0;i<_a6.length;i++){
var src=_a6[i].getAttribute("src");
if(!src){
continue;
}
var m=src.match(_a7);
if(m){
var _ab=src.substring(0,m.index);
if(src.indexOf("bootstrap1")>-1){
_ab+="../";
}
if(!this["djConfig"]){
djConfig={};
}
if(djConfig["baseScriptUri"]==""){
djConfig["baseScriptUri"]=_ab;
}
if(djConfig["baseRelativePath"]==""){
djConfig["baseRelativePath"]=_ab;
}
break;
}
}
}
var dr=dojo.render;
var drh=dojo.render.html;
var drs=dojo.render.svg;
var dua=(drh.UA=navigator.userAgent);
var dav=(drh.AV=navigator.appVersion);
var t=true;
var f=false;
drh.capable=t;
drh.support.builtin=t;
dr.ver=parseFloat(drh.AV);
dr.os.mac=dav.indexOf("Macintosh")>=0;
dr.os.win=dav.indexOf("Windows")>=0;
dr.os.linux=dav.indexOf("X11")>=0;
drh.opera=dua.indexOf("Opera")>=0;
drh.khtml=(dav.indexOf("Konqueror")>=0)||(dav.indexOf("Safari")>=0);
drh.safari=dav.indexOf("Safari")>=0;
var _b3=dua.indexOf("Gecko");
drh.mozilla=drh.moz=(_b3>=0)&&(!drh.khtml);
if(drh.mozilla){
drh.geckoVersion=dua.substring(_b3+6,_b3+14);
}
drh.ie=(document.all)&&(!drh.opera);
drh.ie50=drh.ie&&dav.indexOf("MSIE 5.0")>=0;
drh.ie55=drh.ie&&dav.indexOf("MSIE 5.5")>=0;
drh.ie60=drh.ie&&dav.indexOf("MSIE 6.0")>=0;
drh.ie70=drh.ie&&dav.indexOf("MSIE 7.0")>=0;
var cm=document["compatMode"];
drh.quirks=(cm=="BackCompat")||(cm=="QuirksMode")||drh.ie55||drh.ie50;
dojo.locale=dojo.locale||(drh.ie?navigator.userLanguage:navigator.language).toLowerCase();
dr.vml.capable=drh.ie;
drs.capable=f;
drs.support.plugin=f;
drs.support.builtin=f;
var _b5=window["document"];
var tdi=_b5["implementation"];
if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg","1.0"))){
drs.capable=t;
drs.support.builtin=t;
drs.support.plugin=f;
}
if(drh.safari){
var tmp=dua.split("AppleWebKit/")[1];
var ver=parseFloat(tmp.split(" ")[0]);
if(ver>=420){
drs.capable=t;
drs.support.builtin=t;
drs.support.plugin=f;
}
}else{
}
})();
dojo.hostenv.startPackage("dojo.hostenv");
dojo.render.name=dojo.hostenv.name_="browser";
dojo.hostenv.searchIds=[];
dojo.hostenv._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
dojo.hostenv.getXmlhttpObject=function(){
var _b9=null;
var _ba=null;
try{
_b9=new XMLHttpRequest();
}
catch(e){
}
if(!_b9){
for(var i=0;i<3;++i){
var _bc=dojo.hostenv._XMLHTTP_PROGIDS[i];
try{
_b9=new ActiveXObject(_bc);
}
catch(e){
_ba=e;
}
if(_b9){
dojo.hostenv._XMLHTTP_PROGIDS=[_bc];
break;
}
}
}
if(!_b9){
return dojo.raise("XMLHTTP not available",_ba);
}
return _b9;
};
dojo.hostenv._blockAsync=false;
dojo.hostenv.getText=function(uri,_be,_bf){
if(!_be){
this._blockAsync=true;
}
var _c0=this.getXmlhttpObject();
function isDocumentOk(_c1){
var _c2=_c1["status"];
return Boolean((!_c2)||((200<=_c2)&&(300>_c2))||(_c2==304));
}
if(_be){
var _c3=this,_c4=null,gbl=dojo.global();
var xhr=dojo.evalObjPath("dojo.io.XMLHTTPTransport");
_c0.onreadystatechange=function(){
if(_c4){
gbl.clearTimeout(_c4);
_c4=null;
}
if(_c3._blockAsync||(xhr&&xhr._blockAsync)){
_c4=gbl.setTimeout(function(){
_c0.onreadystatechange.apply(this);
},10);
}else{
if(4==_c0.readyState){
if(isDocumentOk(_c0)){
_be(_c0.responseText);
}
}
}
};
}
_c0.open("GET",uri,_be?true:false);
try{
_c0.send(null);
if(_be){
return null;
}
if(!isDocumentOk(_c0)){
var err=Error("Unable to load "+uri+" status:"+_c0.status);
err.status=_c0.status;
err.responseText=_c0.responseText;
throw err;
}
}
catch(e){
this._blockAsync=false;
if((_bf)&&(!_be)){
return null;
}else{
throw e;
}
}
this._blockAsync=false;
return _c0.responseText;
};
dojo.hostenv.defaultDebugContainerId="dojoDebug";
dojo.hostenv._println_buffer=[];
dojo.hostenv._println_safe=false;
dojo.hostenv.println=function(_c8){
if(!dojo.hostenv._println_safe){
dojo.hostenv._println_buffer.push(_c8);
}else{
try{
var _c9=document.getElementById(djConfig.debugContainerId?djConfig.debugContainerId:dojo.hostenv.defaultDebugContainerId);
if(!_c9){
_c9=dojo.body();
}
var div=document.createElement("div");
div.appendChild(document.createTextNode(_c8));
_c9.appendChild(div);
}
catch(e){
try{
document.write("<div>"+_c8+"</div>");
}
catch(e2){
window.status=_c8;
}
}
}
};
dojo.addOnLoad(function(){
dojo.hostenv._println_safe=true;
while(dojo.hostenv._println_buffer.length>0){
dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
}
});
function dj_addNodeEvtHdlr(_cb,_cc,fp){
var _ce=_cb["on"+_cc]||function(){
};
_cb["on"+_cc]=function(){
fp.apply(_cb,arguments);
_ce.apply(_cb,arguments);
};
return true;
}
function dj_load_init(e){
var _d0=(e&&e.type)?e.type.toLowerCase():"load";
if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
return;
}
arguments.callee.initialized=true;
if(typeof (_timer)!="undefined"){
clearInterval(_timer);
delete _timer;
}
var _d1=function(){
if(dojo.render.html.ie){
dojo.hostenv.makeWidgets();
}
};
if(dojo.hostenv.inFlightCount==0){
_d1();
dojo.hostenv.modulesLoaded();
}else{
dojo.hostenv.modulesLoadedListeners.unshift(_d1);
}
}
if(document.addEventListener){
if(dojo.render.html.opera||(dojo.render.html.moz&&(djConfig["enableMozDomContentLoaded"]===true))){
document.addEventListener("DOMContentLoaded",dj_load_init,null);
}
window.addEventListener("load",dj_load_init,null);
}
if(dojo.render.html.ie&&dojo.render.os.win){
document.attachEvent("onreadystatechange",function(e){
if(document.readyState=="complete"){
dj_load_init();
}
});
}
if(/(WebKit|khtml)/i.test(navigator.userAgent)){
var _timer=setInterval(function(){
if(/loaded|complete/.test(document.readyState)){
dj_load_init();
}
},10);
}
if(dojo.render.html.ie){
dj_addNodeEvtHdlr(window,"beforeunload",function(){
dojo.hostenv._unloading=true;
window.setTimeout(function(){
dojo.hostenv._unloading=false;
},0);
});
}
dj_addNodeEvtHdlr(window,"unload",function(){
dojo.hostenv.unloaded();
if((!dojo.render.html.ie)||(dojo.render.html.ie&&dojo.hostenv._unloading)){
dojo.hostenv.unloaded();
}
});
dojo.hostenv.makeWidgets=function(){
var _d3=[];
if(djConfig.searchIds&&djConfig.searchIds.length>0){
_d3=_d3.concat(djConfig.searchIds);
}
if(dojo.hostenv.searchIds&&dojo.hostenv.searchIds.length>0){
_d3=_d3.concat(dojo.hostenv.searchIds);
}
if((djConfig.parseWidgets)||(_d3.length>0)){
if(dojo.evalObjPath("dojo.widget.Parse")){
var _d4=new dojo.xml.Parse();
if(_d3.length>0){
for(var x=0;x<_d3.length;x++){
var _d6=document.getElementById(_d3[x]);
if(!_d6){
continue;
}
var _d7=_d4.parseElement(_d6,null,true);
dojo.widget.getParser().createComponents(_d7);
}
}else{
if(djConfig.parseWidgets){
var _d7=_d4.parseElement(dojo.body(),null,true);
dojo.widget.getParser().createComponents(_d7);
}
}
}
}
};
dojo.addOnLoad(function(){
if(!dojo.render.html.ie){
dojo.hostenv.makeWidgets();
}
});
try{
if(dojo.render.html.ie){
document.namespaces.add("v","urn:schemas-microsoft-com:vml");
document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");
}
}
catch(e){
}
dojo.hostenv.writeIncludes=function(){
};
if(!dj_undef("document",this)){
dj_currentDocument=this.document;
}
dojo.doc=function(){
return dj_currentDocument;
};
dojo.body=function(){
return dojo.doc().body||dojo.doc().getElementsByTagName("body")[0];
};
dojo.byId=function(id,doc){
if((id)&&((typeof id=="string")||(id instanceof String))){
if(!doc){
doc=dj_currentDocument;
}
var ele=doc.getElementById(id);
if(ele&&(ele.id!=id)&&doc.all){
ele=null;
eles=doc.all[id];
if(eles){
if(eles.length){
for(var i=0;i<eles.length;i++){
if(eles[i].id==id){
ele=eles[i];
break;
}
}
}else{
ele=eles;
}
}
}
return ele;
}
return id;
};
dojo.setContext=function(_dc,_dd){
dj_currentContext=_dc;
dj_currentDocument=_dd;
};
dojo._fireCallback=function(_de,_df,_e0){
if((_df)&&((typeof _de=="string")||(_de instanceof String))){
_de=_df[_de];
}
return (_df?_de.apply(_df,_e0||[]):_de());
};
dojo.withGlobal=function(_e1,_e2,_e3,_e4){
var _e5;
var _e6=dj_currentContext;
var _e7=dj_currentDocument;
try{
dojo.setContext(_e1,_e1.document);
_e5=dojo._fireCallback(_e2,_e3,_e4);
}
finally{
dojo.setContext(_e6,_e7);
}
return _e5;
};
dojo.withDoc=function(_e8,_e9,_ea,_eb){
var _ec;
var _ed=dj_currentDocument;
try{
dj_currentDocument=_e8;
_ec=dojo._fireCallback(_e9,_ea,_eb);
}
finally{
dj_currentDocument=_ed;
}
return _ec;
};
}
dojo.requireIf((djConfig["isDebug"]||djConfig["debugAtAllCosts"]),"dojo.debug");
dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&!djConfig["useXDomain"],"dojo.browser_debug");
dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&djConfig["useXDomain"],"dojo.browser_debug_xd");
dojo.provide("dojo.string.common");
dojo.string.trim=function(str,wh){
if(!str.replace){
return str;
}
if(!str.length){
return str;
}
var re=(wh>0)?(/^\s+/):(wh<0)?(/\s+$/):(/^\s+|\s+$/g);
return str.replace(re,"");
};
dojo.string.trimStart=function(str){
return dojo.string.trim(str,1);
};
dojo.string.trimEnd=function(str){
return dojo.string.trim(str,-1);
};
dojo.string.repeat=function(str,_f4,_f5){
var out="";
for(var i=0;i<_f4;i++){
out+=str;
if(_f5&&i<_f4-1){
out+=_f5;
}
}
return out;
};
dojo.string.pad=function(str,len,c,dir){
var out=String(str);
if(!c){
c="0";
}
if(!dir){
dir=1;
}
while(out.length<len){
if(dir>0){
out=c+out;
}else{
out+=c;
}
}
return out;
};
dojo.string.padLeft=function(str,len,c){
return dojo.string.pad(str,len,c,1);
};
dojo.string.padRight=function(str,len,c){
return dojo.string.pad(str,len,c,-1);
};
dojo.provide("dojo.string");
dojo.provide("dojo.lang.common");
dojo.lang.inherits=function(_103,_104){
if(!dojo.lang.isFunction(_104)){
dojo.raise("dojo.inherits: superclass argument ["+_104+"] must be a function (subclass: ["+_103+"']");
}
_103.prototype=new _104();
_103.prototype.constructor=_103;
_103.superclass=_104.prototype;
_103["super"]=_104.prototype;
};
dojo.lang._mixin=function(obj,_106){
var tobj={};
for(var x in _106){
if((typeof tobj[x]=="undefined")||(tobj[x]!=_106[x])){
obj[x]=_106[x];
}
}
if(dojo.render.html.ie&&(typeof (_106["toString"])=="function")&&(_106["toString"]!=obj["toString"])&&(_106["toString"]!=tobj["toString"])){
obj.toString=_106.toString;
}
return obj;
};
dojo.lang.mixin=function(obj,_10a){
for(var i=1,l=arguments.length;i<l;i++){
dojo.lang._mixin(obj,arguments[i]);
}
return obj;
};
dojo.lang.extend=function(_10d,_10e){
for(var i=1,l=arguments.length;i<l;i++){
dojo.lang._mixin(_10d.prototype,arguments[i]);
}
return _10d;
};
dojo.inherits=dojo.lang.inherits;
dojo.mixin=dojo.lang.mixin;
dojo.extend=dojo.lang.extend;
dojo.lang.find=function(_111,_112,_113,_114){
if(!dojo.lang.isArrayLike(_111)&&dojo.lang.isArrayLike(_112)){
dojo.deprecated("dojo.lang.find(value, array)","use dojo.lang.find(array, value) instead","0.5");
var temp=_111;
_111=_112;
_112=temp;
}
var _116=dojo.lang.isString(_111);
if(_116){
_111=_111.split("");
}
if(_114){
var step=-1;
var i=_111.length-1;
var end=-1;
}else{
var step=1;
var i=0;
var end=_111.length;
}
if(_113){
while(i!=end){
if(_111[i]===_112){
return i;
}
i+=step;
}
}else{
while(i!=end){
if(_111[i]==_112){
return i;
}
i+=step;
}
}
return -1;
};
dojo.lang.indexOf=dojo.lang.find;
dojo.lang.findLast=function(_11a,_11b,_11c){
return dojo.lang.find(_11a,_11b,_11c,true);
};
dojo.lang.lastIndexOf=dojo.lang.findLast;
dojo.lang.inArray=function(_11d,_11e){
return dojo.lang.find(_11d,_11e)>-1;
};
dojo.lang.isObject=function(it){
if(typeof it=="undefined"){
return false;
}
return (typeof it=="object"||it===null||dojo.lang.isArray(it)||dojo.lang.isFunction(it));
};
dojo.lang.isArray=function(it){
return (it&&it instanceof Array||typeof it=="array");
};
dojo.lang.isArrayLike=function(it){
if((!it)||(dojo.lang.isUndefined(it))){
return false;
}
if(dojo.lang.isString(it)){
return false;
}
if(dojo.lang.isFunction(it)){
return false;
}
if(dojo.lang.isArray(it)){
return true;
}
if((it.tagName)&&(it.tagName.toLowerCase()=="form")){
return false;
}
if(dojo.lang.isNumber(it.length)&&isFinite(it.length)){
return true;
}
return false;
};
dojo.lang.isFunction=function(it){
return (it instanceof Function||typeof it=="function");
};
(function(){
if((dojo.render.html.capable)&&(dojo.render.html["safari"])){
dojo.lang.isFunction=function(it){
if((typeof (it)=="function")&&(it=="[object NodeList]")){
return false;
}
return (it instanceof Function||typeof it=="function");
};
}
})();
dojo.lang.isString=function(it){
return (typeof it=="string"||it instanceof String);
};
dojo.lang.isAlien=function(it){
if(!it){
return false;
}
return !dojo.lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));
};
dojo.lang.isBoolean=function(it){
return (it instanceof Boolean||typeof it=="boolean");
};
dojo.lang.isNumber=function(it){
return (it instanceof Number||typeof it=="number");
};
dojo.lang.isUndefined=function(it){
return ((typeof (it)=="undefined")&&(it==undefined));
};
dojo.provide("dojo.lang.extras");
dojo.lang.setTimeout=function(func,_12a){
var _12b=window,_12c=2;
if(!dojo.lang.isFunction(func)){
_12b=func;
func=_12a;
_12a=arguments[2];
_12c++;
}
if(dojo.lang.isString(func)){
func=_12b[func];
}
var args=[];
for(var i=_12c;i<arguments.length;i++){
args.push(arguments[i]);
}
return dojo.global().setTimeout(function(){
func.apply(_12b,args);
},_12a);
};
dojo.lang.clearTimeout=function(_12f){
dojo.global().clearTimeout(_12f);
};
dojo.lang.getNameInObj=function(ns,item){
if(!ns){
ns=dj_global;
}
for(var x in ns){
if(ns[x]===item){
return new String(x);
}
}
return null;
};
dojo.lang.shallowCopy=function(obj,deep){
var i,ret;
if(obj===null){
return null;
}
if(dojo.lang.isObject(obj)){
ret=new obj.constructor();
for(i in obj){
if(dojo.lang.isUndefined(ret[i])){
ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
}
}
}else{
if(dojo.lang.isArray(obj)){
ret=[];
for(i=0;i<obj.length;i++){
ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
}
}else{
ret=obj;
}
}
return ret;
};
dojo.lang.firstValued=function(){
for(var i=0;i<arguments.length;i++){
if(typeof arguments[i]!="undefined"){
return arguments[i];
}
}
return undefined;
};
dojo.lang.getObjPathValue=function(_138,_139,_13a){
with(dojo.parseObjPath(_138,_139,_13a)){
return dojo.evalProp(prop,obj,_13a);
}
};
dojo.lang.setObjPathValue=function(_13b,_13c,_13d,_13e){
dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
if(arguments.length<4){
_13e=true;
}
with(dojo.parseObjPath(_13b,_13d,_13e)){
if(obj&&(_13e||(prop in obj))){
obj[prop]=_13c;
}
}
};
dojo.provide("dojo.io.common");
dojo.io.transports=[];
dojo.io.hdlrFuncNames=["load","error","timeout"];
dojo.io.Request=function(url,_140,_141,_142){
if((arguments.length==1)&&(arguments[0].constructor==Object)){
this.fromKwArgs(arguments[0]);
}else{
this.url=url;
if(_140){
this.mimetype=_140;
}
if(_141){
this.transport=_141;
}
if(arguments.length>=4){
this.changeUrl=_142;
}
}
};
dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_145,_146){
},error:function(type,_148,_149,_14a){
},timeout:function(type,_14c,_14d,_14e){
},handle:function(type,data,_151,_152){
},timeoutSeconds:0,abort:function(){
},fromKwArgs:function(_153){
if(_153["url"]){
_153.url=_153.url.toString();
}
if(_153["formNode"]){
_153.formNode=dojo.byId(_153.formNode);
}
if(!_153["method"]&&_153["formNode"]&&_153["formNode"].method){
_153.method=_153["formNode"].method;
}
if(!_153["handle"]&&_153["handler"]){
_153.handle=_153.handler;
}
if(!_153["load"]&&_153["loaded"]){
_153.load=_153.loaded;
}
if(!_153["changeUrl"]&&_153["changeURL"]){
_153.changeUrl=_153.changeURL;
}
_153.encoding=dojo.lang.firstValued(_153["encoding"],djConfig["bindEncoding"],"");
_153.sendTransport=dojo.lang.firstValued(_153["sendTransport"],djConfig["ioSendTransport"],false);
var _154=dojo.lang.isFunction;
for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
var fn=dojo.io.hdlrFuncNames[x];
if(_153[fn]&&_154(_153[fn])){
continue;
}
if(_153["handle"]&&_154(_153["handle"])){
_153[fn]=_153.handle;
}
}
dojo.lang.mixin(this,_153);
}});
dojo.io.Error=function(msg,type,num){
this.message=msg;
this.type=type||"unknown";
this.number=num||0;
};
dojo.io.transports.addTransport=function(name){
this.push(name);
this[name]=dojo.io[name];
};
dojo.io.bind=function(_15b){
if(!(_15b instanceof dojo.io.Request)){
try{
_15b=new dojo.io.Request(_15b);
}
catch(e){
dojo.debug(e);
}
}
var _15c="";
if(_15b["transport"]){
_15c=_15b["transport"];
if(!this[_15c]){
dojo.io.sendBindError(_15b,"No dojo.io.bind() transport with name '"+_15b["transport"]+"'.");
return _15b;
}
if(!this[_15c].canHandle(_15b)){
dojo.io.sendBindError(_15b,"dojo.io.bind() transport with name '"+_15b["transport"]+"' cannot handle this type of request.");
return _15b;
}
}else{
for(var x=0;x<dojo.io.transports.length;x++){
var tmp=dojo.io.transports[x];
if((this[tmp])&&(this[tmp].canHandle(_15b))){
_15c=tmp;
break;
}
}
if(_15c==""){
dojo.io.sendBindError(_15b,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
return _15b;
}
}
this[_15c].bind(_15b);
_15b.bindSuccess=true;
return _15b;
};
dojo.io.sendBindError=function(_15f,_160){
if((typeof _15f.error=="function"||typeof _15f.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
var _161=new dojo.io.Error(_160);
setTimeout(function(){
_15f[(typeof _15f.error=="function")?"error":"handle"]("error",_161,null,_15f);
},50);
}else{
dojo.raise(_160);
}
};
dojo.io.queueBind=function(_162){
if(!(_162 instanceof dojo.io.Request)){
try{
_162=new dojo.io.Request(_162);
}
catch(e){
dojo.debug(e);
}
}
var _163=_162.load;
_162.load=function(){
dojo.io._queueBindInFlight=false;
var ret=_163.apply(this,arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
var _165=_162.error;
_162.error=function(){
dojo.io._queueBindInFlight=false;
var ret=_165.apply(this,arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
dojo.io._bindQueue.push(_162);
dojo.io._dispatchNextQueueBind();
return _162;
};
dojo.io._dispatchNextQueueBind=function(){
if(!dojo.io._queueBindInFlight){
dojo.io._queueBindInFlight=true;
if(dojo.io._bindQueue.length>0){
dojo.io.bind(dojo.io._bindQueue.shift());
}else{
dojo.io._queueBindInFlight=false;
}
}
};
dojo.io._bindQueue=[];
dojo.io._queueBindInFlight=false;
dojo.io.argsFromMap=function(map,_168,last){
var enc=/utf/i.test(_168||"")?encodeURIComponent:dojo.string.encodeAscii;
var _16b=[];
var _16c=new Object();
for(var name in map){
var _16e=function(elt){
var val=enc(name)+"="+enc(elt);
_16b[(last==name)?"push":"unshift"](val);
};
if(!_16c[name]){
var _171=map[name];
if(dojo.lang.isArray(_171)){
dojo.lang.forEach(_171,_16e);
}else{
_16e(_171);
}
}
}
return _16b.join("&");
};
dojo.io.setIFrameSrc=function(_172,src,_174){
try{
var r=dojo.render.html;
if(!_174){
if(r.safari){
_172.location=src;
}else{
frames[_172.name].location=src;
}
}else{
var idoc;
if(r.ie){
idoc=_172.contentWindow.document;
}else{
if(r.safari){
idoc=_172.document;
}else{
idoc=_172.contentWindow;
}
}
if(!idoc){
_172.location=src;
return;
}else{
idoc.location.replace(src);
}
}
}
catch(e){
dojo.debug(e);
dojo.debug("setIFrameSrc: "+e);
}
};
dojo.provide("dojo.lang.array");
dojo.lang.mixin(dojo.lang,{has:function(obj,name){
try{
return typeof obj[name]!="undefined";
}
catch(e){
return false;
}
},isEmpty:function(obj){
if(dojo.lang.isObject(obj)){
var tmp={};
var _17b=0;
for(var x in obj){
if(obj[x]&&(!tmp[x])){
_17b++;
break;
}
}
return _17b==0;
}else{
if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
return obj.length==0;
}
}
},map:function(arr,obj,_17f){
var _180=dojo.lang.isString(arr);
if(_180){
arr=arr.split("");
}
if(dojo.lang.isFunction(obj)&&(!_17f)){
_17f=obj;
obj=dj_global;
}else{
if(dojo.lang.isFunction(obj)&&_17f){
var _181=obj;
obj=_17f;
_17f=_181;
}
}
if(Array.map){
var _182=Array.map(arr,_17f,obj);
}else{
var _182=[];
for(var i=0;i<arr.length;++i){
_182.push(_17f.call(obj,arr[i]));
}
}
if(_180){
return _182.join("");
}else{
return _182;
}
},reduce:function(arr,_185,obj,_187){
var _188=_185;
if(arguments.length==2){
_187=_185;
_188=arr[0];
arr=arr.slice(1);
}else{
if(arguments.length==3){
if(dojo.lang.isFunction(obj)){
_187=obj;
obj=null;
}
}else{
if(dojo.lang.isFunction(obj)){
var tmp=_187;
_187=obj;
obj=tmp;
}
}
}
var ob=obj||dj_global;
dojo.lang.map(arr,function(val){
_188=_187.call(ob,_188,val);
});
return _188;
},forEach:function(_18c,_18d,_18e){
if(dojo.lang.isString(_18c)){
_18c=_18c.split("");
}
if(Array.forEach){
Array.forEach(_18c,_18d,_18e);
}else{
if(!_18e){
_18e=dj_global;
}
for(var i=0,l=_18c.length;i<l;i++){
_18d.call(_18e,_18c[i],i,_18c);
}
}
},_everyOrSome:function(_191,arr,_193,_194){
if(dojo.lang.isString(arr)){
arr=arr.split("");
}
if(Array.every){
return Array[_191?"every":"some"](arr,_193,_194);
}else{
if(!_194){
_194=dj_global;
}
for(var i=0,l=arr.length;i<l;i++){
var _197=_193.call(_194,arr[i],i,arr);
if(_191&&!_197){
return false;
}else{
if((!_191)&&(_197)){
return true;
}
}
}
return Boolean(_191);
}
},every:function(arr,_199,_19a){
return this._everyOrSome(true,arr,_199,_19a);
},some:function(arr,_19c,_19d){
return this._everyOrSome(false,arr,_19c,_19d);
},filter:function(arr,_19f,_1a0){
var _1a1=dojo.lang.isString(arr);
if(_1a1){
arr=arr.split("");
}
var _1a2;
if(Array.filter){
_1a2=Array.filter(arr,_19f,_1a0);
}else{
if(!_1a0){
if(arguments.length>=3){
dojo.raise("thisObject doesn't exist!");
}
_1a0=dj_global;
}
_1a2=[];
for(var i=0;i<arr.length;i++){
if(_19f.call(_1a0,arr[i],i,arr)){
_1a2.push(arr[i]);
}
}
}
if(_1a1){
return _1a2.join("");
}else{
return _1a2;
}
},unnest:function(){
var out=[];
for(var i=0;i<arguments.length;i++){
if(dojo.lang.isArrayLike(arguments[i])){
var add=dojo.lang.unnest.apply(this,arguments[i]);
out=out.concat(add);
}else{
out.push(arguments[i]);
}
}
return out;
},toArray:function(_1a7,_1a8){
var _1a9=[];
for(var i=_1a8||0;i<_1a7.length;i++){
_1a9.push(_1a7[i]);
}
return _1a9;
}});
dojo.provide("dojo.lang.func");
dojo.lang.hitch=function(_1ab,_1ac){
var fcn=(dojo.lang.isString(_1ac)?_1ab[_1ac]:_1ac)||function(){
};
return function(){
return fcn.apply(_1ab,arguments);
};
};
dojo.lang.anonCtr=0;
dojo.lang.anon={};
dojo.lang.nameAnonFunc=function(_1ae,_1af,_1b0){
var nso=(_1af||dojo.lang.anon);
if((_1b0)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
for(var x in nso){
try{
if(nso[x]===_1ae){
return x;
}
}
catch(e){
}
}
}
var ret="__"+dojo.lang.anonCtr++;
while(typeof nso[ret]!="undefined"){
ret="__"+dojo.lang.anonCtr++;
}
nso[ret]=_1ae;
return ret;
};
dojo.lang.forward=function(_1b4){
return function(){
return this[_1b4].apply(this,arguments);
};
};
dojo.lang.curry=function(_1b5,func){
var _1b7=[];
_1b5=_1b5||dj_global;
if(dojo.lang.isString(func)){
func=_1b5[func];
}
for(var x=2;x<arguments.length;x++){
_1b7.push(arguments[x]);
}
var _1b9=(func["__preJoinArity"]||func.length)-_1b7.length;
function gather(_1ba,_1bb,_1bc){
var _1bd=_1bc;
var _1be=_1bb.slice(0);
for(var x=0;x<_1ba.length;x++){
_1be.push(_1ba[x]);
}
_1bc=_1bc-_1ba.length;
if(_1bc<=0){
var res=func.apply(_1b5,_1be);
_1bc=_1bd;
return res;
}else{
return function(){
return gather(arguments,_1be,_1bc);
};
}
}
return gather([],_1b7,_1b9);
};
dojo.lang.curryArguments=function(_1c1,func,args,_1c4){
var _1c5=[];
var x=_1c4||0;
for(x=_1c4;x<args.length;x++){
_1c5.push(args[x]);
}
return dojo.lang.curry.apply(dojo.lang,[_1c1,func].concat(_1c5));
};
dojo.lang.tryThese=function(){
for(var x=0;x<arguments.length;x++){
try{
if(typeof arguments[x]=="function"){
var ret=(arguments[x]());
if(ret){
return ret;
}
}
}
catch(e){
dojo.debug(e);
}
}
};
dojo.lang.delayThese=function(farr,cb,_1cb,_1cc){
if(!farr.length){
if(typeof _1cc=="function"){
_1cc();
}
return;
}
if((typeof _1cb=="undefined")&&(typeof cb=="number")){
_1cb=cb;
cb=function(){
};
}else{
if(!cb){
cb=function(){
};
if(!_1cb){
_1cb=0;
}
}
}
setTimeout(function(){
(farr.shift())();
cb();
dojo.lang.delayThese(farr,cb,_1cb,_1cc);
},_1cb);
};
dojo.provide("dojo.string.extras");
dojo.string.substituteParams=function(_1cd,hash){
var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
return _1cd.replace(/\%\{(\w+)\}/g,function(_1d0,key){
if(typeof (map[key])!="undefined"&&map[key]!=null){
return map[key];
}
dojo.raise("Substitution not found: "+key);
});
};
dojo.string.capitalize=function(str){
if(!dojo.lang.isString(str)){
return "";
}
if(arguments.length==0){
str=this;
}
var _1d3=str.split(" ");
for(var i=0;i<_1d3.length;i++){
_1d3[i]=_1d3[i].charAt(0).toUpperCase()+_1d3[i].substring(1);
}
return _1d3.join(" ");
};
dojo.string.isBlank=function(str){
if(!dojo.lang.isString(str)){
return true;
}
return (dojo.string.trim(str).length==0);
};
dojo.string.encodeAscii=function(str){
if(!dojo.lang.isString(str)){
return str;
}
var ret="";
var _1d8=escape(str);
var _1d9,re=/%u([0-9A-F]{4})/i;
while((_1d9=_1d8.match(re))){
var num=Number("0x"+_1d9[1]);
var _1dc=escape("&#"+num+";");
ret+=_1d8.substring(0,_1d9.index)+_1dc;
_1d8=_1d8.substring(_1d9.index+_1d9[0].length);
}
ret+=_1d8.replace(/\+/g,"%2B");
return ret;
};
dojo.string.escape=function(type,str){
var args=dojo.lang.toArray(arguments,1);
switch(type.toLowerCase()){
case "xml":
case "html":
case "xhtml":
return dojo.string.escapeXml.apply(this,args);
case "sql":
return dojo.string.escapeSql.apply(this,args);
case "regexp":
case "regex":
return dojo.string.escapeRegExp.apply(this,args);
case "javascript":
case "jscript":
case "js":
return dojo.string.escapeJavaScript.apply(this,args);
case "ascii":
return dojo.string.encodeAscii.apply(this,args);
default:
return str;
}
};
dojo.string.escapeXml=function(str,_1e1){
str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
if(!_1e1){
str=str.replace(/'/gm,"&#39;");
}
return str;
};
dojo.string.escapeSql=function(str){
return str.replace(/'/gm,"''");
};
dojo.string.escapeRegExp=function(str){
return str.replace(/\\/gm,"\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm,"\\$1");
};
dojo.string.escapeJavaScript=function(str){
return str.replace(/(["'\f\b\n\t\r])/gm,"\\$1");
};
dojo.string.escapeString=function(str){
return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");
};
dojo.string.summary=function(str,len){
if(!len||str.length<=len){
return str;
}
return str.substring(0,len).replace(/\.+$/,"")+"...";
};
dojo.string.endsWith=function(str,end,_1ea){
if(_1ea){
str=str.toLowerCase();
end=end.toLowerCase();
}
if((str.length-end.length)<0){
return false;
}
return str.lastIndexOf(end)==str.length-end.length;
};
dojo.string.endsWithAny=function(str){
for(var i=1;i<arguments.length;i++){
if(dojo.string.endsWith(str,arguments[i])){
return true;
}
}
return false;
};
dojo.string.startsWith=function(str,_1ee,_1ef){
if(_1ef){
str=str.toLowerCase();
_1ee=_1ee.toLowerCase();
}
return str.indexOf(_1ee)==0;
};
dojo.string.startsWithAny=function(str){
for(var i=1;i<arguments.length;i++){
if(dojo.string.startsWith(str,arguments[i])){
return true;
}
}
return false;
};
dojo.string.has=function(str){
for(var i=1;i<arguments.length;i++){
if(str.indexOf(arguments[i])>-1){
return true;
}
}
return false;
};
dojo.string.normalizeNewlines=function(text,_1f5){
if(_1f5=="\n"){
text=text.replace(/\r\n/g,"\n");
text=text.replace(/\r/g,"\n");
}else{
if(_1f5=="\r"){
text=text.replace(/\r\n/g,"\r");
text=text.replace(/\n/g,"\r");
}else{
text=text.replace(/([^\r])\n/g,"$1\r\n").replace(/\r([^\n])/g,"\r\n$1");
}
}
return text;
};
dojo.string.splitEscaped=function(str,_1f7){
var _1f8=[];
for(var i=0,_1fa=0;i<str.length;i++){
if(str.charAt(i)=="\\"){
i++;
continue;
}
if(str.charAt(i)==_1f7){
_1f8.push(str.substring(_1fa,i));
_1fa=i+1;
}
}
_1f8.push(str.substr(_1fa));
return _1f8;
};
dojo.provide("dojo.dom");
dojo.dom.ELEMENT_NODE=1;
dojo.dom.ATTRIBUTE_NODE=2;
dojo.dom.TEXT_NODE=3;
dojo.dom.CDATA_SECTION_NODE=4;
dojo.dom.ENTITY_REFERENCE_NODE=5;
dojo.dom.ENTITY_NODE=6;
dojo.dom.PROCESSING_INSTRUCTION_NODE=7;
dojo.dom.COMMENT_NODE=8;
dojo.dom.DOCUMENT_NODE=9;
dojo.dom.DOCUMENT_TYPE_NODE=10;
dojo.dom.DOCUMENT_FRAGMENT_NODE=11;
dojo.dom.NOTATION_NODE=12;
dojo.dom.dojoml="http://www.dojotoolkit.org/2004/dojoml";
dojo.dom.xmlns={svg:"http://www.w3.org/2000/svg",smil:"http://www.w3.org/2001/SMIL20/",mml:"http://www.w3.org/1998/Math/MathML",cml:"http://www.xml-cml.org",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.org/1999/xhtml",xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",xbl:"http://www.mozilla.org/xbl",fo:"http://www.w3.org/1999/XSL/Format",xsl:"http://www.w3.org/1999/XSL/Transform",xslt:"http://www.w3.org/1999/XSL/Transform",xi:"http://www.w3.org/2001/XInclude",xforms:"http://www.w3.org/2002/01/xforms",saxon:"http://icl.com/saxon",xalan:"http://xml.apache.org/xslt",xsd:"http://www.w3.org/2001/XMLSchema",dt:"http://www.w3.org/2001/XMLSchema-datatypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",dc:"http://purl.org/dc/elements/1.1/",dcq:"http://purl.org/dc/qualifiers/1.0","soap-env":"http://schemas.xmlsoap.org/soap/envelope/",wsdl:"http://schemas.xmlsoap.org/wsdl/",AdobeExtensions:"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"};
dojo.dom.isNode=function(wh){
if(typeof Element=="function"){
try{
return wh instanceof Element;
}
catch(e){
}
}else{
return wh&&!isNaN(wh.nodeType);
}
};
dojo.dom.getUniqueId=function(){
var _1fc=dojo.doc();
do{
var id="dj_unique_"+(++arguments.callee._idIncrement);
}while(_1fc.getElementById(id));
return id;
};
dojo.dom.getUniqueId._idIncrement=0;
dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_1fe,_1ff){
var node=_1fe.firstChild;
while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
node=node.nextSibling;
}
if(_1ff&&node&&node.tagName&&node.tagName.toLowerCase()!=_1ff.toLowerCase()){
node=dojo.dom.nextElement(node,_1ff);
}
return node;
};
dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_201,_202){
var node=_201.lastChild;
while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
node=node.previousSibling;
}
if(_202&&node&&node.tagName&&node.tagName.toLowerCase()!=_202.toLowerCase()){
node=dojo.dom.prevElement(node,_202);
}
return node;
};
dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_205){
if(!node){
return null;
}
do{
node=node.nextSibling;
}while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
if(node&&_205&&_205.toLowerCase()!=node.tagName.toLowerCase()){
return dojo.dom.nextElement(node,_205);
}
return node;
};
dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_207){
if(!node){
return null;
}
if(_207){
_207=_207.toLowerCase();
}
do{
node=node.previousSibling;
}while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
if(node&&_207&&_207.toLowerCase()!=node.tagName.toLowerCase()){
return dojo.dom.prevElement(node,_207);
}
return node;
};
dojo.dom.moveChildren=function(_208,_209,trim){
var _20b=0;
if(trim){
while(_208.hasChildNodes()&&_208.firstChild.nodeType==dojo.dom.TEXT_NODE){
_208.removeChild(_208.firstChild);
}
while(_208.hasChildNodes()&&_208.lastChild.nodeType==dojo.dom.TEXT_NODE){
_208.removeChild(_208.lastChild);
}
}
while(_208.hasChildNodes()){
_209.appendChild(_208.firstChild);
_20b++;
}
return _20b;
};
dojo.dom.copyChildren=function(_20c,_20d,trim){
var _20f=_20c.cloneNode(true);
return this.moveChildren(_20f,_20d,trim);
};
dojo.dom.replaceChildren=function(node,_211){
var _212=[];
if(dojo.render.html.ie){
for(var i=0;i<node.childNodes.length;i++){
_212.push(node.childNodes[i]);
}
}
dojo.dom.removeChildren(node);
node.appendChild(_211);
for(var i=0;i<_212.length;i++){
dojo.dom.destroyNode(_212[i]);
}
};
dojo.dom.removeChildren=function(node){
var _215=node.childNodes.length;
while(node.hasChildNodes()){
dojo.dom.removeNode(node.firstChild);
}
return _215;
};
dojo.dom.replaceNode=function(node,_217){
return node.parentNode.replaceChild(_217,node);
};
dojo.dom.destroyNode=function(node){
if(node.parentNode){
node=dojo.dom.removeNode(node);
}
if(node.nodeType!=3){
if(dojo.evalObjPath("dojo.event.browser.clean",false)){
dojo.event.browser.clean(node);
}
if(dojo.render.html.ie){
node.outerHTML="";
}
}
};
dojo.dom.removeNode=function(node){
if(node&&node.parentNode){
return node.parentNode.removeChild(node);
}
};
dojo.dom.getAncestors=function(node,_21b,_21c){
var _21d=[];
var _21e=(_21b&&(_21b instanceof Function||typeof _21b=="function"));
while(node){
if(!_21e||_21b(node)){
_21d.push(node);
}
if(_21c&&_21d.length>0){
return _21d[0];
}
node=node.parentNode;
}
if(_21c){
return null;
}
return _21d;
};
dojo.dom.getAncestorsByTag=function(node,tag,_221){
tag=tag.toLowerCase();
return dojo.dom.getAncestors(node,function(el){
return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
},_221);
};
dojo.dom.getFirstAncestorByTag=function(node,tag){
return dojo.dom.getAncestorsByTag(node,tag,true);
};
dojo.dom.isDescendantOf=function(node,_226,_227){
if(_227&&node){
node=node.parentNode;
}
while(node){
if(node==_226){
return true;
}
node=node.parentNode;
}
return false;
};
dojo.dom.innerXML=function(node){
if(node.innerXML){
return node.innerXML;
}else{
if(node.xml){
return node.xml;
}else{
if(typeof XMLSerializer!="undefined"){
return (new XMLSerializer()).serializeToString(node);
}
}
}
};
dojo.dom.createDocument=function(){
var doc=null;
var _22a=dojo.doc();
if(!dj_undef("ActiveXObject")){
var _22b=["MSXML2","Microsoft","MSXML","MSXML3"];
for(var i=0;i<_22b.length;i++){
try{
doc=new ActiveXObject(_22b[i]+".XMLDOM");
}
catch(e){
}
if(doc){
break;
}
}
}else{
if((_22a.implementation)&&(_22a.implementation.createDocument)){
doc=_22a.implementation.createDocument("","",null);
}
}
return doc;
};
dojo.dom.createDocumentFromText=function(str,_22e){
if(!_22e){
_22e="text/xml";
}
if(!dj_undef("DOMParser")){
var _22f=new DOMParser();
return _22f.parseFromString(str,_22e);
}else{
if(!dj_undef("ActiveXObject")){
var _230=dojo.dom.createDocument();
if(_230){
_230.async=false;
_230.loadXML(str);
return _230;
}else{
dojo.debug("toXml didn't work?");
}
}else{
var _231=dojo.doc();
if(_231.createElement){
var tmp=_231.createElement("xml");
tmp.innerHTML=str;
if(_231.implementation&&_231.implementation.createDocument){
var _233=_231.implementation.createDocument("foo","",null);
for(var i=0;i<tmp.childNodes.length;i++){
_233.importNode(tmp.childNodes.item(i),true);
}
return _233;
}
return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
}
}
}
return null;
};
dojo.dom.prependChild=function(node,_236){
if(_236.firstChild){
_236.insertBefore(node,_236.firstChild);
}else{
_236.appendChild(node);
}
return true;
};
dojo.dom.insertBefore=function(node,ref,_239){
if((_239!=true)&&(node===ref||node.nextSibling===ref)){
return false;
}
var _23a=ref.parentNode;
_23a.insertBefore(node,ref);
return true;
};
dojo.dom.insertAfter=function(node,ref,_23d){
var pn=ref.parentNode;
if(ref==pn.lastChild){
if((_23d!=true)&&(node===ref)){
return false;
}
pn.appendChild(node);
}else{
return this.insertBefore(node,ref.nextSibling,_23d);
}
return true;
};
dojo.dom.insertAtPosition=function(node,ref,_241){
if((!node)||(!ref)||(!_241)){
return false;
}
switch(_241.toLowerCase()){
case "before":
return dojo.dom.insertBefore(node,ref);
case "after":
return dojo.dom.insertAfter(node,ref);
case "first":
if(ref.firstChild){
return dojo.dom.insertBefore(node,ref.firstChild);
}else{
ref.appendChild(node);
return true;
}
break;
default:
ref.appendChild(node);
return true;
}
};
dojo.dom.insertAtIndex=function(node,_243,_244){
var _245=_243.childNodes;
if(!_245.length||_245.length==_244){
_243.appendChild(node);
return true;
}
if(_244==0){
return dojo.dom.prependChild(node,_243);
}
return dojo.dom.insertAfter(node,_245[_244-1]);
};
dojo.dom.textContent=function(node,text){
if(arguments.length>1){
var _248=dojo.doc();
dojo.dom.replaceChildren(node,_248.createTextNode(text));
return text;
}else{
if(node.textContent!=undefined){
return node.textContent;
}
var _249="";
if(node==null){
return _249;
}
for(var i=0;i<node.childNodes.length;i++){
switch(node.childNodes[i].nodeType){
case 1:
case 5:
_249+=dojo.dom.textContent(node.childNodes[i]);
break;
case 3:
case 2:
case 4:
_249+=node.childNodes[i].nodeValue;
break;
default:
break;
}
}
return _249;
}
};
dojo.dom.hasParent=function(node){
return Boolean(node&&node.parentNode&&dojo.dom.isNode(node.parentNode));
};
dojo.dom.isTag=function(node){
if(node&&node.tagName){
for(var i=1;i<arguments.length;i++){
if(node.tagName==String(arguments[i])){
return String(arguments[i]);
}
}
}
return "";
};
dojo.dom.setAttributeNS=function(elem,_24f,_250,_251){
if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
dojo.raise("No element given to dojo.dom.setAttributeNS");
}
if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
elem.setAttributeNS(_24f,_250,_251);
}else{
var _252=elem.ownerDocument;
var _253=_252.createNode(2,_250,_24f);
_253.nodeValue=_251;
elem.setAttributeNode(_253);
}
};
dojo.provide("dojo.undo.browser");
try{
if((!djConfig["preventBackButtonFix"])&&(!dojo.hostenv.post_load_)){
document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='"+(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"'></iframe>");
}
}
catch(e){
}
if(dojo.render.html.opera){
dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work.");
}
dojo.undo.browser={initialHref:(!dj_undef("window"))?window.location.href:"",initialHash:(!dj_undef("window"))?window.location.hash:"",moveForward:false,historyStack:[],forwardStack:[],historyIframe:null,bookmarkAnchor:null,locationTimer:null,setInitialState:function(args){
this.initialState=this._createState(this.initialHref,args,this.initialHash);
},addToHistory:function(args){
this.forwardStack=[];
var hash=null;
var url=null;
if(!this.historyIframe){
if(djConfig["useXDomain"]&&!djConfig["dojoIframeHistoryUrl"]){
dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");
}
this.historyIframe=window.frames["djhistory"];
}
if(!this.bookmarkAnchor){
this.bookmarkAnchor=document.createElement("a");
dojo.body().appendChild(this.bookmarkAnchor);
this.bookmarkAnchor.style.display="none";
}
if(args["changeUrl"]){
hash="#"+((args["changeUrl"]!==true)?args["changeUrl"]:(new Date()).getTime());
if(this.historyStack.length==0&&this.initialState.urlHash==hash){
this.initialState=this._createState(url,args,hash);
return;
}else{
if(this.historyStack.length>0&&this.historyStack[this.historyStack.length-1].urlHash==hash){
this.historyStack[this.historyStack.length-1]=this._createState(url,args,hash);
return;
}
}
this.changingUrl=true;
setTimeout("window.location.href = '"+hash+"'; dojo.undo.browser.changingUrl = false;",1);
this.bookmarkAnchor.href=hash;
if(dojo.render.html.ie){
url=this._loadIframeHistory();
var _258=args["back"]||args["backButton"]||args["handle"];
var tcb=function(_25a){
if(window.location.hash!=""){
setTimeout("window.location.href = '"+hash+"';",1);
}
_258.apply(this,[_25a]);
};
if(args["back"]){
args.back=tcb;
}else{
if(args["backButton"]){
args.backButton=tcb;
}else{
if(args["handle"]){
args.handle=tcb;
}
}
}
var _25b=args["forward"]||args["forwardButton"]||args["handle"];
var tfw=function(_25d){
if(window.location.hash!=""){
window.location.href=hash;
}
if(_25b){
_25b.apply(this,[_25d]);
}
};
if(args["forward"]){
args.forward=tfw;
}else{
if(args["forwardButton"]){
args.forwardButton=tfw;
}else{
if(args["handle"]){
args.handle=tfw;
}
}
}
}else{
if(dojo.render.html.moz){
if(!this.locationTimer){
this.locationTimer=setInterval("dojo.undo.browser.checkLocation();",200);
}
}
}
}else{
url=this._loadIframeHistory();
}
this.historyStack.push(this._createState(url,args,hash));
},checkLocation:function(){
if(!this.changingUrl){
var hsl=this.historyStack.length;
if((window.location.hash==this.initialHash||window.location.href==this.initialHref)&&(hsl==1)){
this.handleBackButton();
return;
}
if(this.forwardStack.length>0){
if(this.forwardStack[this.forwardStack.length-1].urlHash==window.location.hash){
this.handleForwardButton();
return;
}
}
if((hsl>=2)&&(this.historyStack[hsl-2])){
if(this.historyStack[hsl-2].urlHash==window.location.hash){
this.handleBackButton();
return;
}
}
}
},iframeLoaded:function(evt,_260){
if(!dojo.render.html.opera){
var _261=this._getUrlQuery(_260.href);
if(_261==null){
if(this.historyStack.length==1){
this.handleBackButton();
}
return;
}
if(this.moveForward){
this.moveForward=false;
return;
}
if(this.historyStack.length>=2&&_261==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
this.handleBackButton();
}else{
if(this.forwardStack.length>0&&_261==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
this.handleForwardButton();
}
}
}
},handleBackButton:function(){
var _262=this.historyStack.pop();
if(!_262){
return;
}
var last=this.historyStack[this.historyStack.length-1];
if(!last&&this.historyStack.length==0){
last=this.initialState;
}
if(last){
if(last.kwArgs["back"]){
last.kwArgs["back"]();
}else{
if(last.kwArgs["backButton"]){
last.kwArgs["backButton"]();
}else{
if(last.kwArgs["handle"]){
last.kwArgs.handle("back");
}
}
}
}
this.forwardStack.push(_262);
},handleForwardButton:function(){
var last=this.forwardStack.pop();
if(!last){
return;
}
if(last.kwArgs["forward"]){
last.kwArgs.forward();
}else{
if(last.kwArgs["forwardButton"]){
last.kwArgs.forwardButton();
}else{
if(last.kwArgs["handle"]){
last.kwArgs.handle("forward");
}
}
}
this.historyStack.push(last);
},_createState:function(url,args,hash){
return {"url":url,"kwArgs":args,"urlHash":hash};
},_getUrlQuery:function(url){
var _269=url.split("?");
if(_269.length<2){
return null;
}else{
return _269[1];
}
},_loadIframeHistory:function(){
var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
this.moveForward=true;
dojo.io.setIFrameSrc(this.historyIframe,url,false);
return url;
}};
dojo.provide("dojo.io.BrowserIO");
if(!dj_undef("window")){
dojo.io.checkChildrenForFile=function(node){
var _26c=false;
var _26d=node.getElementsByTagName("input");
dojo.lang.forEach(_26d,function(_26e){
if(_26c){
return;
}
if(_26e.getAttribute("type")=="file"){
_26c=true;
}
});
return _26c;
};
dojo.io.formHasFile=function(_26f){
return dojo.io.checkChildrenForFile(_26f);
};
dojo.io.updateNode=function(node,_271){
node=dojo.byId(node);
var args=_271;
if(dojo.lang.isString(_271)){
args={url:_271};
}
args.mimetype="text/html";
args.load=function(t,d,e){
while(node.firstChild){
dojo.dom.destroyNode(node.firstChild);
}
node.innerHTML=d;
};
dojo.io.bind(args);
};
dojo.io.formFilter=function(node){
var type=(node.type||"").toLowerCase();
return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
};
dojo.io.encodeForm=function(_278,_279,_27a){
if((!_278)||(!_278.tagName)||(!_278.tagName.toLowerCase()=="form")){
dojo.raise("Attempted to encode a non-form element.");
}
if(!_27a){
_27a=dojo.io.formFilter;
}
var enc=/utf/i.test(_279||"")?encodeURIComponent:dojo.string.encodeAscii;
var _27c=[];
for(var i=0;i<_278.elements.length;i++){
var elm=_278.elements[i];
if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_27a(elm)){
continue;
}
var name=enc(elm.name);
var type=elm.type.toLowerCase();
if(type=="select-multiple"){
for(var j=0;j<elm.options.length;j++){
if(elm.options[j].selected){
_27c.push(name+"="+enc(elm.options[j].value));
}
}
}else{
if(dojo.lang.inArray(["radio","checkbox"],type)){
if(elm.checked){
_27c.push(name+"="+enc(elm.value));
}
}else{
_27c.push(name+"="+enc(elm.value));
}
}
}
var _282=_278.getElementsByTagName("input");
for(var i=0;i<_282.length;i++){
var _283=_282[i];
if(_283.type.toLowerCase()=="image"&&_283.form==_278&&_27a(_283)){
var name=enc(_283.name);
_27c.push(name+"="+enc(_283.value));
_27c.push(name+".x=0");
_27c.push(name+".y=0");
}
}
return _27c.join("&")+"&";
};
dojo.io.FormBind=function(args){
this.bindArgs={};
if(args&&args.formNode){
this.init(args);
}else{
if(args){
this.init({formNode:args});
}
}
};
dojo.lang.extend(dojo.io.FormBind,{form:null,bindArgs:null,clickedButton:null,init:function(args){
var form=dojo.byId(args.formNode);
if(!form||!form.tagName||form.tagName.toLowerCase()!="form"){
throw new Error("FormBind: Couldn't apply, invalid form");
}else{
if(this.form==form){
return;
}else{
if(this.form){
throw new Error("FormBind: Already applied to a form");
}
}
}
dojo.lang.mixin(this.bindArgs,args);
this.form=form;
this.connect(form,"onsubmit","submit");
for(var i=0;i<form.elements.length;i++){
var node=form.elements[i];
if(node&&node.type&&dojo.lang.inArray(["submit","button"],node.type.toLowerCase())){
this.connect(node,"onclick","click");
}
}
var _289=form.getElementsByTagName("input");
for(var i=0;i<_289.length;i++){
var _28a=_289[i];
if(_28a.type.toLowerCase()=="image"&&_28a.form==form){
this.connect(_28a,"onclick","click");
}
}
},onSubmit:function(form){
return true;
},submit:function(e){
e.preventDefault();
if(this.onSubmit(this.form)){
dojo.io.bind(dojo.lang.mixin(this.bindArgs,{formFilter:dojo.lang.hitch(this,"formFilter")}));
}
},click:function(e){
var node=e.currentTarget;
if(node.disabled){
return;
}
this.clickedButton=node;
},formFilter:function(node){
var type=(node.type||"").toLowerCase();
var _291=false;
if(node.disabled||!node.name){
_291=false;
}else{
if(dojo.lang.inArray(["submit","button","image"],type)){
if(!this.clickedButton){
this.clickedButton=node;
}
_291=node==this.clickedButton;
}else{
_291=!dojo.lang.inArray(["file","submit","reset","button"],type);
}
}
return _291;
},connect:function(_292,_293,_294){
if(dojo.evalObjPath("dojo.event.connect")){
dojo.event.connect(_292,_293,this,_294);
}else{
var fcn=dojo.lang.hitch(this,_294);
_292[_293]=function(e){
if(!e){
e=window.event;
}
if(!e.currentTarget){
e.currentTarget=e.srcElement;
}
if(!e.preventDefault){
e.preventDefault=function(){
window.event.returnValue=false;
};
}
fcn(e);
};
}
}});
dojo.io.XMLHTTPTransport=new function(){
var _297=this;
var _298={};
this.useCache=false;
this.preventCache=false;
function getCacheKey(url,_29a,_29b){
return url+"|"+_29a+"|"+_29b.toLowerCase();
}
function addToCache(url,_29d,_29e,http){
_298[getCacheKey(url,_29d,_29e)]=http;
}
function getFromCache(url,_2a1,_2a2){
return _298[getCacheKey(url,_2a1,_2a2)];
}
this.clearCache=function(){
_298={};
};
function doLoad(_2a3,http,url,_2a6,_2a7){
if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
var ret;
if(_2a3.method.toLowerCase()=="head"){
var _2a9=http.getAllResponseHeaders();
ret={};
ret.toString=function(){
return _2a9;
};
var _2aa=_2a9.split(/[\r\n]+/g);
for(var i=0;i<_2aa.length;i++){
var pair=_2aa[i].match(/^([^:]+)\s*:\s*(.+)$/i);
if(pair){
ret[pair[1]]=pair[2];
}
}
}else{
if(_2a3.mimetype=="text/javascript"){
try{
ret=dj_eval(http.responseText);
}
catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret=null;
}
}else{
if(_2a3.mimetype=="text/json"||_2a3.mimetype=="application/json"){
try{
ret=dj_eval("("+http.responseText+")");
}
catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret=false;
}
}else{
if((_2a3.mimetype=="application/xml")||(_2a3.mimetype=="text/xml")){
ret=http.responseXML;
if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
ret=dojo.dom.createDocumentFromText(http.responseText);
}
}else{
ret=http.responseText;
}
}
}
}
if(_2a7){
addToCache(url,_2a6,_2a3.method,http);
}
_2a3[(typeof _2a3.load=="function")?"load":"handle"]("load",ret,http,_2a3);
}else{
var _2ad=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
_2a3[(typeof _2a3.error=="function")?"error":"handle"]("error",_2ad,http,_2a3);
}
}
function setHeaders(http,_2af){
if(_2af["headers"]){
for(var _2b0 in _2af["headers"]){
if(_2b0.toLowerCase()=="content-type"&&!_2af["contentType"]){
_2af["contentType"]=_2af["headers"][_2b0];
}else{
http.setRequestHeader(_2b0,_2af["headers"][_2b0]);
}
}
}
}
this.inFlight=[];
this.inFlightTimer=null;
this.startWatchingInFlight=function(){
if(!this.inFlightTimer){
this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
}
};
this.watchInFlight=function(){
var now=null;
if(!dojo.hostenv._blockAsync&&!_297._blockAsync){
for(var x=this.inFlight.length-1;x>=0;x--){
try{
var tif=this.inFlight[x];
if(!tif||tif.http._aborted||!tif.http.readyState){
this.inFlight.splice(x,1);
continue;
}
if(4==tif.http.readyState){
this.inFlight.splice(x,1);
doLoad(tif.req,tif.http,tif.url,tif.query,tif.useCache);
}else{
if(tif.startTime){
if(!now){
now=(new Date()).getTime();
}
if(tif.startTime+(tif.req.timeoutSeconds*1000)<now){
if(typeof tif.http.abort=="function"){
tif.http.abort();
}
this.inFlight.splice(x,1);
tif.req[(typeof tif.req.timeout=="function")?"timeout":"handle"]("timeout",null,tif.http,tif.req);
}
}
}
}
catch(e){
try{
var _2b4=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_2b4,tif.http,tif.req);
}
catch(e2){
dojo.debug("XMLHttpTransport error callback failed: "+e2);
}
}
}
}
clearTimeout(this.inFlightTimer);
if(this.inFlight.length==0){
this.inFlightTimer=null;
return;
}
this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
};
var _2b5=dojo.hostenv.getXmlhttpObject()?true:false;
this.canHandle=function(_2b6){
return _2b5&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_2b6["mimetype"].toLowerCase()||""))&&!(_2b6["formNode"]&&dojo.io.formHasFile(_2b6["formNode"]));
};
this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
this.bind=function(_2b7){
if(!_2b7["url"]){
if(!_2b7["formNode"]&&(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]||_2b7["watchForURL"])&&(!djConfig.preventBackButtonFix)){
dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
dojo.undo.browser.addToHistory(_2b7);
return true;
}
}
var url=_2b7.url;
var _2b9="";
if(_2b7["formNode"]){
var ta=_2b7.formNode.getAttribute("action");
if((ta)&&(!_2b7["url"])){
url=ta;
}
var tp=_2b7.formNode.getAttribute("method");
if((tp)&&(!_2b7["method"])){
_2b7.method=tp;
}
_2b9+=dojo.io.encodeForm(_2b7.formNode,_2b7.encoding,_2b7["formFilter"]);
}
if(url.indexOf("#")>-1){
dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
url=url.split("#")[0];
}
if(_2b7["file"]){
_2b7.method="post";
}
if(!_2b7["method"]){
_2b7.method="get";
}
if(_2b7.method.toLowerCase()=="get"){
_2b7.multipart=false;
}else{
if(_2b7["file"]){
_2b7.multipart=true;
}else{
if(!_2b7["multipart"]){
_2b7.multipart=false;
}
}
}
if(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]){
dojo.undo.browser.addToHistory(_2b7);
}
var _2bc=_2b7["content"]||{};
if(_2b7.sendTransport){
_2bc["dojo.transport"]="xmlhttp";
}
do{
if(_2b7.postContent){
_2b9=_2b7.postContent;
break;
}
if(_2bc){
_2b9+=dojo.io.argsFromMap(_2bc,_2b7.encoding);
}
if(_2b7.method.toLowerCase()=="get"||!_2b7.multipart){
break;
}
var t=[];
if(_2b9.length){
var q=_2b9.split("&");
for(var i=0;i<q.length;++i){
if(q[i].length){
var p=q[i].split("=");
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+p[0]+"\"","",p[1]);
}
}
}
if(_2b7.file){
if(dojo.lang.isArray(_2b7.file)){
for(var i=0;i<_2b7.file.length;++i){
var o=_2b7.file[i];
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
}
}else{
var o=_2b7.file;
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
}
}
if(t.length){
t.push("--"+this.multipartBoundary+"--","");
_2b9=t.join("\r\n");
}
}while(false);
var _2c2=_2b7["sync"]?false:true;
var _2c3=_2b7["preventCache"]||(this.preventCache==true&&_2b7["preventCache"]!=false);
var _2c4=_2b7["useCache"]==true||(this.useCache==true&&_2b7["useCache"]!=false);
if(!_2c3&&_2c4){
var _2c5=getFromCache(url,_2b9,_2b7.method);
if(_2c5){
doLoad(_2b7,_2c5,url,_2b9,false);
return;
}
}
var http=dojo.hostenv.getXmlhttpObject(_2b7);
var _2c7=false;
if(_2c2){
var _2c8=this.inFlight.push({"req":_2b7,"http":http,"url":url,"query":_2b9,"useCache":_2c4,"startTime":_2b7.timeoutSeconds?(new Date()).getTime():0});
this.startWatchingInFlight();
}else{
_297._blockAsync=true;
}
if(_2b7.method.toLowerCase()=="post"){
if(!_2b7.user){
http.open("POST",url,_2c2);
}else{
http.open("POST",url,_2c2,_2b7.user,_2b7.password);
}
setHeaders(http,_2b7);
http.setRequestHeader("Content-Type",_2b7.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_2b7.contentType||"application/x-www-form-urlencoded"));
try{
http.send(_2b9);
}
catch(e){
if(typeof http.abort=="function"){
http.abort();
}
doLoad(_2b7,{status:404},url,_2b9,_2c4);
}
}else{
var _2c9=url;
if(_2b9!=""){
_2c9+=(_2c9.indexOf("?")>-1?"&":"?")+_2b9;
}
if(_2c3){
_2c9+=(dojo.string.endsWithAny(_2c9,"?","&")?"":(_2c9.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
}
if(!_2b7.user){
http.open(_2b7.method.toUpperCase(),_2c9,_2c2);
}else{
http.open(_2b7.method.toUpperCase(),_2c9,_2c2,_2b7.user,_2b7.password);
}
setHeaders(http,_2b7);
try{
http.send(null);
}
catch(e){
if(typeof http.abort=="function"){
http.abort();
}
doLoad(_2b7,{status:404},url,_2b9,_2c4);
}
}
if(!_2c2){
doLoad(_2b7,http,url,_2b9,_2c4);
_297._blockAsync=false;
}
_2b7.abort=function(){
try{
http._aborted=true;
}
catch(e){
}
return http.abort();
};
return;
};
dojo.io.transports.addTransport("XMLHTTPTransport");
};
}
dojo.provide("dojo.io.cookie");
dojo.io.cookie.setCookie=function(name,_2cb,days,path,_2ce,_2cf){
var _2d0=-1;
if((typeof days=="number")&&(days>=0)){
var d=new Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
_2d0=d.toGMTString();
}
_2cb=escape(_2cb);
document.cookie=name+"="+_2cb+";"+(_2d0!=-1?" expires="+_2d0+";":"")+(path?"path="+path:"")+(_2ce?"; domain="+_2ce:"")+(_2cf?"; secure":"");
};
dojo.io.cookie.set=dojo.io.cookie.setCookie;
dojo.io.cookie.getCookie=function(name){
var idx=document.cookie.lastIndexOf(name+"=");
if(idx==-1){
return null;
}
var _2d4=document.cookie.substring(idx+name.length+1);
var end=_2d4.indexOf(";");
if(end==-1){
end=_2d4.length;
}
_2d4=_2d4.substring(0,end);
_2d4=unescape(_2d4);
return _2d4;
};
dojo.io.cookie.get=dojo.io.cookie.getCookie;
dojo.io.cookie.deleteCookie=function(name){
dojo.io.cookie.setCookie(name,"-",0);
};
dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_2db,_2dc,_2dd){
if(arguments.length==5){
_2dd=_2db;
_2db=null;
_2dc=null;
}
var _2de=[],_2df,_2e0="";
if(!_2dd){
_2df=dojo.io.cookie.getObjectCookie(name);
}
if(days>=0){
if(!_2df){
_2df={};
}
for(var prop in obj){
if(obj[prop]==null){
delete _2df[prop];
}else{
if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
_2df[prop]=obj[prop];
}
}
}
prop=null;
for(var prop in _2df){
_2de.push(escape(prop)+"="+escape(_2df[prop]));
}
_2e0=_2de.join("&");
}
dojo.io.cookie.setCookie(name,_2e0,days,path,_2db,_2dc);
};
dojo.io.cookie.getObjectCookie=function(name){
var _2e3=null,_2e4=dojo.io.cookie.getCookie(name);
if(_2e4){
_2e3={};
var _2e5=_2e4.split("&");
for(var i=0;i<_2e5.length;i++){
var pair=_2e5[i].split("=");
var _2e8=pair[1];
if(isNaN(_2e8)){
_2e8=unescape(pair[1]);
}
_2e3[unescape(pair[0])]=_2e8;
}
}
return _2e3;
};
dojo.io.cookie.isSupported=function(){
if(typeof navigator.cookieEnabled!="boolean"){
dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
var _2e9=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
navigator.cookieEnabled=(_2e9=="CookiesAllowed");
if(navigator.cookieEnabled){
this.deleteCookie("__TestingYourBrowserForCookieSupport__");
}
}
return navigator.cookieEnabled;
};
if(!dojo.io.cookies){
dojo.io.cookies=dojo.io.cookie;
}
dojo.kwCompoundRequire({common:["dojo.io.common"],rhino:["dojo.io.RhinoIO"],browser:["dojo.io.BrowserIO","dojo.io.cookie"],dashboard:["dojo.io.BrowserIO","dojo.io.cookie"]});
dojo.provide("dojo.io.*");
dojo.provide("dojo.event.common");
dojo.event=new function(){
this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
function interpolateArgs(args,_2eb){
var dl=dojo.lang;
var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
switch(args.length){
case 0:
return;
case 1:
return;
case 2:
ao.srcFunc=args[0];
ao.adviceFunc=args[1];
break;
case 3:
if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isString(args[2]))){
ao.adviceType="after";
ao.srcObj=args[0];
ao.srcFunc=args[1];
ao.adviceFunc=args[2];
}else{
if((dl.isString(args[1]))&&(dl.isString(args[2]))){
ao.srcFunc=args[1];
ao.adviceFunc=args[2];
}else{
if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isFunction(args[2]))){
ao.adviceType="after";
ao.srcObj=args[0];
ao.srcFunc=args[1];
var _2ee=dl.nameAnonFunc(args[2],ao.adviceObj,_2eb);
ao.adviceFunc=_2ee;
}else{
if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
ao.adviceType="after";
ao.srcObj=dj_global;
var _2ee=dl.nameAnonFunc(args[0],ao.srcObj,_2eb);
ao.srcFunc=_2ee;
ao.adviceObj=args[1];
ao.adviceFunc=args[2];
}
}
}
}
break;
case 4:
if((dl.isObject(args[0]))&&(dl.isObject(args[2]))){
ao.adviceType="after";
ao.srcObj=args[0];
ao.srcFunc=args[1];
ao.adviceObj=args[2];
ao.adviceFunc=args[3];
}else{
if((dl.isString(args[0]))&&(dl.isString(args[1]))&&(dl.isObject(args[2]))){
ao.adviceType=args[0];
ao.srcObj=dj_global;
ao.srcFunc=args[1];
ao.adviceObj=args[2];
ao.adviceFunc=args[3];
}else{
if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
ao.adviceType=args[0];
ao.srcObj=dj_global;
var _2ee=dl.nameAnonFunc(args[1],dj_global,_2eb);
ao.srcFunc=_2ee;
ao.adviceObj=args[2];
ao.adviceFunc=args[3];
}else{
if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
ao.srcObj=args[1];
ao.srcFunc=args[2];
var _2ee=dl.nameAnonFunc(args[3],dj_global,_2eb);
ao.adviceObj=dj_global;
ao.adviceFunc=_2ee;
}else{
if(dl.isObject(args[1])){
ao.srcObj=args[1];
ao.srcFunc=args[2];
ao.adviceObj=dj_global;
ao.adviceFunc=args[3];
}else{
if(dl.isObject(args[2])){
ao.srcObj=dj_global;
ao.srcFunc=args[1];
ao.adviceObj=args[2];
ao.adviceFunc=args[3];
}else{
ao.srcObj=ao.adviceObj=ao.aroundObj=dj_global;
ao.srcFunc=args[1];
ao.adviceFunc=args[2];
ao.aroundFunc=args[3];
}
}
}
}
}
}
break;
case 6:
ao.srcObj=args[1];
ao.srcFunc=args[2];
ao.adviceObj=args[3];
ao.adviceFunc=args[4];
ao.aroundFunc=args[5];
ao.aroundObj=dj_global;
break;
default:
ao.srcObj=args[1];
ao.srcFunc=args[2];
ao.adviceObj=args[3];
ao.adviceFunc=args[4];
ao.aroundObj=args[5];
ao.aroundFunc=args[6];
ao.once=args[7];
ao.delay=args[8];
ao.rate=args[9];
ao.adviceMsg=args[10];
ao.maxCalls=(!isNaN(parseInt(args[11])))?args[11]:-1;
break;
}
if(dl.isFunction(ao.aroundFunc)){
var _2ee=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2eb);
ao.aroundFunc=_2ee;
}
if(dl.isFunction(ao.srcFunc)){
ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
}
if(dl.isFunction(ao.adviceFunc)){
ao.adviceFunc=dl.getNameInObj(ao.adviceObj,ao.adviceFunc);
}
if((ao.aroundObj)&&(dl.isFunction(ao.aroundFunc))){
ao.aroundFunc=dl.getNameInObj(ao.aroundObj,ao.aroundFunc);
}
if(!ao.srcObj){
dojo.raise("bad srcObj for srcFunc: "+ao.srcFunc);
}
if(!ao.adviceObj){
dojo.raise("bad adviceObj for adviceFunc: "+ao.adviceFunc);
}
if(!ao.adviceFunc){
dojo.debug("bad adviceFunc for srcFunc: "+ao.srcFunc);
dojo.debugShallow(ao);
}
return ao;
}
this.connect=function(){
if(arguments.length==1){
var ao=arguments[0];
}else{
var ao=interpolateArgs(arguments,true);
}
if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
var _2f0={};
for(var x in ao){
_2f0[x]=ao[x];
}
var mjps=[];
dojo.lang.forEach(ao.srcObj,function(src){
if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
src=dojo.byId(src);
}
_2f0.srcObj=src;
mjps.push(dojo.event.connect.call(dojo.event,_2f0));
});
return mjps;
}
var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc);
if(ao.adviceFunc){
var mjp2=dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj,ao.adviceFunc);
}
mjp.kwAddAdvice(ao);
return mjp;
};
this.log=function(a1,a2){
var _2f8;
if((arguments.length==1)&&(typeof a1=="object")){
_2f8=a1;
}else{
_2f8={srcObj:a1,srcFunc:a2};
}
_2f8.adviceFunc=function(){
var _2f9=[];
for(var x=0;x<arguments.length;x++){
_2f9.push(arguments[x]);
}
dojo.debug("("+_2f8.srcObj+")."+_2f8.srcFunc,":",_2f9.join(", "));
};
this.kwConnect(_2f8);
};
this.connectBefore=function(){
var args=["before"];
for(var i=0;i<arguments.length;i++){
args.push(arguments[i]);
}
return this.connect.apply(this,args);
};
this.connectAround=function(){
var args=["around"];
for(var i=0;i<arguments.length;i++){
args.push(arguments[i]);
}
return this.connect.apply(this,args);
};
this.connectOnce=function(){
var ao=interpolateArgs(arguments,true);
ao.once=true;
return this.connect(ao);
};
this.connectRunOnce=function(){
var ao=interpolateArgs(arguments,true);
ao.maxCalls=1;
return this.connect(ao);
};
this._kwConnectImpl=function(_301,_302){
var fn=(_302)?"disconnect":"connect";
if(typeof _301["srcFunc"]=="function"){
_301.srcObj=_301["srcObj"]||dj_global;
var _304=dojo.lang.nameAnonFunc(_301.srcFunc,_301.srcObj,true);
_301.srcFunc=_304;
}
if(typeof _301["adviceFunc"]=="function"){
_301.adviceObj=_301["adviceObj"]||dj_global;
var _304=dojo.lang.nameAnonFunc(_301.adviceFunc,_301.adviceObj,true);
_301.adviceFunc=_304;
}
_301.srcObj=_301["srcObj"]||dj_global;
_301.adviceObj=_301["adviceObj"]||_301["targetObj"]||dj_global;
_301.adviceFunc=_301["adviceFunc"]||_301["targetFunc"];
return dojo.event[fn](_301);
};
this.kwConnect=function(_305){
return this._kwConnectImpl(_305,false);
};
this.disconnect=function(){
if(arguments.length==1){
var ao=arguments[0];
}else{
var ao=interpolateArgs(arguments,true);
}
if(!ao.adviceFunc){
return;
}
if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
if(dojo.render.html.ie){
ao.srcFunc="onkeydown";
this.disconnect(ao);
}
ao.srcFunc="onkeypress";
}
if(!ao.srcObj[ao.srcFunc]){
return null;
}
var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc,true);
mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
return mjp;
};
this.kwDisconnect=function(_308){
return this._kwConnectImpl(_308,true);
};
};
dojo.event.MethodInvocation=function(_309,obj,args){
this.jp_=_309;
this.object=obj;
this.args=[];
for(var x=0;x<args.length;x++){
this.args[x]=args[x];
}
this.around_index=-1;
};
dojo.event.MethodInvocation.prototype.proceed=function(){
this.around_index++;
if(this.around_index>=this.jp_.around.length){
return this.jp_.object[this.jp_.methodname].apply(this.jp_.object,this.args);
}else{
var ti=this.jp_.around[this.around_index];
var mobj=ti[0]||dj_global;
var meth=ti[1];
return mobj[meth].call(mobj,this);
}
};
dojo.event.MethodJoinPoint=function(obj,_311){
this.object=obj||dj_global;
this.methodname=_311;
this.methodfunc=this.object[_311];
this.squelch=false;
};
dojo.event.MethodJoinPoint.getForMethod=function(obj,_313){
if(!obj){
obj=dj_global;
}
var ofn=obj[_313];
if(!ofn){
ofn=obj[_313]=function(){
};
if(!obj[_313]){
dojo.raise("Cannot set do-nothing method on that object "+_313);
}
}else{
if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
return null;
}
}
var _315=_313+"$joinpoint";
var _316=_313+"$joinpoint$method";
var _317=obj[_315];
if(!_317){
var _318=false;
if(dojo.event["browser"]){
if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
_318=true;
dojo.event.browser.addClobberNodeAttrs(obj,[_315,_316,_313]);
}
}
var _319=ofn.length;
obj[_316]=ofn;
_317=obj[_315]=new dojo.event.MethodJoinPoint(obj,_316);
if(!_318){
obj[_313]=function(){
return _317.run.apply(_317,arguments);
};
}else{
obj[_313]=function(){
var args=[];
if(!arguments.length){
var evt=null;
try{
if(obj.ownerDocument){
evt=obj.ownerDocument.parentWindow.event;
}else{
if(obj.documentElement){
evt=obj.documentElement.ownerDocument.parentWindow.event;
}else{
if(obj.event){
evt=obj.event;
}else{
evt=window.event;
}
}
}
}
catch(e){
evt=window.event;
}
if(evt){
args.push(dojo.event.browser.fixEvent(evt,this));
}
}else{
for(var x=0;x<arguments.length;x++){
if((x==0)&&(dojo.event.browser.isEvent(arguments[x]))){
args.push(dojo.event.browser.fixEvent(arguments[x],this));
}else{
args.push(arguments[x]);
}
}
}
return _317.run.apply(_317,args);
};
}
obj[_313].__preJoinArity=_319;
}
return _317;
};
dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
this.object[this.methodname]=this.methodfunc;
this.before=[];
this.after=[];
this.around=[];
},disconnect:dojo.lang.forward("unintercept"),run:function(){
var obj=this.object||dj_global;
var args=arguments;
var _31f=[];
for(var x=0;x<args.length;x++){
_31f[x]=args[x];
}
var _321=function(marr){
if(!marr){
dojo.debug("Null argument to unrollAdvice()");
return;
}
var _323=marr[0]||dj_global;
var _324=marr[1];
if(!_323[_324]){
dojo.raise("function \""+_324+"\" does not exist on \""+_323+"\"");
}
var _325=marr[2]||dj_global;
var _326=marr[3];
var msg=marr[6];
var _328=marr[7];
if(_328>-1){
if(_328==0){
return;
}
marr[7]--;
}
var _329;
var to={args:[],jp_:this,object:obj,proceed:function(){
return _323[_324].apply(_323,to.args);
}};
to.args=_31f;
var _32b=parseInt(marr[4]);
var _32c=((!isNaN(_32b))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
if(marr[5]){
var rate=parseInt(marr[5]);
var cur=new Date();
var _32f=false;
if((marr["last"])&&((cur-marr.last)<=rate)){
if(dojo.event._canTimeout){
if(marr["delayTimer"]){
clearTimeout(marr.delayTimer);
}
var tod=parseInt(rate*2);
var mcpy=dojo.lang.shallowCopy(marr);
marr.delayTimer=setTimeout(function(){
mcpy[5]=0;
_321(mcpy);
},tod);
}
return;
}else{
marr.last=cur;
}
}
if(_326){
_325[_326].call(_325,to);
}else{
if((_32c)&&((dojo.render.html)||(dojo.render.svg))){
dj_global["setTimeout"](function(){
if(msg){
_323[_324].call(_323,to);
}else{
_323[_324].apply(_323,args);
}
},_32b);
}else{
if(msg){
_323[_324].call(_323,to);
}else{
_323[_324].apply(_323,args);
}
}
}
};
var _332=function(){
if(this.squelch){
try{
return _321.apply(this,arguments);
}
catch(e){
dojo.debug(e);
}
}else{
return _321.apply(this,arguments);
}
};
if((this["before"])&&(this.before.length>0)){
dojo.lang.forEach(this.before.concat(new Array()),_332);
}
var _333;
try{
if((this["around"])&&(this.around.length>0)){
var mi=new dojo.event.MethodInvocation(this,obj,args);
_333=mi.proceed();
}else{
if(this.methodfunc){
_333=this.object[this.methodname].apply(this.object,args);
}
}
}
catch(e){
if(!this.squelch){
dojo.debug(e,"when calling",this.methodname,"on",this.object,"with arguments",args);
dojo.raise(e);
}
}
if((this["after"])&&(this.after.length>0)){
dojo.lang.forEach(this.after.concat(new Array()),_332);
}
return (this.methodfunc)?_333:null;
},getArr:function(kind){
var type="after";
if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
type="before";
}else{
if(kind=="around"){
type="around";
}
}
if(!this[type]){
this[type]=[];
}
return this[type];
},kwAddAdvice:function(args){
this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
},addAdvice:function(_338,_339,_33a,_33b,_33c,_33d,once,_33f,rate,_341,_342){
var arr=this.getArr(_33c);
if(!arr){
dojo.raise("bad this: "+this);
}
var ao=[_338,_339,_33a,_33b,_33f,rate,_341,_342];
if(once){
if(this.hasAdvice(_338,_339,_33c,arr)>=0){
return;
}
}
if(_33d=="first"){
arr.unshift(ao);
}else{
arr.push(ao);
}
},hasAdvice:function(_345,_346,_347,arr){
if(!arr){
arr=this.getArr(_347);
}
var ind=-1;
for(var x=0;x<arr.length;x++){
var aao=(typeof _346=="object")?(new String(_346)).toString():_346;
var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
if((arr[x][0]==_345)&&(a1o==aao)){
ind=x;
}
}
return ind;
},removeAdvice:function(_34d,_34e,_34f,once){
var arr=this.getArr(_34f);
var ind=this.hasAdvice(_34d,_34e,_34f,arr);
if(ind==-1){
return false;
}
while(ind!=-1){
arr.splice(ind,1);
if(once){
break;
}
ind=this.hasAdvice(_34d,_34e,_34f,arr);
}
return true;
}});
dojo.provide("dojo.event.topic");
dojo.event.topic=new function(){
this.topics={};
this.getTopic=function(_353){
if(!this.topics[_353]){
this.topics[_353]=new this.TopicImpl(_353);
}
return this.topics[_353];
};
this.registerPublisher=function(_354,obj,_356){
var _354=this.getTopic(_354);
_354.registerPublisher(obj,_356);
};
this.subscribe=function(_357,obj,_359){
var _357=this.getTopic(_357);
_357.subscribe(obj,_359);
};
this.unsubscribe=function(_35a,obj,_35c){
var _35a=this.getTopic(_35a);
_35a.unsubscribe(obj,_35c);
};
this.destroy=function(_35d){
this.getTopic(_35d).destroy();
delete this.topics[_35d];
};
this.publishApply=function(_35e,args){
var _35e=this.getTopic(_35e);
_35e.sendMessage.apply(_35e,args);
};
this.publish=function(_360,_361){
var _360=this.getTopic(_360);
var args=[];
for(var x=1;x<arguments.length;x++){
args.push(arguments[x]);
}
_360.sendMessage.apply(_360,args);
};
};
dojo.event.topic.TopicImpl=function(_364){
this.topicName=_364;
this.subscribe=function(_365,_366){
var tf=_366||_365;
var to=(!_366)?dj_global:_365;
return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
};
this.unsubscribe=function(_369,_36a){
var tf=(!_36a)?_369:_36a;
var to=(!_36a)?null:_369;
return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
};
this._getJoinPoint=function(){
return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
};
this.setSquelch=function(_36d){
this._getJoinPoint().squelch=_36d;
};
this.destroy=function(){
this._getJoinPoint().disconnect();
};
this.registerPublisher=function(_36e,_36f){
dojo.event.connect(_36e,_36f,this,"sendMessage");
};
this.sendMessage=function(_370){
};
};
dojo.provide("dojo.event.browser");
dojo._ie_clobber=new function(){
this.clobberNodes=[];
function nukeProp(node,prop){
try{
node[prop]=null;
}
catch(e){
}
try{
delete node[prop];
}
catch(e){
}
try{
node.removeAttribute(prop);
}
catch(e){
}
}
this.clobber=function(_373){
var na;
var tna;
if(_373){
tna=_373.all||_373.getElementsByTagName("*");
na=[_373];
for(var x=0;x<tna.length;x++){
if(tna[x]["__doClobber__"]){
na.push(tna[x]);
}
}
}else{
try{
window.onload=null;
}
catch(e){
}
na=(this.clobberNodes.length)?this.clobberNodes:document.all;
}
tna=null;
var _377={};
for(var i=na.length-1;i>=0;i=i-1){
var el=na[i];
try{
if(el&&el["__clobberAttrs__"]){
for(var j=0;j<el.__clobberAttrs__.length;j++){
nukeProp(el,el.__clobberAttrs__[j]);
}
nukeProp(el,"__clobberAttrs__");
nukeProp(el,"__doClobber__");
}
}
catch(e){
}
}
na=null;
};
};
if(dojo.render.html.ie){
dojo.addOnUnload(function(){
dojo._ie_clobber.clobber();
try{
if((dojo["widget"])&&(dojo.widget["manager"])){
dojo.widget.manager.destroyAll();
}
}
catch(e){
}
if(dojo.widget){
for(var name in dojo.widget._templateCache){
if(dojo.widget._templateCache[name].node){
dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
dojo.widget._templateCache[name].node=null;
delete dojo.widget._templateCache[name].node;
}
}
}
try{
window.onload=null;
}
catch(e){
}
try{
window.onunload=null;
}
catch(e){
}
dojo._ie_clobber.clobberNodes=[];
});
}
dojo.event.browser=new function(){
var _37c=0;
this.normalizedEventName=function(_37d){
switch(_37d){
case "CheckboxStateChange":
case "DOMAttrModified":
case "DOMMenuItemActive":
case "DOMMenuItemInactive":
case "DOMMouseScroll":
case "DOMNodeInserted":
case "DOMNodeRemoved":
case "RadioStateChange":
return _37d;
break;
default:
var lcn=_37d.toLowerCase();
return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
break;
}
};
this.clean=function(node){
if(dojo.render.html.ie){
dojo._ie_clobber.clobber(node);
}
};
this.addClobberNode=function(node){
if(!dojo.render.html.ie){
return;
}
if(!node["__doClobber__"]){
node.__doClobber__=true;
dojo._ie_clobber.clobberNodes.push(node);
node.__clobberAttrs__=[];
}
};
this.addClobberNodeAttrs=function(node,_382){
if(!dojo.render.html.ie){
return;
}
this.addClobberNode(node);
for(var x=0;x<_382.length;x++){
node.__clobberAttrs__.push(_382[x]);
}
};
this.removeListener=function(node,_385,fp,_387){
if(!_387){
var _387=false;
}
_385=dojo.event.browser.normalizedEventName(_385);
if(_385=="key"){
if(dojo.render.html.ie){
this.removeListener(node,"onkeydown",fp,_387);
}
_385="keypress";
}
if(node.removeEventListener){
node.removeEventListener(_385,fp,_387);
}
};
this.addListener=function(node,_389,fp,_38b,_38c){
if(!node){
return;
}
if(!_38b){
var _38b=false;
}
_389=dojo.event.browser.normalizedEventName(_389);
if(_389=="key"){
if(dojo.render.html.ie){
this.addListener(node,"onkeydown",fp,_38b,_38c);
}
_389="keypress";
}
if(!_38c){
var _38d=function(evt){
if(!evt){
evt=window.event;
}
var ret=fp(dojo.event.browser.fixEvent(evt,this));
if(_38b){
dojo.event.browser.stopEvent(evt);
}
return ret;
};
}else{
_38d=fp;
}
if(node.addEventListener){
node.addEventListener(_389,_38d,_38b);
return _38d;
}else{
_389="on"+_389;
if(typeof node[_389]=="function"){
var _390=node[_389];
node[_389]=function(e){
_390(e);
return _38d(e);
};
}else{
node[_389]=_38d;
}
if(dojo.render.html.ie){
this.addClobberNodeAttrs(node,[_389]);
}
return _38d;
}
};
this.isEvent=function(obj){
return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
};
this.currentEvent=null;
this.callListener=function(_393,_394){
if(typeof _393!="function"){
dojo.raise("listener not a function: "+_393);
}
dojo.event.browser.currentEvent.currentTarget=_394;
return _393.call(_394,dojo.event.browser.currentEvent);
};
this._stopPropagation=function(){
dojo.event.browser.currentEvent.cancelBubble=true;
};
this._preventDefault=function(){
dojo.event.browser.currentEvent.returnValue=false;
};
this.keys={KEY_BACKSPACE:8,KEY_TAB:9,KEY_CLEAR:12,KEY_ENTER:13,KEY_SHIFT:16,KEY_CTRL:17,KEY_ALT:18,KEY_PAUSE:19,KEY_CAPS_LOCK:20,KEY_ESCAPE:27,KEY_SPACE:32,KEY_PAGE_UP:33,KEY_PAGE_DOWN:34,KEY_END:35,KEY_HOME:36,KEY_LEFT_ARROW:37,KEY_UP_ARROW:38,KEY_RIGHT_ARROW:39,KEY_DOWN_ARROW:40,KEY_INSERT:45,KEY_DELETE:46,KEY_HELP:47,KEY_LEFT_WINDOW:91,KEY_RIGHT_WINDOW:92,KEY_SELECT:93,KEY_NUMPAD_0:96,KEY_NUMPAD_1:97,KEY_NUMPAD_2:98,KEY_NUMPAD_3:99,KEY_NUMPAD_4:100,KEY_NUMPAD_5:101,KEY_NUMPAD_6:102,KEY_NUMPAD_7:103,KEY_NUMPAD_8:104,KEY_NUMPAD_9:105,KEY_NUMPAD_MULTIPLY:106,KEY_NUMPAD_PLUS:107,KEY_NUMPAD_ENTER:108,KEY_NUMPAD_MINUS:109,KEY_NUMPAD_PERIOD:110,KEY_NUMPAD_DIVIDE:111,KEY_F1:112,KEY_F2:113,KEY_F3:114,KEY_F4:115,KEY_F5:116,KEY_F6:117,KEY_F7:118,KEY_F8:119,KEY_F9:120,KEY_F10:121,KEY_F11:122,KEY_F12:123,KEY_F13:124,KEY_F14:125,KEY_F15:126,KEY_NUM_LOCK:144,KEY_SCROLL_LOCK:145};
this.revKeys=[];
for(var key in this.keys){
this.revKeys[this.keys[key]]=key;
}
this.fixEvent=function(evt,_397){
if(!evt){
if(window["event"]){
evt=window.event;
}
}
if((evt["type"])&&(evt["type"].indexOf("key")==0)){
evt.keys=this.revKeys;
for(var key in this.keys){
evt[key]=this.keys[key];
}
if(evt["type"]=="keydown"&&dojo.render.html.ie){
switch(evt.keyCode){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_LEFT_WINDOW:
case evt.KEY_RIGHT_WINDOW:
case evt.KEY_SELECT:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
case evt.KEY_NUMPAD_0:
case evt.KEY_NUMPAD_1:
case evt.KEY_NUMPAD_2:
case evt.KEY_NUMPAD_3:
case evt.KEY_NUMPAD_4:
case evt.KEY_NUMPAD_5:
case evt.KEY_NUMPAD_6:
case evt.KEY_NUMPAD_7:
case evt.KEY_NUMPAD_8:
case evt.KEY_NUMPAD_9:
case evt.KEY_NUMPAD_PERIOD:
break;
case evt.KEY_NUMPAD_MULTIPLY:
case evt.KEY_NUMPAD_PLUS:
case evt.KEY_NUMPAD_ENTER:
case evt.KEY_NUMPAD_MINUS:
case evt.KEY_NUMPAD_DIVIDE:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
case evt.KEY_PAGE_UP:
case evt.KEY_PAGE_DOWN:
case evt.KEY_END:
case evt.KEY_HOME:
case evt.KEY_LEFT_ARROW:
case evt.KEY_UP_ARROW:
case evt.KEY_RIGHT_ARROW:
case evt.KEY_DOWN_ARROW:
case evt.KEY_INSERT:
case evt.KEY_DELETE:
case evt.KEY_F1:
case evt.KEY_F2:
case evt.KEY_F3:
case evt.KEY_F4:
case evt.KEY_F5:
case evt.KEY_F6:
case evt.KEY_F7:
case evt.KEY_F8:
case evt.KEY_F9:
case evt.KEY_F10:
case evt.KEY_F11:
case evt.KEY_F12:
case evt.KEY_F12:
case evt.KEY_F13:
case evt.KEY_F14:
case evt.KEY_F15:
case evt.KEY_CLEAR:
case evt.KEY_HELP:
evt.key=evt.keyCode;
break;
default:
if(evt.ctrlKey||evt.altKey){
var _399=evt.keyCode;
if(_399>=65&&_399<=90&&evt.shiftKey==false){
_399+=32;
}
if(_399>=1&&_399<=26&&evt.ctrlKey){
_399+=96;
}
evt.key=String.fromCharCode(_399);
}
}
}else{
if(evt["type"]=="keypress"){
if(dojo.render.html.opera){
if(evt.which==0){
evt.key=evt.keyCode;
}else{
if(evt.which>0){
switch(evt.which){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
evt.key=evt.which;
break;
default:
var _399=evt.which;
if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
_399+=32;
}
evt.key=String.fromCharCode(_399);
}
}
}
}else{
if(dojo.render.html.ie){
if(!evt.ctrlKey&&!evt.altKey&&evt.keyCode>=evt.KEY_SPACE){
evt.key=String.fromCharCode(evt.keyCode);
}
}else{
if(dojo.render.html.safari){
switch(evt.keyCode){
case 25:
evt.key=evt.KEY_TAB;
evt.shift=true;
break;
case 63232:
evt.key=evt.KEY_UP_ARROW;
break;
case 63233:
evt.key=evt.KEY_DOWN_ARROW;
break;
case 63234:
evt.key=evt.KEY_LEFT_ARROW;
break;
case 63235:
evt.key=evt.KEY_RIGHT_ARROW;
break;
case 63236:
evt.key=evt.KEY_F1;
break;
case 63237:
evt.key=evt.KEY_F2;
break;
case 63238:
evt.key=evt.KEY_F3;
break;
case 63239:
evt.key=evt.KEY_F4;
break;
case 63240:
evt.key=evt.KEY_F5;
break;
case 63241:
evt.key=evt.KEY_F6;
break;
case 63242:
evt.key=evt.KEY_F7;
break;
case 63243:
evt.key=evt.KEY_F8;
break;
case 63244:
evt.key=evt.KEY_F9;
break;
case 63245:
evt.key=evt.KEY_F10;
break;
case 63246:
evt.key=evt.KEY_F11;
break;
case 63247:
evt.key=evt.KEY_F12;
break;
case 63250:
evt.key=evt.KEY_PAUSE;
break;
case 63272:
evt.key=evt.KEY_DELETE;
break;
case 63273:
evt.key=evt.KEY_HOME;
break;
case 63275:
evt.key=evt.KEY_END;
break;
case 63276:
evt.key=evt.KEY_PAGE_UP;
break;
case 63277:
evt.key=evt.KEY_PAGE_DOWN;
break;
case 63302:
evt.key=evt.KEY_INSERT;
break;
case 63248:
case 63249:
case 63289:
break;
default:
evt.key=evt.charCode>=evt.KEY_SPACE?String.fromCharCode(evt.charCode):evt.keyCode;
}
}else{
evt.key=evt.charCode>0?String.fromCharCode(evt.charCode):evt.keyCode;
}
}
}
}
}
}
if(dojo.render.html.ie){
if(!evt.target){
evt.target=evt.srcElement;
}
if(!evt.currentTarget){
evt.currentTarget=(_397?_397:evt.srcElement);
}
if(!evt.layerX){
evt.layerX=evt.offsetX;
}
if(!evt.layerY){
evt.layerY=evt.offsetY;
}
var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
var _39b=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
if(!evt.pageX){
evt.pageX=evt.clientX+(_39b.scrollLeft||0);
}
if(!evt.pageY){
evt.pageY=evt.clientY+(_39b.scrollTop||0);
}
if(evt.type=="mouseover"){
evt.relatedTarget=evt.fromElement;
}
if(evt.type=="mouseout"){
evt.relatedTarget=evt.toElement;
}
this.currentEvent=evt;
evt.callListener=this.callListener;
evt.stopPropagation=this._stopPropagation;
evt.preventDefault=this._preventDefault;
}
return evt;
};
this.stopEvent=function(evt){
if(window.event){
evt.cancelBubble=true;
evt.returnValue=false;
}else{
evt.preventDefault();
evt.stopPropagation();
}
};
};
dojo.kwCompoundRequire({common:["dojo.event.common","dojo.event.topic"],browser:["dojo.event.browser"],dashboard:["dojo.event.browser"]});
dojo.provide("dojo.event.*");
dojo.provide("dojo.gfx.color");
dojo.gfx.color.Color=function(r,g,b,a){
if(dojo.lang.isArray(r)){
this.r=r[0];
this.g=r[1];
this.b=r[2];
this.a=r[3]||1;
}else{
if(dojo.lang.isString(r)){
var rgb=dojo.gfx.color.extractRGB(r);
this.r=rgb[0];
this.g=rgb[1];
this.b=rgb[2];
this.a=g||1;
}else{
if(r instanceof dojo.gfx.color.Color){
this.r=r.r;
this.b=r.b;
this.g=r.g;
this.a=r.a;
}else{
this.r=r;
this.g=g;
this.b=b;
this.a=a;
}
}
}
};
dojo.gfx.color.Color.fromArray=function(arr){
return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
};
dojo.extend(dojo.gfx.color.Color,{toRgb:function(_3a3){
if(_3a3){
return this.toRgba();
}else{
return [this.r,this.g,this.b];
}
},toRgba:function(){
return [this.r,this.g,this.b,this.a];
},toHex:function(){
return dojo.gfx.color.rgb2hex(this.toRgb());
},toCss:function(){
return "rgb("+this.toRgb().join()+")";
},toString:function(){
return this.toHex();
},blend:function(_3a4,_3a5){
var rgb=null;
if(dojo.lang.isArray(_3a4)){
rgb=_3a4;
}else{
if(_3a4 instanceof dojo.gfx.color.Color){
rgb=_3a4.toRgb();
}else{
rgb=new dojo.gfx.color.Color(_3a4).toRgb();
}
}
return dojo.gfx.color.blend(this.toRgb(),rgb,_3a5);
}});
dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
dojo.gfx.color.blend=function(a,b,_3a9){
if(typeof a=="string"){
return dojo.gfx.color.blendHex(a,b,_3a9);
}
if(!_3a9){
_3a9=0;
}
_3a9=Math.min(Math.max(-1,_3a9),1);
_3a9=((_3a9+1)/2);
var c=[];
for(var x=0;x<3;x++){
c[x]=parseInt(b[x]+((a[x]-b[x])*_3a9));
}
return c;
};
dojo.gfx.color.blendHex=function(a,b,_3ae){
return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_3ae));
};
dojo.gfx.color.extractRGB=function(_3af){
var hex="0123456789abcdef";
_3af=_3af.toLowerCase();
if(_3af.indexOf("rgb")==0){
var _3b1=_3af.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
var ret=_3b1.splice(1,3);
return ret;
}else{
var _3b3=dojo.gfx.color.hex2rgb(_3af);
if(_3b3){
return _3b3;
}else{
return dojo.gfx.color.named[_3af]||[255,255,255];
}
}
};
dojo.gfx.color.hex2rgb=function(hex){
var _3b5="0123456789ABCDEF";
var rgb=new Array(3);
if(hex.indexOf("#")==0){
hex=hex.substring(1);
}
hex=hex.toUpperCase();
if(hex.replace(new RegExp("["+_3b5+"]","g"),"")!=""){
return null;
}
if(hex.length==3){
rgb[0]=hex.charAt(0)+hex.charAt(0);
rgb[1]=hex.charAt(1)+hex.charAt(1);
rgb[2]=hex.charAt(2)+hex.charAt(2);
}else{
rgb[0]=hex.substring(0,2);
rgb[1]=hex.substring(2,4);
rgb[2]=hex.substring(4);
}
for(var i=0;i<rgb.length;i++){
rgb[i]=_3b5.indexOf(rgb[i].charAt(0))*16+_3b5.indexOf(rgb[i].charAt(1));
}
return rgb;
};
dojo.gfx.color.rgb2hex=function(r,g,b){
if(dojo.lang.isArray(r)){
g=r[1]||0;
b=r[2]||0;
r=r[0]||0;
}
var ret=dojo.lang.map([r,g,b],function(x){
x=new Number(x);
var s=x.toString(16);
while(s.length<2){
s="0"+s;
}
return s;
});
ret.unshift("#");
return ret.join("");
};
dojo.provide("dojo.lfx.Animation");
dojo.lfx.Line=function(_3be,end){
this.start=_3be;
this.end=end;
if(dojo.lang.isArray(_3be)){
var diff=[];
dojo.lang.forEach(this.start,function(s,i){
diff[i]=this.end[i]-s;
},this);
this.getValue=function(n){
var res=[];
dojo.lang.forEach(this.start,function(s,i){
res[i]=(diff[i]*n)+s;
},this);
return res;
};
}else{
var diff=end-_3be;
this.getValue=function(n){
return (diff*n)+this.start;
};
}
};
if((dojo.render.html.khtml)&&(!dojo.render.html.safari)){
dojo.lfx.easeDefault=function(n){
return (parseFloat("0.5")+((Math.sin((n+parseFloat("1.5"))*Math.PI))/2));
};
}else{
dojo.lfx.easeDefault=function(n){
return (0.5+((Math.sin((n+1.5)*Math.PI))/2));
};
}
dojo.lfx.easeIn=function(n){
return Math.pow(n,3);
};
dojo.lfx.easeOut=function(n){
return (1-Math.pow(1-n,3));
};
dojo.lfx.easeInOut=function(n){
return ((3*Math.pow(n,2))-(2*Math.pow(n,3)));
};
dojo.lfx.IAnimation=function(){
};
dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_3ce,_3cf){
if(!_3cf){
_3cf=_3ce;
_3ce=this;
}
_3cf=dojo.lang.hitch(_3ce,_3cf);
var _3d0=this[evt]||function(){
};
this[evt]=function(){
var ret=_3d0.apply(this,arguments);
_3cf.apply(this,arguments);
return ret;
};
return this;
},fire:function(evt,args){
if(this[evt]){
this[evt].apply(this,(args||[]));
}
return this;
},repeat:function(_3d4){
this.repeatCount=_3d4;
return this;
},_active:false,_paused:false});
dojo.lfx.Animation=function(_3d5,_3d6,_3d7,_3d8,_3d9,rate){
dojo.lfx.IAnimation.call(this);
if(dojo.lang.isNumber(_3d5)||(!_3d5&&_3d6.getValue)){
rate=_3d9;
_3d9=_3d8;
_3d8=_3d7;
_3d7=_3d6;
_3d6=_3d5;
_3d5=null;
}else{
if(_3d5.getValue||dojo.lang.isArray(_3d5)){
rate=_3d8;
_3d9=_3d7;
_3d8=_3d6;
_3d7=_3d5;
_3d6=null;
_3d5=null;
}
}
if(dojo.lang.isArray(_3d7)){
this.curve=new dojo.lfx.Line(_3d7[0],_3d7[1]);
}else{
this.curve=_3d7;
}
if(_3d6!=null&&_3d6>0){
this.duration=_3d6;
}
if(_3d9){
this.repeatCount=_3d9;
}
if(rate){
this.rate=rate;
}
if(_3d5){
dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
if(_3d5[item]){
this.connect(item,_3d5[item]);
}
},this);
}
if(_3d8&&dojo.lang.isFunction(_3d8)){
this.easing=_3d8;
}
};
dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_3dc,_3dd){
if(_3dd){
clearTimeout(this._timer);
this._active=false;
this._paused=false;
this._percent=0;
}else{
if(this._active&&!this._paused){
return this;
}
}
this.fire("handler",["beforeBegin"]);
this.fire("beforeBegin");
if(_3dc>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_3dd);
}),_3dc);
return this;
}
this._startTime=new Date().valueOf();
if(this._paused){
this._startTime-=(this.duration*this._percent/100);
}
this._endTime=this._startTime+this.duration;
this._active=true;
this._paused=false;
var step=this._percent/100;
var _3df=this.curve.getValue(step);
if(this._percent==0){
if(!this._startRepeatCount){
this._startRepeatCount=this.repeatCount;
}
this.fire("handler",["begin",_3df]);
this.fire("onBegin",[_3df]);
}
this.fire("handler",["play",_3df]);
this.fire("onPlay",[_3df]);
this._cycle();
return this;
},pause:function(){
clearTimeout(this._timer);
if(!this._active){
return this;
}
this._paused=true;
var _3e0=this.curve.getValue(this._percent/100);
this.fire("handler",["pause",_3e0]);
this.fire("onPause",[_3e0]);
return this;
},gotoPercent:function(pct,_3e2){
clearTimeout(this._timer);
this._active=true;
this._paused=true;
this._percent=pct;
if(_3e2){
this.play();
}
return this;
},stop:function(_3e3){
clearTimeout(this._timer);
var step=this._percent/100;
if(_3e3){
step=1;
}
var _3e5=this.curve.getValue(step);
this.fire("handler",["stop",_3e5]);
this.fire("onStop",[_3e5]);
this._active=false;
this._paused=false;
return this;
},status:function(){
if(this._active){
return this._paused?"paused":"playing";
}else{
return "stopped";
}
return this;
},_cycle:function(){
clearTimeout(this._timer);
if(this._active){
var curr=new Date().valueOf();
var step=(curr-this._startTime)/(this._endTime-this._startTime);
if(step>=1){
step=1;
this._percent=100;
}else{
this._percent=step*100;
}
if((this.easing)&&(dojo.lang.isFunction(this.easing))){
step=this.easing(step);
}
var _3e8=this.curve.getValue(step);
this.fire("handler",["animate",_3e8]);
this.fire("onAnimate",[_3e8]);
if(step<1){
this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
}else{
this._active=false;
this.fire("handler",["end"]);
this.fire("onEnd");
if(this.repeatCount>0){
this.repeatCount--;
this.play(null,true);
}else{
if(this.repeatCount==-1){
this.play(null,true);
}else{
if(this._startRepeatCount){
this.repeatCount=this._startRepeatCount;
this._startRepeatCount=0;
}
}
}
}
}
return this;
}});
dojo.lfx.Combine=function(_3e9){
dojo.lfx.IAnimation.call(this);
this._anims=[];
this._animsEnded=0;
var _3ea=arguments;
if(_3ea.length==1&&(dojo.lang.isArray(_3ea[0])||dojo.lang.isArrayLike(_3ea[0]))){
_3ea=_3ea[0];
}
dojo.lang.forEach(_3ea,function(anim){
this._anims.push(anim);
anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
},this);
};
dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3ec,_3ed){
if(!this._anims.length){
return this;
}
this.fire("beforeBegin");
if(_3ec>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_3ed);
}),_3ec);
return this;
}
if(_3ed||this._anims[0].percent==0){
this.fire("onBegin");
}
this.fire("onPlay");
this._animsCall("play",null,_3ed);
return this;
},pause:function(){
this.fire("onPause");
this._animsCall("pause");
return this;
},stop:function(_3ee){
this.fire("onStop");
this._animsCall("stop",_3ee);
return this;
},_onAnimsEnded:function(){
this._animsEnded++;
if(this._animsEnded>=this._anims.length){
this.fire("onEnd");
}
return this;
},_animsCall:function(_3ef){
var args=[];
if(arguments.length>1){
for(var i=1;i<arguments.length;i++){
args.push(arguments[i]);
}
}
var _3f2=this;
dojo.lang.forEach(this._anims,function(anim){
anim[_3ef](args);
},_3f2);
return this;
}});
dojo.lfx.Chain=function(_3f4){
dojo.lfx.IAnimation.call(this);
this._anims=[];
this._currAnim=-1;
var _3f5=arguments;
if(_3f5.length==1&&(dojo.lang.isArray(_3f5[0])||dojo.lang.isArrayLike(_3f5[0]))){
_3f5=_3f5[0];
}
var _3f6=this;
dojo.lang.forEach(_3f5,function(anim,i,_3f9){
this._anims.push(anim);
if(i<_3f9.length-1){
anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
}else{
anim.connect("onEnd",dojo.lang.hitch(this,function(){
this.fire("onEnd");
}));
}
},this);
};
dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_3fa,_3fb){
if(!this._anims.length){
return this;
}
if(_3fb||!this._anims[this._currAnim]){
this._currAnim=0;
}
var _3fc=this._anims[this._currAnim];
this.fire("beforeBegin");
if(_3fa>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_3fb);
}),_3fa);
return this;
}
if(_3fc){
if(this._currAnim==0){
this.fire("handler",["begin",this._currAnim]);
this.fire("onBegin",[this._currAnim]);
}
this.fire("onPlay",[this._currAnim]);
_3fc.play(null,_3fb);
}
return this;
},pause:function(){
if(this._anims[this._currAnim]){
this._anims[this._currAnim].pause();
this.fire("onPause",[this._currAnim]);
}
return this;
},playPause:function(){
if(this._anims.length==0){
return this;
}
if(this._currAnim==-1){
this._currAnim=0;
}
var _3fd=this._anims[this._currAnim];
if(_3fd){
if(!_3fd._active||_3fd._paused){
this.play();
}else{
this.pause();
}
}
return this;
},stop:function(){
var _3fe=this._anims[this._currAnim];
if(_3fe){
_3fe.stop();
this.fire("onStop",[this._currAnim]);
}
return _3fe;
},_playNext:function(){
if(this._currAnim==-1||this._anims.length==0){
return this;
}
this._currAnim++;
if(this._anims[this._currAnim]){
this._anims[this._currAnim].play(null,true);
}
return this;
}});
dojo.lfx.combine=function(_3ff){
var _400=arguments;
if(dojo.lang.isArray(arguments[0])){
_400=arguments[0];
}
if(_400.length==1){
return _400[0];
}
return new dojo.lfx.Combine(_400);
};
dojo.lfx.chain=function(_401){
var _402=arguments;
if(dojo.lang.isArray(arguments[0])){
_402=arguments[0];
}
if(_402.length==1){
return _402[0];
}
return new dojo.lfx.Chain(_402);
};
dojo.provide("dojo.html.common");
dojo.lang.mixin(dojo.html,dojo.dom);
dojo.html.body=function(){
dojo.deprecated("dojo.html.body() moved to dojo.body()","0.5");
return dojo.body();
};
dojo.html.getEventTarget=function(evt){
if(!evt){
evt=dojo.global().event||{};
}
var t=(evt.srcElement?evt.srcElement:(evt.target?evt.target:null));
while((t)&&(t.nodeType!=1)){
t=t.parentNode;
}
return t;
};
dojo.html.getViewport=function(){
var _405=dojo.global();
var _406=dojo.doc();
var w=0;
var h=0;
if(dojo.render.html.mozilla){
w=_406.documentElement.clientWidth;
h=_405.innerHeight;
}else{
if(!dojo.render.html.opera&&_405.innerWidth){
w=_405.innerWidth;
h=_405.innerHeight;
}else{
if(!dojo.render.html.opera&&dojo.exists(_406,"documentElement.clientWidth")){
var w2=_406.documentElement.clientWidth;
if(!w||w2&&w2<w){
w=w2;
}
h=_406.documentElement.clientHeight;
}else{
if(dojo.body().clientWidth){
w=dojo.body().clientWidth;
h=dojo.body().clientHeight;
}
}
}
}
return {width:w,height:h};
};
dojo.html.getScroll=function(){
var _40a=dojo.global();
var _40b=dojo.doc();
var top=_40a.pageYOffset||_40b.documentElement.scrollTop||dojo.body().scrollTop||0;
var left=_40a.pageXOffset||_40b.documentElement.scrollLeft||dojo.body().scrollLeft||0;
return {top:top,left:left,offset:{x:left,y:top}};
};
dojo.html.getParentByType=function(node,type){
var _410=dojo.doc();
var _411=dojo.byId(node);
type=type.toLowerCase();
while((_411)&&(_411.nodeName.toLowerCase()!=type)){
if(_411==(_410["body"]||_410["documentElement"])){
return null;
}
_411=_411.parentNode;
}
return _411;
};
dojo.html.getAttribute=function(node,attr){
node=dojo.byId(node);
if((!node)||(!node.getAttribute)){
return null;
}
var ta=typeof attr=="string"?attr:new String(attr);
var v=node.getAttribute(ta.toUpperCase());
if((v)&&(typeof v=="string")&&(v!="")){
return v;
}
if(v&&v.value){
return v.value;
}
if((node.getAttributeNode)&&(node.getAttributeNode(ta))){
return (node.getAttributeNode(ta)).value;
}else{
if(node.getAttribute(ta)){
return node.getAttribute(ta);
}else{
if(node.getAttribute(ta.toLowerCase())){
return node.getAttribute(ta.toLowerCase());
}
}
}
return null;
};
dojo.html.hasAttribute=function(node,attr){
return dojo.html.getAttribute(dojo.byId(node),attr)?true:false;
};
dojo.html.getCursorPosition=function(e){
e=e||dojo.global().event;
var _419={x:0,y:0};
if(e.pageX||e.pageY){
_419.x=e.pageX;
_419.y=e.pageY;
}else{
var de=dojo.doc().documentElement;
var db=dojo.body();
_419.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
_419.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
}
return _419;
};
dojo.html.isTag=function(node){
node=dojo.byId(node);
if(node&&node.tagName){
for(var i=1;i<arguments.length;i++){
if(node.tagName.toLowerCase()==String(arguments[i]).toLowerCase()){
return String(arguments[i]).toLowerCase();
}
}
}
return "";
};
if(dojo.render.html.ie&&!dojo.render.html.ie70){
if(window.location.href.substr(0,6).toLowerCase()!="https:"){
(function(){
var _41e=dojo.doc().createElement("script");
_41e.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
dojo.doc().getElementsByTagName("head")[0].appendChild(_41e);
})();
}
}else{
dojo.html.createExternalElement=function(doc,tag){
return doc.createElement(tag);
};
}
dojo.html._callDeprecated=function(_421,_422,args,_424,_425){
dojo.deprecated("dojo.html."+_421,"replaced by dojo.html."+_422+"("+(_424?"node, {"+_424+": "+_424+"}":"")+")"+(_425?"."+_425:""),"0.5");
var _426=[];
if(_424){
var _427={};
_427[_424]=args[1];
_426.push(args[0]);
_426.push(_427);
}else{
_426=args;
}
var ret=dojo.html[_422].apply(dojo.html,args);
if(_425){
return ret[_425];
}else{
return ret;
}
};
dojo.html.getViewportWidth=function(){
return dojo.html._callDeprecated("getViewportWidth","getViewport",arguments,null,"width");
};
dojo.html.getViewportHeight=function(){
return dojo.html._callDeprecated("getViewportHeight","getViewport",arguments,null,"height");
};
dojo.html.getViewportSize=function(){
return dojo.html._callDeprecated("getViewportSize","getViewport",arguments);
};
dojo.html.getScrollTop=function(){
return dojo.html._callDeprecated("getScrollTop","getScroll",arguments,null,"top");
};
dojo.html.getScrollLeft=function(){
return dojo.html._callDeprecated("getScrollLeft","getScroll",arguments,null,"left");
};
dojo.html.getScrollOffset=function(){
return dojo.html._callDeprecated("getScrollOffset","getScroll",arguments,null,"offset");
};
dojo.provide("dojo.uri.Uri");
dojo.uri=new function(){
this.dojoUri=function(uri){
return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
};
this.moduleUri=function(_42a,uri){
var loc=dojo.hostenv.getModuleSymbols(_42a).join("/");
if(!loc){
return null;
}
if(loc.lastIndexOf("/")!=loc.length-1){
loc+="/";
}
var _42d=loc.indexOf(":");
var _42e=loc.indexOf("/");
if(loc.charAt(0)!="/"&&(_42d==-1||_42d>_42e)){
loc=dojo.hostenv.getBaseScriptUri()+loc;
}
return new dojo.uri.Uri(loc,uri);
};
this.Uri=function(){
var uri=arguments[0];
for(var i=1;i<arguments.length;i++){
if(!arguments[i]){
continue;
}
var _431=new dojo.uri.Uri(arguments[i].toString());
var _432=new dojo.uri.Uri(uri.toString());
if((_431.path=="")&&(_431.scheme==null)&&(_431.authority==null)&&(_431.query==null)){
if(_431.fragment!=null){
_432.fragment=_431.fragment;
}
_431=_432;
}else{
if(_431.scheme==null){
_431.scheme=_432.scheme;
if(_431.authority==null){
_431.authority=_432.authority;
if(_431.path.charAt(0)!="/"){
var path=_432.path.substring(0,_432.path.lastIndexOf("/")+1)+_431.path;
var segs=path.split("/");
for(var j=0;j<segs.length;j++){
if(segs[j]=="."){
if(j==segs.length-1){
segs[j]="";
}else{
segs.splice(j,1);
j--;
}
}else{
if(j>0&&!(j==1&&segs[0]=="")&&segs[j]==".."&&segs[j-1]!=".."){
if(j==segs.length-1){
segs.splice(j,1);
segs[j-1]="";
}else{
segs.splice(j-1,2);
j-=2;
}
}
}
}
_431.path=segs.join("/");
}
}
}
}
uri="";
if(_431.scheme!=null){
uri+=_431.scheme+":";
}
if(_431.authority!=null){
uri+="//"+_431.authority;
}
uri+=_431.path;
if(_431.query!=null){
uri+="?"+_431.query;
}
if(_431.fragment!=null){
uri+="#"+_431.fragment;
}
}
this.uri=uri.toString();
var _436="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
var r=this.uri.match(new RegExp(_436));
this.scheme=r[2]||(r[1]?"":null);
this.authority=r[4]||(r[3]?"":null);
this.path=r[5];
this.query=r[7]||(r[6]?"":null);
this.fragment=r[9]||(r[8]?"":null);
if(this.authority!=null){
_436="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
r=this.authority.match(new RegExp(_436));
this.user=r[3]||null;
this.password=r[4]||null;
this.host=r[5];
this.port=r[7]||null;
}
this.toString=function(){
return this.uri;
};
};
};
dojo.provide("dojo.html.style");
dojo.html.getClass=function(node){
node=dojo.byId(node);
if(!node){
return "";
}
var cs="";
if(node.className){
cs=node.className;
}else{
if(dojo.html.hasAttribute(node,"class")){
cs=dojo.html.getAttribute(node,"class");
}
}
return cs.replace(/^\s+|\s+$/g,"");
};
dojo.html.getClasses=function(node){
var c=dojo.html.getClass(node);
return (c=="")?[]:c.split(/\s+/g);
};
dojo.html.hasClass=function(node,_43d){
return (new RegExp("(^|\\s+)"+_43d+"(\\s+|$)")).test(dojo.html.getClass(node));
};
dojo.html.prependClass=function(node,_43f){
_43f+=" "+dojo.html.getClass(node);
return dojo.html.setClass(node,_43f);
};
dojo.html.addClass=function(node,_441){
if(dojo.html.hasClass(node,_441)){
return false;
}
_441=(dojo.html.getClass(node)+" "+_441).replace(/^\s+|\s+$/g,"");
return dojo.html.setClass(node,_441);
};
dojo.html.setClass=function(node,_443){
node=dojo.byId(node);
var cs=new String(_443);
try{
if(typeof node.className=="string"){
node.className=cs;
}else{
if(node.setAttribute){
node.setAttribute("class",_443);
node.className=cs;
}else{
return false;
}
}
}
catch(e){
dojo.debug("dojo.html.setClass() failed",e);
}
return true;
};
dojo.html.removeClass=function(node,_446,_447){
try{
if(!_447){
var _448=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_446+"(\\s+|$)"),"$1$2");
}else{
var _448=dojo.html.getClass(node).replace(_446,"");
}
dojo.html.setClass(node,_448);
}
catch(e){
dojo.debug("dojo.html.removeClass() failed",e);
}
return true;
};
dojo.html.replaceClass=function(node,_44a,_44b){
dojo.html.removeClass(node,_44b);
dojo.html.addClass(node,_44a);
};
dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
dojo.html.getElementsByClass=function(_44c,_44d,_44e,_44f,_450){
_450=false;
var _451=dojo.doc();
_44d=dojo.byId(_44d)||_451;
var _452=_44c.split(/\s+/g);
var _453=[];
if(_44f!=1&&_44f!=2){
_44f=0;
}
var _454=new RegExp("(\\s|^)(("+_452.join(")|(")+"))(\\s|$)");
var _455=_452.join(" ").length;
var _456=[];
if(!_450&&_451.evaluate){
var _457=".//"+(_44e||"*")+"[contains(";
if(_44f!=dojo.html.classMatchType.ContainsAny){
_457+="concat(' ',@class,' '), ' "+_452.join(" ') and contains(concat(' ',@class,' '), ' ")+" ')";
if(_44f==2){
_457+=" and string-length(@class)="+_455+"]";
}else{
_457+="]";
}
}else{
_457+="concat(' ',@class,' '), ' "+_452.join(" ') or contains(concat(' ',@class,' '), ' ")+" ')]";
}
var _458=_451.evaluate(_457,_44d,null,XPathResult.ANY_TYPE,null);
var _459=_458.iterateNext();
while(_459){
try{
_456.push(_459);
_459=_458.iterateNext();
}
catch(e){
break;
}
}
return _456;
}else{
if(!_44e){
_44e="*";
}
_456=_44d.getElementsByTagName(_44e);
var node,i=0;
outer:
while(node=_456[i++]){
var _45c=dojo.html.getClasses(node);
if(_45c.length==0){
continue outer;
}
var _45d=0;
for(var j=0;j<_45c.length;j++){
if(_454.test(_45c[j])){
if(_44f==dojo.html.classMatchType.ContainsAny){
_453.push(node);
continue outer;
}else{
_45d++;
}
}else{
if(_44f==dojo.html.classMatchType.IsOnly){
continue outer;
}
}
}
if(_45d==_452.length){
if((_44f==dojo.html.classMatchType.IsOnly)&&(_45d==_45c.length)){
_453.push(node);
}else{
if(_44f==dojo.html.classMatchType.ContainsAll){
_453.push(node);
}
}
}
}
return _453;
}
};
dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
dojo.html.toCamelCase=function(_45f){
var arr=_45f.split("-"),cc=arr[0];
for(var i=1;i<arr.length;i++){
cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
}
return cc;
};
dojo.html.toSelectorCase=function(_463){
return _463.replace(/([A-Z])/g,"-$1").toLowerCase();
};
if(dojo.render.html.ie){
dojo.html.getComputedStyle=function(node,_465,_466){
node=dojo.byId(node);
if(!node||!node.style){
return _466;
}
return node.currentStyle[dojo.html.toCamelCase(_465)];
};
dojo.html.getComputedStyles=function(node){
return node.currentStyle;
};
}else{
dojo.html.getComputedStyle=function(node,_469,_46a){
node=dojo.byId(node);
if(!node||!node.style){
return _46a;
}
var s=document.defaultView.getComputedStyle(node,null);
return (s&&s[dojo.html.toCamelCase(_469)])||"";
};
dojo.html.getComputedStyles=function(node){
return document.defaultView.getComputedStyle(node,null);
};
}
dojo.html.getStyleProperty=function(node,_46e){
node=dojo.byId(node);
return (node&&node.style?node.style[dojo.html.toCamelCase(_46e)]:undefined);
};
dojo.html.getStyle=function(node,_470){
var _471=dojo.html.getStyleProperty(node,_470);
return (_471?_471:dojo.html.getComputedStyle(node,_470));
};
dojo.html.setStyle=function(node,_473,_474){
node=dojo.byId(node);
if(node&&node.style){
var _475=dojo.html.toCamelCase(_473);
node.style[_475]=_474;
}
};
dojo.html.setStyleText=function(_476,text){
try{
_476.style.cssText=text;
}
catch(e){
_476.setAttribute("style",text);
}
};
dojo.html.copyStyle=function(_478,_479){
if(!_479.style.cssText){
_478.setAttribute("style",_479.getAttribute("style"));
}else{
_478.style.cssText=_479.style.cssText;
}
dojo.html.addClass(_478,dojo.html.getClass(_479));
};
dojo.html.getUnitValue=function(node,_47b,_47c){
var s=dojo.html.getComputedStyle(node,_47b);
if((!s)||((s=="auto")&&(_47c))){
return {value:0,units:"px"};
}
var _47e=s.match(/(\-?[\d.]+)([a-z%]*)/i);
if(!_47e){
return dojo.html.getUnitValue.bad;
}
return {value:Number(_47e[1]),units:_47e[2].toLowerCase()};
};
dojo.html.getUnitValue.bad={value:NaN,units:""};
if(dojo.render.html.ie){
dojo.html.toPixelValue=function(_47f,_480){
if(!_480){
return 0;
}
if(_480.slice(-2)=="px"){
return parseFloat(_480);
}
var _481=0;
with(_47f){
var _482=style.left;
var _483=runtimeStyle.left;
runtimeStyle.left=currentStyle.left;
try{
style.left=_480||0;
_481=style.pixelLeft;
style.left=_482;
runtimeStyle.left=_483;
}
catch(e){
}
}
return _481;
};
}else{
dojo.html.toPixelValue=function(_484,_485){
return (_485&&(_485.slice(-2)=="px")?parseFloat(_485):0);
};
}
dojo.html.getPixelValue=function(node,_487,_488){
return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_487));
};
dojo.html.setPositivePixelValue=function(node,_48a,_48b){
if(isNaN(_48b)){
return false;
}
node.style[_48a]=Math.max(0,_48b)+"px";
return true;
};
dojo.html.styleSheet=null;
dojo.html.insertCssRule=function(_48c,_48d,_48e){
if(!dojo.html.styleSheet){
if(document.createStyleSheet){
dojo.html.styleSheet=document.createStyleSheet();
}else{
if(document.styleSheets[0]){
dojo.html.styleSheet=document.styleSheets[0];
}else{
return null;
}
}
}
if(arguments.length<3){
if(dojo.html.styleSheet.cssRules){
_48e=dojo.html.styleSheet.cssRules.length;
}else{
if(dojo.html.styleSheet.rules){
_48e=dojo.html.styleSheet.rules.length;
}else{
return null;
}
}
}
if(dojo.html.styleSheet.insertRule){
var rule=_48c+" { "+_48d+" }";
return dojo.html.styleSheet.insertRule(rule,_48e);
}else{
if(dojo.html.styleSheet.addRule){
return dojo.html.styleSheet.addRule(_48c,_48d,_48e);
}else{
return null;
}
}
};
dojo.html.removeCssRule=function(_490){
if(!dojo.html.styleSheet){
dojo.debug("no stylesheet defined for removing rules");
return false;
}
if(dojo.render.html.ie){
if(!_490){
_490=dojo.html.styleSheet.rules.length;
dojo.html.styleSheet.removeRule(_490);
}
}else{
if(document.styleSheets[0]){
if(!_490){
_490=dojo.html.styleSheet.cssRules.length;
}
dojo.html.styleSheet.deleteRule(_490);
}
}
return true;
};
dojo.html._insertedCssFiles=[];
dojo.html.insertCssFile=function(URI,doc,_493,_494){
if(!URI){
return;
}
if(!doc){
doc=document;
}
var _495=dojo.hostenv.getText(URI,false,_494);
if(_495===null){
return;
}
_495=dojo.html.fixPathsInCssText(_495,URI);
if(_493){
var idx=-1,node,ent=dojo.html._insertedCssFiles;
for(var i=0;i<ent.length;i++){
if((ent[i].doc==doc)&&(ent[i].cssText==_495)){
idx=i;
node=ent[i].nodeRef;
break;
}
}
if(node){
var _49a=doc.getElementsByTagName("style");
for(var i=0;i<_49a.length;i++){
if(_49a[i]==node){
return;
}
}
dojo.html._insertedCssFiles.shift(idx,1);
}
}
var _49b=dojo.html.insertCssText(_495,doc);
dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_495,"nodeRef":_49b});
if(_49b&&djConfig.isDebug){
_49b.setAttribute("dbgHref",URI);
}
return _49b;
};
dojo.html.insertCssText=function(_49c,doc,URI){
if(!_49c){
return;
}
if(!doc){
doc=document;
}
if(URI){
_49c=dojo.html.fixPathsInCssText(_49c,URI);
}
var _49f=doc.createElement("style");
_49f.setAttribute("type","text/css");
var head=doc.getElementsByTagName("head")[0];
if(!head){
dojo.debug("No head tag in document, aborting styles");
return;
}else{
head.appendChild(_49f);
}
if(_49f.styleSheet){
var _4a1=function(){
try{
_49f.styleSheet.cssText=_49c;
}
catch(e){
dojo.debug(e);
}
};
if(_49f.styleSheet.disabled){
setTimeout(_4a1,10);
}else{
_4a1();
}
}else{
var _4a2=doc.createTextNode(_49c);
_49f.appendChild(_4a2);
}
return _49f;
};
dojo.html.fixPathsInCssText=function(_4a3,URI){
if(!_4a3||!URI){
return;
}
var _4a5,str="",url="",_4a8="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
var _4a9=new RegExp("url\\(\\s*("+_4a8+")\\s*\\)");
var _4aa=/(file|https?|ftps?):\/\//;
regexTrim=new RegExp("^[\\s]*(['\"]?)("+_4a8+")\\1[\\s]*?$");
if(dojo.render.html.ie55||dojo.render.html.ie60){
var _4ab=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_4a8+")['\"]");
while(_4a5=_4ab.exec(_4a3)){
url=_4a5[2].replace(regexTrim,"$2");
if(!_4aa.exec(url)){
url=(new dojo.uri.Uri(URI,url).toString());
}
str+=_4a3.substring(0,_4a5.index)+"AlphaImageLoader("+_4a5[1]+"src='"+url+"'";
_4a3=_4a3.substr(_4a5.index+_4a5[0].length);
}
_4a3=str+_4a3;
str="";
}
while(_4a5=_4a9.exec(_4a3)){
url=_4a5[1].replace(regexTrim,"$2");
if(!_4aa.exec(url)){
url=(new dojo.uri.Uri(URI,url).toString());
}
str+=_4a3.substring(0,_4a5.index)+"url("+url+")";
_4a3=_4a3.substr(_4a5.index+_4a5[0].length);
}
return str+_4a3;
};
dojo.html.setActiveStyleSheet=function(_4ac){
var i=0,a,els=dojo.doc().getElementsByTagName("link");
while(a=els[i++]){
if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
a.disabled=true;
if(a.getAttribute("title")==_4ac){
a.disabled=false;
}
}
}
};
dojo.html.getActiveStyleSheet=function(){
var i=0,a,els=dojo.doc().getElementsByTagName("link");
while(a=els[i++]){
if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")&&!a.disabled){
return a.getAttribute("title");
}
}
return null;
};
dojo.html.getPreferredStyleSheet=function(){
var i=0,a,els=dojo.doc().getElementsByTagName("link");
while(a=els[i++]){
if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("rel").indexOf("alt")==-1&&a.getAttribute("title")){
return a.getAttribute("title");
}
}
return null;
};
dojo.html.applyBrowserClass=function(node){
var drh=dojo.render.html;
var _4b8={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
for(var p in _4b8){
if(_4b8[p]){
dojo.html.addClass(node,p);
}
}
};
dojo.provide("dojo.html.display");
dojo.html._toggle=function(node,_4bb,_4bc){
node=dojo.byId(node);
_4bc(node,!_4bb(node));
return _4bb(node);
};
dojo.html.show=function(node){
node=dojo.byId(node);
if(dojo.html.getStyleProperty(node,"display")=="none"){
dojo.html.setStyle(node,"display",(node.dojoDisplayCache||""));
node.dojoDisplayCache=undefined;
}
};
dojo.html.hide=function(node){
node=dojo.byId(node);
if(typeof node["dojoDisplayCache"]=="undefined"){
var d=dojo.html.getStyleProperty(node,"display");
if(d!="none"){
node.dojoDisplayCache=d;
}
}
dojo.html.setStyle(node,"display","none");
};
dojo.html.setShowing=function(node,_4c1){
dojo.html[(_4c1?"show":"hide")](node);
};
dojo.html.isShowing=function(node){
return (dojo.html.getStyleProperty(node,"display")!="none");
};
dojo.html.toggleShowing=function(node){
return dojo.html._toggle(node,dojo.html.isShowing,dojo.html.setShowing);
};
dojo.html.displayMap={tr:"",td:"",th:"",img:"inline",span:"inline",input:"inline",button:"inline"};
dojo.html.suggestDisplayByTagName=function(node){
node=dojo.byId(node);
if(node&&node.tagName){
var tag=node.tagName.toLowerCase();
return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
}
};
dojo.html.setDisplay=function(node,_4c7){
dojo.html.setStyle(node,"display",((_4c7 instanceof String||typeof _4c7=="string")?_4c7:(_4c7?dojo.html.suggestDisplayByTagName(node):"none")));
};
dojo.html.isDisplayed=function(node){
return (dojo.html.getComputedStyle(node,"display")!="none");
};
dojo.html.toggleDisplay=function(node){
return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
};
dojo.html.setVisibility=function(node,_4cb){
dojo.html.setStyle(node,"visibility",((_4cb instanceof String||typeof _4cb=="string")?_4cb:(_4cb?"visible":"hidden")));
};
dojo.html.isVisible=function(node){
return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
};
dojo.html.toggleVisibility=function(node){
return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
};
dojo.html.setOpacity=function(node,_4cf,_4d0){
node=dojo.byId(node);
var h=dojo.render.html;
if(!_4d0){
if(_4cf>=1){
if(h.ie){
dojo.html.clearOpacity(node);
return;
}else{
_4cf=0.999999;
}
}else{
if(_4cf<0){
_4cf=0;
}
}
}
if(h.ie){
if(node.nodeName.toLowerCase()=="tr"){
var tds=node.getElementsByTagName("td");
for(var x=0;x<tds.length;x++){
tds[x].style.filter="Alpha(Opacity="+_4cf*100+")";
}
}
node.style.filter="Alpha(Opacity="+_4cf*100+")";
}else{
if(h.moz){
node.style.opacity=_4cf;
node.style.MozOpacity=_4cf;
}else{
if(h.safari){
node.style.opacity=_4cf;
node.style.KhtmlOpacity=_4cf;
}else{
node.style.opacity=_4cf;
}
}
}
};
dojo.html.clearOpacity=function(node){
node=dojo.byId(node);
var ns=node.style;
var h=dojo.render.html;
if(h.ie){
try{
if(node.filters&&node.filters.alpha){
ns.filter="";
}
}
catch(e){
}
}else{
if(h.moz){
ns.opacity=1;
ns.MozOpacity=1;
}else{
if(h.safari){
ns.opacity=1;
ns.KhtmlOpacity=1;
}else{
ns.opacity=1;
}
}
}
};
dojo.html.getOpacity=function(node){
node=dojo.byId(node);
var h=dojo.render.html;
if(h.ie){
var opac=(node.filters&&node.filters.alpha&&typeof node.filters.alpha.opacity=="number"?node.filters.alpha.opacity:100)/100;
}else{
var opac=node.style.opacity||node.style.MozOpacity||node.style.KhtmlOpacity||1;
}
return opac>=0.999999?1:Number(opac);
};
dojo.provide("dojo.html.color");
dojo.html.getBackgroundColor=function(node){
node=dojo.byId(node);
var _4db;
do{
_4db=dojo.html.getStyle(node,"background-color");
if(_4db.toLowerCase()=="rgba(0, 0, 0, 0)"){
_4db="transparent";
}
if(node==document.getElementsByTagName("body")[0]){
node=null;
break;
}
node=node.parentNode;
}while(node&&dojo.lang.inArray(["transparent",""],_4db));
if(_4db=="transparent"){
_4db=[255,255,255,0];
}else{
_4db=dojo.gfx.color.extractRGB(_4db);
}
return _4db;
};
dojo.provide("dojo.html.layout");
dojo.html.sumAncestorProperties=function(node,prop){
node=dojo.byId(node);
if(!node){
return 0;
}
var _4de=0;
while(node){
if(dojo.html.getComputedStyle(node,"position")=="fixed"){
return 0;
}
var val=node[prop];
if(val){
_4de+=val-0;
if(node==dojo.body()){
break;
}
}
node=node.parentNode;
}
return _4de;
};
dojo.html.setStyleAttributes=function(node,_4e1){
node=dojo.byId(node);
var _4e2=_4e1.replace(/(;)?\s*$/,"").split(";");
for(var i=0;i<_4e2.length;i++){
var _4e4=_4e2[i].split(":");
var name=_4e4[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
var _4e6=_4e4[1].replace(/\s*$/,"").replace(/^\s*/,"");
switch(name){
case "opacity":
dojo.html.setOpacity(node,_4e6);
break;
case "content-height":
dojo.html.setContentBox(node,{height:_4e6});
break;
case "content-width":
dojo.html.setContentBox(node,{width:_4e6});
break;
case "outer-height":
dojo.html.setMarginBox(node,{height:_4e6});
break;
case "outer-width":
dojo.html.setMarginBox(node,{width:_4e6});
break;
default:
node.style[dojo.html.toCamelCase(name)]=_4e6;
}
}
};
dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_4e8,_4e9){
node=dojo.byId(node,node.ownerDocument);
var ret={x:0,y:0};
var bs=dojo.html.boxSizing;
if(!_4e9){
_4e9=bs.CONTENT_BOX;
}
var _4ec=2;
var _4ed;
switch(_4e9){
case bs.MARGIN_BOX:
_4ed=3;
break;
case bs.BORDER_BOX:
_4ed=2;
break;
case bs.PADDING_BOX:
default:
_4ed=1;
break;
case bs.CONTENT_BOX:
_4ed=0;
break;
}
var h=dojo.render.html;
var db=document["body"]||document["documentElement"];
if(h.ie){
with(node.getBoundingClientRect()){
ret.x=left-2;
ret.y=top-2;
}
}else{
if(document.getBoxObjectFor){
_4ec=1;
try{
var bo=document.getBoxObjectFor(node);
ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
ret.y=bo.y-dojo.html.sumAncestorProperties(node,"scrollTop");
}
catch(e){
}
}else{
if(node["offsetParent"]){
var _4f1;
if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
_4f1=db;
}else{
_4f1=db.parentNode;
}
if(node.parentNode!=db){
var nd=node;
if(dojo.render.html.opera){
nd=db;
}
ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
}
var _4f3=node;
do{
var n=_4f3["offsetLeft"];
if(!h.opera||n>0){
ret.x+=isNaN(n)?0:n;
}
var m=_4f3["offsetTop"];
ret.y+=isNaN(m)?0:m;
_4f3=_4f3.offsetParent;
}while((_4f3!=_4f1)&&(_4f3!=null));
}else{
if(node["x"]&&node["y"]){
ret.x+=isNaN(node.x)?0:node.x;
ret.y+=isNaN(node.y)?0:node.y;
}
}
}
}
if(_4e8){
var _4f6=dojo.html.getScroll();
ret.y+=_4f6.top;
ret.x+=_4f6.left;
}
var _4f7=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
if(_4ec>_4ed){
for(var i=_4ed;i<_4ec;++i){
ret.y+=_4f7[i](node,"top");
ret.x+=_4f7[i](node,"left");
}
}else{
if(_4ec<_4ed){
for(var i=_4ed;i>_4ec;--i){
ret.y-=_4f7[i-1](node,"top");
ret.x-=_4f7[i-1](node,"left");
}
}
}
ret.top=ret.y;
ret.left=ret.x;
return ret;
};
dojo.html.isPositionAbsolute=function(node){
return (dojo.html.getComputedStyle(node,"position")=="absolute");
};
dojo.html._sumPixelValues=function(node,_4fb,_4fc){
var _4fd=0;
for(var x=0;x<_4fb.length;x++){
_4fd+=dojo.html.getPixelValue(node,_4fb[x],_4fc);
}
return _4fd;
};
dojo.html.getMargin=function(node){
return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
};
dojo.html.getBorder=function(node){
return {width:dojo.html.getBorderExtent(node,"left")+dojo.html.getBorderExtent(node,"right"),height:dojo.html.getBorderExtent(node,"top")+dojo.html.getBorderExtent(node,"bottom")};
};
dojo.html.getBorderExtent=function(node,side){
return (dojo.html.getStyle(node,"border-"+side+"-style")=="none"?0:dojo.html.getPixelValue(node,"border-"+side+"-width"));
};
dojo.html.getMarginExtent=function(node,side){
return dojo.html._sumPixelValues(node,["margin-"+side],dojo.html.isPositionAbsolute(node));
};
dojo.html.getPaddingExtent=function(node,side){
return dojo.html._sumPixelValues(node,["padding-"+side],true);
};
dojo.html.getPadding=function(node){
return {width:dojo.html._sumPixelValues(node,["padding-left","padding-right"],true),height:dojo.html._sumPixelValues(node,["padding-top","padding-bottom"],true)};
};
dojo.html.getPadBorder=function(node){
var pad=dojo.html.getPadding(node);
var _50a=dojo.html.getBorder(node);
return {width:pad.width+_50a.width,height:pad.height+_50a.height};
};
dojo.html.getBoxSizing=function(node){
var h=dojo.render.html;
var bs=dojo.html.boxSizing;
if(((h.ie)||(h.opera))&&node.nodeName.toLowerCase()!="img"){
var cm=document["compatMode"];
if((cm=="BackCompat")||(cm=="QuirksMode")){
return bs.BORDER_BOX;
}else{
return bs.CONTENT_BOX;
}
}else{
if(arguments.length==0){
node=document.documentElement;
}
var _50f;
if(!h.ie){
_50f=dojo.html.getStyle(node,"-moz-box-sizing");
if(!_50f){
_50f=dojo.html.getStyle(node,"box-sizing");
}
}
return (_50f?_50f:bs.CONTENT_BOX);
}
};
dojo.html.isBorderBox=function(node){
return (dojo.html.getBoxSizing(node)==dojo.html.boxSizing.BORDER_BOX);
};
dojo.html.getBorderBox=function(node){
node=dojo.byId(node);
return {width:node.offsetWidth,height:node.offsetHeight};
};
dojo.html.getPaddingBox=function(node){
var box=dojo.html.getBorderBox(node);
var _514=dojo.html.getBorder(node);
return {width:box.width-_514.width,height:box.height-_514.height};
};
dojo.html.getContentBox=function(node){
node=dojo.byId(node);
var _516=dojo.html.getPadBorder(node);
return {width:node.offsetWidth-_516.width,height:node.offsetHeight-_516.height};
};
dojo.html.setContentBox=function(node,args){
node=dojo.byId(node);
var _519=0;
var _51a=0;
var isbb=dojo.html.isBorderBox(node);
var _51c=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
var ret={};
if(typeof args.width!="undefined"){
_519=args.width+_51c.width;
ret.width=dojo.html.setPositivePixelValue(node,"width",_519);
}
if(typeof args.height!="undefined"){
_51a=args.height+_51c.height;
ret.height=dojo.html.setPositivePixelValue(node,"height",_51a);
}
return ret;
};
dojo.html.getMarginBox=function(node){
var _51f=dojo.html.getBorderBox(node);
var _520=dojo.html.getMargin(node);
return {width:_51f.width+_520.width,height:_51f.height+_520.height};
};
dojo.html.setMarginBox=function(node,args){
node=dojo.byId(node);
var _523=0;
var _524=0;
var isbb=dojo.html.isBorderBox(node);
var _526=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
var _527=dojo.html.getMargin(node);
var ret={};
if(typeof args.width!="undefined"){
_523=args.width-_526.width;
_523-=_527.width;
ret.width=dojo.html.setPositivePixelValue(node,"width",_523);
}
if(typeof args.height!="undefined"){
_524=args.height-_526.height;
_524-=_527.height;
ret.height=dojo.html.setPositivePixelValue(node,"height",_524);
}
return ret;
};
dojo.html.getElementBox=function(node,type){
var bs=dojo.html.boxSizing;
switch(type){
case bs.MARGIN_BOX:
return dojo.html.getMarginBox(node);
case bs.BORDER_BOX:
return dojo.html.getBorderBox(node);
case bs.PADDING_BOX:
return dojo.html.getPaddingBox(node);
case bs.CONTENT_BOX:
default:
return dojo.html.getContentBox(node);
}
};
dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_52c,_52d,_52e){
if(_52c instanceof Array||typeof _52c=="array"){
dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
while(_52c.length<4){
_52c.push(0);
}
while(_52c.length>4){
_52c.pop();
}
var ret={left:_52c[0],top:_52c[1],width:_52c[2],height:_52c[3]};
}else{
if(!_52c.nodeType&&!(_52c instanceof String||typeof _52c=="string")&&("width" in _52c||"height" in _52c||"left" in _52c||"x" in _52c||"top" in _52c||"y" in _52c)){
var ret={left:_52c.left||_52c.x||0,top:_52c.top||_52c.y||0,width:_52c.width||0,height:_52c.height||0};
}else{
var node=dojo.byId(_52c);
var pos=dojo.html.abs(node,_52d,_52e);
var _532=dojo.html.getMarginBox(node);
var ret={left:pos.left,top:pos.top,width:_532.width,height:_532.height};
}
}
ret.x=ret.left;
ret.y=ret.top;
return ret;
};
dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_534){
return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
};
dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
return dojo.html._callDeprecated("setMarginBoxHeight","setMarginBox",arguments,"height");
};
dojo.html.getMarginBoxWidth=dojo.html.getOuterWidth=function(){
return dojo.html._callDeprecated("getMarginBoxWidth","getMarginBox",arguments,null,"width");
};
dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
};
dojo.html.getTotalOffset=function(node,type,_537){
return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
};
dojo.html.getAbsoluteX=function(node,_539){
return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
};
dojo.html.getAbsoluteY=function(node,_53b){
return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
};
dojo.html.totalOffsetLeft=function(node,_53d){
return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
};
dojo.html.totalOffsetTop=function(node,_53f){
return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
};
dojo.html.getMarginWidth=function(node){
return dojo.html._callDeprecated("getMarginWidth","getMargin",arguments,null,"width");
};
dojo.html.getMarginHeight=function(node){
return dojo.html._callDeprecated("getMarginHeight","getMargin",arguments,null,"height");
};
dojo.html.getBorderWidth=function(node){
return dojo.html._callDeprecated("getBorderWidth","getBorder",arguments,null,"width");
};
dojo.html.getBorderHeight=function(node){
return dojo.html._callDeprecated("getBorderHeight","getBorder",arguments,null,"height");
};
dojo.html.getPaddingWidth=function(node){
return dojo.html._callDeprecated("getPaddingWidth","getPadding",arguments,null,"width");
};
dojo.html.getPaddingHeight=function(node){
return dojo.html._callDeprecated("getPaddingHeight","getPadding",arguments,null,"height");
};
dojo.html.getPadBorderWidth=function(node){
return dojo.html._callDeprecated("getPadBorderWidth","getPadBorder",arguments,null,"width");
};
dojo.html.getPadBorderHeight=function(node){
return dojo.html._callDeprecated("getPadBorderHeight","getPadBorder",arguments,null,"height");
};
dojo.html.getBorderBoxWidth=dojo.html.getInnerWidth=function(){
return dojo.html._callDeprecated("getBorderBoxWidth","getBorderBox",arguments,null,"width");
};
dojo.html.getBorderBoxHeight=dojo.html.getInnerHeight=function(){
return dojo.html._callDeprecated("getBorderBoxHeight","getBorderBox",arguments,null,"height");
};
dojo.html.getContentBoxWidth=dojo.html.getContentWidth=function(){
return dojo.html._callDeprecated("getContentBoxWidth","getContentBox",arguments,null,"width");
};
dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
};
dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_549){
return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
};
dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_54b){
return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
};
dojo.provide("dojo.lfx.html");
dojo.lfx.html._byId=function(_54c){
if(!_54c){
return [];
}
if(dojo.lang.isArrayLike(_54c)){
if(!_54c.alreadyChecked){
var n=[];
dojo.lang.forEach(_54c,function(node){
n.push(dojo.byId(node));
});
n.alreadyChecked=true;
return n;
}else{
return _54c;
}
}else{
var n=[];
n.push(dojo.byId(_54c));
n.alreadyChecked=true;
return n;
}
};
dojo.lfx.html.propertyAnimation=function(_54f,_550,_551,_552,_553){
_54f=dojo.lfx.html._byId(_54f);
var _554={"propertyMap":_550,"nodes":_54f,"duration":_551,"easing":_552||dojo.lfx.easeDefault};
var _555=function(args){
if(args.nodes.length==1){
var pm=args.propertyMap;
if(!dojo.lang.isArray(args.propertyMap)){
var parr=[];
for(var _559 in pm){
pm[_559].property=_559;
parr.push(pm[_559]);
}
pm=args.propertyMap=parr;
}
dojo.lang.forEach(pm,function(prop){
if(dj_undef("start",prop)){
if(prop.property!="opacity"){
prop.start=parseInt(dojo.html.getComputedStyle(args.nodes[0],prop.property));
}else{
prop.start=dojo.html.getOpacity(args.nodes[0]);
}
}
});
}
};
var _55b=function(_55c){
var _55d=[];
dojo.lang.forEach(_55c,function(c){
_55d.push(Math.round(c));
});
return _55d;
};
var _55f=function(n,_561){
n=dojo.byId(n);
if(!n||!n.style){
return;
}
for(var s in _561){
try{
if(s=="opacity"){
dojo.html.setOpacity(n,_561[s]);
}else{
n.style[s]=_561[s];
}
}
catch(e){
dojo.debug(e);
}
}
};
var _563=function(_564){
this._properties=_564;
this.diffs=new Array(_564.length);
dojo.lang.forEach(_564,function(prop,i){
if(dojo.lang.isFunction(prop.start)){
prop.start=prop.start(prop,i);
}
if(dojo.lang.isFunction(prop.end)){
prop.end=prop.end(prop,i);
}
if(dojo.lang.isArray(prop.start)){
this.diffs[i]=null;
}else{
if(prop.start instanceof dojo.gfx.color.Color){
prop.startRgb=prop.start.toRgb();
prop.endRgb=prop.end.toRgb();
}else{
this.diffs[i]=prop.end-prop.start;
}
}
},this);
this.getValue=function(n){
var ret={};
dojo.lang.forEach(this._properties,function(prop,i){
var _56b=null;
if(dojo.lang.isArray(prop.start)){
}else{
if(prop.start instanceof dojo.gfx.color.Color){
_56b=(prop.units||"rgb")+"(";
for(var j=0;j<prop.startRgb.length;j++){
_56b+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
}
_56b+=")";
}else{
_56b=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
}
}
ret[dojo.html.toCamelCase(prop.property)]=_56b;
},this);
return ret;
};
};
var anim=new dojo.lfx.Animation({beforeBegin:function(){
_555(_554);
anim.curve=new _563(_554.propertyMap);
},onAnimate:function(_56e){
dojo.lang.forEach(_554.nodes,function(node){
_55f(node,_56e);
});
}},_554.duration,null,_554.easing);
if(_553){
for(var x in _553){
if(dojo.lang.isFunction(_553[x])){
anim.connect(x,anim,_553[x]);
}
}
}
return anim;
};
dojo.lfx.html._makeFadeable=function(_571){
var _572=function(node){
if(dojo.render.html.ie){
if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
node.style.zoom="1";
}
if((node.style.width.length==0)&&(dojo.html.getStyle(node,"width")=="auto")){
node.style.width="auto";
}
}
};
if(dojo.lang.isArrayLike(_571)){
dojo.lang.forEach(_571,_572);
}else{
_572(_571);
}
};
dojo.lfx.html.fade=function(_574,_575,_576,_577,_578){
_574=dojo.lfx.html._byId(_574);
var _579={property:"opacity"};
if(!dj_undef("start",_575)){
_579.start=_575.start;
}else{
_579.start=function(){
return dojo.html.getOpacity(_574[0]);
};
}
if(!dj_undef("end",_575)){
_579.end=_575.end;
}else{
dojo.raise("dojo.lfx.html.fade needs an end value");
}
var anim=dojo.lfx.propertyAnimation(_574,[_579],_576,_577);
anim.connect("beforeBegin",function(){
dojo.lfx.html._makeFadeable(_574);
});
if(_578){
anim.connect("onEnd",function(){
_578(_574,anim);
});
}
return anim;
};
dojo.lfx.html.fadeIn=function(_57b,_57c,_57d,_57e){
return dojo.lfx.html.fade(_57b,{end:1},_57c,_57d,_57e);
};
dojo.lfx.html.fadeOut=function(_57f,_580,_581,_582){
return dojo.lfx.html.fade(_57f,{end:0},_580,_581,_582);
};
dojo.lfx.html.fadeShow=function(_583,_584,_585,_586){
_583=dojo.lfx.html._byId(_583);
dojo.lang.forEach(_583,function(node){
dojo.html.setOpacity(node,0);
});
var anim=dojo.lfx.html.fadeIn(_583,_584,_585,_586);
anim.connect("beforeBegin",function(){
if(dojo.lang.isArrayLike(_583)){
dojo.lang.forEach(_583,dojo.html.show);
}else{
dojo.html.show(_583);
}
});
return anim;
};
dojo.lfx.html.fadeHide=function(_589,_58a,_58b,_58c){
var anim=dojo.lfx.html.fadeOut(_589,_58a,_58b,function(){
if(dojo.lang.isArrayLike(_589)){
dojo.lang.forEach(_589,dojo.html.hide);
}else{
dojo.html.hide(_589);
}
if(_58c){
_58c(_589,anim);
}
});
return anim;
};
dojo.lfx.html.wipeIn=function(_58e,_58f,_590,_591){
_58e=dojo.lfx.html._byId(_58e);
var _592=[];
dojo.lang.forEach(_58e,function(node){
var _594={};
var _595,_596,_597;
with(node.style){
_595=top;
_596=left;
_597=position;
top="-9999px";
left="-9999px";
position="absolute";
display="";
}
var _598=dojo.html.getBorderBox(node).height;
with(node.style){
top=_595;
left=_596;
position=_597;
display="none";
}
var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
return _598;
}}},_58f,_590);
anim.connect("beforeBegin",function(){
_594.overflow=node.style.overflow;
_594.height=node.style.height;
with(node.style){
overflow="hidden";
height="1px";
}
dojo.html.show(node);
});
anim.connect("onEnd",function(){
with(node.style){
overflow=_594.overflow;
height=_594.height;
}
if(_591){
_591(node,anim);
}
});
_592.push(anim);
});
return dojo.lfx.combine(_592);
};
dojo.lfx.html.wipeOut=function(_59a,_59b,_59c,_59d){
_59a=dojo.lfx.html._byId(_59a);
var _59e=[];
dojo.lang.forEach(_59a,function(node){
var _5a0={};
var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
return dojo.html.getContentBox(node).height;
},end:1}},_59b,_59c,{"beforeBegin":function(){
_5a0.overflow=node.style.overflow;
_5a0.height=node.style.height;
with(node.style){
overflow="hidden";
}
dojo.html.show(node);
},"onEnd":function(){
dojo.html.hide(node);
with(node.style){
overflow=_5a0.overflow;
height=_5a0.height;
}
if(_59d){
_59d(node,anim);
}
}});
_59e.push(anim);
});
return dojo.lfx.combine(_59e);
};
dojo.lfx.html.slideTo=function(_5a2,_5a3,_5a4,_5a5,_5a6){
_5a2=dojo.lfx.html._byId(_5a2);
var _5a7=[];
var _5a8=dojo.html.getComputedStyle;
if(dojo.lang.isArray(_5a3)){
dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
_5a3={top:_5a3[0],left:_5a3[1]};
}
dojo.lang.forEach(_5a2,function(node){
var top=null;
var left=null;
var init=(function(){
var _5ad=node;
return function(){
var pos=_5a8(_5ad,"position");
top=(pos=="absolute"?node.offsetTop:parseInt(_5a8(node,"top"))||0);
left=(pos=="absolute"?node.offsetLeft:parseInt(_5a8(node,"left"))||0);
if(!dojo.lang.inArray(["absolute","relative"],pos)){
var ret=dojo.html.abs(_5ad,true);
dojo.html.setStyleAttributes(_5ad,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
top=ret.y;
left=ret.x;
}
};
})();
init();
var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_5a3.top||0)},"left":{start:left,end:(_5a3.left||0)}},_5a4,_5a5,{"beforeBegin":init});
if(_5a6){
anim.connect("onEnd",function(){
_5a6(_5a2,anim);
});
}
_5a7.push(anim);
});
return dojo.lfx.combine(_5a7);
};
dojo.lfx.html.slideBy=function(_5b1,_5b2,_5b3,_5b4,_5b5){
_5b1=dojo.lfx.html._byId(_5b1);
var _5b6=[];
var _5b7=dojo.html.getComputedStyle;
if(dojo.lang.isArray(_5b2)){
dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
_5b2={top:_5b2[0],left:_5b2[1]};
}
dojo.lang.forEach(_5b1,function(node){
var top=null;
var left=null;
var init=(function(){
var _5bc=node;
return function(){
var pos=_5b7(_5bc,"position");
top=(pos=="absolute"?node.offsetTop:parseInt(_5b7(node,"top"))||0);
left=(pos=="absolute"?node.offsetLeft:parseInt(_5b7(node,"left"))||0);
if(!dojo.lang.inArray(["absolute","relative"],pos)){
var ret=dojo.html.abs(_5bc,true);
dojo.html.setStyleAttributes(_5bc,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
top=ret.y;
left=ret.x;
}
};
})();
init();
var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_5b2.top||0)},"left":{start:left,end:left+(_5b2.left||0)}},_5b3,_5b4).connect("beforeBegin",init);
if(_5b5){
anim.connect("onEnd",function(){
_5b5(_5b1,anim);
});
}
_5b6.push(anim);
});
return dojo.lfx.combine(_5b6);
};
dojo.lfx.html.explode=function(_5c0,_5c1,_5c2,_5c3,_5c4){
var h=dojo.html;
_5c0=dojo.byId(_5c0);
_5c1=dojo.byId(_5c1);
var _5c6=h.toCoordinateObject(_5c0,true);
var _5c7=document.createElement("div");
h.copyStyle(_5c7,_5c1);
if(_5c1.explodeClassName){
_5c7.className=_5c1.explodeClassName;
}
with(_5c7.style){
position="absolute";
display="none";
var _5c8=h.getStyle(_5c0,"background-color");
backgroundColor=_5c8?_5c8.toLowerCase():"transparent";
backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
}
dojo.body().appendChild(_5c7);
with(_5c1.style){
visibility="hidden";
display="block";
}
var _5c9=h.toCoordinateObject(_5c1,true);
with(_5c1.style){
display="none";
visibility="visible";
}
var _5ca={opacity:{start:0.5,end:1}};
dojo.lang.forEach(["height","width","top","left"],function(type){
_5ca[type]={start:_5c6[type],end:_5c9[type]};
});
var anim=new dojo.lfx.propertyAnimation(_5c7,_5ca,_5c2,_5c3,{"beforeBegin":function(){
h.setDisplay(_5c7,"block");
},"onEnd":function(){
h.setDisplay(_5c1,"block");
_5c7.parentNode.removeChild(_5c7);
}});
if(_5c4){
anim.connect("onEnd",function(){
_5c4(_5c1,anim);
});
}
return anim;
};
dojo.lfx.html.implode=function(_5cd,end,_5cf,_5d0,_5d1){
var h=dojo.html;
_5cd=dojo.byId(_5cd);
end=dojo.byId(end);
var _5d3=dojo.html.toCoordinateObject(_5cd,true);
var _5d4=dojo.html.toCoordinateObject(end,true);
var _5d5=document.createElement("div");
dojo.html.copyStyle(_5d5,_5cd);
if(_5cd.explodeClassName){
_5d5.className=_5cd.explodeClassName;
}
dojo.html.setOpacity(_5d5,0.3);
with(_5d5.style){
position="absolute";
display="none";
backgroundColor=h.getStyle(_5cd,"background-color").toLowerCase();
}
dojo.body().appendChild(_5d5);
var _5d6={opacity:{start:1,end:0.5}};
dojo.lang.forEach(["height","width","top","left"],function(type){
_5d6[type]={start:_5d3[type],end:_5d4[type]};
});
var anim=new dojo.lfx.propertyAnimation(_5d5,_5d6,_5cf,_5d0,{"beforeBegin":function(){
dojo.html.hide(_5cd);
dojo.html.show(_5d5);
},"onEnd":function(){
_5d5.parentNode.removeChild(_5d5);
}});
if(_5d1){
anim.connect("onEnd",function(){
_5d1(_5cd,anim);
});
}
return anim;
};
dojo.lfx.html.highlight=function(_5d9,_5da,_5db,_5dc,_5dd){
_5d9=dojo.lfx.html._byId(_5d9);
var _5de=[];
dojo.lang.forEach(_5d9,function(node){
var _5e0=dojo.html.getBackgroundColor(node);
var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
var _5e2=dojo.html.getStyle(node,"background-image");
var _5e3=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
while(_5e0.length>3){
_5e0.pop();
}
var rgb=new dojo.gfx.color.Color(_5da);
var _5e5=new dojo.gfx.color.Color(_5e0);
var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_5e5}},_5db,_5dc,{"beforeBegin":function(){
if(_5e2){
node.style.backgroundImage="none";
}
node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
},"onEnd":function(){
if(_5e2){
node.style.backgroundImage=_5e2;
}
if(_5e3){
node.style.backgroundColor="transparent";
}
if(_5dd){
_5dd(node,anim);
}
}});
_5de.push(anim);
});
return dojo.lfx.combine(_5de);
};
dojo.lfx.html.unhighlight=function(_5e7,_5e8,_5e9,_5ea,_5eb){
_5e7=dojo.lfx.html._byId(_5e7);
var _5ec=[];
dojo.lang.forEach(_5e7,function(node){
var _5ee=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
var rgb=new dojo.gfx.color.Color(_5e8);
var _5f0=dojo.html.getStyle(node,"background-image");
var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_5ee,end:rgb}},_5e9,_5ea,{"beforeBegin":function(){
if(_5f0){
node.style.backgroundImage="none";
}
node.style.backgroundColor="rgb("+_5ee.toRgb().join(",")+")";
},"onEnd":function(){
if(_5eb){
_5eb(node,anim);
}
}});
_5ec.push(anim);
});
return dojo.lfx.combine(_5ec);
};
dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
dojo.provide("dojo.lfx.*");
 
/trunk/api/js/dojo/dojo.js.uncompressed.js
New file
0,0 → 1,9828
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
if(typeof dojo == "undefined"){
 
// TODOC: HOW TO DOC THE BELOW?
// @global: djConfig
// summary:
// Application code can set the global 'djConfig' prior to loading
// the library to override certain global settings for how dojo works.
// description: The variables that can be set are as follows:
// - isDebug: false
// - allowQueryConfig: false
// - baseScriptUri: ""
// - baseRelativePath: ""
// - libraryScriptUri: ""
// - iePreventClobber: false
// - ieClobberMinimal: true
// - locale: undefined
// - extraLocale: undefined
// - preventBackButtonFix: true
// - searchIds: []
// - parseWidgets: true
// TODOC: HOW TO DOC THESE VARIABLES?
// TODOC: IS THIS A COMPLETE LIST?
// note:
// 'djConfig' does not exist under 'dojo.*' so that it can be set before the
// 'dojo' variable exists.
// note:
// Setting any of these variables *after* the library has loaded does nothing at all.
// TODOC: is this still true? Release notes for 0.3 indicated they could be set after load.
//
 
 
//TODOC: HOW TO DOC THIS?
// @global: dj_global
// summary:
// an alias for the top-level global object in the host environment
// (e.g., the window object in a browser).
// description:
// Refer to 'dj_global' rather than referring to window to ensure your
// code runs correctly in contexts other than web browsers (eg: Rhino on a server).
var dj_global = this;
 
//TODOC: HOW TO DOC THIS?
// @global: dj_currentContext
// summary:
// Private global context object. Where 'dj_global' always refers to the boot-time
// global context, 'dj_currentContext' can be modified for temporary context shifting.
// dojo.global() returns dj_currentContext.
// description:
// Refer to dojo.global() rather than referring to dj_global to ensure your
// code runs correctly in managed contexts.
var dj_currentContext = this;
 
 
// ****************************************************************
// global public utils
// TODOC: DO WE WANT TO NOTE THAT THESE ARE GLOBAL PUBLIC UTILS?
// ****************************************************************
 
function dj_undef(/*String*/ name, /*Object?*/ object){
//summary: Returns true if 'name' is defined on 'object' (or globally if 'object' is null).
//description: Note that 'defined' and 'exists' are not the same concept.
return (typeof (object || dj_currentContext)[name] == "undefined"); // Boolean
}
 
// make sure djConfig is defined
if(dj_undef("djConfig", this)){
var djConfig = {};
}
 
//TODOC: HOW TO DOC THIS?
// dojo is the root variable of (almost all) our public symbols -- make sure it is defined.
if(dj_undef("dojo", this)){
var dojo = {};
}
 
dojo.global = function(){
// summary:
// return the current global context object
// (e.g., the window object in a browser).
// description:
// Refer to 'dojo.global()' rather than referring to window to ensure your
// code runs correctly in contexts other than web browsers (eg: Rhino on a server).
return dj_currentContext;
}
 
// Override locale setting, if specified
dojo.locale = djConfig.locale;
 
//TODOC: HOW TO DOC THIS?
dojo.version = {
// summary: version number of this instance of dojo.
major: 0, minor: 4, patch: 2, flag: "",
revision: Number("$Rev: 7616 $".match(/[0-9]+/)[0]),
toString: function(){
with(dojo.version){
return major + "." + minor + "." + patch + flag + " (" + revision + ")"; // String
}
}
}
 
dojo.evalProp = function(/*String*/ name, /*Object*/ object, /*Boolean?*/ create){
// summary: Returns 'object[name]'. If not defined and 'create' is true, will return a new Object.
// description:
// Returns null if 'object[name]' is not defined and 'create' is not true.
// Note: 'defined' and 'exists' are not the same concept.
if((!object)||(!name)) return undefined; // undefined
if(!dj_undef(name, object)) return object[name]; // mixed
return (create ? (object[name]={}) : undefined); // mixed
}
 
dojo.parseObjPath = function(/*String*/ path, /*Object?*/ context, /*Boolean?*/ create){
// summary: Parse string path to an object, and return corresponding object reference and property name.
// description:
// Returns an object with two properties, 'obj' and 'prop'.
// 'obj[prop]' is the reference indicated by 'path'.
// path: Path to an object, in the form "A.B.C".
// context: Object to use as root of path. Defaults to 'dojo.global()'.
// create: If true, Objects will be created at any point along the 'path' that is undefined.
var object = (context || dojo.global());
var names = path.split('.');
var prop = names.pop();
for (var i=0,l=names.length;i<l && object;i++){
object = dojo.evalProp(names[i], object, create);
}
return {obj: object, prop: prop}; // Object: {obj: Object, prop: String}
}
 
dojo.evalObjPath = function(/*String*/ path, /*Boolean?*/ create){
// summary: Return the value of object at 'path' in the global scope, without using 'eval()'.
// path: Path to an object, in the form "A.B.C".
// create: If true, Objects will be created at any point along the 'path' that is undefined.
if(typeof path != "string"){
return dojo.global();
}
// fast path for no periods
if(path.indexOf('.') == -1){
return dojo.evalProp(path, dojo.global(), create); // mixed
}
 
//MOW: old 'with' syntax was confusing and would throw an error if parseObjPath returned null.
var ref = dojo.parseObjPath(path, dojo.global(), create);
if(ref){
return dojo.evalProp(ref.prop, ref.obj, create); // mixed
}
return null;
}
 
dojo.errorToString = function(/*Error*/ exception){
// summary: Return an exception's 'message', 'description' or text.
 
// TODO: overriding Error.prototype.toString won't accomplish this?
// ... since natively generated Error objects do not always reflect such things?
if(!dj_undef("message", exception)){
return exception.message; // String
}else if(!dj_undef("description", exception)){
return exception.description; // String
}else{
return exception; // Error
}
}
 
dojo.raise = function(/*String*/ message, /*Error?*/ exception){
// summary: Common point for raising exceptions in Dojo to enable logging.
// Throws an error message with text of 'exception' if provided, or
// rethrows exception object.
 
if(exception){
message = message + ": "+dojo.errorToString(exception);
}else{
message = dojo.errorToString(message);
}
 
// print the message to the user if hostenv.println is defined
try { if(djConfig.isDebug){ dojo.hostenv.println("FATAL exception raised: "+message); } } catch (e) {}
 
throw exception || Error(message);
}
 
//Stub functions so things don't break.
//TODOC: HOW TO DOC THESE?
dojo.debug = function(){};
dojo.debugShallow = function(obj){};
dojo.profile = { start: function(){}, end: function(){}, stop: function(){}, dump: function(){} };
 
function dj_eval(/*String*/ scriptFragment){
// summary: Perform an evaluation in the global scope. Use this rather than calling 'eval()' directly.
// description: Placed in a separate function to minimize size of trapped evaluation context.
// note:
// - JSC eval() takes an optional second argument which can be 'unsafe'.
// - Mozilla/SpiderMonkey eval() takes an optional second argument which is the
// scope object for new symbols.
return dj_global.eval ? dj_global.eval(scriptFragment) : eval(scriptFragment); // mixed
}
 
dojo.unimplemented = function(/*String*/ funcname, /*String?*/ extra){
// summary: Throw an exception because some function is not implemented.
// extra: Text to append to the exception message.
var message = "'" + funcname + "' not implemented";
if (extra != null) { message += " " + extra; }
dojo.raise(message);
}
 
dojo.deprecated = function(/*String*/ behaviour, /*String?*/ extra, /*String?*/ removal){
// summary: Log a debug message to indicate that a behavior has been deprecated.
// extra: Text to append to the message.
// removal: Text to indicate when in the future the behavior will be removed.
var message = "DEPRECATED: " + behaviour;
if(extra){ message += " " + extra; }
if(removal){ message += " -- will be removed in version: " + removal; }
dojo.debug(message);
}
 
dojo.render = (function(){
//TODOC: HOW TO DOC THIS?
// summary: Details rendering support, OS and browser of the current environment.
// TODOC: is this something many folks will interact with? If so, we should doc the structure created...
function vscaffold(prefs, names){
var tmp = {
capable: false,
support: {
builtin: false,
plugin: false
},
prefixes: prefs
};
for(var i=0; i<names.length; i++){
tmp[names[i]] = false;
}
return tmp;
}
 
return {
name: "",
ver: dojo.version,
os: { win: false, linux: false, osx: false },
html: vscaffold(["html"], ["ie", "opera", "khtml", "safari", "moz"]),
svg: vscaffold(["svg"], ["corel", "adobe", "batik"]),
vml: vscaffold(["vml"], ["ie"]),
swf: vscaffold(["Swf", "Flash", "Mm"], ["mm"]),
swt: vscaffold(["Swt"], ["ibm"])
};
})();
 
// ****************************************************************
// dojo.hostenv methods that must be defined in hostenv_*.js
// ****************************************************************
 
/**
* The interface definining the interaction with the EcmaScript host environment.
*/
 
/*
* None of these methods should ever be called directly by library users.
* Instead public methods such as loadModule should be called instead.
*/
dojo.hostenv = (function(){
// TODOC: HOW TO DOC THIS?
// summary: Provides encapsulation of behavior that changes across different 'host environments'
// (different browsers, server via Rhino, etc).
// description: None of these methods should ever be called directly by library users.
// Use public methods such as 'loadModule' instead.
 
// default configuration options
var config = {
isDebug: false,
allowQueryConfig: false,
baseScriptUri: "",
baseRelativePath: "",
libraryScriptUri: "",
iePreventClobber: false,
ieClobberMinimal: true,
preventBackButtonFix: true,
delayMozLoadingFix: false,
searchIds: [],
parseWidgets: true
};
 
if (typeof djConfig == "undefined") { djConfig = config; }
else {
for (var option in config) {
if (typeof djConfig[option] == "undefined") {
djConfig[option] = config[option];
}
}
}
 
return {
name_: '(unset)',
version_: '(unset)',
 
 
getName: function(){
// sumary: Return the name of the host environment.
return this.name_; // String
},
 
 
getVersion: function(){
// summary: Return the version of the hostenv.
return this.version_; // String
},
 
getText: function(/*String*/ uri){
// summary: Read the plain/text contents at the specified 'uri'.
// description:
// If 'getText()' is not implemented, then it is necessary to override
// 'loadUri()' with an implementation that doesn't rely on it.
 
dojo.unimplemented('getText', "uri=" + uri);
}
};
})();
 
 
dojo.hostenv.getBaseScriptUri = function(){
// summary: Return the base script uri that other scripts are found relative to.
// TODOC: HUH? This comment means nothing to me. What other scripts? Is this the path to other dojo libraries?
// MAYBE: Return the base uri to scripts in the dojo library. ???
// return: Empty string or a path ending in '/'.
if(djConfig.baseScriptUri.length){
return djConfig.baseScriptUri;
}
 
// MOW: Why not:
// uri = djConfig.libraryScriptUri || djConfig.baseRelativePath
// ??? Why 'new String(...)'
var uri = new String(djConfig.libraryScriptUri||djConfig.baseRelativePath);
if (!uri) { dojo.raise("Nothing returned by getLibraryScriptUri(): " + uri); }
 
// MOW: uri seems to not be actually used. Seems to be hard-coding to djConfig.baseRelativePath... ???
var lastslash = uri.lastIndexOf('/'); // MOW ???
djConfig.baseScriptUri = djConfig.baseRelativePath;
return djConfig.baseScriptUri; // String
}
 
/*
* loader.js - A bootstrap module. Runs before the hostenv_*.js file. Contains all of the package loading methods.
*/
 
//A semi-colon is at the start of the line because after doing a build, this function definition
//get compressed onto the same line as the last line in bootstrap1.js. That list line is just a
//curly bracket, and the browser complains about that syntax. The semicolon fixes it. Putting it
//here instead of at the end of bootstrap1.js, since it is more of an issue for this file, (using
//the closure), and bootstrap1.js could change in the future.
;(function(){
//Additional properties for dojo.hostenv
var _addHostEnv = {
pkgFileName: "__package__",
// for recursion protection
loading_modules_: {},
loaded_modules_: {},
addedToLoadingCount: [],
removedFromLoadingCount: [],
inFlightCount: 0,
// FIXME: it should be possible to pull module prefixes in from djConfig
modulePrefixes_: {
dojo: {name: "dojo", value: "src"}
},
 
setModulePrefix: function(/*String*/module, /*String*/prefix){
// summary: establishes module/prefix pair
this.modulePrefixes_[module] = {name: module, value: prefix};
},
 
moduleHasPrefix: function(/*String*/module){
// summary: checks to see if module has been established
var mp = this.modulePrefixes_;
return Boolean(mp[module] && mp[module].value); // Boolean
},
 
getModulePrefix: function(/*String*/module){
// summary: gets the prefix associated with module
if(this.moduleHasPrefix(module)){
return this.modulePrefixes_[module].value; // String
}
return module; // String
},
 
getTextStack: [],
loadUriStack: [],
loadedUris: [],
//WARNING: This variable is referenced by packages outside of bootstrap: FloatingPane.js and undo/browser.js
post_load_: false,
//Egad! Lots of test files push on this directly instead of using dojo.addOnLoad.
modulesLoadedListeners: [],
unloadListeners: [],
loadNotifying: false
};
//Add all of these properties to dojo.hostenv
for(var param in _addHostEnv){
dojo.hostenv[param] = _addHostEnv[param];
}
})();
 
dojo.hostenv.loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
// summary:
// Load a Javascript module given a relative path
//
// description:
// Loads and interprets the script located at relpath, which is relative to the
// script root directory. If the script is found but its interpretation causes
// a runtime exception, that exception is not caught by us, so the caller will
// see it. We return a true value if and only if the script is found.
//
// For now, we do not have an implementation of a true search path. We
// consider only the single base script uri, as returned by getBaseScriptUri().
//
// relpath: A relative path to a script (no leading '/', and typically
// ending in '.js').
// module: A module whose existance to check for after loading a path.
// Can be used to determine success or failure of the load.
// cb: a callback function to pass the result of evaluating the script
 
var uri;
if(relpath.charAt(0) == '/' || relpath.match(/^\w+:/)){
// dojo.raise("relpath '" + relpath + "'; must be relative");
uri = relpath;
}else{
uri = this.getBaseScriptUri() + relpath;
}
if(djConfig.cacheBust && dojo.render.html.capable){
uri += "?" + String(djConfig.cacheBust).replace(/\W+/g,"");
}
try{
return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb); // Boolean
}catch(e){
dojo.debug(e);
return false; // Boolean
}
}
 
dojo.hostenv.loadUri = function(/*String (URL)*/uri, /*Function?*/cb){
// summary:
// Loads JavaScript from a URI
//
// description:
// Reads the contents of the URI, and evaluates the contents. This is used to load modules as well
// as resource bundles. Returns true if it succeeded. Returns false if the URI reading failed.
// Throws if the evaluation throws.
//
// uri: a uri which points at the script to be loaded
// cb: a callback function to process the result of evaluating the script as an expression, typically
// used by the resource bundle loader to load JSON-style resources
 
if(this.loadedUris[uri]){
return true; // Boolean
}
var contents = this.getText(uri, null, true);
if(!contents){ return false; } // Boolean
this.loadedUris[uri] = true;
if(cb){ contents = '('+contents+')'; }
var value = dj_eval(contents);
if(cb){ cb(value); }
return true; // Boolean
}
 
// FIXME: probably need to add logging to this method
dojo.hostenv.loadUriAndCheck = function(/*String (URL)*/uri, /*String*/moduleName, /*Function?*/cb){
// summary: calls loadUri then findModule and returns true if both succeed
var ok = true;
try{
ok = this.loadUri(uri, cb);
}catch(e){
dojo.debug("failed loading ", uri, " with error: ", e);
}
return Boolean(ok && this.findModule(moduleName, false)); // Boolean
}
 
dojo.loaded = function(){ }
dojo.unloaded = function(){ }
 
dojo.hostenv.loaded = function(){
this.loadNotifying = true;
this.post_load_ = true;
var mll = this.modulesLoadedListeners;
for(var x=0; x<mll.length; x++){
mll[x]();
}
 
//Clear listeners so new ones can be added
//For other xdomain package loads after the initial load.
this.modulesLoadedListeners = [];
this.loadNotifying = false;
 
dojo.loaded();
}
 
dojo.hostenv.unloaded = function(){
var mll = this.unloadListeners;
while(mll.length){
(mll.pop())();
}
dojo.unloaded();
}
 
dojo.addOnLoad = function(/*Object?*/obj, /*String|Function*/functionName) {
// summary:
// Registers a function to be triggered after the DOM has finished loading
// and widgets declared in markup have been instantiated. Images and CSS files
// may or may not have finished downloading when the specified function is called.
// (Note that widgets' CSS and HTML code is guaranteed to be downloaded before said
// widgets are instantiated.)
//
// usage:
// dojo.addOnLoad(functionPointer)
// dojo.addOnLoad(object, "functionName")
 
var dh = dojo.hostenv;
if(arguments.length == 1) {
dh.modulesLoadedListeners.push(obj);
} else if(arguments.length > 1) {
dh.modulesLoadedListeners.push(function() {
obj[functionName]();
});
}
 
//Added for xdomain loading. dojo.addOnLoad is used to
//indicate callbacks after doing some dojo.require() statements.
//In the xdomain case, if all the requires are loaded (after initial
//page load), then immediately call any listeners.
if(dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying){
dh.callLoaded();
}
}
 
dojo.addOnUnload = function(/*Object?*/obj, /*String|Function?*/functionName){
// summary: registers a function to be triggered when the page unloads
//
// usage:
// dojo.addOnLoad(functionPointer)
// dojo.addOnLoad(object, "functionName")
var dh = dojo.hostenv;
if(arguments.length == 1){
dh.unloadListeners.push(obj);
} else if(arguments.length > 1) {
dh.unloadListeners.push(function() {
obj[functionName]();
});
}
}
 
dojo.hostenv.modulesLoaded = function(){
if(this.post_load_){ return; }
if(this.loadUriStack.length==0 && this.getTextStack.length==0){
if(this.inFlightCount > 0){
dojo.debug("files still in flight!");
return;
}
dojo.hostenv.callLoaded();
}
}
 
dojo.hostenv.callLoaded = function(){
//The "object" check is for IE, and the other opera check fixes an issue
//in Opera where it could not find the body element in some widget test cases.
//For 0.9, maybe route all browsers through the setTimeout (need protection
//still for non-browser environments though). This might also help the issue with
//FF 2.0 and freezing issues where we try to do sync xhr while background css images
//are being loaded (trac #2572)? Consider for 0.9.
if(typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)){
setTimeout("dojo.hostenv.loaded();", 0);
}else{
dojo.hostenv.loaded();
}
}
 
dojo.hostenv.getModuleSymbols = function(/*String*/modulename){
// summary:
// Converts a module name in dotted JS notation to an array representing the path in the source tree
var syms = modulename.split(".");
for(var i = syms.length; i>0; i--){
var parentModule = syms.slice(0, i).join(".");
if((i==1) && !this.moduleHasPrefix(parentModule)){
// Support default module directory (sibling of dojo) for top-level modules
syms[0] = "../" + syms[0];
}else{
var parentModulePath = this.getModulePrefix(parentModule);
if(parentModulePath != parentModule){
syms.splice(0, i, parentModulePath);
break;
}
}
}
return syms; // Array
}
 
dojo.hostenv._global_omit_module_check = false;
dojo.hostenv.loadModule = function(/*String*/moduleName, /*Boolean?*/exactOnly, /*Boolean?*/omitModuleCheck){
// summary:
// loads a Javascript module from the appropriate URI
//
// description:
// loadModule("A.B") first checks to see if symbol A.B is defined.
// If it is, it is simply returned (nothing to do).
//
// If it is not defined, it will look for "A/B.js" in the script root directory,
// followed by "A.js".
//
// It throws if it cannot find a file to load, or if the symbol A.B is not
// defined after loading.
//
// It returns the object A.B.
//
// This does nothing about importing symbols into the current package.
// It is presumed that the caller will take care of that. For example, to import
// all symbols:
//
// with (dojo.hostenv.loadModule("A.B")) {
// ...
// }
//
// And to import just the leaf symbol:
//
// var B = dojo.hostenv.loadModule("A.B");
// ...
//
// dj_load is an alias for dojo.hostenv.loadModule
 
if(!moduleName){ return; }
omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
var module = this.findModule(moduleName, false);
if(module){
return module;
}
 
// protect against infinite recursion from mutual dependencies
if(dj_undef(moduleName, this.loading_modules_)){
this.addedToLoadingCount.push(moduleName);
}
this.loading_modules_[moduleName] = 1;
 
// convert periods to slashes
var relpath = moduleName.replace(/\./g, '/') + '.js';
 
var nsyms = moduleName.split(".");
// this line allowed loading of a module manifest as if it were a namespace
// it's an interesting idea, but shouldn't be combined with 'namespaces' proper
// and leads to unwanted dependencies
// the effect can be achieved in other (albeit less-flexible) ways now, so I am
// removing this pending further design work
// perhaps we can explicitly define this idea of a 'module manifest', and subclass
// 'namespace manifest' from that
//dojo.getNamespace(nsyms[0]);
 
var syms = this.getModuleSymbols(moduleName);
var startedRelative = ((syms[0].charAt(0) != '/') && !syms[0].match(/^\w+:/));
var last = syms[syms.length - 1];
var ok;
// figure out if we're looking for a full package, if so, we want to do
// things slightly diffrently
if(last=="*"){
moduleName = nsyms.slice(0, -1).join('.');
while(syms.length){
syms.pop();
syms.push(this.pkgFileName);
relpath = syms.join("/") + '.js';
if(startedRelative && relpath.charAt(0)=="/"){
relpath = relpath.slice(1);
}
ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
if(ok){ break; }
syms.pop();
}
}else{
relpath = syms.join("/") + '.js';
moduleName = nsyms.join('.');
var modArg = !omitModuleCheck ? moduleName : null;
ok = this.loadPath(relpath, modArg);
if(!ok && !exactOnly){
syms.pop();
while(syms.length){
relpath = syms.join('/') + '.js';
ok = this.loadPath(relpath, modArg);
if(ok){ break; }
syms.pop();
relpath = syms.join('/') + '/'+this.pkgFileName+'.js';
if(startedRelative && relpath.charAt(0)=="/"){
relpath = relpath.slice(1);
}
ok = this.loadPath(relpath, modArg);
if(ok){ break; }
}
}
 
if(!ok && !omitModuleCheck){
dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
}
}
 
// check that the symbol was defined
//Don't bother if we're doing xdomain (asynchronous) loading.
if(!omitModuleCheck && !this["isXDomain"]){
// pass in false so we can give better error
module = this.findModule(moduleName, false);
if(!module){
dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
}
}
 
return module;
}
 
dojo.hostenv.startPackage = function(/*String*/packageName){
// summary:
// Creates a JavaScript package
//
// description:
// startPackage("A.B") follows the path, and at each level creates a new empty
// object or uses what already exists. It returns the result.
//
// packageName: the package to be created as a String in dot notation
 
//Make sure we have a string.
var fullPkgName = String(packageName);
var strippedPkgName = fullPkgName;
 
var syms = packageName.split(/\./);
if(syms[syms.length-1]=="*"){
syms.pop();
strippedPkgName = syms.join(".");
}
var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
this.loaded_modules_[fullPkgName] = evaledPkg;
this.loaded_modules_[strippedPkgName] = evaledPkg;
return evaledPkg; // Object
}
 
dojo.hostenv.findModule = function(/*String*/moduleName, /*Boolean?*/mustExist){
// summary:
// Returns the Object representing the module, if it exists, otherwise null.
//
// moduleName A fully qualified module including package name, like 'A.B'.
// mustExist Optional, default false. throw instead of returning null
// if the module does not currently exist.
 
var lmn = String(moduleName);
 
if(this.loaded_modules_[lmn]){
return this.loaded_modules_[lmn]; // Object
}
 
if(mustExist){
dojo.raise("no loaded module named '" + moduleName + "'");
}
return null; // null
}
 
//Start of old bootstrap2:
 
dojo.kwCompoundRequire = function(/*Object containing Arrays*/modMap){
// description:
// This method taks a "map" of arrays which one can use to optionally load dojo
// modules. The map is indexed by the possible dojo.hostenv.name_ values, with
// two additional values: "default" and "common". The items in the "default"
// array will be loaded if none of the other items have been choosen based on
// the hostenv.name_ item. The items in the "common" array will _always_ be
// loaded, regardless of which list is chosen. Here's how it's normally
// called:
//
// dojo.kwCompoundRequire({
// browser: [
// ["foo.bar.baz", true, true], // an example that passes multiple args to loadModule()
// "foo.sample.*",
// "foo.test,
// ],
// default: [ "foo.sample.*" ],
// common: [ "really.important.module.*" ]
// });
 
var common = modMap["common"]||[];
var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_]||[]) : common.concat(modMap["default"]||[]);
 
for(var x=0; x<result.length; x++){
var curr = result[x];
if(curr.constructor == Array){
dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
}else{
dojo.hostenv.loadModule(curr);
}
}
}
 
dojo.require = function(/*String*/ resourceName){
// summary
// Ensure that the given resource (ie, javascript
// source file) has been loaded.
// description
// dojo.require() is similar to C's #include command or java's "import" command.
// You call dojo.require() to pull in the resources (ie, javascript source files)
// that define the functions you are using.
//
// Note that in the case of a build, many resources have already been included
// into dojo.js (ie, many of the javascript source files have been compressed and
// concatened into dojo.js), so many dojo.require() calls will simply return
// without downloading anything.
dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
}
 
dojo.requireIf = function(/*Boolean*/ condition, /*String*/ resourceName){
// summary
// If the condition is true then call dojo.require() for the specified resource
var arg0 = arguments[0];
if((arg0 === true)||(arg0=="common")||(arg0 && dojo.render[arg0].capable)){
var args = [];
for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
dojo.require.apply(dojo, args);
}
}
 
dojo.requireAfterIf = dojo.requireIf;
 
dojo.provide = function(/*String*/ resourceName){
// summary
// Each javascript source file must have (exactly) one dojo.provide()
// call at the top of the file, corresponding to the file name.
// For example, dojo/src/foo.js must have dojo.provide("dojo.foo"); at the top of the file.
//
// description
// Each javascript source file is called a resource. When a resource
// is loaded by the browser, dojo.provide() registers that it has
// been loaded.
//
// For backwards compatibility reasons, in addition to registering the resource,
// dojo.provide() also ensures that the javascript object for the module exists. For
// example, dojo.provide("dojo.html.common"), in addition to registering that common.js
// is a resource for the dojo.html module, will ensure that the dojo.html javascript object
// exists, so that calls like dojo.html.foo = function(){ ... } don't fail.
//
// In the case of a build (or in the future, a rollup), where multiple javascript source
// files are combined into one bigger file (similar to a .lib or .jar file), that file
// will contain multiple dojo.provide() calls, to note that it includes
// multiple resources.
return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
}
 
dojo.registerModulePath = function(/*String*/module, /*String*/prefix){
// summary: maps a module name to a path
// description: An unregistered module is given the default path of ../<module>,
// relative to Dojo root. For example, module acme is mapped to ../acme.
// If you want to use a different module name, use dojo.registerModulePath.
return dojo.hostenv.setModulePrefix(module, prefix);
}
 
if(djConfig["modulePaths"]){
for(var param in djConfig["modulePaths"]){
dojo.registerModulePath(param, djConfig["modulePaths"][param]);
}
}
 
dojo.setModulePrefix = function(/*String*/module, /*String*/prefix){
// summary: maps a module name to a path
dojo.deprecated('dojo.setModulePrefix("' + module + '", "' + prefix + '")', "replaced by dojo.registerModulePath", "0.5");
return dojo.registerModulePath(module, prefix);
}
 
dojo.exists = function(/*Object*/obj, /*String*/name){
// summary: determine if an object supports a given method
// description: useful for longer api chains where you have to test each object in the chain
var p = name.split(".");
for(var i = 0; i < p.length; i++){
if(!obj[p[i]]){ return false; } // Boolean
obj = obj[p[i]];
}
return true; // Boolean
}
 
// Localization routines
 
dojo.hostenv.normalizeLocale = function(/*String?*/locale){
// summary:
// Returns canonical form of locale, as used by Dojo. All variants are case-insensitive and are separated by '-'
// as specified in RFC 3066. If no locale is specified, the user agent's default is returned.
 
var result = locale ? locale.toLowerCase() : dojo.locale;
if(result == "root"){
result = "ROOT";
}
return result;// String
};
 
dojo.hostenv.searchLocalePath = function(/*String*/locale, /*Boolean*/down, /*Function*/searchFunc){
// summary:
// A helper method to assist in searching for locale-based resources. Will iterate through
// the variants of a particular locale, either up or down, executing a callback function.
// For example, "en-us" and true will try "en-us" followed by "en" and finally "ROOT".
 
locale = dojo.hostenv.normalizeLocale(locale);
 
var elements = locale.split('-');
var searchlist = [];
for(var i = elements.length; i > 0; i--){
searchlist.push(elements.slice(0, i).join('-'));
}
searchlist.push(false);
if(down){searchlist.reverse();}
 
for(var j = searchlist.length - 1; j >= 0; j--){
var loc = searchlist[j] || "ROOT";
var stop = searchFunc(loc);
if(stop){ break; }
}
}
 
//These two functions are placed outside of preloadLocalizations
//So that the xd loading can use/override them.
dojo.hostenv.localesGenerated /***BUILD:localesGenerated***/; // value will be inserted here at build time, if necessary
 
dojo.hostenv.registerNlsPrefix = function(){
// summary:
// Register module "nls" to point where Dojo can find pre-built localization files
dojo.registerModulePath("nls","nls");
}
 
dojo.hostenv.preloadLocalizations = function(){
// summary:
// Load built, flattened resource bundles, if available for all locales used in the page.
// Execute only once. Note that this is a no-op unless there is a build.
 
if(dojo.hostenv.localesGenerated){
dojo.hostenv.registerNlsPrefix();
 
function preload(locale){
locale = dojo.hostenv.normalizeLocale(locale);
dojo.hostenv.searchLocalePath(locale, true, function(loc){
for(var i=0; i<dojo.hostenv.localesGenerated.length;i++){
if(dojo.hostenv.localesGenerated[i] == loc){
dojo["require"]("nls.dojo_"+loc);
return true; // Boolean
}
}
return false; // Boolean
});
}
preload();
var extra = djConfig.extraLocale||[];
for(var i=0; i<extra.length; i++){
preload(extra[i]);
}
}
dojo.hostenv.preloadLocalizations = function(){};
}
 
dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
// summary:
// Declares translated resources and loads them if necessary, in the same style as dojo.require.
// Contents of the resource bundle are typically strings, but may be any name/value pair,
// represented in JSON format. See also dojo.i18n.getLocalization.
//
// moduleName: name of the package containing the "nls" directory in which the bundle is found
// bundleName: bundle name, i.e. the filename without the '.js' suffix
// locale: the locale to load (optional) By default, the browser's user locale as defined by dojo.locale
// availableFlatLocales: A comma-separated list of the available, flattened locales for this bundle.
// This argument should only be set by the build process.
//
// description:
// Load translated resource bundles provided underneath the "nls" directory within a package.
// Translated resources may be located in different packages throughout the source tree. For example,
// a particular widget may define one or more resource bundles, structured in a program as follows,
// where moduleName is mycode.mywidget and bundleNames available include bundleone and bundletwo:
// ...
// mycode/
// mywidget/
// nls/
// bundleone.js (the fallback translation, English in this example)
// bundletwo.js (also a fallback translation)
// de/
// bundleone.js
// bundletwo.js
// de-at/
// bundleone.js
// en/
// (empty; use the fallback translation)
// en-us/
// bundleone.js
// en-gb/
// bundleone.js
// es/
// bundleone.js
// bundletwo.js
// ...etc
// ...
// Each directory is named for a locale as specified by RFC 3066, (http://www.ietf.org/rfc/rfc3066.txt),
// normalized in lowercase. Note that the two bundles in the example do not define all the same variants.
// For a given locale, bundles will be loaded for that locale and all more general locales above it, including
// a fallback at the root directory. For example, a declaration for the "de-at" locale will first
// load nls/de-at/bundleone.js, then nls/de/bundleone.js and finally nls/bundleone.js. The data will
// be flattened into a single Object so that lookups will follow this cascading pattern. An optional build
// step can preload the bundles to avoid data redundancy and the multiple network hits normally required to
// load these resources.
 
dojo.hostenv.preloadLocalizations();
var targetLocale = dojo.hostenv.normalizeLocale(locale);
var bundlePackage = [moduleName, "nls", bundleName].join(".");
//NOTE: When loading these resources, the packaging does not match what is on disk. This is an
// implementation detail, as this is just a private data structure to hold the loaded resources.
// e.g. tests/hello/nls/en-us/salutations.js is loaded as the object tests.hello.nls.salutations.en_us={...}
// The structure on disk is intended to be most convenient for developers and translators, but in memory
// it is more logical and efficient to store in a different order. Locales cannot use dashes, since the
// resulting path will not evaluate as valid JS, so we translate them to underscores.
//Find the best-match locale to load if we have available flat locales.
var bestLocale = "";
if(availableFlatLocales){
var flatLocales = availableFlatLocales.split(",");
for(var i = 0; i < flatLocales.length; i++){
//Locale must match from start of string.
if(targetLocale.indexOf(flatLocales[i]) == 0){
if(flatLocales[i].length > bestLocale.length){
bestLocale = flatLocales[i];
}
}
}
if(!bestLocale){
bestLocale = "ROOT";
}
}
 
//See if the desired locale is already loaded.
var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
var bundle = dojo.hostenv.findModule(bundlePackage);
var localizedBundle = null;
if(bundle){
if(djConfig.localizationComplete && bundle._built){return;}
var jsLoc = tempLocale.replace('-', '_');
var translationPackage = bundlePackage+"."+jsLoc;
localizedBundle = dojo.hostenv.findModule(translationPackage);
}
 
if(!localizedBundle){
bundle = dojo.hostenv.startPackage(bundlePackage);
var syms = dojo.hostenv.getModuleSymbols(moduleName);
var modpath = syms.concat("nls").join("/");
var parent;
 
dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function(loc){
var jsLoc = loc.replace('-', '_');
var translationPackage = bundlePackage + "." + jsLoc;
var loaded = false;
if(!dojo.hostenv.findModule(translationPackage)){
// Mark loaded whether it's found or not, so that further load attempts will not be made
dojo.hostenv.startPackage(translationPackage);
var module = [modpath];
if(loc != "ROOT"){module.push(loc);}
module.push(bundleName);
var filespec = module.join("/") + '.js';
loaded = dojo.hostenv.loadPath(filespec, null, function(hash){
// Use singleton with prototype to point to parent bundle, then mix-in result from loadPath
var clazz = function(){};
clazz.prototype = parent;
bundle[jsLoc] = new clazz();
for(var j in hash){ bundle[jsLoc][j] = hash[j]; }
});
}else{
loaded = true;
}
if(loaded && bundle[jsLoc]){
parent = bundle[jsLoc];
}else{
bundle[jsLoc] = parent;
}
if(availableFlatLocales){
//Stop the locale path searching if we know the availableFlatLocales, since
//the first call to this function will load the only bundle that is needed.
return true;
}
});
}
 
//Save the best locale bundle as the target locale bundle when we know the
//the available bundles.
if(availableFlatLocales && targetLocale != bestLocale){
bundle[targetLocale.replace('-', '_')] = bundle[bestLocale.replace('-', '_')];
}
};
 
(function(){
// If other locales are used, dojo.requireLocalization should load them as well, by default.
// Override dojo.requireLocalization to do load the default bundle, then iterate through the
// extraLocale list and load those translations as well, unless a particular locale was requested.
 
var extra = djConfig.extraLocale;
if(extra){
if(!extra instanceof Array){
extra = [extra];
}
 
var req = dojo.requireLocalization;
dojo.requireLocalization = function(m, b, locale, availableFlatLocales){
req(m,b,locale, availableFlatLocales);
if(locale){return;}
for(var i=0; i<extra.length; i++){
req(m,b,extra[i], availableFlatLocales);
}
};
}
})();
 
};
 
if(typeof window != 'undefined'){
 
// attempt to figure out the path to dojo if it isn't set in the config
(function(){
// before we get any further with the config options, try to pick them out
// of the URL. Most of this code is from NW
if(djConfig.allowQueryConfig){
var baseUrl = document.location.toString(); // FIXME: use location.query instead?
var params = baseUrl.split("?", 2);
if(params.length > 1){
var paramStr = params[1];
var pairs = paramStr.split("&");
for(var x in pairs){
var sp = pairs[x].split("=");
// FIXME: is this eval dangerous?
if((sp[0].length > 9)&&(sp[0].substr(0, 9) == "djConfig.")){
var opt = sp[0].substr(9);
try{
djConfig[opt]=eval(sp[1]);
}catch(e){
djConfig[opt]=sp[1];
}
}
}
}
}
 
if(
((djConfig["baseScriptUri"] == "")||(djConfig["baseRelativePath"] == "")) &&
(document && document.getElementsByTagName)
){
var scripts = document.getElementsByTagName("script");
var rePkg = /(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
for(var i = 0; i < scripts.length; i++) {
var src = scripts[i].getAttribute("src");
if(!src) { continue; }
var m = src.match(rePkg);
if(m) {
var root = src.substring(0, m.index);
if(src.indexOf("bootstrap1") > -1) { root += "../"; }
if(!this["djConfig"]) { djConfig = {}; }
if(djConfig["baseScriptUri"] == "") { djConfig["baseScriptUri"] = root; }
if(djConfig["baseRelativePath"] == "") { djConfig["baseRelativePath"] = root; }
break;
}
}
}
 
// fill in the rendering support information in dojo.render.*
var dr = dojo.render;
var drh = dojo.render.html;
var drs = dojo.render.svg;
var dua = (drh.UA = navigator.userAgent);
var dav = (drh.AV = navigator.appVersion);
var t = true;
var f = false;
drh.capable = t;
drh.support.builtin = t;
 
dr.ver = parseFloat(drh.AV);
dr.os.mac = dav.indexOf("Macintosh") >= 0;
dr.os.win = dav.indexOf("Windows") >= 0;
// could also be Solaris or something, but it's the same browser
dr.os.linux = dav.indexOf("X11") >= 0;
 
drh.opera = dua.indexOf("Opera") >= 0;
drh.khtml = (dav.indexOf("Konqueror") >= 0)||(dav.indexOf("Safari") >= 0);
drh.safari = dav.indexOf("Safari") >= 0;
var geckoPos = dua.indexOf("Gecko");
drh.mozilla = drh.moz = (geckoPos >= 0)&&(!drh.khtml);
if (drh.mozilla) {
// gecko version is YYYYMMDD
drh.geckoVersion = dua.substring(geckoPos + 6, geckoPos + 14);
}
drh.ie = (document.all)&&(!drh.opera);
drh.ie50 = drh.ie && dav.indexOf("MSIE 5.0")>=0;
drh.ie55 = drh.ie && dav.indexOf("MSIE 5.5")>=0;
drh.ie60 = drh.ie && dav.indexOf("MSIE 6.0")>=0;
drh.ie70 = drh.ie && dav.indexOf("MSIE 7.0")>=0;
 
var cm = document["compatMode"];
drh.quirks = (cm == "BackCompat")||(cm == "QuirksMode")||drh.ie55||drh.ie50;
 
// TODO: is the HTML LANG attribute relevant?
dojo.locale = dojo.locale || (drh.ie ? navigator.userLanguage : navigator.language).toLowerCase();
 
dr.vml.capable=drh.ie;
drs.capable = f;
drs.support.plugin = f;
drs.support.builtin = f;
var tdoc = window["document"];
var tdi = tdoc["implementation"];
 
if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg", "1.0"))){
drs.capable = t;
drs.support.builtin = t;
drs.support.plugin = f;
}
// webkits after 420 support SVG natively. The test string is "AppleWebKit/420+"
if(drh.safari){
var tmp = dua.split("AppleWebKit/")[1];
var ver = parseFloat(tmp.split(" ")[0]);
if(ver >= 420){
drs.capable = t;
drs.support.builtin = t;
drs.support.plugin = f;
}
}else{
}
})();
 
dojo.hostenv.startPackage("dojo.hostenv");
 
dojo.render.name = dojo.hostenv.name_ = 'browser';
dojo.hostenv.searchIds = [];
 
// These are in order of decreasing likelihood; this will change in time.
dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
 
dojo.hostenv.getXmlhttpObject = function(){
// summary: does the work of portably generating a new XMLHTTPRequest object.
var http = null;
var last_e = null;
try{ http = new XMLHttpRequest(); }catch(e){}
if(!http){
for(var i=0; i<3; ++i){
var progid = dojo.hostenv._XMLHTTP_PROGIDS[i];
try{
http = new ActiveXObject(progid);
}catch(e){
last_e = e;
}
 
if(http){
dojo.hostenv._XMLHTTP_PROGIDS = [progid]; // so faster next time
break;
}
}
 
/*if(http && !http.toString) {
http.toString = function() { "[object XMLHttpRequest]"; }
}*/
}
 
if(!http){
return dojo.raise("XMLHTTP not available", last_e);
}
 
return http; // XMLHTTPRequest instance
}
 
dojo.hostenv._blockAsync = false;
dojo.hostenv.getText = function(uri, async_cb, fail_ok){
// summary: Read the contents of the specified uri and return those contents.
// uri:
// A relative or absolute uri. If absolute, it still must be in
// the same "domain" as we are.
// async_cb:
// If not specified, load synchronously. If specified, load
// asynchronously, and use async_cb as the progress handler which
// takes the xmlhttp object as its argument. If async_cb, this
// function returns null.
// fail_ok:
// Default false. If fail_ok and !async_cb and loading fails,
// return null instead of throwing.
 
// need to block async callbacks from snatching this thread as the result
// of an async callback might call another sync XHR, this hangs khtml forever
// hostenv._blockAsync must also be checked in BrowserIO's watchInFlight()
// NOTE: must be declared before scope switches ie. this.getXmlhttpObject()
if(!async_cb){ this._blockAsync = true; }
 
var http = this.getXmlhttpObject();
 
function isDocumentOk(http){
var stat = http["status"];
// allow a 304 use cache, needed in konq (is this compliant with the http spec?)
return Boolean((!stat)||((200 <= stat)&&(300 > stat))||(stat==304));
}
 
if(async_cb){
var _this = this, timer = null, gbl = dojo.global();
var xhr = dojo.evalObjPath("dojo.io.XMLHTTPTransport");
http.onreadystatechange = function(){
if(timer){ gbl.clearTimeout(timer); timer = null; }
if(_this._blockAsync || (xhr && xhr._blockAsync)){
timer = gbl.setTimeout(function () { http.onreadystatechange.apply(this); }, 10);
}else{
if(4==http.readyState){
if(isDocumentOk(http)){
// dojo.debug("LOADED URI: "+uri);
async_cb(http.responseText);
}
}
}
}
}
 
http.open('GET', uri, async_cb ? true : false);
try{
http.send(null);
if(async_cb){
return null;
}
if(!isDocumentOk(http)){
var err = Error("Unable to load "+uri+" status:"+ http.status);
err.status = http.status;
err.responseText = http.responseText;
throw err;
}
}catch(e){
this._blockAsync = false;
if((fail_ok)&&(!async_cb)){
return null;
}else{
throw e;
}
}
 
this._blockAsync = false;
return http.responseText; // String
}
 
dojo.hostenv.defaultDebugContainerId = 'dojoDebug';
dojo.hostenv._println_buffer = [];
dojo.hostenv._println_safe = false;
dojo.hostenv.println = function(/*String*/line){
// summary:
// prints the provided line to whatever logging container is
// available. If the page isn't loaded yet, the line may be added
// to a buffer for printing later.
if(!dojo.hostenv._println_safe){
dojo.hostenv._println_buffer.push(line);
}else{
try {
var console = document.getElementById(djConfig.debugContainerId ?
djConfig.debugContainerId : dojo.hostenv.defaultDebugContainerId);
if(!console) { console = dojo.body(); }
 
var div = document.createElement("div");
div.appendChild(document.createTextNode(line));
console.appendChild(div);
} catch (e) {
try{
// safari needs the output wrapped in an element for some reason
document.write("<div>" + line + "</div>");
}catch(e2){
window.status = line;
}
}
}
}
 
dojo.addOnLoad(function(){
dojo.hostenv._println_safe = true;
while(dojo.hostenv._println_buffer.length > 0){
dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
}
});
 
function dj_addNodeEvtHdlr(/*DomNode*/node, /*String*/evtName, /*Function*/fp){
// summary:
// non-destructively adds the specified function to the node's
// evtName handler.
// node: the DomNode to add the handler to
// evtName: should be in the form "click" for "onclick" handlers
var oldHandler = node["on"+evtName] || function(){};
node["on"+evtName] = function(){
fp.apply(node, arguments);
oldHandler.apply(node, arguments);
}
return true;
}
 
// BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/)
function dj_load_init(e){
// allow multiple calls, only first one will take effect
// A bug in khtml calls events callbacks for document for event which isnt supported
// for example a created contextmenu event calls DOMContentLoaded, workaround
var type = (e && e.type) ? e.type.toLowerCase() : "load";
if(arguments.callee.initialized || (type!="domcontentloaded" && type!="load")){ return; }
arguments.callee.initialized = true;
if(typeof(_timer) != 'undefined'){
clearInterval(_timer);
delete _timer;
}
 
var initFunc = function(){
//perform initialization
if(dojo.render.html.ie){
dojo.hostenv.makeWidgets();
}
};
 
if(dojo.hostenv.inFlightCount == 0){
initFunc();
dojo.hostenv.modulesLoaded();
}else{
//This else case should be xdomain loading.
//Make sure this is the first thing in the load listener array.
//Part of the dojo.addOnLoad guarantee is that when the listeners are notified,
//It means the DOM (or page) has loaded and that widgets have been parsed.
dojo.hostenv.modulesLoadedListeners.unshift(initFunc);
}
}
 
// START DOMContentLoaded
// Mozilla and Opera 9 expose the event we could use
if(document.addEventListener){
// NOTE:
// due to a threading issue in Firefox 2.0, we can't enable
// DOMContentLoaded on that platform. For more information, see:
// http://trac.dojotoolkit.org/ticket/1704
if(dojo.render.html.opera || (dojo.render.html.moz && (djConfig["enableMozDomContentLoaded"] === true))){
document.addEventListener("DOMContentLoaded", dj_load_init, null);
}
 
// mainly for Opera 8.5, won't be fired if DOMContentLoaded fired already.
// also used for Mozilla because of trac #1640
window.addEventListener("load", dj_load_init, null);
}
 
// for Internet Explorer. readyState will not be achieved on init call, but dojo doesn't need it
// however, we'll include it because we don't know if there are other functions added that might.
// Note that this has changed because the build process strips all comments--including conditional
// ones.
if(dojo.render.html.ie && dojo.render.os.win){
document.attachEvent("onreadystatechange", function(e){
if(document.readyState == "complete"){
dj_load_init();
}
});
}
 
if (/(WebKit|khtml)/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
dj_load_init(); // call the onload handler
}
}, 10);
}
// END DOMContentLoaded
 
// IE WebControl hosted in an application can fire "beforeunload" and "unload"
// events when control visibility changes, causing Dojo to unload too soon. The
// following code fixes the problem
// Reference: http://support.microsoft.com/default.aspx?scid=kb;en-us;199155
if(dojo.render.html.ie){
dj_addNodeEvtHdlr(window, "beforeunload", function(){
dojo.hostenv._unloading = true;
window.setTimeout(function() {
dojo.hostenv._unloading = false;
}, 0);
});
}
 
dj_addNodeEvtHdlr(window, "unload", function(){
dojo.hostenv.unloaded();
if((!dojo.render.html.ie)||(dojo.render.html.ie && dojo.hostenv._unloading)){
dojo.hostenv.unloaded();
}
});
 
dojo.hostenv.makeWidgets = function(){
// you can put searchIds in djConfig and dojo.hostenv at the moment
// we should probably eventually move to one or the other
var sids = [];
if(djConfig.searchIds && djConfig.searchIds.length > 0) {
sids = sids.concat(djConfig.searchIds);
}
if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) {
sids = sids.concat(dojo.hostenv.searchIds);
}
 
if((djConfig.parseWidgets)||(sids.length > 0)){
if(dojo.evalObjPath("dojo.widget.Parse")){
// we must do this on a delay to avoid:
// http://www.shaftek.org/blog/archives/000212.html
// (IE bug)
var parser = new dojo.xml.Parse();
if(sids.length > 0){
for(var x=0; x<sids.length; x++){
var tmpNode = document.getElementById(sids[x]);
if(!tmpNode){ continue; }
var frag = parser.parseElement(tmpNode, null, true);
dojo.widget.getParser().createComponents(frag);
}
}else if(djConfig.parseWidgets){
var frag = parser.parseElement(dojo.body(), null, true);
dojo.widget.getParser().createComponents(frag);
}
}
}
}
 
dojo.addOnLoad(function(){
if(!dojo.render.html.ie) {
dojo.hostenv.makeWidgets();
}
});
 
try{
if(dojo.render.html.ie){
document.namespaces.add("v","urn:schemas-microsoft-com:vml");
document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)");
}
}catch(e){ }
 
// stub, over-ridden by debugging code. This will at least keep us from
// breaking when it's not included
dojo.hostenv.writeIncludes = function(){}
 
//TODOC: HOW TO DOC THIS?
// @global: dj_currentDocument
// summary:
// Current document object. 'dj_currentDocument' can be modified for temporary context shifting.
// description:
// dojo.doc() returns dojo.currentDocument.
// Refer to dojo.doc() rather than referring to 'window.document' to ensure your
// code runs correctly in managed contexts.
if(!dj_undef("document", this)){
dj_currentDocument = this.document;
}
 
dojo.doc = function(){
// summary:
// return the document object associated with the dojo.global()
return dj_currentDocument;
}
 
dojo.body = function(){
// summary:
// return the body object associated with dojo.doc()
// Note: document.body is not defined for a strict xhtml document
return dojo.doc().body || dojo.doc().getElementsByTagName("body")[0];
}
 
dojo.byId = function(/*String*/id, /*DocumentElement*/doc){
// summary:
// similar to other library's "$" function, takes a string
// representing a DOM id or a DomNode and returns the
// corresponding DomNode. If a Node is passed, this function is a
// no-op. Returns a single DOM node or null, working around
// several browser-specific bugs to do so.
// id: DOM id or DOM Node
// doc:
// optional, defaults to the current value of dj_currentDocument.
// Can be used to retreive node references from other documents.
if((id)&&((typeof id == "string")||(id instanceof String))){
if(!doc){ doc = dj_currentDocument; }
var ele = doc.getElementById(id);
// workaround bug in IE and Opera 8.2 where getElementById returns wrong element
if(ele && (ele.id != id) && doc.all){
ele = null;
// get all matching elements with this id
eles = doc.all[id];
if(eles){
// if more than 1, choose first with the correct id
if(eles.length){
for(var i=0; i<eles.length; i++){
if(eles[i].id == id){
ele = eles[i];
break;
}
}
// return 1 and only element
}else{
ele = eles;
}
}
}
return ele; // DomNode
}
return id; // DomNode
}
 
dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){
// summary:
// changes the behavior of many core Dojo functions that deal with
// namespace and DOM lookup, changing them to work in a new global
// context. The varibles dj_currentContext and dj_currentDocument
// are modified as a result of calling this function.
dj_currentContext = globalObject;
dj_currentDocument = globalDocument;
};
 
dojo._fireCallback = function(callback, context, cbArguments){
if((context)&&((typeof callback == "string")||(callback instanceof String))){
callback=context[callback];
}
return (context ? callback.apply(context, cbArguments || [ ]) : callback());
}
 
dojo.withGlobal = function(/*Object*/globalObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments){
// summary:
// Call callback with globalObject as dojo.global() and globalObject.document
// as dojo.doc(). If provided, globalObject will be executed in the context of
// object thisObject
// description:
// When callback() returns or throws an error, the dojo.global() and dojo.doc() will
// be restored to its previous state.
var rval;
var oldGlob = dj_currentContext;
var oldDoc = dj_currentDocument;
try{
dojo.setContext(globalObject, globalObject.document);
rval = dojo._fireCallback(callback, thisObject, cbArguments);
}finally{
dojo.setContext(oldGlob, oldDoc);
}
return rval;
}
 
dojo.withDoc = function (/*Object*/documentObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments) {
// summary:
// Call callback with documentObject as dojo.doc(). If provided, callback will be executed
// in the context of object thisObject
// description:
// When callback() returns or throws an error, the dojo.doc() will
// be restored to its previous state.
var rval;
var oldDoc = dj_currentDocument;
try{
dj_currentDocument = documentObject;
rval = dojo._fireCallback(callback, thisObject, cbArguments);
}finally{
dj_currentDocument = oldDoc;
}
return rval;
}
 
} //if (typeof window != 'undefined')
 
//Load debug code if necessary.
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
//window.widget is for Dashboard detection
//The full conditionals are spelled out to avoid issues during builds.
//Builds may be looking for require/requireIf statements and processing them.
dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && !djConfig["useXDomain"], "dojo.browser_debug");
dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd");
 
dojo.provide("dojo.string.common");
 
dojo.string.trim = function(/* string */str, /* integer? */wh){
// summary
// Trim whitespace from str. If wh > 0, trim from start, if wh < 0, trim from end, else both
if(!str.replace){ return str; }
if(!str.length){ return str; }
var re = (wh > 0) ? (/^\s+/) : (wh < 0) ? (/\s+$/) : (/^\s+|\s+$/g);
return str.replace(re, ""); // string
}
 
dojo.string.trimStart = function(/* string */str) {
// summary
// Trim whitespace at the beginning of 'str'
return dojo.string.trim(str, 1); // string
}
 
dojo.string.trimEnd = function(/* string */str) {
// summary
// Trim whitespace at the end of 'str'
return dojo.string.trim(str, -1);
}
 
dojo.string.repeat = function(/* string */str, /* integer */count, /* string? */separator) {
// summary
// Return 'str' repeated 'count' times, optionally placing 'separator' between each rep
var out = "";
for(var i = 0; i < count; i++) {
out += str;
if(separator && i < count - 1) {
out += separator;
}
}
return out; // string
}
 
dojo.string.pad = function(/* string */str, /* integer */len/*=2*/, /* string */ c/*='0'*/, /* integer */dir/*=1*/) {
// summary
// Pad 'str' to guarantee that it is at least 'len' length with the character 'c' at either the
// start (dir=1) or end (dir=-1) of the string
var out = String(str);
if(!c) {
c = '0';
}
if(!dir) {
dir = 1;
}
while(out.length < len) {
if(dir > 0) {
out = c + out;
} else {
out += c;
}
}
return out; // string
}
 
dojo.string.padLeft = function(/* string */str, /* integer */len, /* string */c) {
// summary
// same as dojo.string.pad(str, len, c, 1)
return dojo.string.pad(str, len, c, 1); // string
}
 
dojo.string.padRight = function(/* string */str, /* integer */len, /* string */c) {
// summary
// same as dojo.string.pad(str, len, c, -1)
return dojo.string.pad(str, len, c, -1); // string
}
 
dojo.provide("dojo.string");
 
 
dojo.provide("dojo.lang.common");
 
dojo.lang.inherits = function(/*Function*/subclass, /*Function*/superclass){
// summary: Set up inheritance between two classes.
if(!dojo.lang.isFunction(superclass)){
dojo.raise("dojo.inherits: superclass argument ["+superclass+"] must be a function (subclass: ["+subclass+"']");
}
subclass.prototype = new superclass();
subclass.prototype.constructor = subclass;
subclass.superclass = superclass.prototype;
// DEPRECATED: super is a reserved word, use 'superclass'
subclass['super'] = superclass.prototype;
}
 
dojo.lang._mixin = function(/*Object*/ obj, /*Object*/ props){
// summary:
// Adds all properties and methods of props to obj. This addition is
// "prototype extension safe", so that instances of objects will not
// pass along prototype defaults.
var tobj = {};
for(var x in props){
// the "tobj" condition avoid copying properties in "props"
// inherited from Object.prototype. For example, if obj has a custom
// toString() method, don't overwrite it with the toString() method
// that props inherited from Object.protoype
if((typeof tobj[x] == "undefined") || (tobj[x] != props[x])){
obj[x] = props[x];
}
}
// IE doesn't recognize custom toStrings in for..in
if(dojo.render.html.ie
&& (typeof(props["toString"]) == "function")
&& (props["toString"] != obj["toString"])
&& (props["toString"] != tobj["toString"]))
{
obj.toString = props.toString;
}
return obj; // Object
}
 
dojo.lang.mixin = function(/*Object*/obj, /*Object...*/props){
// summary: Adds all properties and methods of props to obj.
for(var i=1, l=arguments.length; i<l; i++){
dojo.lang._mixin(obj, arguments[i]);
}
return obj; // Object
}
 
dojo.lang.extend = function(/*Object*/ constructor, /*Object...*/ props){
// summary:
// Adds all properties and methods of props to constructor's
// prototype, making them available to all instances created with
// constructor.
for(var i=1, l=arguments.length; i<l; i++){
dojo.lang._mixin(constructor.prototype, arguments[i]);
}
return constructor; // Object
}
 
// Promote to dojo module
dojo.inherits = dojo.lang.inherits;
//dojo.lang._mixin = dojo.lang._mixin;
dojo.mixin = dojo.lang.mixin;
dojo.extend = dojo.lang.extend;
 
dojo.lang.find = function( /*Array*/ array,
/*Object*/ value,
/*Boolean?*/ identity,
/*Boolean?*/ findLast){
// summary:
// Return the index of value in array, returning -1 if not found.
// array: just what you think
// value: the value to locate
// identity:
// If true, matches with identity comparison (===). If false, uses
// normal comparison (==).
// findLast:
// If true, returns index of last instance of value.
// examples:
// find(array, value[, identity [findLast]]) // recommended
// find(value, array[, identity [findLast]]) // deprecated
// support both (array, value) and (value, array)
if(!dojo.lang.isArrayLike(array) && dojo.lang.isArrayLike(value)) {
dojo.deprecated('dojo.lang.find(value, array)', 'use dojo.lang.find(array, value) instead', "0.5");
var temp = array;
array = value;
value = temp;
}
var isString = dojo.lang.isString(array);
if(isString) { array = array.split(""); }
 
if(findLast) {
var step = -1;
var i = array.length - 1;
var end = -1;
} else {
var step = 1;
var i = 0;
var end = array.length;
}
if(identity){
while(i != end) {
if(array[i] === value){ return i; }
i += step;
}
}else{
while(i != end) {
if(array[i] == value){ return i; }
i += step;
}
}
return -1; // number
}
 
dojo.lang.indexOf = dojo.lang.find;
 
dojo.lang.findLast = function(/*Array*/array, /*Object*/value, /*boolean?*/identity){
// summary:
// Return index of last occurance of value in array, returning -1 if
// not found. This is a shortcut for dojo.lang.find() with a true
// value for its "findLast" parameter.
// identity:
// If true, matches with identity comparison (===). If false, uses
// normal comparison (==).
return dojo.lang.find(array, value, identity, true); // number
}
 
dojo.lang.lastIndexOf = dojo.lang.findLast;
 
dojo.lang.inArray = function(array /*Array*/, value /*Object*/){
// summary: Return true if value is present in array.
return dojo.lang.find(array, value) > -1; // boolean
}
 
/**
* Partial implmentation of is* functions from
* http://www.crockford.com/javascript/recommend.html
* NOTE: some of these may not be the best thing to use in all situations
* as they aren't part of core JS and therefore can't work in every case.
* See WARNING messages inline for tips.
*
* The following is* functions are fairly "safe"
*/
 
dojo.lang.isObject = function(/*anything*/ it){
// summary: Return true if it is an Object, Array or Function.
if(typeof it == "undefined"){ return false; }
return (typeof it == "object" || it === null || dojo.lang.isArray(it) || dojo.lang.isFunction(it)); // Boolean
}
 
dojo.lang.isArray = function(/*anything*/ it){
// summary: Return true if it is an Array.
return (it && it instanceof Array || typeof it == "array"); // Boolean
}
 
dojo.lang.isArrayLike = function(/*anything*/ it){
// summary:
// Return true if it can be used as an array (i.e. is an object with
// an integer length property).
if((!it)||(dojo.lang.isUndefined(it))){ return false; }
if(dojo.lang.isString(it)){ return false; }
if(dojo.lang.isFunction(it)){ return false; } // keeps out built-in constructors (Number, String, ...) which have length properties
if(dojo.lang.isArray(it)){ return true; }
// form node itself is ArrayLike, but not always iterable. Use form.elements instead.
if((it.tagName)&&(it.tagName.toLowerCase()=='form')){ return false; }
if(dojo.lang.isNumber(it.length) && isFinite(it.length)){ return true; }
return false; // Boolean
}
 
dojo.lang.isFunction = function(/*anything*/ it){
// summary: Return true if it is a Function.
return (it instanceof Function || typeof it == "function"); // Boolean
};
 
(function(){
// webkit treats NodeList as a function, which is bad
if((dojo.render.html.capable)&&(dojo.render.html["safari"])){
dojo.lang.isFunction = function(/*anything*/ it){
if((typeof(it) == "function") && (it == "[object NodeList]")) { return false; }
return (it instanceof Function || typeof it == "function"); // Boolean
}
}
})();
 
dojo.lang.isString = function(/*anything*/ it){
// summary: Return true if it is a String.
return (typeof it == "string" || it instanceof String);
}
 
dojo.lang.isAlien = function(/*anything*/ it){
// summary: Return true if it is not a built-in function. False if not.
if(!it){ return false; }
return !dojo.lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean
}
 
dojo.lang.isBoolean = function(/*anything*/ it){
// summary: Return true if it is a Boolean.
return (it instanceof Boolean || typeof it == "boolean"); // Boolean
}
 
/**
* The following is***() functions are somewhat "unsafe". Fortunately,
* there are workarounds the the language provides and are mentioned
* in the WARNING messages.
*
*/
dojo.lang.isNumber = function(/*anything*/ it){
// summary: Return true if it is a number.
// description:
// WARNING - In most cases, isNaN(it) is sufficient to determine whether or not
// something is a number or can be used as such. For example, a number or string
// can be used interchangably when accessing array items (array["1"] is the same as
// array[1]) and isNaN will return false for both values ("1" and 1). However,
// isNumber("1") will return false, which is generally not too useful.
// Also, isNumber(NaN) returns true, again, this isn't generally useful, but there
// are corner cases (like when you want to make sure that two things are really
// the same type of thing). That is really where isNumber "shines".
//
// Recommendation - Use isNaN(it) when possible
return (it instanceof Number || typeof it == "number"); // Boolean
}
 
/*
* FIXME: Should isUndefined go away since it is error prone?
*/
dojo.lang.isUndefined = function(/*anything*/ it){
// summary: Return true if it is not defined.
// description:
// WARNING - In some cases, isUndefined will not behave as you
// might expect. If you do isUndefined(foo) and there is no earlier
// reference to foo, an error will be thrown before isUndefined is
// called. It behaves correctly if you scope yor object first, i.e.
// isUndefined(foo.bar) where foo is an object and bar isn't a
// property of the object.
//
// Recommendation - Use typeof foo == "undefined" when possible
 
return ((typeof(it) == "undefined")&&(it == undefined)); // Boolean
}
 
// end Crockford functions
 
dojo.provide("dojo.lang.extras");
 
 
 
dojo.lang.setTimeout = function(/*Function*/func, /*int*/delay /*, ...*/){
// summary:
// Sets a timeout in milliseconds to execute a function in a given
// context with optional arguments.
// usage:
// dojo.lang.setTimeout(Object context, function func, number delay[, arg1[, ...]]);
// dojo.lang.setTimeout(function func, number delay[, arg1[, ...]]);
 
var context = window, argsStart = 2;
if(!dojo.lang.isFunction(func)){
context = func;
func = delay;
delay = arguments[2];
argsStart++;
}
 
if(dojo.lang.isString(func)){
func = context[func];
}
var args = [];
for (var i = argsStart; i < arguments.length; i++){
args.push(arguments[i]);
}
return dojo.global().setTimeout(function(){ func.apply(context, args); }, delay); // int
}
 
dojo.lang.clearTimeout = function(/*int*/timer){
// summary: clears timer by number from the execution queue
 
// FIXME:
// why do we have this function? It's not portable outside of browser
// environments and it's a stupid wrapper on something that browsers
// provide anyway.
dojo.global().clearTimeout(timer);
}
 
dojo.lang.getNameInObj = function(/*Object*/ns, /*unknown*/item){
// summary:
// looks for a value in the object ns with a value matching item and
// returns the property name
// ns: if null, dj_global is used
// item: value to return a name for
if(!ns){ ns = dj_global; }
 
for(var x in ns){
if(ns[x] === item){
return new String(x); // String
}
}
return null; // null
}
 
dojo.lang.shallowCopy = function(/*Object*/obj, /*Boolean?*/deep){
// summary:
// copies object obj one level deep, or full depth if deep is true
var i, ret;
 
if(obj === null){ /*obj: null*/ return null; } // null
if(dojo.lang.isObject(obj)){
// obj: Object
ret = new obj.constructor();
for(i in obj){
if(dojo.lang.isUndefined(ret[i])){
ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
}
}
}else if(dojo.lang.isArray(obj)){
// obj: Array
ret = [];
for(i=0; i<obj.length; i++){
ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
}
}else{
// obj: Object
ret = obj;
}
 
return ret; // Object
}
 
dojo.lang.firstValued = function(/* ... */){
// summary: Return the first argument that isn't undefined
 
for(var i = 0; i < arguments.length; i++){
if(typeof arguments[i] != "undefined"){
return arguments[i]; // Object
}
}
return undefined; // undefined
}
 
dojo.lang.getObjPathValue = function(/*String*/objpath, /*Object?*/context, /*Boolean?*/create){
// summary:
// Gets a value from a reference specified as a string descriptor,
// (e.g. "A.B") in the given context.
// context: if not specified, dj_global is used
// create: if true, undefined objects in the path are created.
with(dojo.parseObjPath(objpath, context, create)){
return dojo.evalProp(prop, obj, create); // Object
}
}
 
dojo.lang.setObjPathValue = function(/*String*/objpath, /*anything*/value, /*Object?*/context, /*Boolean?*/create){
// summary:
// Sets a value on a reference specified as a string descriptor.
// (e.g. "A.B") in the given context. This is similar to straight
// assignment, except that the object structure in question can
// optionally be created if it does not exist.
// context: if not specified, dj_global is used
// create: if true, undefined objects in the path are created.
 
// FIXME: why is this function valuable? It should be scheduled for
// removal on the grounds that dojo.parseObjPath does most of it's work and
// is more straightforward and has fewer dependencies. Also, the order of
// arguments is bone-headed. "context" should clearly come after "create".
// *sigh*
dojo.deprecated("dojo.lang.setObjPathValue", "use dojo.parseObjPath and the '=' operator", "0.6");
 
if(arguments.length < 4){
create = true;
}
with(dojo.parseObjPath(objpath, context, create)){
if(obj && (create || (prop in obj))){
obj[prop] = value;
}
}
}
 
dojo.provide("dojo.io.common");
 
 
 
/******************************************************************************
* Notes about dojo.io design:
*
* The dojo.io.* package has the unenviable task of making a lot of different
* types of I/O feel natural, despite a universal lack of good (or even
* reasonable!) I/O capability in the host environment. So lets pin this down
* a little bit further.
*
* Rhino:
* perhaps the best situation anywhere. Access to Java classes allows you
* to do anything one might want in terms of I/O, both synchronously and
* async. Can open TCP sockets and perform low-latency client/server
* interactions. HTTP transport is available through Java HTTP client and
* server classes. Wish it were always this easy.
*
* xpcshell:
* XPCOM for I/O.
*
* spidermonkey:
* S.O.L.
*
* Browsers:
* Browsers generally do not provide any useable filesystem access. We are
* therefore limited to HTTP for moving information to and from Dojo
* instances living in a browser.
*
* XMLHTTP:
* Sync or async, allows reading of arbitrary text files (including
* JS, which can then be eval()'d), writing requires server
* cooperation and is limited to HTTP mechanisms (POST and GET).
*
* <iframe> hacks:
* iframe document hacks allow browsers to communicate asynchronously
* with a server via HTTP POST and GET operations. With significant
* effort and server cooperation, low-latency data transit between
* client and server can be acheived via iframe mechanisms (repubsub).
*
* SVG:
* Adobe's SVG viewer implements helpful primitives for XML-based
* requests, but receipt of arbitrary text data seems unlikely w/o
* <![CDATA[]]> sections.
*
*
* A discussion between Dylan, Mark, Tom, and Alex helped to lay down a lot
* the IO API interface. A transcript of it can be found at:
* http://dojotoolkit.org/viewcvs/viewcvs.py/documents/irc/irc_io_api_log.txt?rev=307&view=auto
*
* Also referenced in the design of the API was the DOM 3 L&S spec:
* http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html
******************************************************************************/
 
// a map of the available transport options. Transports should add themselves
// by calling add(name)
dojo.io.transports = [];
dojo.io.hdlrFuncNames = [ "load", "error", "timeout" ]; // we're omitting a progress() event for now
 
dojo.io.Request = function(/*String*/ url, /*String*/ mimetype, /*String*/ transport, /*String or Boolean*/ changeUrl){
// summary:
// Constructs a Request object that is used by dojo.io.bind().
// description:
// dojo.io.bind() will create one of these for you if
// you call dojo.io.bind() with an plain object containing the bind parameters.
// This method can either take the arguments specified, or an Object containing all of the parameters that you
// want to use to create the dojo.io.Request (similar to how dojo.io.bind() is called.
// The named parameters to this constructor represent the minimum set of parameters need
if((arguments.length == 1)&&(arguments[0].constructor == Object)){
this.fromKwArgs(arguments[0]);
}else{
this.url = url;
if(mimetype){ this.mimetype = mimetype; }
if(transport){ this.transport = transport; }
if(arguments.length >= 4){ this.changeUrl = changeUrl; }
}
}
 
dojo.lang.extend(dojo.io.Request, {
 
/** The URL to hit */
url: "",
/** The mime type used to interrpret the response body */
mimetype: "text/plain",
/** The HTTP method to use */
method: "GET",
/** An Object containing key-value pairs to be included with the request */
content: undefined, // Object
/** The transport medium to use */
transport: undefined, // String
/** If defined the URL of the page is physically changed */
changeUrl: undefined, // String
/** A form node to use in the request */
formNode: undefined, // HTMLFormElement
/** Whether the request should be made synchronously */
sync: false,
bindSuccess: false,
 
/** Cache/look for the request in the cache before attempting to request?
* NOTE: this isn't a browser cache, this is internal and would only cache in-page
*/
useCache: false,
 
/** Prevent the browser from caching this by adding a query string argument to the URL */
preventCache: false,
// events stuff
load: function(/*String*/type, /*Object*/data, /*Object*/transportImplementation, /*Object*/kwArgs){
// summary:
// Called on successful completion of a bind.
// type: String
// A string with value "load"
// data: Object
// The object representing the result of the bind. The actual structure
// of the data object will depend on the mimetype that was given to bind
// in the bind arguments.
// transportImplementation: Object
// The object that implements a particular transport. Structure is depedent
// on the transport. For XMLHTTPTransport (dojo.io.BrowserIO), it will be the
// XMLHttpRequest object from the browser.
// kwArgs: Object
// Object that contains the request parameters that were given to the
// bind call. Useful for storing and retrieving state from when bind
// was called.
},
error: function(/*String*/type, /*Object*/error, /*Object*/transportImplementation, /*Object*/kwArgs){
// summary:
// Called when there is an error with a bind.
// type: String
// A string with value "error"
// error: Object
// The error object. Should be a dojo.io.Error object, but not guaranteed.
// transportImplementation: Object
// The object that implements a particular transport. Structure is depedent
// on the transport. For XMLHTTPTransport (dojo.io.BrowserIO), it will be the
// XMLHttpRequest object from the browser.
// kwArgs: Object
// Object that contains the request parameters that were given to the
// bind call. Useful for storing and retrieving state from when bind
// was called.
},
timeout: function(/*String*/type, /*Object*/empty, /*Object*/transportImplementation, /*Object*/kwArgs){
// summary:
// Called when there is an error with a bind. Only implemented in certain transports at this time.
// type: String
// A string with value "timeout"
// empty: Object
// Should be null. Just a spacer argument so that load, error, timeout and handle have the
// same signatures.
// transportImplementation: Object
// The object that implements a particular transport. Structure is depedent
// on the transport. For XMLHTTPTransport (dojo.io.BrowserIO), it will be the
// XMLHttpRequest object from the browser. May be null for the timeout case for
// some transports.
// kwArgs: Object
// Object that contains the request parameters that were given to the
// bind call. Useful for storing and retrieving state from when bind
// was called.
},
handle: function(/*String*/type, /*Object*/data, /*Object*/transportImplementation, /*Object*/kwArgs){
// summary:
// The handle method can be defined instead of defining separate load, error and timeout
// callbacks.
// type: String
// A string with the type of callback: "load", "error", or "timeout".
// data: Object
// See the above callbacks for what this parameter could be.
// transportImplementation: Object
// The object that implements a particular transport. Structure is depedent
// on the transport. For XMLHTTPTransport (dojo.io.BrowserIO), it will be the
// XMLHttpRequest object from the browser.
// kwArgs: Object
// Object that contains the request parameters that were given to the
// bind call. Useful for storing and retrieving state from when bind
// was called.
},
 
//FIXME: change IframeIO.js to use timeouts?
// The number of seconds to wait until firing a timeout callback.
// If it is zero, that means, don't do a timeout check.
timeoutSeconds: 0,
// the abort method needs to be filled in by the transport that accepts the
// bind() request
abort: function(){ },
// backButton: function(){ },
// forwardButton: function(){ },
 
fromKwArgs: function(/*Object*/ kwArgs){
// summary:
// Creates a dojo.io.Request from a simple object (kwArgs object).
 
// normalize args
if(kwArgs["url"]){ kwArgs.url = kwArgs.url.toString(); }
if(kwArgs["formNode"]) { kwArgs.formNode = dojo.byId(kwArgs.formNode); }
if(!kwArgs["method"] && kwArgs["formNode"] && kwArgs["formNode"].method) {
kwArgs.method = kwArgs["formNode"].method;
}
// backwards compatibility
if(!kwArgs["handle"] && kwArgs["handler"]){ kwArgs.handle = kwArgs.handler; }
if(!kwArgs["load"] && kwArgs["loaded"]){ kwArgs.load = kwArgs.loaded; }
if(!kwArgs["changeUrl"] && kwArgs["changeURL"]) { kwArgs.changeUrl = kwArgs.changeURL; }
 
// encoding fun!
kwArgs.encoding = dojo.lang.firstValued(kwArgs["encoding"], djConfig["bindEncoding"], "");
 
kwArgs.sendTransport = dojo.lang.firstValued(kwArgs["sendTransport"], djConfig["ioSendTransport"], false);
 
var isFunction = dojo.lang.isFunction;
for(var x=0; x<dojo.io.hdlrFuncNames.length; x++){
var fn = dojo.io.hdlrFuncNames[x];
if(kwArgs[fn] && isFunction(kwArgs[fn])){ continue; }
if(kwArgs["handle"] && isFunction(kwArgs["handle"])){
kwArgs[fn] = kwArgs.handle;
}
// handler is aliased above, shouldn't need this check
/* else if(dojo.lang.isObject(kwArgs.handler)){
if(isFunction(kwArgs.handler[fn])){
kwArgs[fn] = kwArgs.handler[fn]||kwArgs.handler["handle"]||function(){};
}
}*/
}
dojo.lang.mixin(this, kwArgs);
}
 
});
 
dojo.io.Error = function(/*String*/ msg, /*String*/ type, /*Number*/num){
// summary:
// Constructs an object representing a bind error.
this.message = msg;
this.type = type || "unknown"; // must be one of "io", "parse", "unknown"
this.number = num || 0; // per-substrate error number, not normalized
}
 
dojo.io.transports.addTransport = function(/*String*/name){
// summary:
// Used to register transports that can support bind calls.
this.push(name);
// FIXME: do we need to handle things that aren't direct children of the
// dojo.io module? (say, dojo.io.foo.fooTransport?)
this[name] = dojo.io[name];
}
 
// binding interface, the various implementations register their capabilities
// and the bind() method dispatches
dojo.io.bind = function(/*dojo.io.Request or Object*/request){
// summary:
// Binding interface for IO. Loading different IO transports, like
// dojo.io.BrowserIO or dojo.io.IframeIO, will register with bind
// to handle particular types of bind calls.
// request: Object
// Object containing bind arguments. This object is converted to
// a dojo.io.Request object, and that request object is the return
// value for this method.
if(!(request instanceof dojo.io.Request)){
try{
request = new dojo.io.Request(request);
}catch(e){ dojo.debug(e); }
}
 
// if the request asks for a particular implementation, use it
var tsName = "";
if(request["transport"]){
tsName = request["transport"];
if(!this[tsName]){
dojo.io.sendBindError(request, "No dojo.io.bind() transport with name '"
+ request["transport"] + "'.");
return request; //dojo.io.Request
}
if(!this[tsName].canHandle(request)){
dojo.io.sendBindError(request, "dojo.io.bind() transport with name '"
+ request["transport"] + "' cannot handle this type of request.");
return request; //dojo.io.Request
}
}else{
// otherwise we do our best to auto-detect what available transports
// will handle
for(var x=0; x<dojo.io.transports.length; x++){
var tmp = dojo.io.transports[x];
if((this[tmp])&&(this[tmp].canHandle(request))){
tsName = tmp;
break;
}
}
if(tsName == ""){
dojo.io.sendBindError(request, "None of the loaded transports for dojo.io.bind()"
+ " can handle the request.");
return request; //dojo.io.Request
}
}
this[tsName].bind(request);
request.bindSuccess = true;
return request; //dojo.io.Request
}
 
dojo.io.sendBindError = function(/* Object */request, /* String */message){
// summary:
// Used internally by dojo.io.bind() to return/raise a bind error.
 
//Need to be careful since not all hostenvs support setTimeout.
if((typeof request.error == "function" || typeof request.handle == "function")
&& (typeof setTimeout == "function" || typeof setTimeout == "object")){
var errorObject = new dojo.io.Error(message);
setTimeout(function(){
request[(typeof request.error == "function") ? "error" : "handle"]("error", errorObject, null, request);
}, 50);
}else{
dojo.raise(message);
}
}
 
dojo.io.queueBind = function(/*dojo.io.Request or Object*/request){
// summary:
// queueBind will use dojo.io.bind() but guarantee that only one bind
// call is handled at a time.
// description:
// If queueBind is called while a bind call
// is in process, it will queue up the other calls to bind and call them
// in order as bind calls complete.
// request: Object
// Same sort of request object as used for dojo.io.bind().
if(!(request instanceof dojo.io.Request)){
try{
request = new dojo.io.Request(request);
}catch(e){ dojo.debug(e); }
}
 
// make sure we get called if/when we get a response
var oldLoad = request.load;
request.load = function(){
dojo.io._queueBindInFlight = false;
var ret = oldLoad.apply(this, arguments);
dojo.io._dispatchNextQueueBind();
return ret;
}
 
var oldErr = request.error;
request.error = function(){
dojo.io._queueBindInFlight = false;
var ret = oldErr.apply(this, arguments);
dojo.io._dispatchNextQueueBind();
return ret;
}
 
dojo.io._bindQueue.push(request);
dojo.io._dispatchNextQueueBind();
return request; //dojo.io.Request
}
 
dojo.io._dispatchNextQueueBind = function(){
// summary:
// Private method used by dojo.io.queueBind().
if(!dojo.io._queueBindInFlight){
dojo.io._queueBindInFlight = true;
if(dojo.io._bindQueue.length > 0){
dojo.io.bind(dojo.io._bindQueue.shift());
}else{
dojo.io._queueBindInFlight = false;
}
}
}
dojo.io._bindQueue = [];
dojo.io._queueBindInFlight = false;
 
dojo.io.argsFromMap = function(/*Object*/map, /*String?*/encoding, /*String?*/last){
// summary:
// Converts name/values pairs in the map object to an URL-encoded string
// with format of name1=value1&name2=value2...
// map: Object
// Object that has the contains the names and values.
// encoding: String?
// String to specify how to encode the name and value. If the encoding string
// contains "utf" (case-insensitive), then encodeURIComponent is used. Otherwise
// dojo.string.encodeAscii is used.
// last: String?
// The last parameter in the list. Helps with final string formatting?
var enc = /utf/i.test(encoding||"") ? encodeURIComponent : dojo.string.encodeAscii;
var mapped = [];
var control = new Object();
for(var name in map){
var domap = function(elt){
var val = enc(name)+"="+enc(elt);
mapped[(last == name) ? "push" : "unshift"](val);
}
if(!control[name]){
var value = map[name];
// FIXME: should be isArrayLike?
if (dojo.lang.isArray(value)){
dojo.lang.forEach(value, domap);
}else{
domap(value);
}
}
}
return mapped.join("&"); //String
}
 
dojo.io.setIFrameSrc = function(/*DOMNode*/ iframe, /*String*/ src, /*Boolean*/ replace){
//summary:
// Sets the URL that is loaded in an IFrame. The replace parameter indicates whether
// location.replace() should be used when changing the location of the iframe.
try{
var r = dojo.render.html;
// dojo.debug(iframe);
if(!replace){
if(r.safari){
iframe.location = src;
}else{
frames[iframe.name].location = src;
}
}else{
// Fun with DOM 0 incompatibilities!
var idoc;
if(r.ie){
idoc = iframe.contentWindow.document;
}else if(r.safari){
idoc = iframe.document;
}else{ // if(r.moz){
idoc = iframe.contentWindow;
}
 
//For Safari (at least 2.0.3) and Opera, if the iframe
//has just been created but it doesn't have content
//yet, then iframe.document may be null. In that case,
//use iframe.location and return.
if(!idoc){
iframe.location = src;
return;
}else{
idoc.location.replace(src);
}
}
}catch(e){
dojo.debug(e);
dojo.debug("setIFrameSrc: "+e);
}
}
 
/*
dojo.io.sampleTranport = new function(){
this.canHandle = function(kwArgs){
// canHandle just tells dojo.io.bind() if this is a good transport to
// use for the particular type of request.
if(
(
(kwArgs["mimetype"] == "text/plain") ||
(kwArgs["mimetype"] == "text/html") ||
(kwArgs["mimetype"] == "text/javascript")
)&&(
(kwArgs["method"] == "get") ||
( (kwArgs["method"] == "post") && (!kwArgs["formNode"]) )
)
){
return true;
}
 
return false;
}
 
this.bind = function(kwArgs){
var hdlrObj = {};
 
// set up a handler object
for(var x=0; x<dojo.io.hdlrFuncNames.length; x++){
var fn = dojo.io.hdlrFuncNames[x];
if(typeof kwArgs.handler == "object"){
if(typeof kwArgs.handler[fn] == "function"){
hdlrObj[fn] = kwArgs.handler[fn]||kwArgs.handler["handle"];
}
}else if(typeof kwArgs[fn] == "function"){
hdlrObj[fn] = kwArgs[fn];
}else{
hdlrObj[fn] = kwArgs["handle"]||function(){};
}
}
 
// build a handler function that calls back to the handler obj
var hdlrFunc = function(evt){
if(evt.type == "onload"){
hdlrObj.load("load", evt.data, evt);
}else if(evt.type == "onerr"){
var errObj = new dojo.io.Error("sampleTransport Error: "+evt.msg);
hdlrObj.error("error", errObj);
}
}
 
// the sample transport would attach the hdlrFunc() when sending the
// request down the pipe at this point
var tgtURL = kwArgs.url+"?"+dojo.io.argsFromMap(kwArgs.content);
// sampleTransport.sendRequest(tgtURL, hdlrFunc);
}
 
dojo.io.transports.addTransport("sampleTranport");
}
*/
 
dojo.provide("dojo.lang.array");
 
 
 
// FIXME: Is this worthless since you can do: if(name in obj)
// is this the right place for this?
 
dojo.lang.mixin(dojo.lang, {
has: function(/*Object*/obj, /*String*/name){
// summary: is there a property with the passed name in obj?
try{
return typeof obj[name] != "undefined"; // Boolean
}catch(e){ return false; } // Boolean
},
 
isEmpty: function(/*Object*/obj){
// summary:
// can be used to determine if the passed object is "empty". In
// the case of array-like objects, the length, property is
// examined, but for other types of objects iteration is used to
// examine the iterable "surface area" to determine if any
// non-prototypal properties have been assigned. This iteration is
// prototype-extension safe.
if(dojo.lang.isObject(obj)){
var tmp = {};
var count = 0;
for(var x in obj){
if(obj[x] && (!tmp[x])){
count++;
break;
}
}
return count == 0; // boolean
}else if(dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)){
return obj.length == 0; // boolean
}
},
 
map: function(/*Array*/arr, /*Object|Function*/obj, /*Function?*/unary_func){
// summary:
// returns a new array constituded from the return values of
// passing each element of arr into unary_func. The obj parameter
// may be passed to enable the passed function to be called in
// that scope. In environments that support JavaScript 1.6, this
// function is a passthrough to the built-in map() function
// provided by Array instances. For details on this, see:
// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:map
// examples:
// dojo.lang.map([1, 2, 3, 4], function(item){ return item+1 });
// // returns [2, 3, 4, 5]
var isString = dojo.lang.isString(arr);
if(isString){
// arr: String
arr = arr.split("");
}
if(dojo.lang.isFunction(obj)&&(!unary_func)){
unary_func = obj;
obj = dj_global;
}else if(dojo.lang.isFunction(obj) && unary_func){
// ff 1.5 compat
var tmpObj = obj;
obj = unary_func;
unary_func = tmpObj;
}
if(Array.map){
var outArr = Array.map(arr, unary_func, obj);
}else{
var outArr = [];
for(var i=0;i<arr.length;++i){
outArr.push(unary_func.call(obj, arr[i]));
}
}
if(isString) {
return outArr.join(""); // String
} else {
return outArr; // Array
}
},
 
reduce: function(/*Array*/arr, initialValue, /*Object|Function*/obj, /*Function*/binary_func){
// summary:
// similar to Python's builtin reduce() function. The result of
// the previous computation is passed as the first argument to
// binary_func along with the next value from arr. The result of
// this call is used along with the subsequent value from arr, and
// this continues until arr is exhausted. The return value is the
// last result. The "obj" and "initialValue" parameters may be
// safely omitted and the order of obj and binary_func may be
// reversed. The default order of the obj and binary_func argument
// will probably be reversed in a future release, and this call
// order is supported today.
// examples:
// dojo.lang.reduce([1, 2, 3, 4], function(last, next){ return last+next});
// returns 10
var reducedValue = initialValue;
if(arguments.length == 2){
binary_func = initialValue;
reducedValue = arr[0];
arr = arr.slice(1);
}else if(arguments.length == 3){
if(dojo.lang.isFunction(obj)){
binary_func = obj;
obj = null;
}
}else{
// un-fsck the default order
// FIXME:
// could be wrong for some strange function object cases. Not
// sure how to test for them.
if(dojo.lang.isFunction(obj)){
var tmp = binary_func;
binary_func = obj;
obj = tmp;
}
}
 
var ob = obj || dj_global;
dojo.lang.map(arr,
function(val){
reducedValue = binary_func.call(ob, reducedValue, val);
}
);
return reducedValue;
},
 
forEach: function(/*Array*/anArray, /*Function*/callback, /*Object?*/thisObject){
// summary:
// for every item in anArray, call callback with that item as its
// only parameter. Return values are ignored. This funciton
// corresponds (and wraps) the JavaScript 1.6 forEach method. For
// more details, see:
// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:forEach
if(dojo.lang.isString(anArray)){
// anArray: String
anArray = anArray.split("");
}
if(Array.forEach){
Array.forEach(anArray, callback, thisObject);
}else{
// FIXME: there are several ways of handilng thisObject. Is dj_global always the default context?
if(!thisObject){
thisObject=dj_global;
}
for(var i=0,l=anArray.length; i<l; i++){
callback.call(thisObject, anArray[i], i, anArray);
}
}
},
 
_everyOrSome: function(/*Boolean*/every, /*Array*/arr, /*Function*/callback, /*Object?*/thisObject){
if(dojo.lang.isString(arr)){
//arr: String
arr = arr.split("");
}
if(Array.every){
return Array[ every ? "every" : "some" ](arr, callback, thisObject);
}else{
if(!thisObject){
thisObject = dj_global;
}
for(var i=0,l=arr.length; i<l; i++){
var result = callback.call(thisObject, arr[i], i, arr);
if(every && !result){
return false; // Boolean
}else if((!every)&&(result)){
return true; // Boolean
}
}
return Boolean(every); // Boolean
}
},
 
every: function(/*Array*/arr, /*Function*/callback, /*Object?*/thisObject){
// summary:
// determines whether or not every item in the array satisfies the
// condition implemented by callback. thisObject may be used to
// scope the call to callback. The function signature is derived
// from the JavaScript 1.6 Array.every() function. More
// information on this can be found here:
// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:every
// examples:
// dojo.lang.every([1, 2, 3, 4], function(item){ return item>1; });
// // returns false
// dojo.lang.every([1, 2, 3, 4], function(item){ return item>0; });
// // returns true
return this._everyOrSome(true, arr, callback, thisObject); // Boolean
},
 
some: function(/*Array*/arr, /*Function*/callback, /*Object?*/thisObject){
// summary:
// determines whether or not any item in the array satisfies the
// condition implemented by callback. thisObject may be used to
// scope the call to callback. The function signature is derived
// from the JavaScript 1.6 Array.some() function. More
// information on this can be found here:
// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:some
// examples:
// dojo.lang.some([1, 2, 3, 4], function(item){ return item>1; });
// // returns true
// dojo.lang.some([1, 2, 3, 4], function(item){ return item<1; });
// // returns false
return this._everyOrSome(false, arr, callback, thisObject); // Boolean
},
 
filter: function(/*Array*/arr, /*Function*/callback, /*Object?*/thisObject){
// summary:
// returns a new Array with those items from arr that match the
// condition implemented by callback.thisObject may be used to
// scope the call to callback. The function signature is derived
// from the JavaScript 1.6 Array.filter() function, although
// special accomidation is made in our implementation for strings.
// More information on the JS 1.6 API can be found here:
// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:filter
// examples:
// dojo.lang.some([1, 2, 3, 4], function(item){ return item>1; });
// // returns [2, 3, 4]
var isString = dojo.lang.isString(arr);
if(isString){ /*arr: String*/arr = arr.split(""); }
var outArr;
if(Array.filter){
outArr = Array.filter(arr, callback, thisObject);
}else{
if(!thisObject){
if(arguments.length >= 3){ dojo.raise("thisObject doesn't exist!"); }
thisObject = dj_global;
}
 
outArr = [];
for(var i = 0; i < arr.length; i++){
if(callback.call(thisObject, arr[i], i, arr)){
outArr.push(arr[i]);
}
}
}
if(isString){
return outArr.join(""); // String
} else {
return outArr; // Array
}
},
 
unnest: function(/* ... */){
// summary:
// Creates a 1-D array out of all the arguments passed,
// unravelling any array-like objects in the process
// usage:
// unnest(1, 2, 3) ==> [1, 2, 3]
// unnest(1, [2, [3], [[[4]]]]) ==> [1, 2, 3, 4]
 
var out = [];
for(var i = 0; i < arguments.length; i++){
if(dojo.lang.isArrayLike(arguments[i])){
var add = dojo.lang.unnest.apply(this, arguments[i]);
out = out.concat(add);
}else{
out.push(arguments[i]);
}
}
return out; // Array
},
 
toArray: function(/*Object*/arrayLike, /*Number*/startOffset){
// summary:
// Converts an array-like object (i.e. arguments, DOMCollection)
// to an array. Returns a new Array object.
var array = [];
for(var i = startOffset||0; i < arrayLike.length; i++){
array.push(arrayLike[i]);
}
return array; // Array
}
});
 
dojo.provide("dojo.lang.func");
 
 
dojo.lang.hitch = function(/*Object*/thisObject, /*Function|String*/method){
// summary:
// Returns a function that will only ever execute in the a given scope
// (thisObject). This allows for easy use of object member functions
// in callbacks and other places in which the "this" keyword may
// otherwise not reference the expected scope. Note that the order of
// arguments may be reversed in a future version.
// thisObject: the scope to run the method in
// method:
// a function to be "bound" to thisObject or the name of the method in
// thisObject to be used as the basis for the binding
// usage:
// dojo.lang.hitch(foo, "bar")(); // runs foo.bar() in the scope of foo
// dojo.lang.hitch(foo, myFunction); // returns a function that runs myFunction in the scope of foo
 
// FIXME:
// should this be extended to "fixate" arguments in a manner similar
// to dojo.lang.curry, but without the default execution of curry()?
var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function(){};
return function(){
return fcn.apply(thisObject, arguments); // Function
};
}
 
dojo.lang.anonCtr = 0;
dojo.lang.anon = {};
 
dojo.lang.nameAnonFunc = function(/*Function*/anonFuncPtr, /*Object*/thisObj, /*Boolean*/searchForNames){
// summary:
// Creates a reference to anonFuncPtr in thisObj with a completely
// unique name. The new name is returned as a String. If
// searchForNames is true, an effort will be made to locate an
// existing reference to anonFuncPtr in thisObj, and if one is found,
// the existing name will be returned instead. The default is for
// searchForNames to be false.
var nso = (thisObj|| dojo.lang.anon);
if( (searchForNames) ||
((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"] == true)) ){
for(var x in nso){
try{
if(nso[x] === anonFuncPtr){
return x;
}
}catch(e){} // window.external fails in IE embedded in Eclipse (Eclipse bug #151165)
}
}
var ret = "__"+dojo.lang.anonCtr++;
while(typeof nso[ret] != "undefined"){
ret = "__"+dojo.lang.anonCtr++;
}
nso[ret] = anonFuncPtr;
return ret; // String
}
 
dojo.lang.forward = function(funcName){
// summary:
// Returns a function that forwards a method call to
// this.funcName(...). Unlike dojo.lang.hitch(), the "this" scope is
// not fixed on a single object. Ported from MochiKit.
return function(){
return this[funcName].apply(this, arguments);
}; // Function
}
 
dojo.lang.curry = function(thisObj, func /* args ... */){
// summary:
// similar to the curry() method found in many functional programming
// environments, this function returns an "argument accumulator"
// function, bound to a particular scope, and "primed" with a variable
// number of arguments. The curry method is unique in that it returns
// a function that may return other "partial" function which can be
// called repeatedly. New functions are returned until the arity of
// the original function is reached, at which point the underlying
// function (func) is called in the scope thisObj with all of the
// accumulated arguments (plus any extras) in positional order.
// examples:
// assuming a function defined like this:
// var foo = {
// bar: function(arg1, arg2, arg3){
// dojo.debug.apply(dojo, arguments);
// }
// };
//
// dojo.lang.curry() can be used most simply in this way:
//
// tmp = dojo.lang.curry(foo, foo.bar, "arg one", "thinger");
// tmp("blah", "this is superfluous");
// // debugs: "arg one thinger blah this is superfluous"
// tmp("blah");
// // debugs: "arg one thinger blah"
// tmp();
// // returns a function exactly like tmp that expects one argument
//
// other intermittent functions could be created until the 3
// positional arguments are filled:
//
// tmp = dojo.lang.curry(foo, foo.bar, "arg one");
// tmp2 = tmp("arg two");
// tmp2("blah blah");
// // debugs: "arg one arg two blah blah"
// tmp2("oy");
// // debugs: "arg one arg two oy"
//
// curry() can also be used to call the function if enough arguments
// are passed in the initial invocation:
//
// dojo.lang.curry(foo, foo.bar, "one", "two", "three", "four");
// // debugs: "one two three four"
// dojo.lang.curry(foo, foo.bar, "one", "two", "three");
// // debugs: "one two three"
 
 
// FIXME: the order of func and thisObj should be changed!!!
var outerArgs = [];
thisObj = thisObj||dj_global;
if(dojo.lang.isString(func)){
func = thisObj[func];
}
for(var x=2; x<arguments.length; x++){
outerArgs.push(arguments[x]);
}
// since the event system replaces the original function with a new
// join-point runner with an arity of 0, we check to see if it's left us
// any clues about the original arity in lieu of the function's actual
// length property
var ecount = (func["__preJoinArity"]||func.length) - outerArgs.length;
// borrowed from svend tofte
function gather(nextArgs, innerArgs, expected){
var texpected = expected;
var totalArgs = innerArgs.slice(0); // copy
for(var x=0; x<nextArgs.length; x++){
totalArgs.push(nextArgs[x]);
}
// check the list of provided nextArgs to see if it, plus the
// number of innerArgs already supplied, meets the total
// expected.
expected = expected-nextArgs.length;
if(expected<=0){
var res = func.apply(thisObj, totalArgs);
expected = texpected;
return res;
}else{
return function(){
return gather(arguments,// check to see if we've been run
// with enough args
totalArgs, // a copy
expected); // how many more do we need to run?;
};
}
}
return gather([], outerArgs, ecount);
}
 
dojo.lang.curryArguments = function(/*Object*/thisObj, /*Function*/func, /*Array*/args, /*Integer, optional*/offset){
// summary:
// similar to dojo.lang.curry(), except that a list of arguments to
// start the curry with may be provided as an array instead of as
// positional arguments. An offset may be specified from the 0 index
// to skip some elements in args.
var targs = [];
var x = offset||0;
for(x=offset; x<args.length; x++){
targs.push(args[x]); // ensure that it's an arr
}
return dojo.lang.curry.apply(dojo.lang, [thisObj, func].concat(targs));
}
 
dojo.lang.tryThese = function(/*...*/){
// summary:
// executes each function argument in turn, returning the return value
// from the first one which does not throw an exception in execution.
// Any number of functions may be passed.
for(var x=0; x<arguments.length; x++){
try{
if(typeof arguments[x] == "function"){
var ret = (arguments[x]());
if(ret){
return ret;
}
}
}catch(e){
dojo.debug(e);
}
}
}
 
dojo.lang.delayThese = function(/*Array*/farr, /*Function, optional*/cb, /*Integer*/delay, /*Function, optional*/onend){
// summary:
// executes a series of functions contained in farr, but spaces out
// calls to each function by the millisecond delay provided. If cb is
// provided, it will be called directly after each item in farr is
// called and if onend is passed, it will be called when all items
// have completed executing.
 
/**
* alternate: (array funcArray, function callback, function onend)
* alternate: (array funcArray, function callback)
* alternate: (array funcArray)
*/
if(!farr.length){
if(typeof onend == "function"){
onend();
}
return;
}
if((typeof delay == "undefined")&&(typeof cb == "number")){
delay = cb;
cb = function(){};
}else if(!cb){
cb = function(){};
if(!delay){ delay = 0; }
}
setTimeout(function(){
(farr.shift())();
cb();
dojo.lang.delayThese(farr, cb, delay, onend);
}, delay);
}
 
dojo.provide("dojo.string.extras");
 
 
 
 
 
//TODO: should we use ${} substitution syntax instead, like widgets do?
dojo.string.substituteParams = function(/*string*/template, /* object - optional or ... */hash){
// summary:
// Performs parameterized substitutions on a string. Throws an exception if any parameter is unmatched.
//
// description:
// For example,
// dojo.string.substituteParams("File '%{0}' is not found in directory '%{1}'.","foo.html","/temp");
// returns
// "File 'foo.html' is not found in directory '/temp'."
//
// template: the original string template with %{values} to be replaced
// hash: name/value pairs (type object) to provide substitutions. Alternatively, substitutions may be
// included as arguments 1..n to this function, corresponding to template parameters 0..n-1
 
var map = (typeof hash == 'object') ? hash : dojo.lang.toArray(arguments, 1);
 
return template.replace(/\%\{(\w+)\}/g, function(match, key){
if(typeof(map[key]) != "undefined" && map[key] != null){
return map[key];
}
dojo.raise("Substitution not found: " + key);
}); // string
};
 
dojo.string.capitalize = function(/*string*/str){
// summary:
// Uppercases the first letter of each word
 
if(!dojo.lang.isString(str)){ return ""; }
if(arguments.length == 0){ str = this; }
 
var words = str.split(' ');
for(var i=0; i<words.length; i++){
words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
}
return words.join(" "); // string
}
 
dojo.string.isBlank = function(/*string*/str){
// summary:
// Return true if the entire string is whitespace characters
 
if(!dojo.lang.isString(str)){ return true; }
return (dojo.string.trim(str).length == 0); // boolean
}
 
//FIXME: not sure exactly what encodeAscii is trying to do, or if it's working right
dojo.string.encodeAscii = function(/*string*/str){
if(!dojo.lang.isString(str)){ return str; } // unknown
var ret = "";
var value = escape(str);
var match, re = /%u([0-9A-F]{4})/i;
while((match = value.match(re))){
var num = Number("0x"+match[1]);
var newVal = escape("&#" + num + ";");
ret += value.substring(0, match.index) + newVal;
value = value.substring(match.index+match[0].length);
}
ret += value.replace(/\+/g, "%2B");
return ret; // string
}
 
dojo.string.escape = function(/*string*/type, /*string*/str){
// summary:
// Adds escape sequences for special characters according to the convention of 'type'
//
// type: one of xml|html|xhtml|sql|regexp|regex|javascript|jscript|js|ascii
// str: the string to be escaped
 
var args = dojo.lang.toArray(arguments, 1);
switch(type.toLowerCase()){
case "xml":
case "html":
case "xhtml":
return dojo.string.escapeXml.apply(this, args); // string
case "sql":
return dojo.string.escapeSql.apply(this, args); // string
case "regexp":
case "regex":
return dojo.string.escapeRegExp.apply(this, args); // string
case "javascript":
case "jscript":
case "js":
return dojo.string.escapeJavaScript.apply(this, args); // string
case "ascii":
// so it's encode, but it seems useful
return dojo.string.encodeAscii.apply(this, args); // string
default:
return str; // string
}
}
 
dojo.string.escapeXml = function(/*string*/str, /*boolean*/noSingleQuotes){
//summary:
// Adds escape sequences for special characters in XML: &<>"'
// Optionally skips escapes for single quotes
 
str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;")
.replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
if(!noSingleQuotes){ str = str.replace(/'/gm, "&#39;"); }
return str; // string
}
 
dojo.string.escapeSql = function(/*string*/str){
//summary:
// Adds escape sequences for single quotes in SQL expressions
 
return str.replace(/'/gm, "''"); //string
}
 
dojo.string.escapeRegExp = function(/*string*/str){
//summary:
// Adds escape sequences for special characters in regular expressions
 
return str.replace(/\\/gm, "\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm, "\\$1"); // string
}
 
//FIXME: should this one also escape backslash?
dojo.string.escapeJavaScript = function(/*string*/str){
//summary:
// Adds escape sequences for single and double quotes as well
// as non-visible characters in JavaScript string literal expressions
 
return str.replace(/(["'\f\b\n\t\r])/gm, "\\$1"); // string
}
 
//FIXME: looks a lot like escapeJavaScript, just adds quotes? deprecate one?
dojo.string.escapeString = function(/*string*/str){
//summary:
// Adds escape sequences for non-visual characters, double quote and backslash
// and surrounds with double quotes to form a valid string literal.
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"); // string
}
 
// TODO: make an HTML version
dojo.string.summary = function(/*string*/str, /*number*/len){
// summary:
// Truncates 'str' after 'len' characters and appends periods as necessary so that it ends with "..."
 
if(!len || str.length <= len){
return str; // string
}
 
return str.substring(0, len).replace(/\.+$/, "") + "..."; // string
}
 
dojo.string.endsWith = function(/*string*/str, /*string*/end, /*boolean*/ignoreCase){
// summary:
// Returns true if 'str' ends with 'end'
 
if(ignoreCase){
str = str.toLowerCase();
end = end.toLowerCase();
}
if((str.length - end.length) < 0){
return false; // boolean
}
return str.lastIndexOf(end) == str.length - end.length; // boolean
}
 
dojo.string.endsWithAny = function(/*string*/str /* , ... */){
// summary:
// Returns true if 'str' ends with any of the arguments[2 -> n]
 
for(var i = 1; i < arguments.length; i++) {
if(dojo.string.endsWith(str, arguments[i])) {
return true; // boolean
}
}
return false; // boolean
}
 
dojo.string.startsWith = function(/*string*/str, /*string*/start, /*boolean*/ignoreCase){
// summary:
// Returns true if 'str' starts with 'start'
 
if(ignoreCase) {
str = str.toLowerCase();
start = start.toLowerCase();
}
return str.indexOf(start) == 0; // boolean
}
 
dojo.string.startsWithAny = function(/*string*/str /* , ... */){
// summary:
// Returns true if 'str' starts with any of the arguments[2 -> n]
 
for(var i = 1; i < arguments.length; i++) {
if(dojo.string.startsWith(str, arguments[i])) {
return true; // boolean
}
}
return false; // boolean
}
 
dojo.string.has = function(/*string*/str /* , ... */) {
// summary:
// Returns true if 'str' contains any of the arguments 2 -> n
 
for(var i = 1; i < arguments.length; i++) {
if(str.indexOf(arguments[i]) > -1){
return true; // boolean
}
}
return false; // boolean
}
 
dojo.string.normalizeNewlines = function(/*string*/text, /*string? (\n or \r)*/newlineChar){
// summary:
// Changes occurences of CR and LF in text to CRLF, or if newlineChar is provided as '\n' or '\r',
// substitutes newlineChar for occurrences of CR/LF and CRLF
 
if (newlineChar == "\n"){
text = text.replace(/\r\n/g, "\n");
text = text.replace(/\r/g, "\n");
} else if (newlineChar == "\r"){
text = text.replace(/\r\n/g, "\r");
text = text.replace(/\n/g, "\r");
}else{
text = text.replace(/([^\r])\n/g, "$1\r\n").replace(/\r([^\n])/g, "\r\n$1");
}
return text; // string
}
 
dojo.string.splitEscaped = function(/*string*/str, /*string of length=1*/charac){
// summary:
// Splits 'str' into an array separated by 'charac', but skips characters escaped with a backslash
 
var components = [];
for (var i = 0, prevcomma = 0; i < str.length; i++){
if (str.charAt(i) == '\\'){ i++; continue; }
if (str.charAt(i) == charac){
components.push(str.substring(prevcomma, i));
prevcomma = i + 1;
}
}
components.push(str.substr(prevcomma));
return components; // array
}
 
dojo.provide("dojo.dom");
 
dojo.dom.ELEMENT_NODE = 1;
dojo.dom.ATTRIBUTE_NODE = 2;
dojo.dom.TEXT_NODE = 3;
dojo.dom.CDATA_SECTION_NODE = 4;
dojo.dom.ENTITY_REFERENCE_NODE = 5;
dojo.dom.ENTITY_NODE = 6;
dojo.dom.PROCESSING_INSTRUCTION_NODE = 7;
dojo.dom.COMMENT_NODE = 8;
dojo.dom.DOCUMENT_NODE = 9;
dojo.dom.DOCUMENT_TYPE_NODE = 10;
dojo.dom.DOCUMENT_FRAGMENT_NODE = 11;
dojo.dom.NOTATION_NODE = 12;
dojo.dom.dojoml = "http://www.dojotoolkit.org/2004/dojoml";
 
/**
* comprehensive list of XML namespaces
**/
dojo.dom.xmlns = {
// summary
// aliases for various common XML namespaces
svg : "http://www.w3.org/2000/svg",
smil : "http://www.w3.org/2001/SMIL20/",
mml : "http://www.w3.org/1998/Math/MathML",
cml : "http://www.xml-cml.org",
xlink : "http://www.w3.org/1999/xlink",
xhtml : "http://www.w3.org/1999/xhtml",
xul : "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
xbl : "http://www.mozilla.org/xbl",
fo : "http://www.w3.org/1999/XSL/Format",
xsl : "http://www.w3.org/1999/XSL/Transform",
xslt : "http://www.w3.org/1999/XSL/Transform",
xi : "http://www.w3.org/2001/XInclude",
xforms : "http://www.w3.org/2002/01/xforms",
saxon : "http://icl.com/saxon",
xalan : "http://xml.apache.org/xslt",
xsd : "http://www.w3.org/2001/XMLSchema",
dt: "http://www.w3.org/2001/XMLSchema-datatypes",
xsi : "http://www.w3.org/2001/XMLSchema-instance",
rdf : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
rdfs : "http://www.w3.org/2000/01/rdf-schema#",
dc : "http://purl.org/dc/elements/1.1/",
dcq: "http://purl.org/dc/qualifiers/1.0",
"soap-env" : "http://schemas.xmlsoap.org/soap/envelope/",
wsdl : "http://schemas.xmlsoap.org/wsdl/",
AdobeExtensions : "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
};
 
dojo.dom.isNode = function(/* object */wh){
// summary:
// checks to see if wh is actually a node.
if(typeof Element == "function") {
try {
return wh instanceof Element; // boolean
} catch(e) {}
} else {
// best-guess
return wh && !isNaN(wh.nodeType); // boolean
}
}
 
dojo.dom.getUniqueId = function(){
// summary:
// returns a unique string for use with any DOM element
var _document = dojo.doc();
do {
var id = "dj_unique_" + (++arguments.callee._idIncrement);
}while(_document.getElementById(id));
return id; // string
}
dojo.dom.getUniqueId._idIncrement = 0;
 
dojo.dom.firstElement = dojo.dom.getFirstChildElement = function(/* Element */parentNode, /* string? */tagName){
// summary:
// returns the first child element matching tagName
var node = parentNode.firstChild;
while(node && node.nodeType != dojo.dom.ELEMENT_NODE){
node = node.nextSibling;
}
if(tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
node = dojo.dom.nextElement(node, tagName);
}
return node; // Element
}
 
dojo.dom.lastElement = dojo.dom.getLastChildElement = function(/* Element */parentNode, /* string? */tagName){
// summary:
// returns the last child element matching tagName
var node = parentNode.lastChild;
while(node && node.nodeType != dojo.dom.ELEMENT_NODE) {
node = node.previousSibling;
}
if(tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
node = dojo.dom.prevElement(node, tagName);
}
return node; // Element
}
 
dojo.dom.nextElement = dojo.dom.getNextSiblingElement = function(/* Node */node, /* string? */tagName){
// summary:
// returns the next sibling element matching tagName
if(!node) { return null; }
do {
node = node.nextSibling;
} while(node && node.nodeType != dojo.dom.ELEMENT_NODE);
 
if(node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
return dojo.dom.nextElement(node, tagName);
}
return node; // Element
}
 
dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement = function(/* Node */node, /* string? */tagName){
// summary:
// returns the previous sibling element matching tagName
if(!node) { return null; }
if(tagName) { tagName = tagName.toLowerCase(); }
do {
node = node.previousSibling;
} while(node && node.nodeType != dojo.dom.ELEMENT_NODE);
 
if(node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
return dojo.dom.prevElement(node, tagName);
}
return node; // Element
}
 
// TODO: hmph
/*this.forEachChildTag = function(node, unaryFunc) {
var child = this.getFirstChildTag(node);
while(child) {
if(unaryFunc(child) == "break") { break; }
child = this.getNextSiblingTag(child);
}
}*/
 
dojo.dom.moveChildren = function(/*Element*/srcNode, /*Element*/destNode, /*boolean?*/trim){
// summary:
// Moves children from srcNode to destNode and returns the count of
// children moved; will trim off text nodes if trim == true
var count = 0;
if(trim) {
while(srcNode.hasChildNodes() &&
srcNode.firstChild.nodeType == dojo.dom.TEXT_NODE) {
srcNode.removeChild(srcNode.firstChild);
}
while(srcNode.hasChildNodes() &&
srcNode.lastChild.nodeType == dojo.dom.TEXT_NODE) {
srcNode.removeChild(srcNode.lastChild);
}
}
while(srcNode.hasChildNodes()){
destNode.appendChild(srcNode.firstChild);
count++;
}
return count; // number
}
 
dojo.dom.copyChildren = function(/*Element*/srcNode, /*Element*/destNode, /*boolean?*/trim){
// summary:
// Copies children from srcNde to destNode and returns the count of
// children copied; will trim off text nodes if trim == true
var clonedNode = srcNode.cloneNode(true);
return this.moveChildren(clonedNode, destNode, trim); // number
}
 
dojo.dom.replaceChildren = function(/*Element*/node, /*Node*/newChild){
// summary:
// Removes all children of node and appends newChild. All the existing
// children will be destroyed.
// FIXME: what if newChild is an array-like object?
var nodes = [];
if(dojo.render.html.ie){
for(var i=0;i<node.childNodes.length;i++){
nodes.push(node.childNodes[i]);
}
}
dojo.dom.removeChildren(node);
node.appendChild(newChild);
for(var i=0;i<nodes.length;i++){
dojo.dom.destroyNode(nodes[i]);
}
}
 
dojo.dom.removeChildren = function(/*Element*/node){
// summary:
// removes all children from node and returns the count of children removed.
// The children nodes are not destroyed. Be sure to call destroyNode on them
// after they are not used anymore.
var count = node.childNodes.length;
while(node.hasChildNodes()){ dojo.dom.removeNode(node.firstChild); }
return count; // int
}
 
dojo.dom.replaceNode = function(/*Element*/node, /*Element*/newNode){
// summary:
// replaces node with newNode and returns a reference to the removed node.
// To prevent IE memory leak, call destroyNode on the returned node when
// it is no longer needed.
return node.parentNode.replaceChild(newNode, node); // Node
}
 
dojo.dom.destroyNode = function(/*Node*/node){
// summary:
// destroy a node (it can not be used any more). For IE, this is the
// right function to call to prevent memory leaks. While for other
// browsers, this is identical to dojo.dom.removeNode
if(node.parentNode){
node = dojo.dom.removeNode(node);
}
if(node.nodeType != 3){ // ingore TEXT_NODE
if(dojo.evalObjPath("dojo.event.browser.clean", false)){
dojo.event.browser.clean(node);
}
if(dojo.render.html.ie){
node.outerHTML=''; //prevent ugly IE mem leak associated with Node.removeChild (ticket #1727)
}
}
}
 
dojo.dom.removeNode = function(/*Node*/node){
// summary:
// if node has a parent, removes node from parent and returns a
// reference to the removed child.
// To prevent IE memory leak, call destroyNode on the returned node when
// it is no longer needed.
// node:
// the node to remove from its parent.
 
if(node && node.parentNode){
// return a ref to the removed child
return node.parentNode.removeChild(node); //Node
}
}
 
dojo.dom.getAncestors = function(/*Node*/node, /*function?*/filterFunction, /*boolean?*/returnFirstHit){
// summary:
// returns all ancestors matching optional filterFunction; will return
// only the first if returnFirstHit
var ancestors = [];
var isFunction = (filterFunction && (filterFunction instanceof Function || typeof filterFunction == "function"));
while(node){
if(!isFunction || filterFunction(node)){
ancestors.push(node);
}
if(returnFirstHit && ancestors.length > 0){
return ancestors[0]; // Node
}
node = node.parentNode;
}
if(returnFirstHit){ return null; }
return ancestors; // array
}
 
dojo.dom.getAncestorsByTag = function(/*Node*/node, /*String*/tag, /*boolean?*/returnFirstHit){
// summary:
// returns all ancestors matching tag (as tagName), will only return
// first one if returnFirstHit
tag = tag.toLowerCase();
return dojo.dom.getAncestors(node, function(el){
return ((el.tagName)&&(el.tagName.toLowerCase() == tag));
}, returnFirstHit); // Node || array
}
 
dojo.dom.getFirstAncestorByTag = function(/*Node*/node, /*string*/tag){
// summary:
// Returns first ancestor of node with tag tagName
return dojo.dom.getAncestorsByTag(node, tag, true); // Node
}
 
dojo.dom.isDescendantOf = function(/* Node */node, /* Node */ancestor, /* boolean? */guaranteeDescendant){
// summary
// Returns boolean if node is a descendant of ancestor
// guaranteeDescendant allows us to be a "true" isDescendantOf function
if(guaranteeDescendant && node) { node = node.parentNode; }
while(node) {
if(node == ancestor){
return true; // boolean
}
node = node.parentNode;
}
return false; // boolean
}
 
dojo.dom.innerXML = function(/*Node*/node){
// summary:
// Implementation of MS's innerXML function.
if(node.innerXML){
return node.innerXML; // string
}else if (node.xml){
return node.xml; // string
}else if(typeof XMLSerializer != "undefined"){
return (new XMLSerializer()).serializeToString(node); // string
}
}
 
dojo.dom.createDocument = function(){
// summary:
// cross-browser implementation of creating an XML document object.
var doc = null;
var _document = dojo.doc();
 
if(!dj_undef("ActiveXObject")){
var prefixes = [ "MSXML2", "Microsoft", "MSXML", "MSXML3" ];
for(var i = 0; i<prefixes.length; i++){
try{
doc = new ActiveXObject(prefixes[i]+".XMLDOM");
}catch(e){ /* squelch */ };
 
if(doc){ break; }
}
}else if((_document.implementation)&&
(_document.implementation.createDocument)){
doc = _document.implementation.createDocument("", "", null);
}
return doc; // DOMDocument
}
 
dojo.dom.createDocumentFromText = function(/*string*/str, /*string?*/mimetype){
// summary:
// attempts to create a Document object based on optional mime-type,
// using str as the contents of the document
if(!mimetype){ mimetype = "text/xml"; }
if(!dj_undef("DOMParser")){
var parser = new DOMParser();
return parser.parseFromString(str, mimetype); // DOMDocument
}else if(!dj_undef("ActiveXObject")){
var domDoc = dojo.dom.createDocument();
if(domDoc){
domDoc.async = false;
domDoc.loadXML(str);
return domDoc; // DOMDocument
}else{
dojo.debug("toXml didn't work?");
}
/*
}else if((dojo.render.html.capable)&&(dojo.render.html.safari)){
// FIXME: this doesn't appear to work!
// from: http://web-graphics.com/mtarchive/001606.php
// var xml = '<?xml version="1.0"?>'+str;
var mtype = "text/xml";
var xml = '<?xml version="1.0"?>'+str;
var url = "data:"+mtype+";charset=utf-8,"+encodeURIComponent(xml);
var req = new XMLHttpRequest();
req.open("GET", url, false);
req.overrideMimeType(mtype);
req.send(null);
return req.responseXML;
*/
}else{
var _document = dojo.doc();
if(_document.createElement){
// FIXME: this may change all tags to uppercase!
var tmp = _document.createElement("xml");
tmp.innerHTML = str;
if(_document.implementation && _document.implementation.createDocument){
var xmlDoc = _document.implementation.createDocument("foo", "", null);
for(var i = 0; i < tmp.childNodes.length; i++) {
xmlDoc.importNode(tmp.childNodes.item(i), true);
}
return xmlDoc; // DOMDocument
}
// FIXME: probably not a good idea to have to return an HTML fragment
// FIXME: the tmp.doc.firstChild is as tested from IE, so it may not
// work that way across the board
return ((tmp.document)&&
(tmp.document.firstChild ? tmp.document.firstChild : tmp)); // DOMDocument
}
}
return null;
}
 
dojo.dom.prependChild = function(/*Element*/node, /*Element*/parent){
// summary:
// prepends node to parent's children nodes
if(parent.firstChild) {
parent.insertBefore(node, parent.firstChild);
} else {
parent.appendChild(node);
}
return true; // boolean
}
 
dojo.dom.insertBefore = function(/*Node*/node, /*Node*/ref, /*boolean?*/force){
// summary:
// Try to insert node before ref
if( (force != true)&&
(node === ref || node.nextSibling === ref)){ return false; }
var parent = ref.parentNode;
parent.insertBefore(node, ref);
return true; // boolean
}
 
dojo.dom.insertAfter = function(/*Node*/node, /*Node*/ref, /*boolean?*/force){
// summary:
// Try to insert node after ref
var pn = ref.parentNode;
if(ref == pn.lastChild){
if((force != true)&&(node === ref)){
return false; // boolean
}
pn.appendChild(node);
}else{
return this.insertBefore(node, ref.nextSibling, force); // boolean
}
return true; // boolean
}
 
dojo.dom.insertAtPosition = function(/*Node*/node, /*Node*/ref, /*string*/position){
// summary:
// attempt to insert node in relation to ref based on position
if((!node)||(!ref)||(!position)){
return false; // boolean
}
switch(position.toLowerCase()){
case "before":
return dojo.dom.insertBefore(node, ref); // boolean
case "after":
return dojo.dom.insertAfter(node, ref); // boolean
case "first":
if(ref.firstChild){
return dojo.dom.insertBefore(node, ref.firstChild); // boolean
}else{
ref.appendChild(node);
return true; // boolean
}
break;
default: // aka: last
ref.appendChild(node);
return true; // boolean
}
}
 
dojo.dom.insertAtIndex = function(/*Node*/node, /*Element*/containingNode, /*number*/insertionIndex){
// summary:
// insert node into child nodes nodelist of containingNode at
// insertionIndex. insertionIndex should be between 0 and
// the number of the childNodes in containingNode. insertionIndex
// specifys after how many childNodes in containingNode the node
// shall be inserted. If 0 is given, node will be appended to
// containingNode.
var siblingNodes = containingNode.childNodes;
 
// if there aren't any kids yet, just add it to the beginning
 
if (!siblingNodes.length || siblingNodes.length == insertionIndex){
containingNode.appendChild(node);
return true; // boolean
}
 
if(insertionIndex == 0){
return dojo.dom.prependChild(node, containingNode); // boolean
}
// otherwise we need to walk the childNodes
// and find our spot
 
return dojo.dom.insertAfter(node, siblingNodes[insertionIndex-1]); // boolean
}
dojo.dom.textContent = function(/*Node*/node, /*string*/text){
// summary:
// implementation of the DOM Level 3 attribute; scan node for text
if (arguments.length>1) {
var _document = dojo.doc();
dojo.dom.replaceChildren(node, _document.createTextNode(text));
return text; // string
} else {
if(node.textContent != undefined){ //FF 1.5
return node.textContent; // string
}
var _result = "";
if (node == null) { return _result; }
for (var i = 0; i < node.childNodes.length; i++) {
switch (node.childNodes[i].nodeType) {
case 1: // ELEMENT_NODE
case 5: // ENTITY_REFERENCE_NODE
_result += dojo.dom.textContent(node.childNodes[i]);
break;
case 3: // TEXT_NODE
case 2: // ATTRIBUTE_NODE
case 4: // CDATA_SECTION_NODE
_result += node.childNodes[i].nodeValue;
break;
default:
break;
}
}
return _result; // string
}
}
 
dojo.dom.hasParent = function(/*Node*/node){
// summary:
// returns whether or not node is a child of another node.
return Boolean(node && node.parentNode && dojo.dom.isNode(node.parentNode)); // boolean
}
 
/**
* Examples:
*
* myFooNode = <foo />
* isTag(myFooNode, "foo"); // returns "foo"
* isTag(myFooNode, "bar"); // returns ""
* isTag(myFooNode, "FOO"); // returns ""
* isTag(myFooNode, "hey", "foo", "bar"); // returns "foo"
**/
dojo.dom.isTag = function(/* Node */node /* ... */){
// summary:
// determines if node has any of the provided tag names and returns
// the tag name that matches, empty string otherwise.
if(node && node.tagName) {
for(var i=1; i<arguments.length; i++){
if(node.tagName==String(arguments[i])){
return String(arguments[i]); // string
}
}
}
return ""; // string
}
 
dojo.dom.setAttributeNS = function( /*Element*/elem, /*string*/namespaceURI,
/*string*/attrName, /*string*/attrValue){
// summary:
// implementation of DOM2 setAttributeNS that works cross browser.
if(elem == null || ((elem == undefined)&&(typeof elem == "undefined"))){
dojo.raise("No element given to dojo.dom.setAttributeNS");
}
if(!((elem.setAttributeNS == undefined)&&(typeof elem.setAttributeNS == "undefined"))){ // w3c
elem.setAttributeNS(namespaceURI, attrName, attrValue);
}else{ // IE
// get a root XML document
var ownerDoc = elem.ownerDocument;
var attribute = ownerDoc.createNode(
2, // node type
attrName,
namespaceURI
);
// set value
attribute.nodeValue = attrValue;
// attach to element
elem.setAttributeNode(attribute);
}
}
 
dojo.provide("dojo.undo.browser");
 
 
try{
if((!djConfig["preventBackButtonFix"])&&(!dojo.hostenv.post_load_)){
document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='" + (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri()+'iframe_history.html') + "'></iframe>");
}
}catch(e){/* squelch */}
 
if(dojo.render.html.opera){
dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work.");
}
 
dojo.undo.browser = {
initialHref: (!dj_undef("window")) ? window.location.href : "",
initialHash: (!dj_undef("window")) ? window.location.hash : "",
 
moveForward: false,
historyStack: [],
forwardStack: [],
historyIframe: null,
bookmarkAnchor: null,
locationTimer: null,
 
/**
*
*/
setInitialState: function(/*Object*/args){
//summary: Sets the state object and back callback for the very first page that is loaded.
//description: It is recommended that you call this method as part of an event listener that is registered via
//dojo.addOnLoad().
//args: Object
// See the addToHistory() function for the list of valid args properties.
this.initialState = this._createState(this.initialHref, args, this.initialHash);
},
 
//FIXME: Would like to support arbitrary back/forward jumps. Have to rework iframeLoaded among other things.
//FIXME: is there a slight race condition in moz using change URL with the timer check and when
// the hash gets set? I think I have seen a back/forward call in quick succession, but not consistent.
addToHistory: function(args){
//summary: adds a state object (args) to the history list. You must set
//djConfig.preventBackButtonFix = false to use dojo.undo.browser.
 
//args: Object
// args can have the following properties:
// To support getting back button notifications, the object argument should implement a
// function called either "back", "backButton", or "handle". The string "back" will be
// passed as the first and only argument to this callback.
// - To support getting forward button notifications, the object argument should implement a
// function called either "forward", "forwardButton", or "handle". The string "forward" will be
// passed as the first and only argument to this callback.
// - If you want the browser location string to change, define "changeUrl" on the object. If the
// value of "changeUrl" is true, then a unique number will be appended to the URL as a fragment
// identifier (http://some.domain.com/path#uniquenumber). If it is any other value that does
// not evaluate to false, that value will be used as the fragment identifier. For example,
// if changeUrl: 'page1', then the URL will look like: http://some.domain.com/path#page1
// Full example:
// dojo.undo.browser.addToHistory({
// back: function() { alert('back pressed'); },
// forward: function() { alert('forward pressed'); },
// changeUrl: true
// });
//
// BROWSER NOTES:
// Safari 1.2:
// back button "works" fine, however it's not possible to actually
// DETECT that you've moved backwards by inspecting window.location.
// Unless there is some other means of locating.
// FIXME: perhaps we can poll on history.length?
// Safari 2.0.3+ (and probably 1.3.2+):
// works fine, except when changeUrl is used. When changeUrl is used,
// Safari jumps all the way back to whatever page was shown before
// the page that uses dojo.undo.browser support.
// IE 5.5 SP2:
// back button behavior is macro. It does not move back to the
// previous hash value, but to the last full page load. This suggests
// that the iframe is the correct way to capture the back button in
// these cases.
// Don't test this page using local disk for MSIE. MSIE will not create
// a history list for iframe_history.html if served from a file: URL.
// The XML served back from the XHR tests will also not be properly
// created if served from local disk. Serve the test pages from a web
// server to test in that browser.
// IE 6.0:
// same behavior as IE 5.5 SP2
// Firefox 1.0+:
// the back button will return us to the previous hash on the same
// page, thereby not requiring an iframe hack, although we do then
// need to run a timer to detect inter-page movement.
 
//If addToHistory is called, then that means we prune the
//forward stack -- the user went back, then wanted to
//start a new forward path.
this.forwardStack = [];
 
var hash = null;
var url = null;
if(!this.historyIframe){
if(djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]){
dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds,"
+ " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"
+ " to the path on your domain to iframe_history.html");
}
this.historyIframe = window.frames["djhistory"];
}
if(!this.bookmarkAnchor){
this.bookmarkAnchor = document.createElement("a");
dojo.body().appendChild(this.bookmarkAnchor);
this.bookmarkAnchor.style.display = "none";
}
if(args["changeUrl"]){
hash = "#"+ ((args["changeUrl"]!==true) ? args["changeUrl"] : (new Date()).getTime());
//If the current hash matches the new one, just replace the history object with
//this new one. It doesn't make sense to track different state objects for the same
//logical URL. This matches the browser behavior of only putting in one history
//item no matter how many times you click on the same #hash link, at least in Firefox
//and Safari, and there is no reliable way in those browsers to know if a #hash link
//has been clicked on multiple times. So making this the standard behavior in all browsers
//so that dojo.undo.browser's behavior is the same in all browsers.
if(this.historyStack.length == 0 && this.initialState.urlHash == hash){
this.initialState = this._createState(url, args, hash);
return;
}else if(this.historyStack.length > 0 && this.historyStack[this.historyStack.length - 1].urlHash == hash){
this.historyStack[this.historyStack.length - 1] = this._createState(url, args, hash);
return;
}
 
this.changingUrl = true;
setTimeout("window.location.href = '"+hash+"'; dojo.undo.browser.changingUrl = false;", 1);
this.bookmarkAnchor.href = hash;
if(dojo.render.html.ie){
url = this._loadIframeHistory();
 
var oldCB = args["back"]||args["backButton"]||args["handle"];
 
//The function takes handleName as a parameter, in case the
//callback we are overriding was "handle". In that case,
//we will need to pass the handle name to handle.
var tcb = function(handleName){
if(window.location.hash != ""){
setTimeout("window.location.href = '"+hash+"';", 1);
}
//Use apply to set "this" to args, and to try to avoid memory leaks.
oldCB.apply(this, [handleName]);
}
//Set interceptor function in the right place.
if(args["back"]){
args.back = tcb;
}else if(args["backButton"]){
args.backButton = tcb;
}else if(args["handle"]){
args.handle = tcb;
}
var oldFW = args["forward"]||args["forwardButton"]||args["handle"];
//The function takes handleName as a parameter, in case the
//callback we are overriding was "handle". In that case,
//we will need to pass the handle name to handle.
var tfw = function(handleName){
if(window.location.hash != ""){
window.location.href = hash;
}
if(oldFW){ // we might not actually have one
//Use apply to set "this" to args, and to try to avoid memory leaks.
oldFW.apply(this, [handleName]);
}
}
 
//Set interceptor function in the right place.
if(args["forward"]){
args.forward = tfw;
}else if(args["forwardButton"]){
args.forwardButton = tfw;
}else if(args["handle"]){
args.handle = tfw;
}
 
}else if(dojo.render.html.moz){
// start the timer
if(!this.locationTimer){
this.locationTimer = setInterval("dojo.undo.browser.checkLocation();", 200);
}
}
}else{
url = this._loadIframeHistory();
}
 
this.historyStack.push(this._createState(url, args, hash));
},
 
checkLocation: function(){
//summary: private method. Do not call this directly.
if (!this.changingUrl){
var hsl = this.historyStack.length;
 
if((window.location.hash == this.initialHash||window.location.href == this.initialHref)&&(hsl == 1)){
// FIXME: could this ever be a forward button?
// we can't clear it because we still need to check for forwards. Ugg.
// clearInterval(this.locationTimer);
this.handleBackButton();
return;
}
// first check to see if we could have gone forward. We always halt on
// a no-hash item.
if(this.forwardStack.length > 0){
if(this.forwardStack[this.forwardStack.length-1].urlHash == window.location.hash){
this.handleForwardButton();
return;
}
}
// ok, that didn't work, try someplace back in the history stack
if((hsl >= 2)&&(this.historyStack[hsl-2])){
if(this.historyStack[hsl-2].urlHash==window.location.hash){
this.handleBackButton();
return;
}
}
}
},
 
iframeLoaded: function(evt, ifrLoc){
//summary: private method. Do not call this directly.
if(!dojo.render.html.opera){
var query = this._getUrlQuery(ifrLoc.href);
if(query == null){
// alert("iframeLoaded");
// we hit the end of the history, so we should go back
if(this.historyStack.length == 1){
this.handleBackButton();
}
return;
}
if(this.moveForward){
// we were expecting it, so it's not either a forward or backward movement
this.moveForward = false;
return;
}
//Check the back stack first, since it is more likely.
//Note that only one step back or forward is supported.
if(this.historyStack.length >= 2 && query == this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
this.handleBackButton();
}
else if(this.forwardStack.length > 0 && query == this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
this.handleForwardButton();
}
}
},
 
handleBackButton: function(){
//summary: private method. Do not call this directly.
 
//The "current" page is always at the top of the history stack.
var current = this.historyStack.pop();
if(!current){ return; }
var last = this.historyStack[this.historyStack.length-1];
if(!last && this.historyStack.length == 0){
last = this.initialState;
}
if (last){
if(last.kwArgs["back"]){
last.kwArgs["back"]();
}else if(last.kwArgs["backButton"]){
last.kwArgs["backButton"]();
}else if(last.kwArgs["handle"]){
last.kwArgs.handle("back");
}
}
this.forwardStack.push(current);
},
 
handleForwardButton: function(){
//summary: private method. Do not call this directly.
 
var last = this.forwardStack.pop();
if(!last){ return; }
if(last.kwArgs["forward"]){
last.kwArgs.forward();
}else if(last.kwArgs["forwardButton"]){
last.kwArgs.forwardButton();
}else if(last.kwArgs["handle"]){
last.kwArgs.handle("forward");
}
this.historyStack.push(last);
},
 
_createState: function(url, args, hash){
//summary: private method. Do not call this directly.
 
return {"url": url, "kwArgs": args, "urlHash": hash}; //Object
},
 
_getUrlQuery: function(url){
//summary: private method. Do not call this directly.
var segments = url.split("?");
if (segments.length < 2){
return null; //null
}
else{
return segments[1]; //String
}
},
_loadIframeHistory: function(){
//summary: private method. Do not call this directly.
var url = (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri()+'iframe_history.html')
+ "?" + (new Date()).getTime();
this.moveForward = true;
dojo.io.setIFrameSrc(this.historyIframe, url, false);
return url; //String
}
}
 
dojo.provide("dojo.io.BrowserIO");
 
 
 
 
 
 
 
 
if(!dj_undef("window")) {
 
dojo.io.checkChildrenForFile = function(/*DOMNode*/node){
//summary: Checks any child nodes of node for an input type="file" element.
var hasFile = false;
var inputs = node.getElementsByTagName("input");
dojo.lang.forEach(inputs, function(input){
if(hasFile){ return; }
if(input.getAttribute("type")=="file"){
hasFile = true;
}
});
return hasFile; //boolean
}
 
dojo.io.formHasFile = function(/*DOMNode*/formNode){
//summary: Just calls dojo.io.checkChildrenForFile().
return dojo.io.checkChildrenForFile(formNode); //boolean
}
 
dojo.io.updateNode = function(/*DOMNode*/node, /*String or Object*/urlOrArgs){
//summary: Updates a DOMnode with the result of a dojo.io.bind() call.
//node: DOMNode
//urlOrArgs: String or Object
// Either a String that has an URL, or an object containing dojo.io.bind()
// arguments.
node = dojo.byId(node);
var args = urlOrArgs;
if(dojo.lang.isString(urlOrArgs)){
args = { url: urlOrArgs };
}
args.mimetype = "text/html";
args.load = function(t, d, e){
while(node.firstChild){
dojo.dom.destroyNode(node.firstChild);
}
node.innerHTML = d;
};
dojo.io.bind(args);
}
 
dojo.io.formFilter = function(/*DOMNode*/node) {
//summary: Returns true if the node is an input element that is enabled, has
//a name, and whose type is one of the following values: ["file", "submit", "image", "reset", "button"]
var type = (node.type||"").toLowerCase();
return !node.disabled && node.name
&& !dojo.lang.inArray(["file", "submit", "image", "reset", "button"], type); //boolean
}
 
// TODO: Move to htmlUtils
dojo.io.encodeForm = function(/*DOMNode*/formNode, /*String?*/encoding, /*Function?*/formFilter){
//summary: Converts the names and values of form elements into an URL-encoded
//string (name=value&name=value...).
//formNode: DOMNode
//encoding: String?
// The encoding to use for the values. Specify a string that starts with
// "utf" (for instance, "utf8"), to use encodeURIComponent() as the encoding
// function. Otherwise, dojo.string.encodeAscii will be used.
//formFilter: Function?
// A function used to filter out form elements. The element node will be passed
// to the formFilter function, and a boolean result is expected (true indicating
// indicating that the element should have its name/value included in the output).
// If no formFilter is specified, then dojo.io.formFilter() will be used.
if((!formNode)||(!formNode.tagName)||(!formNode.tagName.toLowerCase() == "form")){
dojo.raise("Attempted to encode a non-form element.");
}
if(!formFilter) { formFilter = dojo.io.formFilter; }
var enc = /utf/i.test(encoding||"") ? encodeURIComponent : dojo.string.encodeAscii;
var values = [];
 
for(var i = 0; i < formNode.elements.length; i++){
var elm = formNode.elements[i];
if(!elm || elm.tagName.toLowerCase() == "fieldset" || !formFilter(elm)) { continue; }
var name = enc(elm.name);
var type = elm.type.toLowerCase();
 
if(type == "select-multiple"){
for(var j = 0; j < elm.options.length; j++){
if(elm.options[j].selected) {
values.push(name + "=" + enc(elm.options[j].value));
}
}
}else if(dojo.lang.inArray(["radio", "checkbox"], type)){
if(elm.checked){
values.push(name + "=" + enc(elm.value));
}
}else{
values.push(name + "=" + enc(elm.value));
}
}
 
// now collect input type="image", which doesn't show up in the elements array
var inputs = formNode.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if(input.type.toLowerCase() == "image" && input.form == formNode
&& formFilter(input)) {
var name = enc(input.name);
values.push(name + "=" + enc(input.value));
values.push(name + ".x=0");
values.push(name + ".y=0");
}
}
return values.join("&") + "&"; //String
}
 
dojo.io.FormBind = function(/*DOMNode or Object*/args) {
//summary: constructor for a dojo.io.FormBind object. See the Dojo Book for
//some information on usage: http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book23
//args: DOMNode or Object
// args can either be the DOMNode for a form element, or an object containing
// dojo.io.bind() arguments, one of which should be formNode with the value of
// a form element DOMNode.
this.bindArgs = {};
 
if(args && args.formNode) {
this.init(args);
} else if(args) {
this.init({formNode: args});
}
}
dojo.lang.extend(dojo.io.FormBind, {
form: null,
 
bindArgs: null,
 
clickedButton: null,
 
init: function(/*DOMNode or Object*/args) {
//summary: Internal function called by the dojo.io.FormBind() constructor
//do not call this method directly.
var form = dojo.byId(args.formNode);
 
if(!form || !form.tagName || form.tagName.toLowerCase() != "form") {
throw new Error("FormBind: Couldn't apply, invalid form");
} else if(this.form == form) {
return;
} else if(this.form) {
throw new Error("FormBind: Already applied to a form");
}
 
dojo.lang.mixin(this.bindArgs, args);
this.form = form;
 
this.connect(form, "onsubmit", "submit");
 
for(var i = 0; i < form.elements.length; i++) {
var node = form.elements[i];
if(node && node.type && dojo.lang.inArray(["submit", "button"], node.type.toLowerCase())) {
this.connect(node, "onclick", "click");
}
}
 
var inputs = form.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if(input.type.toLowerCase() == "image" && input.form == form) {
this.connect(input, "onclick", "click");
}
}
},
 
onSubmit: function(/*DOMNode*/form) {
//summary: Function used to verify that the form is OK to submit.
//Override this function if you want specific form validation done.
return true; //boolean
},
 
submit: function(/*Event*/e) {
//summary: internal function that is connected as a listener to the
//form's onsubmit event.
e.preventDefault();
if(this.onSubmit(this.form)) {
dojo.io.bind(dojo.lang.mixin(this.bindArgs, {
formFilter: dojo.lang.hitch(this, "formFilter")
}));
}
},
 
click: function(/*Event*/e) {
//summary: internal method that is connected as a listener to the
//form's elements whose click event can submit a form.
var node = e.currentTarget;
if(node.disabled) { return; }
this.clickedButton = node;
},
 
formFilter: function(/*DOMNode*/node) {
//summary: internal function used to know which form element values to include
// in the dojo.io.bind() request.
var type = (node.type||"").toLowerCase();
var accept = false;
if(node.disabled || !node.name) {
accept = false;
} else if(dojo.lang.inArray(["submit", "button", "image"], type)) {
if(!this.clickedButton) { this.clickedButton = node; }
accept = node == this.clickedButton;
} else {
accept = !dojo.lang.inArray(["file", "submit", "reset", "button"], type);
}
return accept; //boolean
},
 
// in case you don't have dojo.event.* pulled in
connect: function(/*Object*/srcObj, /*Function*/srcFcn, /*Function*/targetFcn) {
//summary: internal function used to connect event listeners to form elements
//that trigger events. Used in case dojo.event is not loaded.
if(dojo.evalObjPath("dojo.event.connect")) {
dojo.event.connect(srcObj, srcFcn, this, targetFcn);
} else {
var fcn = dojo.lang.hitch(this, targetFcn);
srcObj[srcFcn] = function(e) {
if(!e) { e = window.event; }
if(!e.currentTarget) { e.currentTarget = e.srcElement; }
if(!e.preventDefault) { e.preventDefault = function() { window.event.returnValue = false; } }
fcn(e);
}
}
}
});
 
dojo.io.XMLHTTPTransport = new function(){
//summary: The object that implements the dojo.io.bind transport for XMLHttpRequest.
var _this = this;
 
var _cache = {}; // FIXME: make this public? do we even need to?
this.useCache = false; // if this is true, we'll cache unless kwArgs.useCache = false
this.preventCache = false; // if this is true, we'll always force GET requests to cache
 
// FIXME: Should this even be a function? or do we just hard code it in the next 2 functions?
function getCacheKey(url, query, method) {
return url + "|" + query + "|" + method.toLowerCase();
}
 
function addToCache(url, query, method, http) {
_cache[getCacheKey(url, query, method)] = http;
}
 
function getFromCache(url, query, method) {
return _cache[getCacheKey(url, query, method)];
}
 
this.clearCache = function() {
_cache = {};
}
 
// moved successful load stuff here
function doLoad(kwArgs, http, url, query, useCache) {
if( ((http.status>=200)&&(http.status<300))|| // allow any 2XX response code
(http.status==304)|| // get it out of the cache
(location.protocol=="file:" && (http.status==0 || http.status==undefined))||
(location.protocol=="chrome:" && (http.status==0 || http.status==undefined))
){
var ret;
if(kwArgs.method.toLowerCase() == "head"){
var headers = http.getAllResponseHeaders();
ret = {};
ret.toString = function(){ return headers; }
var values = headers.split(/[\r\n]+/g);
for(var i = 0; i < values.length; i++) {
var pair = values[i].match(/^([^:]+)\s*:\s*(.+)$/i);
if(pair) {
ret[pair[1]] = pair[2];
}
}
}else if(kwArgs.mimetype == "text/javascript"){
try{
ret = dj_eval(http.responseText);
}catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret = null;
}
}else if(kwArgs.mimetype == "text/json" || kwArgs.mimetype == "application/json"){
try{
ret = dj_eval("("+http.responseText+")");
}catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret = false;
}
}else if((kwArgs.mimetype == "application/xml")||
(kwArgs.mimetype == "text/xml")){
ret = http.responseXML;
if(!ret || typeof ret == "string" || !http.getResponseHeader("Content-Type")) {
ret = dojo.dom.createDocumentFromText(http.responseText);
}
}else{
ret = http.responseText;
}
 
if(useCache){ // only cache successful responses
addToCache(url, query, kwArgs.method, http);
}
kwArgs[(typeof kwArgs.load == "function") ? "load" : "handle"]("load", ret, http, kwArgs);
}else{
var errObj = new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
kwArgs[(typeof kwArgs.error == "function") ? "error" : "handle"]("error", errObj, http, kwArgs);
}
}
 
// set headers (note: Content-Type will get overriden if kwArgs.contentType is set)
function setHeaders(http, kwArgs){
if(kwArgs["headers"]) {
for(var header in kwArgs["headers"]) {
if(header.toLowerCase() == "content-type" && !kwArgs["contentType"]) {
kwArgs["contentType"] = kwArgs["headers"][header];
} else {
http.setRequestHeader(header, kwArgs["headers"][header]);
}
}
}
}
 
this.inFlight = [];
this.inFlightTimer = null;
 
this.startWatchingInFlight = function(){
//summary: internal method used to trigger a timer to watch all inflight
//XMLHttpRequests.
if(!this.inFlightTimer){
// setInterval broken in mozilla x86_64 in some circumstances, see
// https://bugzilla.mozilla.org/show_bug.cgi?id=344439
// using setTimeout instead
this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
}
}
 
this.watchInFlight = function(){
//summary: internal method that checks each inflight XMLHttpRequest to see
//if it has completed or if the timeout situation applies.
var now = null;
// make sure sync calls stay thread safe, if this callback is called during a sync call
// and this results in another sync call before the first sync call ends the browser hangs
if(!dojo.hostenv._blockAsync && !_this._blockAsync){
for(var x=this.inFlight.length-1; x>=0; x--){
try{
var tif = this.inFlight[x];
if(!tif || tif.http._aborted || !tif.http.readyState){
this.inFlight.splice(x, 1); continue;
}
if(4==tif.http.readyState){
// remove it so we can clean refs
this.inFlight.splice(x, 1);
doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache);
}else if (tif.startTime){
//See if this is a timeout case.
if(!now){
now = (new Date()).getTime();
}
if(tif.startTime + (tif.req.timeoutSeconds * 1000) < now){
//Stop the request.
if(typeof tif.http.abort == "function"){
tif.http.abort();
}
// remove it so we can clean refs
this.inFlight.splice(x, 1);
tif.req[(typeof tif.req.timeout == "function") ? "timeout" : "handle"]("timeout", null, tif.http, tif.req);
}
}
}catch(e){
try{
var errObj = new dojo.io.Error("XMLHttpTransport.watchInFlight Error: " + e);
tif.req[(typeof tif.req.error == "function") ? "error" : "handle"]("error", errObj, tif.http, tif.req);
}catch(e2){
dojo.debug("XMLHttpTransport error callback failed: " + e2);
}
}
}
}
 
clearTimeout(this.inFlightTimer);
if(this.inFlight.length == 0){
this.inFlightTimer = null;
return;
}
this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
}
 
var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false;
this.canHandle = function(/*dojo.io.Request*/kwArgs){
//summary: Tells dojo.io.bind() if this is a good transport to
//use for the particular type of request. This type of transport cannot
//handle forms that have an input type="file" element.
 
// FIXME: we need to determine when form values need to be
// multi-part mime encoded and avoid using this transport for those
// requests.
return hasXmlHttp
&& dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase()||""))
&& !( kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]) ); //boolean
}
 
this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F"; // unique guid as a boundary value for multipart posts
 
this.bind = function(/*dojo.io.Request*/kwArgs){
//summary: function that sends the request to the server.
 
//This function will attach an abort() function to the kwArgs dojo.io.Request object,
//so if you need to abort the request, you can call that method on the request object.
//The following are acceptable properties in kwArgs (in addition to the
//normal dojo.io.Request object properties).
//url: String: URL the server URL to use for the request.
//method: String: the HTTP method to use (GET, POST, etc...).
//mimetype: Specifies what format the result data should be given to the load/handle callback. Valid values are:
// text/javascript, text/json, application/json, application/xml, text/xml. Any other mimetype will give back a text
// string.
//transport: String: specify "XMLHTTPTransport" to force the use of this XMLHttpRequest transport.
//headers: Object: The object property names and values will be sent as HTTP request header
// names and values.
//sendTransport: boolean: If true, then dojo.transport=xmlhttp will be added to the request.
//encoding: String: The type of encoding to use when dealing with the content kwArgs property.
//content: Object: The content object is converted into a name=value&name=value string, by
// using dojo.io.argsFromMap(). The encoding kwArgs property is passed to dojo.io.argsFromMap()
// for use in encoding the names and values. The resulting string is added to the request.
//formNode: DOMNode: a form element node. This should not normally be used. Use new dojo.io.FormBind() instead.
// If formNode is used, then the names and values of the form elements will be converted
// to a name=value&name=value string and added to the request. The encoding kwArgs property is used
// to encode the names and values.
//postContent: String: Raw name=value&name=value string to be included as part of the request.
//back or backButton: Function: A function to be called if the back button is pressed. If this kwArgs property
// is used, then back button support via dojo.undo.browser will be used. See notes for dojo.undo.browser on usage.
// You need to set djConfig.preventBackButtonFix = false to enable back button support.
//changeUrl: boolean or String: Used as part of back button support. See notes for dojo.undo.browser on usage.
//user: String: The user name. Used in conjuction with password. Passed to XMLHttpRequest.open().
//password: String: The user's password. Used in conjuction with user. Passed to XMLHttpRequest.open().
//file: Object or Array of Objects: an object simulating a file to be uploaded. file objects should have the following properties:
// name or fileName: the name of the file
// contentType: the MIME content type for the file.
// content: the actual content of the file.
//multipart: boolean: indicates whether this should be a multipart mime request. If kwArgs.file exists, then this
// property is set to true automatically.
//sync: boolean: if true, then a synchronous XMLHttpRequest call is done,
// if false (the default), then an asynchronous call is used.
//preventCache: boolean: If true, then a cache busting parameter is added to the request URL.
// default value is false.
//useCache: boolean: If true, then XMLHttpTransport will keep an internal cache of the server
// response and use that response if a similar request is done again.
// A similar request is one that has the same URL, query string and HTTP method value.
// default is false.
if(!kwArgs["url"]){
// are we performing a history action?
if( !kwArgs["formNode"]
&& (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"] || kwArgs["watchForURL"])
&& (!djConfig.preventBackButtonFix)) {
dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request",
"Use dojo.undo.browser.addToHistory() instead.", "0.4");
dojo.undo.browser.addToHistory(kwArgs);
return true;
}
}
 
// build this first for cache purposes
var url = kwArgs.url;
var query = "";
if(kwArgs["formNode"]){
var ta = kwArgs.formNode.getAttribute("action");
if((ta)&&(!kwArgs["url"])){ url = ta; }
var tp = kwArgs.formNode.getAttribute("method");
if((tp)&&(!kwArgs["method"])){ kwArgs.method = tp; }
query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
}
 
if(url.indexOf("#") > -1) {
dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
url = url.split("#")[0];
}
 
if(kwArgs["file"]){
// force post for file transfer
kwArgs.method = "post";
}
 
if(!kwArgs["method"]){
kwArgs.method = "get";
}
 
// guess the multipart value
if(kwArgs.method.toLowerCase() == "get"){
// GET cannot use multipart
kwArgs.multipart = false;
}else{
if(kwArgs["file"]){
// enforce multipart when sending files
kwArgs.multipart = true;
}else if(!kwArgs["multipart"]){
// default
kwArgs.multipart = false;
}
}
 
if(kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]){
dojo.undo.browser.addToHistory(kwArgs);
}
 
var content = kwArgs["content"] || {};
 
if(kwArgs.sendTransport) {
content["dojo.transport"] = "xmlhttp";
}
 
do { // break-block
if(kwArgs.postContent){
query = kwArgs.postContent;
break;
}
 
if(content) {
query += dojo.io.argsFromMap(content, kwArgs.encoding);
}
if(kwArgs.method.toLowerCase() == "get" || !kwArgs.multipart){
break;
}
 
var t = [];
if(query.length){
var q = query.split("&");
for(var i = 0; i < q.length; ++i){
if(q[i].length){
var p = q[i].split("=");
t.push( "--" + this.multipartBoundary,
"Content-Disposition: form-data; name=\"" + p[0] + "\"",
"",
p[1]);
}
}
}
 
if(kwArgs.file){
if(dojo.lang.isArray(kwArgs.file)){
for(var i = 0; i < kwArgs.file.length; ++i){
var o = kwArgs.file[i];
t.push( "--" + this.multipartBoundary,
"Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"",
"Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"),
"",
o.content);
}
}else{
var o = kwArgs.file;
t.push( "--" + this.multipartBoundary,
"Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"",
"Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"),
"",
o.content);
}
}
 
if(t.length){
t.push("--"+this.multipartBoundary+"--", "");
query = t.join("\r\n");
}
}while(false);
 
// kwArgs.Connection = "close";
 
var async = kwArgs["sync"] ? false : true;
 
var preventCache = kwArgs["preventCache"] ||
(this.preventCache == true && kwArgs["preventCache"] != false);
var useCache = kwArgs["useCache"] == true ||
(this.useCache == true && kwArgs["useCache"] != false );
 
// preventCache is browser-level (add query string junk), useCache
// is for the local cache. If we say preventCache, then don't attempt
// to look in the cache, but if useCache is true, we still want to cache
// the response
if(!preventCache && useCache){
var cachedHttp = getFromCache(url, query, kwArgs.method);
if(cachedHttp){
doLoad(kwArgs, cachedHttp, url, query, false);
return;
}
}
 
// much of this is from getText, but reproduced here because we need
// more flexibility
var http = dojo.hostenv.getXmlhttpObject(kwArgs);
var received = false;
 
// build a handler function that calls back to the handler obj
if(async){
var startTime =
// FIXME: setting up this callback handler leaks on IE!!!
this.inFlight.push({
"req": kwArgs,
"http": http,
"url": url,
"query": query,
"useCache": useCache,
"startTime": kwArgs.timeoutSeconds ? (new Date()).getTime() : 0
});
this.startWatchingInFlight();
}else{
// block async callbacks until sync is in, needed in khtml, others?
_this._blockAsync = true;
}
 
if(kwArgs.method.toLowerCase() == "post"){
// FIXME: need to hack in more flexible Content-Type setting here!
if (!kwArgs.user) {
http.open("POST", url, async);
}else{
http.open("POST", url, async, kwArgs.user, kwArgs.password);
}
setHeaders(http, kwArgs);
http.setRequestHeader("Content-Type", kwArgs.multipart ? ("multipart/form-data; boundary=" + this.multipartBoundary) :
(kwArgs.contentType || "application/x-www-form-urlencoded"));
try{
http.send(query);
}catch(e){
if(typeof http.abort == "function"){
http.abort();
}
doLoad(kwArgs, {status: 404}, url, query, useCache);
}
}else{
var tmpUrl = url;
if(query != "") {
tmpUrl += (tmpUrl.indexOf("?") > -1 ? "&" : "?") + query;
}
if(preventCache) {
tmpUrl += (dojo.string.endsWithAny(tmpUrl, "?", "&")
? "" : (tmpUrl.indexOf("?") > -1 ? "&" : "?")) + "dojo.preventCache=" + new Date().valueOf();
}
if (!kwArgs.user) {
http.open(kwArgs.method.toUpperCase(), tmpUrl, async);
}else{
http.open(kwArgs.method.toUpperCase(), tmpUrl, async, kwArgs.user, kwArgs.password);
}
setHeaders(http, kwArgs);
try {
http.send(null);
}catch(e) {
if(typeof http.abort == "function"){
http.abort();
}
doLoad(kwArgs, {status: 404}, url, query, useCache);
}
}
 
if( !async ) {
doLoad(kwArgs, http, url, query, useCache);
_this._blockAsync = false;
}
 
kwArgs.abort = function(){
try{// khtml doesent reset readyState on abort, need this workaround
http._aborted = true;
}catch(e){/*squelsh*/}
return http.abort();
}
 
return;
}
dojo.io.transports.addTransport("XMLHTTPTransport");
}
 
}
 
dojo.provide("dojo.io.cookie");
 
dojo.io.cookie.setCookie = function(/*String*/name, /*String*/value,
/*Number?*/days, /*String?*/path,
/*String?*/domain, /*boolean?*/secure){
//summary: sets a cookie.
var expires = -1;
if((typeof days == "number")&&(days >= 0)){
var d = new Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
expires = d.toGMTString();
}
value = escape(value);
document.cookie = name + "=" + value + ";"
+ (expires != -1 ? " expires=" + expires + ";" : "")
+ (path ? "path=" + path : "")
+ (domain ? "; domain=" + domain : "")
+ (secure ? "; secure" : "");
}
 
dojo.io.cookie.set = dojo.io.cookie.setCookie;
 
dojo.io.cookie.getCookie = function(/*String*/name){
//summary: Gets a cookie with the given name.
 
// FIXME: Which cookie should we return?
// If there are cookies set for different sub domains in the current
// scope there could be more than one cookie with the same name.
// I think taking the last one in the list takes the one from the
// deepest subdomain, which is what we're doing here.
var idx = document.cookie.lastIndexOf(name+'=');
if(idx == -1) { return null; }
var value = document.cookie.substring(idx+name.length+1);
var end = value.indexOf(';');
if(end == -1) { end = value.length; }
value = value.substring(0, end);
value = unescape(value);
return value; //String
}
 
dojo.io.cookie.get = dojo.io.cookie.getCookie;
 
dojo.io.cookie.deleteCookie = function(/*String*/name){
//summary: Deletes a cookie with the given name.
dojo.io.cookie.setCookie(name, "-", 0);
}
 
dojo.io.cookie.setObjectCookie = function( /*String*/name, /*Object*/obj,
/*Number?*/days, /*String?*/path,
/*String?*/domain, /*boolean?*/secure,
/*boolean?*/clearCurrent){
//summary: Takes an object, serializes it to a cookie value, and either
//sets a cookie with the serialized value.
//description: If clearCurrent is true, then any current cookie value
//for this object will be replaced with the the new serialized object value.
//If clearCurrent is false, then the existing cookie value will be modified
//with any changes from the new object value.
//Objects must be simple name/value pairs where the value is either a string
//or a number. Any other value will be ignored.
if(arguments.length == 5){ // for backwards compat
clearCurrent = domain;
domain = null;
secure = null;
}
var pairs = [], cookie, value = "";
if(!clearCurrent){
cookie = dojo.io.cookie.getObjectCookie(name);
}
if(days >= 0){
if(!cookie){ cookie = {}; }
for(var prop in obj){
if(obj[prop] == null){
delete cookie[prop];
}else if((typeof obj[prop] == "string")||(typeof obj[prop] == "number")){
cookie[prop] = obj[prop];
}
}
prop = null;
for(var prop in cookie){
pairs.push(escape(prop) + "=" + escape(cookie[prop]));
}
value = pairs.join("&");
}
dojo.io.cookie.setCookie(name, value, days, path, domain, secure);
}
 
dojo.io.cookie.getObjectCookie = function(/*String*/name){
//summary: Gets an object value for the given cookie name. The complement of
//dojo.io.cookie.setObjectCookie().
var values = null, cookie = dojo.io.cookie.getCookie(name);
if(cookie){
values = {};
var pairs = cookie.split("&");
for(var i = 0; i < pairs.length; i++){
var pair = pairs[i].split("=");
var value = pair[1];
if( isNaN(value) ){ value = unescape(pair[1]); }
values[ unescape(pair[0]) ] = value;
}
}
return values;
}
 
dojo.io.cookie.isSupported = function(){
//summary: Tests the browser to see if cookies are enabled.
if(typeof navigator.cookieEnabled != "boolean"){
dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__",
"CookiesAllowed", 90, null);
var cookieVal = dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
navigator.cookieEnabled = (cookieVal == "CookiesAllowed");
if(navigator.cookieEnabled){
// FIXME: should we leave this around?
this.deleteCookie("__TestingYourBrowserForCookieSupport__");
}
}
return navigator.cookieEnabled; //boolean
}
 
// need to leave this in for backwards-compat from 0.1 for when it gets pulled in by dojo.io.*
if(!dojo.io.cookies){ dojo.io.cookies = dojo.io.cookie; }
 
dojo.kwCompoundRequire({
common: ["dojo.io.common"],
rhino: ["dojo.io.RhinoIO"],
browser: ["dojo.io.BrowserIO", "dojo.io.cookie"],
dashboard: ["dojo.io.BrowserIO", "dojo.io.cookie"]
});
dojo.provide("dojo.io.*");
 
dojo.provide("dojo.event.common");
 
 
 
 
 
// TODO: connection filter functions
// these are functions that accept a method invocation (like around
// advice) and return a boolean based on it. That value determines
// whether or not the connection proceeds. It could "feel" like around
// advice for those who know what it is (calling proceed() or not),
// but I think presenting it as a "filter" and/or calling it with the
// function args and not the MethodInvocation might make it more
// palletable to "normal" users than around-advice currently is
// TODO: execution scope mangling
// YUI's event facility by default executes listeners in the context
// of the source object. This is very odd, but should probably be
// supported as an option (both for the source and for the dest). It
// can be thought of as a connection-specific hitch().
// TODO: more resiliency for 4+ arguments to connect()
 
dojo.event = new function(){
this._canTimeout = dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
 
// FIXME: where should we put this method (not here!)?
function interpolateArgs(args, searchForNames){
var dl = dojo.lang;
var ao = {
srcObj: dj_global,
srcFunc: null,
adviceObj: dj_global,
adviceFunc: null,
aroundObj: null,
aroundFunc: null,
adviceType: (args.length>2) ? args[0] : "after",
precedence: "last",
once: false,
delay: null,
rate: 0,
adviceMsg: false,
maxCalls: -1
};
 
switch(args.length){
case 0: return;
case 1: return;
case 2:
ao.srcFunc = args[0];
ao.adviceFunc = args[1];
break;
case 3:
if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isString(args[2]))){
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
}else if((dl.isString(args[1]))&&(dl.isString(args[2]))){
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
}else if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isFunction(args[2]))){
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
var tmpName = dl.nameAnonFunc(args[2], ao.adviceObj, searchForNames);
ao.adviceFunc = tmpName;
}else if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
ao.adviceType = "after";
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[0], ao.srcObj, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[1];
ao.adviceFunc = args[2];
}
break;
case 4:
if((dl.isObject(args[0]))&&(dl.isObject(args[2]))){
// we can assume that we've got an old-style "connect" from
// the sigslot school of event attachment. We therefore
// assume after-advice.
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
}else if((dl.isString(args[0]))&&(dl.isString(args[1]))&&(dl.isObject(args[2]))){
ao.adviceType = args[0];
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
}else if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
ao.adviceType = args[0];
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[1], dj_global, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
}else if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
ao.srcObj = args[1];
ao.srcFunc = args[2];
var tmpName = dl.nameAnonFunc(args[3], dj_global, searchForNames);
ao.adviceObj = dj_global;
ao.adviceFunc = tmpName;
}else if(dl.isObject(args[1])){
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = dj_global;
ao.adviceFunc = args[3];
}else if(dl.isObject(args[2])){
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
}else{
ao.srcObj = ao.adviceObj = ao.aroundObj = dj_global;
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
ao.aroundFunc = args[3];
}
break;
case 6:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3]
ao.adviceFunc = args[4];
ao.aroundFunc = args[5];
ao.aroundObj = dj_global;
break;
default:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3]
ao.adviceFunc = args[4];
ao.aroundObj = args[5];
ao.aroundFunc = args[6];
ao.once = args[7];
ao.delay = args[8];
ao.rate = args[9];
ao.adviceMsg = args[10];
ao.maxCalls = (!isNaN(parseInt(args[11]))) ? args[11] : -1;
break;
}
 
if(dl.isFunction(ao.aroundFunc)){
var tmpName = dl.nameAnonFunc(ao.aroundFunc, ao.aroundObj, searchForNames);
ao.aroundFunc = tmpName;
}
 
if(dl.isFunction(ao.srcFunc)){
ao.srcFunc = dl.getNameInObj(ao.srcObj, ao.srcFunc);
}
 
if(dl.isFunction(ao.adviceFunc)){
ao.adviceFunc = dl.getNameInObj(ao.adviceObj, ao.adviceFunc);
}
 
if((ao.aroundObj)&&(dl.isFunction(ao.aroundFunc))){
ao.aroundFunc = dl.getNameInObj(ao.aroundObj, ao.aroundFunc);
}
 
if(!ao.srcObj){
dojo.raise("bad srcObj for srcFunc: "+ao.srcFunc);
}
if(!ao.adviceObj){
dojo.raise("bad adviceObj for adviceFunc: "+ao.adviceFunc);
}
if(!ao.adviceFunc){
dojo.debug("bad adviceFunc for srcFunc: "+ao.srcFunc);
dojo.debugShallow(ao);
}
return ao;
}
 
this.connect = function(/*...*/){
// summary:
// dojo.event.connect is the glue that holds most Dojo-based
// applications together. Most combinations of arguments are
// supported, with the connect() method attempting to disambiguate
// the implied types of positional parameters. The following will
// all work:
// dojo.event.connect("globalFunctionName1", "globalFunctionName2");
// dojo.event.connect(functionReference1, functionReference2);
// dojo.event.connect("globalFunctionName1", functionReference2);
// dojo.event.connect(functionReference1, "globalFunctionName2");
// dojo.event.connect(scope1, "functionName1", "globalFunctionName2");
// dojo.event.connect("globalFunctionName1", scope2, "functionName2");
// dojo.event.connect(scope1, "functionName1", scope2, "functionName2");
// dojo.event.connect("after", scope1, "functionName1", scope2, "functionName2");
// dojo.event.connect("before", scope1, "functionName1", scope2, "functionName2");
// dojo.event.connect("around", scope1, "functionName1",
// scope2, "functionName2",
// aroundFunctionReference);
// dojo.event.connect("around", scope1, "functionName1",
// scope2, "functionName2",
// scope3, "aroundFunctionName");
// dojo.event.connect("before-around", scope1, "functionName1",
// scope2, "functionName2",
// aroundFunctionReference);
// dojo.event.connect("after-around", scope1, "functionName1",
// scope2, "functionName2",
// aroundFunctionReference);
// dojo.event.connect("after-around", scope1, "functionName1",
// scope2, "functionName2",
// scope3, "aroundFunctionName");
// dojo.event.connect("around", scope1, "functionName1",
// scope2, "functionName2",
// scope3, "aroundFunctionName", true, 30);
// dojo.event.connect("around", scope1, "functionName1",
// scope2, "functionName2",
// scope3, "aroundFunctionName", null, null, 10);
// adviceType:
// Optional. String. One of "before", "after", "around",
// "before-around", or "after-around". FIXME
// srcObj:
// the scope in which to locate/execute the named srcFunc. Along
// with srcFunc, this creates a way to dereference the function to
// call. So if the function in question is "foo.bar", the
// srcObj/srcFunc pair would be foo and "bar", where "bar" is a
// string and foo is an object reference.
// srcFunc:
// the name of the function to connect to. When it is executed,
// the listener being registered with this call will be called.
// The adviceType defines the call order between the source and
// the target functions.
// adviceObj:
// the scope in which to locate/execute the named adviceFunc.
// adviceFunc:
// the name of the function being conected to srcObj.srcFunc
// aroundObj:
// the scope in which to locate/execute the named aroundFunc.
// aroundFunc:
// the name of, or a reference to, the function that will be used
// to mediate the advice call. Around advice requires a special
// unary function that will be passed a "MethodInvocation" object.
// These objects have several important properties, namely:
// - args
// a mutable array of arguments to be passed into the
// wrapped function
// - proceed
// a function that "continues" the invocation. The result
// of this function is the return of the wrapped function.
// You can then manipulate this return before passing it
// back out (or take further action based on it).
// once:
// boolean that determines whether or not this connect() will
// create a new connection if an identical connect() has already
// been made. Defaults to "false".
// delay:
// an optional delay (in ms), as an integer, for dispatch of a
// listener after the source has been fired.
// rate:
// an optional rate throttling parameter (integer, in ms). When
// specified, this particular connection will not fire more than
// once in the interval specified by the rate
// adviceMsg:
// boolean. Should the listener have all the parameters passed in
// as a single argument?
 
/*
ao.adviceType = args[0];
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3]
ao.adviceFunc = args[4];
ao.aroundObj = args[5];
ao.aroundFunc = args[6];
ao.once = args[7];
ao.delay = args[8];
ao.rate = args[9];
ao.adviceMsg = args[10];
ao.maxCalls = args[11];
*/
if(arguments.length == 1){
var ao = arguments[0];
}else{
var ao = interpolateArgs(arguments, true);
}
/*
if(dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey") ){
if(dojo.render.html.ie){
ao.srcFunc = "onkeydown";
this.connect(ao);
}
ao.srcFunc = "onkeypress";
}
*/
 
if(dojo.lang.isArray(ao.srcObj) && ao.srcObj!=""){
var tmpAO = {};
for(var x in ao){
tmpAO[x] = ao[x];
}
var mjps = [];
dojo.lang.forEach(ao.srcObj, function(src){
if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
src = dojo.byId(src);
// dojo.debug(src);
}
tmpAO.srcObj = src;
// dojo.debug(tmpAO.srcObj, tmpAO.srcFunc);
// dojo.debug(tmpAO.adviceObj, tmpAO.adviceFunc);
mjps.push(dojo.event.connect.call(dojo.event, tmpAO));
});
return mjps;
}
 
// FIXME: just doing a "getForMethod()" seems to be enough to put this into infinite recursion!!
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc);
if(ao.adviceFunc){
var mjp2 = dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj, ao.adviceFunc);
}
 
mjp.kwAddAdvice(ao);
 
// advanced users might want to fsck w/ the join point manually
return mjp; // a MethodJoinPoint object
}
 
this.log = function(/*object or funcName*/ a1, /*funcName*/ a2){
// summary:
// a function that will wrap and log all calls to the specified
// a1.a2() function. If only a1 is passed, it'll be used as a
// function or function name on the global context. Logging will
// be sent to dojo.debug
// a1:
// if a2 is passed, this should be an object. If not, it can be a
// function or function name.
// a2:
// a function name
var kwArgs;
if((arguments.length == 1)&&(typeof a1 == "object")){
kwArgs = a1;
}else{
kwArgs = {
srcObj: a1,
srcFunc: a2
};
}
kwArgs.adviceFunc = function(){
var argsStr = [];
for(var x=0; x<arguments.length; x++){
argsStr.push(arguments[x]);
}
dojo.debug("("+kwArgs.srcObj+")."+kwArgs.srcFunc, ":", argsStr.join(", "));
};
this.kwConnect(kwArgs);
}
 
this.connectBefore = function(){
// summary:
// takes the same parameters as dojo.event.connect(), except that
// the advice type will always be "before"
var args = ["before"];
for(var i = 0; i < arguments.length; i++){ args.push(arguments[i]); }
return this.connect.apply(this, args); // a MethodJoinPoint object
}
 
this.connectAround = function(){
// summary:
// takes the same parameters as dojo.event.connect(), except that
// the advice type will always be "around"
var args = ["around"];
for(var i = 0; i < arguments.length; i++){ args.push(arguments[i]); }
return this.connect.apply(this, args); // a MethodJoinPoint object
}
 
this.connectOnce = function(){
// summary:
// takes the same parameters as dojo.event.connect(), except that
// the "once" flag will always be set to "true"
var ao = interpolateArgs(arguments, true);
ao.once = true;
return this.connect(ao); // a MethodJoinPoint object
}
 
this.connectRunOnce = function(){
// summary:
// takes the same parameters as dojo.event.connect(), except that
// the "maxCalls" flag will always be set to 1
var ao = interpolateArgs(arguments, true);
ao.maxCalls = 1;
return this.connect(ao); // a MethodJoinPoint object
}
 
this._kwConnectImpl = function(kwArgs, disconnect){
var fn = (disconnect) ? "disconnect" : "connect";
if(typeof kwArgs["srcFunc"] == "function"){
kwArgs.srcObj = kwArgs["srcObj"]||dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.srcFunc, kwArgs.srcObj, true);
kwArgs.srcFunc = tmpName;
}
if(typeof kwArgs["adviceFunc"] == "function"){
kwArgs.adviceObj = kwArgs["adviceObj"]||dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.adviceFunc, kwArgs.adviceObj, true);
kwArgs.adviceFunc = tmpName;
}
kwArgs.srcObj = kwArgs["srcObj"]||dj_global;
kwArgs.adviceObj = kwArgs["adviceObj"]||kwArgs["targetObj"]||dj_global;
kwArgs.adviceFunc = kwArgs["adviceFunc"]||kwArgs["targetFunc"];
// pass kwargs to avoid unrolling/repacking
return dojo.event[fn](kwArgs);
}
 
this.kwConnect = function(/*Object*/ kwArgs){
// summary:
// A version of dojo.event.connect() that takes a map of named
// parameters instead of the positional parameters that
// dojo.event.connect() uses. For many advanced connection types,
// this can be a much more readable (and potentially faster)
// alternative.
// kwArgs:
// An object that can have the following properties:
// - adviceType
// - srcObj
// - srcFunc
// - adviceObj
// - adviceFunc
// - aroundObj
// - aroundFunc
// - once
// - delay
// - rate
// - adviceMsg
// As with connect, only srcFunc and adviceFunc are generally
// required
 
return this._kwConnectImpl(kwArgs, false); // a MethodJoinPoint object
 
}
 
this.disconnect = function(){
// summary:
// Takes the same parameters as dojo.event.connect() but destroys
// an existing connection instead of building a new one. For
// multiple identical connections, multiple disconnect() calls
// will unroll one each time it's called.
if(arguments.length == 1){
var ao = arguments[0];
}else{
var ao = interpolateArgs(arguments, true);
}
if(!ao.adviceFunc){ return; } // nothing to disconnect
if(dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey") ){
if(dojo.render.html.ie){
ao.srcFunc = "onkeydown";
this.disconnect(ao);
}
ao.srcFunc = "onkeypress";
}
if(!ao.srcObj[ao.srcFunc]){ return null; } // prevent un-necessaray joinpoint creation
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc, true);
mjp.removeAdvice(ao.adviceObj, ao.adviceFunc, ao.adviceType, ao.once); // a MethodJoinPoint object
return mjp;
}
 
this.kwDisconnect = function(kwArgs){
// summary:
// Takes the same parameters as dojo.event.kwConnect() but
// destroys an existing connection instead of building a new one.
return this._kwConnectImpl(kwArgs, true);
}
}
 
// exactly one of these is created whenever a method with a joint point is run,
// if there is at least one 'around' advice.
dojo.event.MethodInvocation = function(/*dojo.event.MethodJoinPoint*/join_point, /*Object*/obj, /*Array*/args){
// summary:
// a class the models the call into a function. This is used under the
// covers for all method invocations on both ends of a
// connect()-wrapped function dispatch. This allows us to "pickle"
// calls, such as in the case of around advice.
// join_point:
// a dojo.event.MethodJoinPoint object that represents a connection
// obj:
// the scope the call will execute in
// args:
// an array of parameters that will get passed to the callee
this.jp_ = join_point;
this.object = obj;
this.args = [];
// make sure we don't lock into a mutable object which can change under us.
// It's ok if the individual items change, though.
for(var x=0; x<args.length; x++){
this.args[x] = args[x];
}
// the index of the 'around' that is currently being executed.
this.around_index = -1;
}
 
dojo.event.MethodInvocation.prototype.proceed = function(){
// summary:
// proceed with the method call that's represented by this invocation
// object
this.around_index++;
if(this.around_index >= this.jp_.around.length){
return this.jp_.object[this.jp_.methodname].apply(this.jp_.object, this.args);
// return this.jp_.run_before_after(this.object, this.args);
}else{
var ti = this.jp_.around[this.around_index];
var mobj = ti[0]||dj_global;
var meth = ti[1];
return mobj[meth].call(mobj, this);
}
}
 
 
dojo.event.MethodJoinPoint = function(/*Object*/obj, /*String*/funcName){
this.object = obj||dj_global;
this.methodname = funcName;
this.methodfunc = this.object[funcName];
this.squelch = false;
// this.before = [];
// this.after = [];
// this.around = [];
}
 
dojo.event.MethodJoinPoint.getForMethod = function(/*Object*/obj, /*String*/funcName){
// summary:
// "static" class function for returning a MethodJoinPoint from a
// scoped function. If one doesn't exist, one is created.
// obj:
// the scope to search for the function in
// funcName:
// the name of the function to return a MethodJoinPoint for
if(!obj){ obj = dj_global; }
var ofn = obj[funcName];
if(!ofn){
// supply a do-nothing method implementation
ofn = obj[funcName] = function(){};
if(!obj[funcName]){
// e.g. cannot add to inbuilt objects in IE6
dojo.raise("Cannot set do-nothing method on that object "+funcName);
}
}else if((typeof ofn != "function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
// FIXME: should we throw an exception here instead?
return null;
}
// we hide our joinpoint instance in obj[funcName + '$joinpoint']
var jpname = funcName + "$joinpoint";
var jpfuncname = funcName + "$joinpoint$method";
var joinpoint = obj[jpname];
if(!joinpoint){
var isNode = false;
if(dojo.event["browser"]){
if( (obj["attachEvent"])||
(obj["nodeType"])||
(obj["addEventListener"]) ){
isNode = true;
dojo.event.browser.addClobberNodeAttrs(obj, [jpname, jpfuncname, funcName]);
}
}
var origArity = ofn.length;
obj[jpfuncname] = ofn;
// joinpoint = obj[jpname] = new dojo.event.MethodJoinPoint(obj, funcName);
joinpoint = obj[jpname] = new dojo.event.MethodJoinPoint(obj, jpfuncname);
 
if(!isNode){
obj[funcName] = function(){
// var args = [];
// for(var x=0; x<arguments.length; x++){
// args.push(arguments[x]);
// }
// return joinpoint.run.apply(joinpoint, args);
return joinpoint.run.apply(joinpoint, arguments);
}
}else{
obj[funcName] = function(){
var args = [];
 
if(!arguments.length){
var evt = null;
try{
if(obj.ownerDocument){
evt = obj.ownerDocument.parentWindow.event;
}else if(obj.documentElement){
evt = obj.documentElement.ownerDocument.parentWindow.event;
}else if(obj.event){ //obj is a window
evt = obj.event;
}else{
evt = window.event;
}
}catch(e){
evt = window.event;
}
 
if(evt){
args.push(dojo.event.browser.fixEvent(evt, this));
}
}else{
for(var x=0; x<arguments.length; x++){
if((x==0)&&(dojo.event.browser.isEvent(arguments[x]))){
args.push(dojo.event.browser.fixEvent(arguments[x], this));
}else{
args.push(arguments[x]);
}
}
}
// return joinpoint.run.apply(joinpoint, arguments);
return joinpoint.run.apply(joinpoint, args);
}
}
obj[funcName].__preJoinArity = origArity;
}
return joinpoint; // dojo.event.MethodJoinPoint
}
 
dojo.lang.extend(dojo.event.MethodJoinPoint, {
squelch: false,
 
unintercept: function(){
// summary:
// destroy the connection to all listeners that may have been
// registered on this joinpoint
this.object[this.methodname] = this.methodfunc;
this.before = [];
this.after = [];
this.around = [];
},
 
disconnect: dojo.lang.forward("unintercept"),
 
run: function(){
// summary:
// execute the connection represented by this join point. The
// arguments passed to run() will be passed to the function and
// its listeners.
var obj = this.object||dj_global;
var args = arguments;
 
// optimization. We only compute once the array version of the arguments
// pseudo-arr in order to prevent building it each time advice is unrolled.
var aargs = [];
for(var x=0; x<args.length; x++){
aargs[x] = args[x];
}
 
var unrollAdvice = function(marr){
if(!marr){
dojo.debug("Null argument to unrollAdvice()");
return;
}
var callObj = marr[0]||dj_global;
var callFunc = marr[1];
if(!callObj[callFunc]){
dojo.raise("function \"" + callFunc + "\" does not exist on \"" + callObj + "\"");
}
var aroundObj = marr[2]||dj_global;
var aroundFunc = marr[3];
var msg = marr[6];
var maxCount = marr[7];
if(maxCount > -1){
if(maxCount == 0){
return;
}
marr[7]--;
}
var undef;
 
var to = {
args: [],
jp_: this,
object: obj,
proceed: function(){
return callObj[callFunc].apply(callObj, to.args);
}
};
to.args = aargs;
 
var delay = parseInt(marr[4]);
var hasDelay = ((!isNaN(delay))&&(marr[4]!==null)&&(typeof marr[4] != "undefined"));
if(marr[5]){
var rate = parseInt(marr[5]);
var cur = new Date();
var timerSet = false;
if((marr["last"])&&((cur-marr.last)<=rate)){
if(dojo.event._canTimeout){
if(marr["delayTimer"]){
clearTimeout(marr.delayTimer);
}
var tod = parseInt(rate*2); // is rate*2 naive?
var mcpy = dojo.lang.shallowCopy(marr);
marr.delayTimer = setTimeout(function(){
// FIXME: on IE at least, event objects from the
// browser can go out of scope. How (or should?) we
// deal with it?
mcpy[5] = 0;
unrollAdvice(mcpy);
}, tod);
}
return;
}else{
marr.last = cur;
}
}
 
// FIXME: need to enforce rates for a connection here!
 
if(aroundFunc){
// NOTE: around advice can't delay since we might otherwise depend
// on execution order!
aroundObj[aroundFunc].call(aroundObj, to);
}else{
// var tmjp = dojo.event.MethodJoinPoint.getForMethod(obj, methname);
if((hasDelay)&&((dojo.render.html)||(dojo.render.svg))){ // FIXME: the render checks are grotty!
dj_global["setTimeout"](function(){
if(msg){
callObj[callFunc].call(callObj, to);
}else{
callObj[callFunc].apply(callObj, args);
}
}, delay);
}else{ // many environments can't support delay!
if(msg){
callObj[callFunc].call(callObj, to);
}else{
callObj[callFunc].apply(callObj, args);
}
}
}
};
 
var unRollSquelch = function(){
if(this.squelch){
try{
return unrollAdvice.apply(this, arguments);
}catch(e){
dojo.debug(e);
}
}else{
return unrollAdvice.apply(this, arguments);
}
};
 
if((this["before"])&&(this.before.length>0)){
// pass a cloned array, if this event disconnects this event forEach on this.before wont work
dojo.lang.forEach(this.before.concat(new Array()), unRollSquelch);
}
 
var result;
try{
if((this["around"])&&(this.around.length>0)){
var mi = new dojo.event.MethodInvocation(this, obj, args);
result = mi.proceed();
}else if(this.methodfunc){
result = this.object[this.methodname].apply(this.object, args);
}
}catch(e){
if(!this.squelch){
dojo.debug(e,"when calling",this.methodname,"on",this.object,"with arguments",args);
dojo.raise(e);
}
}
 
if((this["after"])&&(this.after.length>0)){
// see comment on this.before above
dojo.lang.forEach(this.after.concat(new Array()), unRollSquelch);
}
 
return (this.methodfunc) ? result : null;
},
 
getArr: function(/*String*/kind){
// summary: return a list of listeners of the past "kind"
// kind:
// can be one of: "before", "after", "around", "before-around", or
// "after-around"
var type = "after";
// FIXME: we should be able to do this through props or Array.in()
if((typeof kind == "string")&&(kind.indexOf("before")!=-1)){
type = "before";
}else if(kind=="around"){
type = "around";
}
if(!this[type]){ this[type] = []; }
return this[type]; // Array
},
 
kwAddAdvice: function(/*Object*/args){
// summary:
// adds advice to the joinpoint with arguments in a map
// args:
// An object that can have the following properties:
// - adviceType
// - adviceObj
// - adviceFunc
// - aroundObj
// - aroundFunc
// - once
// - delay
// - rate
// - adviceMsg
// - maxCalls
this.addAdvice( args["adviceObj"], args["adviceFunc"],
args["aroundObj"], args["aroundFunc"],
args["adviceType"], args["precedence"],
args["once"], args["delay"], args["rate"],
args["adviceMsg"], args["maxCalls"]);
},
 
addAdvice: function( thisAdviceObj, thisAdvice,
thisAroundObj, thisAround,
adviceType, precedence,
once, delay, rate, asMessage,
maxCalls){
// summary:
// add advice to this joinpoint using positional parameters
// thisAdviceObj:
// the scope in which to locate/execute the named adviceFunc.
// thisAdviceFunc:
// the name of the function being conected
// thisAroundObj:
// the scope in which to locate/execute the named aroundFunc.
// thisAroundFunc:
// the name of the function that will be used to mediate the
// advice call.
// adviceType:
// Optional. String. One of "before", "after", "around",
// "before-around", or "after-around". FIXME
// once:
// boolean that determines whether or not this advice will create
// a new connection if an identical advice set has already been
// provided. Defaults to "false".
// delay:
// an optional delay (in ms), as an integer, for dispatch of a
// listener after the source has been fired.
// rate:
// an optional rate throttling parameter (integer, in ms). When
// specified, this particular connection will not fire more than
// once in the interval specified by the rate
// adviceMsg:
// boolean. Should the listener have all the parameters passed in
// as a single argument?
// maxCalls:
// Integer. The maximum number of times this connection can be
// used before being auto-disconnected. -1 signals that the
// connection should never be disconnected.
var arr = this.getArr(adviceType);
if(!arr){
dojo.raise("bad this: " + this);
}
 
var ao = [thisAdviceObj, thisAdvice, thisAroundObj, thisAround, delay, rate, asMessage, maxCalls];
if(once){
if(this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr) >= 0){
return;
}
}
 
if(precedence == "first"){
arr.unshift(ao);
}else{
arr.push(ao);
}
},
 
hasAdvice: function(thisAdviceObj, thisAdvice, adviceType, arr){
// summary:
// returns the array index of the first existing connection
// betweened the passed advice and this joinpoint. Will be -1 if
// none exists.
// thisAdviceObj:
// the scope in which to locate/execute the named adviceFunc.
// thisAdviceFunc:
// the name of the function being conected
// adviceType:
// Optional. String. One of "before", "after", "around",
// "before-around", or "after-around". FIXME
// arr:
// Optional. The list of advices to search. Will be found via
// adviceType if not passed
if(!arr){ arr = this.getArr(adviceType); }
var ind = -1;
for(var x=0; x<arr.length; x++){
var aao = (typeof thisAdvice == "object") ? (new String(thisAdvice)).toString() : thisAdvice;
var a1o = (typeof arr[x][1] == "object") ? (new String(arr[x][1])).toString() : arr[x][1];
if((arr[x][0] == thisAdviceObj)&&(a1o == aao)){
ind = x;
}
}
return ind; // Integer
},
 
removeAdvice: function(thisAdviceObj, thisAdvice, adviceType, once){
// summary:
// returns the array index of the first existing connection
// betweened the passed advice and this joinpoint. Will be -1 if
// none exists.
// thisAdviceObj:
// the scope in which to locate/execute the named adviceFunc.
// thisAdviceFunc:
// the name of the function being conected
// adviceType:
// Optional. String. One of "before", "after", "around",
// "before-around", or "after-around". FIXME
// once:
// Optional. Should this only remove the first occurance of the
// connection?
var arr = this.getArr(adviceType);
var ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
if(ind == -1){
return false;
}
while(ind != -1){
arr.splice(ind, 1);
if(once){ break; }
ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
}
return true;
}
});
 
 
dojo.provide("dojo.event.topic");
 
dojo.event.topic = new function(){
this.topics = {};
 
this.getTopic = function(/*String*/topic){
// summary:
// returns a topic implementation object of type
// dojo.event.topic.TopicImpl
// topic:
// a unique, opaque string that names the topic
if(!this.topics[topic]){
this.topics[topic] = new this.TopicImpl(topic);
}
return this.topics[topic]; // a dojo.event.topic.TopicImpl object
}
 
this.registerPublisher = function(/*String*/topic, /*Object*/obj, /*String*/funcName){
// summary:
// registers a function as a publisher on a topic. Subsequent
// calls to the function will cause a publish event on the topic
// with the arguments passed to the function passed to registered
// listeners.
// topic:
// a unique, opaque string that names the topic
// obj:
// the scope to locate the function in
// funcName:
// the name of the function to register
var topic = this.getTopic(topic);
topic.registerPublisher(obj, funcName);
}
 
this.subscribe = function(/*String*/topic, /*Object*/obj, /*String*/funcName){
// summary:
// susbscribes the function to the topic. Subsequent events
// dispached to the topic will create a function call for the
// obj.funcName() function.
// topic:
// a unique, opaque string that names the topic
// obj:
// the scope to locate the function in
// funcName:
// the name of the function to being registered as a listener
var topic = this.getTopic(topic);
topic.subscribe(obj, funcName);
}
 
this.unsubscribe = function(/*String*/topic, /*Object*/obj, /*String*/funcName){
// summary:
// unsubscribes the obj.funcName() from the topic
// topic:
// a unique, opaque string that names the topic
// obj:
// the scope to locate the function in
// funcName:
// the name of the function to being unregistered as a listener
var topic = this.getTopic(topic);
topic.unsubscribe(obj, funcName);
}
 
this.destroy = function(/*String*/topic){
// summary:
// destroys the topic and unregisters all listeners
// topic:
// a unique, opaque string that names the topic
this.getTopic(topic).destroy();
delete this.topics[topic];
}
 
this.publishApply = function(/*String*/topic, /*Array*/args){
// summary:
// dispatches an event to the topic using the args array as the
// source for the call arguments to each listener. This is similar
// to JavaScript's built-in Function.apply()
// topic:
// a unique, opaque string that names the topic
// args:
// the arguments to be passed into listeners of the topic
var topic = this.getTopic(topic);
topic.sendMessage.apply(topic, args);
}
 
this.publish = function(/*String*/topic, /*Object*/message){
// summary:
// manually "publish" to the passed topic
// topic:
// a unique, opaque string that names the topic
// message:
// can be an array of parameters (similar to publishApply), or
// will be treated as one of many arguments to be passed along in
// a "flat" unrolling
var topic = this.getTopic(topic);
// if message is an array, we treat it as a set of arguments,
// otherwise, we just pass on the arguments passed in as-is
var args = [];
// could we use concat instead here?
for(var x=1; x<arguments.length; x++){
args.push(arguments[x]);
}
topic.sendMessage.apply(topic, args);
}
}
 
dojo.event.topic.TopicImpl = function(topicName){
// summary: a class to represent topics
 
this.topicName = topicName;
 
this.subscribe = function(/*Object*/listenerObject, /*Function or String*/listenerMethod){
// summary:
// use dojo.event.connect() to attach the passed listener to the
// topic represented by this object
// listenerObject:
// if a string and listenerMethod is ommitted, this is treated as
// the name of a function in the global namespace. If
// listenerMethod is provided, this is the scope to find/execute
// the function in.
// listenerMethod:
// Optional. The function to register.
var tf = listenerMethod||listenerObject;
var to = (!listenerMethod) ? dj_global : listenerObject;
return dojo.event.kwConnect({ // dojo.event.MethodJoinPoint
srcObj: this,
srcFunc: "sendMessage",
adviceObj: to,
adviceFunc: tf
});
}
 
this.unsubscribe = function(/*Object*/listenerObject, /*Function or String*/listenerMethod){
// summary:
// use dojo.event.disconnect() to attach the passed listener to the
// topic represented by this object
// listenerObject:
// if a string and listenerMethod is ommitted, this is treated as
// the name of a function in the global namespace. If
// listenerMethod is provided, this is the scope to find the
// function in.
// listenerMethod:
// Optional. The function to unregister.
var tf = (!listenerMethod) ? listenerObject : listenerMethod;
var to = (!listenerMethod) ? null : listenerObject;
return dojo.event.kwDisconnect({ // dojo.event.MethodJoinPoint
srcObj: this,
srcFunc: "sendMessage",
adviceObj: to,
adviceFunc: tf
});
}
 
this._getJoinPoint = function(){
return dojo.event.MethodJoinPoint.getForMethod(this, "sendMessage");
}
 
this.setSquelch = function(/*Boolean*/shouldSquelch){
// summary:
// determine whether or not exceptions in the calling of a
// listener in the chain should stop execution of the chain.
this._getJoinPoint().squelch = shouldSquelch;
}
 
this.destroy = function(){
// summary: disconnects all listeners from this topic
this._getJoinPoint().disconnect();
}
 
this.registerPublisher = function( /*Object*/publisherObject,
/*Function or String*/publisherMethod){
// summary:
// registers the passed function as a publisher on this topic.
// Each time the function is called, an event will be published on
// this topic.
// publisherObject:
// if a string and listenerMethod is ommitted, this is treated as
// the name of a function in the global namespace. If
// listenerMethod is provided, this is the scope to find the
// function in.
// publisherMethod:
// Optional. The function to register.
dojo.event.connect(publisherObject, publisherMethod, this, "sendMessage");
}
 
this.sendMessage = function(message){
// summary: a stub to be called when a message is sent to the topic.
 
// The message has been propagated
}
}
 
 
dojo.provide("dojo.event.browser");
 
 
// FIXME: any particular reason this is in the global scope?
dojo._ie_clobber = new function(){
this.clobberNodes = [];
 
function nukeProp(node, prop){
// try{ node.removeAttribute(prop); }catch(e){ /* squelch */ }
try{ node[prop] = null; }catch(e){ /* squelch */ }
try{ delete node[prop]; }catch(e){ /* squelch */ }
// FIXME: JotLive needs this, but I'm not sure if it's too slow or not
try{ node.removeAttribute(prop); }catch(e){ /* squelch */ }
}
 
this.clobber = function(nodeRef){
var na;
var tna;
if(nodeRef){
tna = nodeRef.all || nodeRef.getElementsByTagName("*");
na = [nodeRef];
for(var x=0; x<tna.length; x++){
// if we're gonna be clobbering the thing, at least make sure
// we aren't trying to do it twice
if(tna[x]["__doClobber__"]){
na.push(tna[x]);
}
}
}else{
try{ window.onload = null; }catch(e){}
na = (this.clobberNodes.length) ? this.clobberNodes : document.all;
}
tna = null;
var basis = {};
for(var i = na.length-1; i>=0; i=i-1){
var el = na[i];
try{
if(el && el["__clobberAttrs__"]){
for(var j=0; j<el.__clobberAttrs__.length; j++){
nukeProp(el, el.__clobberAttrs__[j]);
}
nukeProp(el, "__clobberAttrs__");
nukeProp(el, "__doClobber__");
}
}catch(e){ /* squelch! */};
}
na = null;
}
}
 
if(dojo.render.html.ie){
dojo.addOnUnload(function(){
dojo._ie_clobber.clobber();
try{
if((dojo["widget"])&&(dojo.widget["manager"])){
dojo.widget.manager.destroyAll();
}
}catch(e){}
 
// Workaround for IE leak recommended in ticket #1727 by schallm
if(dojo.widget){
for(var name in dojo.widget._templateCache){
if(dojo.widget._templateCache[name].node){
dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
dojo.widget._templateCache[name].node = null;
delete dojo.widget._templateCache[name].node;
}
}
}
 
try{ window.onload = null; }catch(e){}
try{ window.onunload = null; }catch(e){}
dojo._ie_clobber.clobberNodes = [];
// CollectGarbage();
});
}
 
dojo.event.browser = new function(){
 
var clobberIdx = 0;
 
this.normalizedEventName = function(/*String*/eventName){
switch(eventName){
case "CheckboxStateChange":
case "DOMAttrModified":
case "DOMMenuItemActive":
case "DOMMenuItemInactive":
case "DOMMouseScroll":
case "DOMNodeInserted":
case "DOMNodeRemoved":
case "RadioStateChange":
return eventName;
break;
default:
var lcn = eventName.toLowerCase();
return (lcn.indexOf("on") == 0) ? lcn.substr(2) : lcn;
break;
}
}
this.clean = function(/*DOMNode*/node){
// summary:
// removes native event handlers so that destruction of the node
// will not leak memory. On most browsers this is a no-op, but
// it's critical for manual node removal on IE.
// node:
// A DOM node. All of it's children will also be cleaned.
if(dojo.render.html.ie){
dojo._ie_clobber.clobber(node);
}
}
 
this.addClobberNode = function(/*DOMNode*/node){
// summary:
// register the passed node to support event stripping
// node:
// A DOM node
if(!dojo.render.html.ie){ return; }
if(!node["__doClobber__"]){
node.__doClobber__ = true;
dojo._ie_clobber.clobberNodes.push(node);
// this might not be the most efficient thing to do, but it's
// much less error prone than other approaches which were
// previously tried and failed
node.__clobberAttrs__ = [];
}
}
 
this.addClobberNodeAttrs = function(/*DOMNode*/node, /*Array*/props){
// summary:
// register the passed node to support event stripping
// node:
// A DOM node to stip properties from later
// props:
// A list of propeties to strip from the node
if(!dojo.render.html.ie){ return; }
this.addClobberNode(node);
for(var x=0; x<props.length; x++){
node.__clobberAttrs__.push(props[x]);
}
}
 
this.removeListener = function( /*DOMNode*/ node,
/*String*/ evtName,
/*Function*/fp,
/*Boolean*/ capture){
// summary:
// clobbers the listener from the node
// evtName:
// the name of the handler to remove the function from
// node:
// DOM node to attach the event to
// fp:
// the function to register
// capture:
// Optional. should this listener prevent propigation?
if(!capture){ var capture = false; }
evtName = dojo.event.browser.normalizedEventName(evtName);
if(evtName == "key"){
if(dojo.render.html.ie){
this.removeListener(node, "onkeydown", fp, capture);
}
evtName = "keypress";
}
// FIXME: this is mostly a punt, we aren't actually doing anything on IE
if(node.removeEventListener){
node.removeEventListener(evtName, fp, capture);
}
}
 
this.addListener = function(/*DOMNode*/node, /*String*/evtName, /*Function*/fp, /*Boolean*/capture, /*Boolean*/dontFix){
// summary:
// adds a listener to the node
// evtName:
// the name of the handler to add the listener to can be either of
// the form "onclick" or "click"
// node:
// DOM node to attach the event to
// fp:
// the function to register
// capture:
// Optional. Should this listener prevent propigation?
// dontFix:
// Optional. Should we avoid registering a new closure around the
// listener to enable fixEvent for dispatch of the registered
// function?
if(!node){ return; } // FIXME: log and/or bail?
if(!capture){ var capture = false; }
evtName = dojo.event.browser.normalizedEventName(evtName);
if(evtName == "key"){
if(dojo.render.html.ie){
this.addListener(node, "onkeydown", fp, capture, dontFix);
}
evtName = "keypress";
}
 
if(!dontFix){
// build yet another closure around fp in order to inject fixEvent
// around the resulting event
var newfp = function(evt){
if(!evt){ evt = window.event; }
var ret = fp(dojo.event.browser.fixEvent(evt, this));
if(capture){
dojo.event.browser.stopEvent(evt);
}
return ret;
}
}else{
newfp = fp;
}
 
if(node.addEventListener){
node.addEventListener(evtName, newfp, capture);
return newfp;
}else{
evtName = "on"+evtName;
if(typeof node[evtName] == "function" ){
var oldEvt = node[evtName];
node[evtName] = function(e){
oldEvt(e);
return newfp(e);
}
}else{
node[evtName]=newfp;
}
if(dojo.render.html.ie){
this.addClobberNodeAttrs(node, [evtName]);
}
return newfp;
}
}
 
this.isEvent = function(/*Object*/obj){
// summary:
// Tries to determine whether or not the object is a DOM event.
 
// FIXME: event detection hack ... could test for additional attributes
// if necessary
return (typeof obj != "undefined")&&(obj)&&(typeof Event != "undefined")&&(obj.eventPhase); // Boolean
// Event does not support instanceof in Opera, otherwise:
//return (typeof Event != "undefined")&&(obj instanceof Event);
}
 
this.currentEvent = null;
this.callListener = function(/*Function*/listener, /*DOMNode*/curTarget){
// summary:
// calls the specified listener in the context of the passed node
// with the current DOM event object as the only parameter
// listener:
// the function to call
// curTarget:
// the Node to call the function in the scope of
if(typeof listener != 'function'){
dojo.raise("listener not a function: " + listener);
}
dojo.event.browser.currentEvent.currentTarget = curTarget;
return listener.call(curTarget, dojo.event.browser.currentEvent);
}
 
this._stopPropagation = function(){
dojo.event.browser.currentEvent.cancelBubble = true;
}
 
this._preventDefault = function(){
dojo.event.browser.currentEvent.returnValue = false;
}
 
this.keys = {
KEY_BACKSPACE: 8,
KEY_TAB: 9,
KEY_CLEAR: 12,
KEY_ENTER: 13,
KEY_SHIFT: 16,
KEY_CTRL: 17,
KEY_ALT: 18,
KEY_PAUSE: 19,
KEY_CAPS_LOCK: 20,
KEY_ESCAPE: 27,
KEY_SPACE: 32,
KEY_PAGE_UP: 33,
KEY_PAGE_DOWN: 34,
KEY_END: 35,
KEY_HOME: 36,
KEY_LEFT_ARROW: 37,
KEY_UP_ARROW: 38,
KEY_RIGHT_ARROW: 39,
KEY_DOWN_ARROW: 40,
KEY_INSERT: 45,
KEY_DELETE: 46,
KEY_HELP: 47,
KEY_LEFT_WINDOW: 91,
KEY_RIGHT_WINDOW: 92,
KEY_SELECT: 93,
KEY_NUMPAD_0: 96,
KEY_NUMPAD_1: 97,
KEY_NUMPAD_2: 98,
KEY_NUMPAD_3: 99,
KEY_NUMPAD_4: 100,
KEY_NUMPAD_5: 101,
KEY_NUMPAD_6: 102,
KEY_NUMPAD_7: 103,
KEY_NUMPAD_8: 104,
KEY_NUMPAD_9: 105,
KEY_NUMPAD_MULTIPLY: 106,
KEY_NUMPAD_PLUS: 107,
KEY_NUMPAD_ENTER: 108,
KEY_NUMPAD_MINUS: 109,
KEY_NUMPAD_PERIOD: 110,
KEY_NUMPAD_DIVIDE: 111,
KEY_F1: 112,
KEY_F2: 113,
KEY_F3: 114,
KEY_F4: 115,
KEY_F5: 116,
KEY_F6: 117,
KEY_F7: 118,
KEY_F8: 119,
KEY_F9: 120,
KEY_F10: 121,
KEY_F11: 122,
KEY_F12: 123,
KEY_F13: 124,
KEY_F14: 125,
KEY_F15: 126,
KEY_NUM_LOCK: 144,
KEY_SCROLL_LOCK: 145
};
 
// reverse lookup
this.revKeys = [];
for(var key in this.keys){
this.revKeys[this.keys[key]] = key;
}
 
this.fixEvent = function(/*Event*/evt, /*DOMNode*/sender){
// summary:
// normalizes properties on the event object including event
// bubbling methods, keystroke normalization, and x/y positions
// evt: the native event object
// sender: the node to treat as "currentTarget"
if(!evt){
if(window["event"]){
evt = window.event;
}
}
if((evt["type"])&&(evt["type"].indexOf("key") == 0)){ // key events
evt.keys = this.revKeys;
// FIXME: how can we eliminate this iteration?
for(var key in this.keys){
evt[key] = this.keys[key];
}
if(evt["type"] == "keydown" && dojo.render.html.ie){
switch(evt.keyCode){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_LEFT_WINDOW:
case evt.KEY_RIGHT_WINDOW:
case evt.KEY_SELECT:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
// I'll get these in keypress after the OS munges them based on numlock
case evt.KEY_NUMPAD_0:
case evt.KEY_NUMPAD_1:
case evt.KEY_NUMPAD_2:
case evt.KEY_NUMPAD_3:
case evt.KEY_NUMPAD_4:
case evt.KEY_NUMPAD_5:
case evt.KEY_NUMPAD_6:
case evt.KEY_NUMPAD_7:
case evt.KEY_NUMPAD_8:
case evt.KEY_NUMPAD_9:
case evt.KEY_NUMPAD_PERIOD:
break; // just ignore the keys that can morph
case evt.KEY_NUMPAD_MULTIPLY:
case evt.KEY_NUMPAD_PLUS:
case evt.KEY_NUMPAD_ENTER:
case evt.KEY_NUMPAD_MINUS:
case evt.KEY_NUMPAD_DIVIDE:
break; // I could handle these but just pick them up in keypress
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
case evt.KEY_PAGE_UP:
case evt.KEY_PAGE_DOWN:
case evt.KEY_END:
case evt.KEY_HOME:
case evt.KEY_LEFT_ARROW:
case evt.KEY_UP_ARROW:
case evt.KEY_RIGHT_ARROW:
case evt.KEY_DOWN_ARROW:
case evt.KEY_INSERT:
case evt.KEY_DELETE:
case evt.KEY_F1:
case evt.KEY_F2:
case evt.KEY_F3:
case evt.KEY_F4:
case evt.KEY_F5:
case evt.KEY_F6:
case evt.KEY_F7:
case evt.KEY_F8:
case evt.KEY_F9:
case evt.KEY_F10:
case evt.KEY_F11:
case evt.KEY_F12:
case evt.KEY_F12:
case evt.KEY_F13:
case evt.KEY_F14:
case evt.KEY_F15:
case evt.KEY_CLEAR:
case evt.KEY_HELP:
evt.key = evt.keyCode;
break;
default:
if(evt.ctrlKey || evt.altKey){
var unifiedCharCode = evt.keyCode;
// if lower case but keycode is uppercase, convert it
if(unifiedCharCode >= 65 && unifiedCharCode <= 90 && evt.shiftKey == false){
unifiedCharCode += 32;
}
if(unifiedCharCode >= 1 && unifiedCharCode <= 26 && evt.ctrlKey){
unifiedCharCode += 96; // 001-032 = ctrl+[a-z]
}
evt.key = String.fromCharCode(unifiedCharCode);
}
}
} else if(evt["type"] == "keypress"){
if(dojo.render.html.opera){
if(evt.which == 0){
evt.key = evt.keyCode;
}else if(evt.which > 0){
switch(evt.which){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
evt.key = evt.which;
break;
default:
var unifiedCharCode = evt.which;
if((evt.ctrlKey || evt.altKey || evt.metaKey) && (evt.which >= 65 && evt.which <= 90 && evt.shiftKey == false)){
unifiedCharCode += 32;
}
evt.key = String.fromCharCode(unifiedCharCode);
}
}
}else if(dojo.render.html.ie){ // catch some IE keys that are hard to get in keyDown
// key combinations were handled in onKeyDown
if(!evt.ctrlKey && !evt.altKey && evt.keyCode >= evt.KEY_SPACE){
evt.key = String.fromCharCode(evt.keyCode);
}
}else if(dojo.render.html.safari){
switch(evt.keyCode){
case 25: evt.key = evt.KEY_TAB; evt.shift = true;break;
case 63232: evt.key = evt.KEY_UP_ARROW; break;
case 63233: evt.key = evt.KEY_DOWN_ARROW; break;
case 63234: evt.key = evt.KEY_LEFT_ARROW; break;
case 63235: evt.key = evt.KEY_RIGHT_ARROW; break;
case 63236: evt.key = evt.KEY_F1; break;
case 63237: evt.key = evt.KEY_F2; break;
case 63238: evt.key = evt.KEY_F3; break;
case 63239: evt.key = evt.KEY_F4; break;
case 63240: evt.key = evt.KEY_F5; break;
case 63241: evt.key = evt.KEY_F6; break;
case 63242: evt.key = evt.KEY_F7; break;
case 63243: evt.key = evt.KEY_F8; break;
case 63244: evt.key = evt.KEY_F9; break;
case 63245: evt.key = evt.KEY_F10; break;
case 63246: evt.key = evt.KEY_F11; break;
case 63247: evt.key = evt.KEY_F12; break;
case 63250: evt.key = evt.KEY_PAUSE; break;
case 63272: evt.key = evt.KEY_DELETE; break;
case 63273: evt.key = evt.KEY_HOME; break;
case 63275: evt.key = evt.KEY_END; break;
case 63276: evt.key = evt.KEY_PAGE_UP; break;
case 63277: evt.key = evt.KEY_PAGE_DOWN; break;
case 63302: evt.key = evt.KEY_INSERT; break;
case 63248://prtscr
case 63249://scrolllock
case 63289://numlock
break;
default:
evt.key = evt.charCode >= evt.KEY_SPACE ? String.fromCharCode(evt.charCode) : evt.keyCode;
}
}else{
evt.key = evt.charCode > 0 ? String.fromCharCode(evt.charCode) : evt.keyCode;
}
}
}
if(dojo.render.html.ie){
if(!evt.target){ evt.target = evt.srcElement; }
if(!evt.currentTarget){ evt.currentTarget = (sender ? sender : evt.srcElement); }
if(!evt.layerX){ evt.layerX = evt.offsetX; }
if(!evt.layerY){ evt.layerY = evt.offsetY; }
// FIXME: scroll position query is duped from dojo.html to avoid dependency on that entire module
// DONOT replace the following to use dojo.body(), in IE, document.documentElement should be used
// here rather than document.body
var doc = (evt.srcElement && evt.srcElement.ownerDocument) ? evt.srcElement.ownerDocument : document;
var docBody = ((dojo.render.html.ie55)||(doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
if(!evt.pageX){ evt.pageX = evt.clientX + (docBody.scrollLeft || 0) }
if(!evt.pageY){ evt.pageY = evt.clientY + (docBody.scrollTop || 0) }
// mouseover
if(evt.type == "mouseover"){ evt.relatedTarget = evt.fromElement; }
// mouseout
if(evt.type == "mouseout"){ evt.relatedTarget = evt.toElement; }
this.currentEvent = evt;
evt.callListener = this.callListener;
evt.stopPropagation = this._stopPropagation;
evt.preventDefault = this._preventDefault;
}
return evt; // Event
}
 
this.stopEvent = function(/*Event*/evt){
// summary:
// prevents propigation and clobbers the default action of the
// passed event
// evt: Optional for IE. The native event object.
if(window.event){
evt.cancelBubble = true;
evt.returnValue = false;
}else{
evt.preventDefault();
evt.stopPropagation();
}
}
}
 
dojo.kwCompoundRequire({
common: ["dojo.event.common", "dojo.event.topic"],
browser: ["dojo.event.browser"],
dashboard: ["dojo.event.browser"]
});
dojo.provide("dojo.event.*");
 
dojo.provide("dojo.gfx.color");
 
 
 
// TODO: rewrite the "x2y" methods to take advantage of the parsing
// abilities of the Color object. Also, beef up the Color
// object (as possible) to parse most common formats
 
// takes an r, g, b, a(lpha) value, [r, g, b, a] array, "rgb(...)" string, hex string (#aaa, #aaaaaa, aaaaaaa)
dojo.gfx.color.Color = function(r, g, b, a) {
// dojo.debug("r:", r[0], "g:", r[1], "b:", r[2]);
if(dojo.lang.isArray(r)){
this.r = r[0];
this.g = r[1];
this.b = r[2];
this.a = r[3]||1.0;
}else if(dojo.lang.isString(r)){
var rgb = dojo.gfx.color.extractRGB(r);
this.r = rgb[0];
this.g = rgb[1];
this.b = rgb[2];
this.a = g||1.0;
}else if(r instanceof dojo.gfx.color.Color){
// why does this create a new instance if we were passed one?
this.r = r.r;
this.b = r.b;
this.g = r.g;
this.a = r.a;
}else{
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
}
 
dojo.gfx.color.Color.fromArray = function(arr) {
return new dojo.gfx.color.Color(arr[0], arr[1], arr[2], arr[3]);
}
 
dojo.extend(dojo.gfx.color.Color, {
toRgb: function(includeAlpha) {
if(includeAlpha) {
return this.toRgba();
} else {
return [this.r, this.g, this.b];
}
},
toRgba: function() {
return [this.r, this.g, this.b, this.a];
},
toHex: function() {
return dojo.gfx.color.rgb2hex(this.toRgb());
},
toCss: function() {
return "rgb(" + this.toRgb().join() + ")";
},
toString: function() {
return this.toHex(); // decent default?
},
blend: function(color, weight){
var rgb = null;
if(dojo.lang.isArray(color)){
rgb = color;
}else if(color instanceof dojo.gfx.color.Color){
rgb = color.toRgb();
}else{
rgb = new dojo.gfx.color.Color(color).toRgb();
}
return dojo.gfx.color.blend(this.toRgb(), rgb, weight);
}
});
 
dojo.gfx.color.named = {
white: [255,255,255],
black: [0,0,0],
red: [255,0,0],
green: [0,255,0],
lime: [0,255,0],
blue: [0,0,255],
navy: [0,0,128],
gray: [128,128,128],
silver: [192,192,192]
};
 
dojo.gfx.color.blend = function(a, b, weight){
// summary:
// blend colors a and b (both as RGB array or hex strings) with weight
// from -1 to +1, 0 being a 50/50 blend
if(typeof a == "string"){
return dojo.gfx.color.blendHex(a, b, weight);
}
if(!weight){
weight = 0;
}
weight = Math.min(Math.max(-1, weight), 1);
 
// alex: this interface blows.
// map -1 to 1 to the range 0 to 1
weight = ((weight + 1)/2);
var c = [];
 
// var stop = (1000*weight);
for(var x = 0; x < 3; x++){
c[x] = parseInt( b[x] + ( (a[x] - b[x]) * weight) );
}
return c;
}
 
// very convenient blend that takes and returns hex values
// (will get called automatically by blend when blend gets strings)
dojo.gfx.color.blendHex = function(a, b, weight) {
return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight));
}
 
// get RGB array from css-style color declarations
dojo.gfx.color.extractRGB = function(color) {
var hex = "0123456789abcdef";
color = color.toLowerCase();
if( color.indexOf("rgb") == 0 ) {
var matches = color.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
var ret = matches.splice(1, 3);
return ret;
} else {
var colors = dojo.gfx.color.hex2rgb(color);
if(colors) {
return colors;
} else {
// named color (how many do we support?)
return dojo.gfx.color.named[color] || [255, 255, 255];
}
}
}
 
dojo.gfx.color.hex2rgb = function(hex) {
var hexNum = "0123456789ABCDEF";
var rgb = new Array(3);
if( hex.indexOf("#") == 0 ) { hex = hex.substring(1); }
hex = hex.toUpperCase();
if(hex.replace(new RegExp("["+hexNum+"]", "g"), "") != "") {
return null;
}
if( hex.length == 3 ) {
rgb[0] = hex.charAt(0) + hex.charAt(0)
rgb[1] = hex.charAt(1) + hex.charAt(1)
rgb[2] = hex.charAt(2) + hex.charAt(2);
} else {
rgb[0] = hex.substring(0, 2);
rgb[1] = hex.substring(2, 4);
rgb[2] = hex.substring(4);
}
for(var i = 0; i < rgb.length; i++) {
rgb[i] = hexNum.indexOf(rgb[i].charAt(0)) * 16 + hexNum.indexOf(rgb[i].charAt(1));
}
return rgb;
}
 
dojo.gfx.color.rgb2hex = function(r, g, b) {
if(dojo.lang.isArray(r)) {
g = r[1] || 0;
b = r[2] || 0;
r = r[0] || 0;
}
var ret = dojo.lang.map([r, g, b], function(x) {
x = new Number(x);
var s = x.toString(16);
while(s.length < 2) { s = "0" + s; }
return s;
});
ret.unshift("#");
return ret.join("");
}
 
dojo.provide("dojo.lfx.Animation");
 
 
 
/*
Animation package based on Dan Pupius' work: http://pupius.co.uk/js/Toolkit.Drawing.js
*/
dojo.lfx.Line = function(/*int*/ start, /*int*/ end){
// summary: dojo.lfx.Line is the object used to generate values
// from a start value to an end value
this.start = start;
this.end = end;
if(dojo.lang.isArray(start)){
/* start: Array
end: Array
pId: a */
var diff = [];
dojo.lang.forEach(this.start, function(s,i){
diff[i] = this.end[i] - s;
}, this);
this.getValue = function(/*float*/ n){
var res = [];
dojo.lang.forEach(this.start, function(s, i){
res[i] = (diff[i] * n) + s;
}, this);
return res; // Array
}
}else{
var diff = end - start;
this.getValue = function(/*float*/ n){
// summary: returns the point on the line
// n: a floating point number greater than 0 and less than 1
return (diff * n) + this.start; // Decimal
}
}
}
 
if((dojo.render.html.khtml)&&(!dojo.render.html.safari)){
// the cool kids are obviously not using konqueror...
// found a very wierd bug in floats constants, 1.5 evals as 1
// seems somebody mixed up ints and floats in 3.5.4 ??
// FIXME: investigate more and post a KDE bug (Fredrik)
dojo.lfx.easeDefault = function(/*Decimal?*/ n){
// summary: Returns the point for point n on a sin wave.
return (parseFloat("0.5")+((Math.sin( (n+parseFloat("1.5")) * Math.PI))/2));
}
}else{
dojo.lfx.easeDefault = function(/*Decimal?*/ n){
return (0.5+((Math.sin( (n+1.5) * Math.PI))/2));
}
}
 
dojo.lfx.easeIn = function(/*Decimal?*/ n){
// summary: returns the point on an easing curve
// n: a floating point number greater than 0 and less than 1
return Math.pow(n, 3);
}
 
dojo.lfx.easeOut = function(/*Decimal?*/ n){
// summary: returns the point on the line
// n: a floating point number greater than 0 and less than 1
return ( 1 - Math.pow(1 - n, 3) );
}
 
dojo.lfx.easeInOut = function(/*Decimal?*/ n){
// summary: returns the point on the line
// n: a floating point number greater than 0 and less than 1
return ( (3 * Math.pow(n, 2)) - (2 * Math.pow(n, 3)) );
}
 
dojo.lfx.IAnimation = function(){
// summary: dojo.lfx.IAnimation is an interface that implements
// commonly used functions of animation objects
}
dojo.lang.extend(dojo.lfx.IAnimation, {
// public properties
curve: null,
duration: 1000,
easing: null,
repeatCount: 0,
rate: 10,
// events
handler: null,
beforeBegin: null,
onBegin: null,
onAnimate: null,
onEnd: null,
onPlay: null,
onPause: null,
onStop: null,
// public methods
play: null,
pause: null,
stop: null,
connect: function(/*Event*/ evt, /*Object*/ scope, /*Function*/ newFunc){
// summary: Convenience function. Quickly connect to an event
// of this object and save the old functions connected to it.
// evt: The name of the event to connect to.
// scope: the scope in which to run newFunc.
// newFunc: the function to run when evt is fired.
if(!newFunc){
/* scope: Function
newFunc: null
pId: f */
newFunc = scope;
scope = this;
}
newFunc = dojo.lang.hitch(scope, newFunc);
var oldFunc = this[evt]||function(){};
this[evt] = function(){
var ret = oldFunc.apply(this, arguments);
newFunc.apply(this, arguments);
return ret;
}
return this; // dojo.lfx.IAnimation
},
 
fire: function(/*Event*/ evt, /*Array*/ args){
// summary: Convenience function. Fire event "evt" and pass it
// the arguments specified in "args".
// evt: The event to fire.
// args: The arguments to pass to the event.
if(this[evt]){
this[evt].apply(this, (args||[]));
}
return this; // dojo.lfx.IAnimation
},
repeat: function(/*int*/ count){
// summary: Set the repeat count of this object.
// count: How many times to repeat the animation.
this.repeatCount = count;
return this; // dojo.lfx.IAnimation
},
 
// private properties
_active: false,
_paused: false
});
 
dojo.lfx.Animation = function( /*Object*/ handlers,
/*int*/ duration,
/*dojo.lfx.Line*/ curve,
/*function*/ easing,
/*int*/ repeatCount,
/*int*/ rate){
// summary
// a generic animation object that fires callbacks into it's handlers
// object at various states
// handlers: { handler: Function?, onstart: Function?, onstop: Function?, onanimate: Function? }
dojo.lfx.IAnimation.call(this);
if(dojo.lang.isNumber(handlers)||(!handlers && duration.getValue)){
// no handlers argument:
rate = repeatCount;
repeatCount = easing;
easing = curve;
curve = duration;
duration = handlers;
handlers = null;
}else if(handlers.getValue||dojo.lang.isArray(handlers)){
// no handlers or duration:
rate = easing;
repeatCount = curve;
easing = duration;
curve = handlers;
duration = null;
handlers = null;
}
if(dojo.lang.isArray(curve)){
/* curve: Array
pId: a */
this.curve = new dojo.lfx.Line(curve[0], curve[1]);
}else{
this.curve = curve;
}
if(duration != null && duration > 0){ this.duration = duration; }
if(repeatCount){ this.repeatCount = repeatCount; }
if(rate){ this.rate = rate; }
if(handlers){
dojo.lang.forEach([
"handler", "beforeBegin", "onBegin",
"onEnd", "onPlay", "onStop", "onAnimate"
], function(item){
if(handlers[item]){
this.connect(item, handlers[item]);
}
}, this);
}
if(easing && dojo.lang.isFunction(easing)){
this.easing=easing;
}
}
dojo.inherits(dojo.lfx.Animation, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Animation, {
// "private" properties
_startTime: null,
_endTime: null,
_timer: null,
_percent: 0,
_startRepeatCount: 0,
 
// public methods
play: function(/*int?*/ delay, /*bool?*/ gotoStart){
// summary: Start the animation.
// delay: How many milliseconds to delay before starting.
// gotoStart: If true, starts the animation from the beginning; otherwise,
// starts it from its current position.
if(gotoStart){
clearTimeout(this._timer);
this._active = false;
this._paused = false;
this._percent = 0;
}else if(this._active && !this._paused){
return this; // dojo.lfx.Animation
}
this.fire("handler", ["beforeBegin"]);
this.fire("beforeBegin");
 
if(delay > 0){
setTimeout(dojo.lang.hitch(this, function(){ this.play(null, gotoStart); }), delay);
return this; // dojo.lfx.Animation
}
this._startTime = new Date().valueOf();
if(this._paused){
this._startTime -= (this.duration * this._percent / 100);
}
this._endTime = this._startTime + this.duration;
 
this._active = true;
this._paused = false;
var step = this._percent / 100;
var value = this.curve.getValue(step);
if(this._percent == 0 ){
if(!this._startRepeatCount){
this._startRepeatCount = this.repeatCount;
}
this.fire("handler", ["begin", value]);
this.fire("onBegin", [value]);
}
 
this.fire("handler", ["play", value]);
this.fire("onPlay", [value]);
 
this._cycle();
return this; // dojo.lfx.Animation
},
 
pause: function(){
// summary: Pauses a running animation.
clearTimeout(this._timer);
if(!this._active){ return this; /*dojo.lfx.Animation*/}
this._paused = true;
var value = this.curve.getValue(this._percent / 100);
this.fire("handler", ["pause", value]);
this.fire("onPause", [value]);
return this; // dojo.lfx.Animation
},
 
gotoPercent: function(/*Decimal*/ pct, /*bool?*/ andPlay){
// summary: Sets the progress of the animation.
// pct: A percentage in decimal notation (between and including 0.0 and 1.0).
// andPlay: If true, play the animation after setting the progress.
clearTimeout(this._timer);
this._active = true;
this._paused = true;
this._percent = pct;
if(andPlay){ this.play(); }
return this; // dojo.lfx.Animation
},
 
stop: function(/*bool?*/ gotoEnd){
// summary: Stops a running animation.
// gotoEnd: If true, the animation will end.
clearTimeout(this._timer);
var step = this._percent / 100;
if(gotoEnd){
step = 1;
}
var value = this.curve.getValue(step);
this.fire("handler", ["stop", value]);
this.fire("onStop", [value]);
this._active = false;
this._paused = false;
return this; // dojo.lfx.Animation
},
 
status: function(){
// summary: Returns a string representation of the status of
// the animation.
if(this._active){
return this._paused ? "paused" : "playing"; // String
}else{
return "stopped"; // String
}
return this;
},
 
// "private" methods
_cycle: function(){
clearTimeout(this._timer);
if(this._active){
var curr = new Date().valueOf();
var step = (curr - this._startTime) / (this._endTime - this._startTime);
 
if(step >= 1){
step = 1;
this._percent = 100;
}else{
this._percent = step * 100;
}
// Perform easing
if((this.easing)&&(dojo.lang.isFunction(this.easing))){
step = this.easing(step);
}
 
var value = this.curve.getValue(step);
this.fire("handler", ["animate", value]);
this.fire("onAnimate", [value]);
 
if( step < 1 ){
this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate);
}else{
this._active = false;
this.fire("handler", ["end"]);
this.fire("onEnd");
 
if(this.repeatCount > 0){
this.repeatCount--;
this.play(null, true);
}else if(this.repeatCount == -1){
this.play(null, true);
}else{
if(this._startRepeatCount){
this.repeatCount = this._startRepeatCount;
this._startRepeatCount = 0;
}
}
}
}
return this; // dojo.lfx.Animation
}
});
 
dojo.lfx.Combine = function(/*dojo.lfx.IAnimation...*/ animations){
// summary: An animation object to play animations passed to it at the same time.
dojo.lfx.IAnimation.call(this);
this._anims = [];
this._animsEnded = 0;
var anims = arguments;
if(anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))){
/* animations: dojo.lfx.IAnimation[]
pId: a */
anims = anims[0];
}
dojo.lang.forEach(anims, function(anim){
this._anims.push(anim);
anim.connect("onEnd", dojo.lang.hitch(this, "_onAnimsEnded"));
}, this);
}
dojo.inherits(dojo.lfx.Combine, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Combine, {
// private members
_animsEnded: 0,
// public methods
play: function(/*int?*/ delay, /*bool?*/ gotoStart){
// summary: Start the animations.
// delay: How many milliseconds to delay before starting.
// gotoStart: If true, starts the animations from the beginning; otherwise,
// starts them from their current position.
if( !this._anims.length ){ return this; /*dojo.lfx.Combine*/}
 
this.fire("beforeBegin");
 
if(delay > 0){
setTimeout(dojo.lang.hitch(this, function(){ this.play(null, gotoStart); }), delay);
return this; // dojo.lfx.Combine
}
if(gotoStart || this._anims[0].percent == 0){
this.fire("onBegin");
}
this.fire("onPlay");
this._animsCall("play", null, gotoStart);
return this; // dojo.lfx.Combine
},
pause: function(){
// summary: Pauses the running animations.
this.fire("onPause");
this._animsCall("pause");
return this; // dojo.lfx.Combine
},
stop: function(/*bool?*/ gotoEnd){
// summary: Stops the running animations.
// gotoEnd: If true, the animations will end.
this.fire("onStop");
this._animsCall("stop", gotoEnd);
return this; // dojo.lfx.Combine
},
// private methods
_onAnimsEnded: function(){
this._animsEnded++;
if(this._animsEnded >= this._anims.length){
this.fire("onEnd");
}
return this; // dojo.lfx.Combine
},
_animsCall: function(/*String*/ funcName){
var args = [];
if(arguments.length > 1){
for(var i = 1 ; i < arguments.length ; i++){
args.push(arguments[i]);
}
}
var _this = this;
dojo.lang.forEach(this._anims, function(anim){
anim[funcName](args);
}, _this);
return this; // dojo.lfx.Combine
}
});
 
dojo.lfx.Chain = function(/*dojo.lfx.IAnimation...*/ animations) {
// summary: An animation object to play animations passed to it
// one after another.
dojo.lfx.IAnimation.call(this);
this._anims = [];
this._currAnim = -1;
var anims = arguments;
if(anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))){
/* animations: dojo.lfx.IAnimation[]
pId: a */
anims = anims[0];
}
var _this = this;
dojo.lang.forEach(anims, function(anim, i, anims_arr){
this._anims.push(anim);
if(i < anims_arr.length - 1){
anim.connect("onEnd", dojo.lang.hitch(this, "_playNext") );
}else{
anim.connect("onEnd", dojo.lang.hitch(this, function(){ this.fire("onEnd"); }) );
}
}, this);
}
dojo.inherits(dojo.lfx.Chain, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Chain, {
// private members
_currAnim: -1,
// public methods
play: function(/*int?*/ delay, /*bool?*/ gotoStart){
// summary: Start the animation sequence.
// delay: How many milliseconds to delay before starting.
// gotoStart: If true, starts the sequence from the beginning; otherwise,
// starts it from its current position.
if( !this._anims.length ) { return this; /*dojo.lfx.Chain*/}
if( gotoStart || !this._anims[this._currAnim] ) {
this._currAnim = 0;
}
 
var currentAnimation = this._anims[this._currAnim];
 
this.fire("beforeBegin");
if(delay > 0){
setTimeout(dojo.lang.hitch(this, function(){ this.play(null, gotoStart); }), delay);
return this; // dojo.lfx.Chain
}
if(currentAnimation){
if(this._currAnim == 0){
this.fire("handler", ["begin", this._currAnim]);
this.fire("onBegin", [this._currAnim]);
}
this.fire("onPlay", [this._currAnim]);
currentAnimation.play(null, gotoStart);
}
return this; // dojo.lfx.Chain
},
pause: function(){
// summary: Pauses the running animation sequence.
if( this._anims[this._currAnim] ) {
this._anims[this._currAnim].pause();
this.fire("onPause", [this._currAnim]);
}
return this; // dojo.lfx.Chain
},
playPause: function(){
// summary: If the animation sequence is playing, pause it; otherwise,
// play it.
if(this._anims.length == 0){ return this; }
if(this._currAnim == -1){ this._currAnim = 0; }
var currAnim = this._anims[this._currAnim];
if( currAnim ) {
if( !currAnim._active || currAnim._paused ) {
this.play();
} else {
this.pause();
}
}
return this; // dojo.lfx.Chain
},
stop: function(){
// summary: Stops the running animations.
var currAnim = this._anims[this._currAnim];
if(currAnim){
currAnim.stop();
this.fire("onStop", [this._currAnim]);
}
return currAnim; // dojo.lfx.IAnimation
},
// private methods
_playNext: function(){
if( this._currAnim == -1 || this._anims.length == 0 ) { return this; }
this._currAnim++;
if( this._anims[this._currAnim] ){
this._anims[this._currAnim].play(null, true);
}
return this; // dojo.lfx.Chain
}
});
 
dojo.lfx.combine = function(/*dojo.lfx.IAnimation...*/ animations){
// summary: Convenience function. Returns a dojo.lfx.Combine created
// using the animations passed in.
var anims = arguments;
if(dojo.lang.isArray(arguments[0])){
/* animations: dojo.lfx.IAnimation[]
pId: a */
anims = arguments[0];
}
if(anims.length == 1){ return anims[0]; }
return new dojo.lfx.Combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.chain = function(/*dojo.lfx.IAnimation...*/ animations){
// summary: Convenience function. Returns a dojo.lfx.Chain created
// using the animations passed in.
var anims = arguments;
if(dojo.lang.isArray(arguments[0])){
/* animations: dojo.lfx.IAnimation[]
pId: a */
anims = arguments[0];
}
if(anims.length == 1){ return anims[0]; }
return new dojo.lfx.Chain(anims); // dojo.lfx.Combine
}
 
dojo.provide("dojo.html.common");
 
 
 
dojo.lang.mixin(dojo.html, dojo.dom);
 
dojo.html.body = function(){
dojo.deprecated("dojo.html.body() moved to dojo.body()", "0.5");
return dojo.body();
}
 
// FIXME: we are going to assume that we can throw any and every rendering
// engine into the IE 5.x box model. In Mozilla, we do this w/ CSS.
// Need to investigate for KHTML and Opera
 
dojo.html.getEventTarget = function(/* DOMEvent */evt){
// summary
// Returns the target of an event
if(!evt) { evt = dojo.global().event || {} };
var t = (evt.srcElement ? evt.srcElement : (evt.target ? evt.target : null));
while((t)&&(t.nodeType!=1)){ t = t.parentNode; }
return t; // HTMLElement
}
 
dojo.html.getViewport = function(){
// summary
// Returns the dimensions of the viewable area of a browser window
var _window = dojo.global();
var _document = dojo.doc();
var w = 0;
var h = 0;
 
if(dojo.render.html.mozilla){
// mozilla
w = _document.documentElement.clientWidth;
h = _window.innerHeight;
}else if(!dojo.render.html.opera && _window.innerWidth){
//in opera9, dojo.body().clientWidth should be used, instead
//of window.innerWidth/document.documentElement.clientWidth
//so we have to check whether it is opera
w = _window.innerWidth;
h = _window.innerHeight;
} else if (!dojo.render.html.opera && dojo.exists(_document, "documentElement.clientWidth")){
// IE6 Strict
var w2 = _document.documentElement.clientWidth;
// this lets us account for scrollbars
if(!w || w2 && w2 < w) {
w = w2;
}
h = _document.documentElement.clientHeight;
} else if (dojo.body().clientWidth){
// IE, Opera
w = dojo.body().clientWidth;
h = dojo.body().clientHeight;
}
return { width: w, height: h }; // object
}
 
dojo.html.getScroll = function(){
// summary
// Returns the scroll position of the document
var _window = dojo.global();
var _document = dojo.doc();
var top = _window.pageYOffset || _document.documentElement.scrollTop || dojo.body().scrollTop || 0;
var left = _window.pageXOffset || _document.documentElement.scrollLeft || dojo.body().scrollLeft || 0;
return {
top: top,
left: left,
offset:{ x: left, y: top } // note the change, NOT an Array with added properties.
}; // object
}
 
dojo.html.getParentByType = function(/* HTMLElement */node, /* string */type) {
// summary
// Returns the first ancestor of node with tagName type.
var _document = dojo.doc();
var parent = dojo.byId(node);
type = type.toLowerCase();
while((parent)&&(parent.nodeName.toLowerCase()!=type)){
if(parent==(_document["body"]||_document["documentElement"])){
return null;
}
parent = parent.parentNode;
}
return parent; // HTMLElement
}
 
dojo.html.getAttribute = function(/* HTMLElement */node, /* string */attr){
// summary
// Returns the value of attribute attr from node.
node = dojo.byId(node);
// FIXME: need to add support for attr-specific accessors
if((!node)||(!node.getAttribute)){
// if(attr !== 'nwType'){
// alert("getAttr of '" + attr + "' with bad node");
// }
return null;
}
var ta = typeof attr == 'string' ? attr : new String(attr);
 
// first try the approach most likely to succeed
var v = node.getAttribute(ta.toUpperCase());
if((v)&&(typeof v == 'string')&&(v!="")){
return v; // string
}
 
// try returning the attributes value, if we couldn't get it as a string
if(v && v.value){
return v.value; // string
}
 
// this should work on Opera 7, but it's a little on the crashy side
if((node.getAttributeNode)&&(node.getAttributeNode(ta))){
return (node.getAttributeNode(ta)).value; // string
}else if(node.getAttribute(ta)){
return node.getAttribute(ta); // string
}else if(node.getAttribute(ta.toLowerCase())){
return node.getAttribute(ta.toLowerCase()); // string
}
return null; // string
}
dojo.html.hasAttribute = function(/* HTMLElement */node, /* string */attr){
// summary
// Determines whether or not the specified node carries a value for the attribute in question.
return dojo.html.getAttribute(dojo.byId(node), attr) ? true : false; // boolean
}
dojo.html.getCursorPosition = function(/* DOMEvent */e){
// summary
// Returns the mouse position relative to the document (not the viewport).
// For example, if you have a document that is 10000px tall,
// but your browser window is only 100px tall,
// if you scroll to the bottom of the document and call this function it
// will return {x: 0, y: 10000}
// NOTE: for events delivered via dojo.event.connect() and/or dojoAttachEvent (for widgets),
// you can just access evt.pageX and evt.pageY, rather than calling this function.
e = e || dojo.global().event;
var cursor = {x:0, y:0};
if(e.pageX || e.pageY){
cursor.x = e.pageX;
cursor.y = e.pageY;
}else{
var de = dojo.doc().documentElement;
var db = dojo.body();
cursor.x = e.clientX + ((de||db)["scrollLeft"]) - ((de||db)["clientLeft"]);
cursor.y = e.clientY + ((de||db)["scrollTop"]) - ((de||db)["clientTop"]);
}
return cursor; // object
}
 
dojo.html.isTag = function(/* HTMLElement */node) {
// summary
// Like dojo.dom.isTag, except case-insensitive
node = dojo.byId(node);
if(node && node.tagName) {
for (var i=1; i<arguments.length; i++){
if (node.tagName.toLowerCase()==String(arguments[i]).toLowerCase()){
return String(arguments[i]).toLowerCase(); // string
}
}
}
return ""; // string
}
 
//define dojo.html.createExternalElement for IE to workaround the annoying activation "feature" in new IE
//details: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
if(dojo.render.html.ie && !dojo.render.html.ie70){
//only define createExternalElement for IE in none https to avoid "mixed content" warning dialog
if(window.location.href.substr(0,6).toLowerCase() != "https:"){
(function(){
// FIXME: this seems not to work correctly on IE 7!!
 
//The trick is to define a function in a script.src property:
// <script src="javascript:'function createExternalElement(){...}'"></script>,
//which will be treated as an external javascript file in IE
var xscript = dojo.doc().createElement('script');
xscript.src = "javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
dojo.doc().getElementsByTagName("head")[0].appendChild(xscript);
})();
}
}else{
//for other browsers, simply use document.createElement
//is enough
dojo.html.createExternalElement = function(/* HTMLDocument */doc, /* string */tag){
// summary
// Creates an element in the HTML document, here for ActiveX activation workaround.
return doc.createElement(tag); // HTMLElement
}
}
 
dojo.html._callDeprecated = function(inFunc, replFunc, args, argName, retValue){
dojo.deprecated("dojo.html." + inFunc,
"replaced by dojo.html." + replFunc + "(" + (argName ? "node, {"+ argName + ": " + argName + "}" : "" ) + ")" + (retValue ? "." + retValue : ""), "0.5");
var newArgs = [];
if(argName){ var argsIn = {}; argsIn[argName] = args[1]; newArgs.push(args[0]); newArgs.push(argsIn); }
else { newArgs = args }
var ret = dojo.html[replFunc].apply(dojo.html, args);
if(retValue){ return ret[retValue]; }
else { return ret; }
}
 
dojo.html.getViewportWidth = function(){
return dojo.html._callDeprecated("getViewportWidth", "getViewport", arguments, null, "width");
}
dojo.html.getViewportHeight = function(){
return dojo.html._callDeprecated("getViewportHeight", "getViewport", arguments, null, "height");
}
dojo.html.getViewportSize = function(){
return dojo.html._callDeprecated("getViewportSize", "getViewport", arguments);
}
dojo.html.getScrollTop = function(){
return dojo.html._callDeprecated("getScrollTop", "getScroll", arguments, null, "top");
}
dojo.html.getScrollLeft = function(){
return dojo.html._callDeprecated("getScrollLeft", "getScroll", arguments, null, "left");
}
dojo.html.getScrollOffset = function(){
return dojo.html._callDeprecated("getScrollOffset", "getScroll", arguments, null, "offset");
}
 
dojo.provide("dojo.uri.Uri");
 
dojo.uri = new function() {
this.dojoUri = function (/*dojo.uri.Uri||String*/uri) {
// summary: returns a Uri object resolved relative to the dojo root
return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(), uri);
}
 
this.moduleUri = function(/*String*/module, /*dojo.uri.Uri||String*/uri){
// summary: returns a Uri object relative to a module
// description: Examples: dojo.uri.moduleUri("dojo.widget","templates/template.html"), or dojo.uri.moduleUri("acme","images/small.png")
var loc = dojo.hostenv.getModuleSymbols(module).join('/');
if(!loc){
return null;
}
if(loc.lastIndexOf("/") != loc.length-1){
loc += "/";
}
//If the path is an absolute path (starts with a / or is on another domain/xdomain)
//then don't add the baseScriptUri.
var colonIndex = loc.indexOf(":");
var slashIndex = loc.indexOf("/");
if(loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > slashIndex)){
loc = dojo.hostenv.getBaseScriptUri() + loc;
}
 
return new dojo.uri.Uri(loc,uri);
}
 
this.Uri = function (/*dojo.uri.Uri||String...*/) {
// summary: Constructor to create an object representing a URI.
// description:
// Each argument is evaluated in order relative to the next until
// a canonical uri is produced. To get an absolute Uri relative
// to the current document use
// new dojo.uri.Uri(document.baseURI, uri)
 
// TODO: support for IPv6, see RFC 2732
 
// resolve uri components relative to each other
var uri = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if(!arguments[i]) { continue; }
 
// Safari doesn't support this.constructor so we have to be explicit
var relobj = new dojo.uri.Uri(arguments[i].toString());
var uriobj = new dojo.uri.Uri(uri.toString());
 
if ((relobj.path=="")&&(relobj.scheme==null)&&(relobj.authority==null)&&(relobj.query==null)) {
if (relobj.fragment != null) { uriobj.fragment = relobj.fragment; }
relobj = uriobj;
} else if (relobj.scheme == null) {
relobj.scheme = uriobj.scheme;
 
if (relobj.authority == null) {
relobj.authority = uriobj.authority;
 
if (relobj.path.charAt(0) != "/") {
var path = uriobj.path.substring(0,
uriobj.path.lastIndexOf("/") + 1) + relobj.path;
 
var segs = path.split("/");
for (var j = 0; j < segs.length; j++) {
if (segs[j] == ".") {
if (j == segs.length - 1) { segs[j] = ""; }
else { segs.splice(j, 1); j--; }
} else if (j > 0 && !(j == 1 && segs[0] == "") &&
segs[j] == ".." && segs[j-1] != "..") {
 
if (j == segs.length - 1) { segs.splice(j, 1); segs[j - 1] = ""; }
else { segs.splice(j - 1, 2); j -= 2; }
}
}
relobj.path = segs.join("/");
}
}
}
 
uri = "";
if (relobj.scheme != null) { uri += relobj.scheme + ":"; }
if (relobj.authority != null) { uri += "//" + relobj.authority; }
uri += relobj.path;
if (relobj.query != null) { uri += "?" + relobj.query; }
if (relobj.fragment != null) { uri += "#" + relobj.fragment; }
}
 
this.uri = uri.toString();
 
// break the uri into its main components
var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
var r = this.uri.match(new RegExp(regexp));
 
this.scheme = r[2] || (r[1] ? "" : null);
this.authority = r[4] || (r[3] ? "" : null);
this.path = r[5]; // can never be undefined
this.query = r[7] || (r[6] ? "" : null);
this.fragment = r[9] || (r[8] ? "" : null);
 
if (this.authority != null) {
// server based naming authority
regexp = "^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
r = this.authority.match(new RegExp(regexp));
 
this.user = r[3] || null;
this.password = r[4] || null;
this.host = r[5];
this.port = r[7] || null;
}
 
this.toString = function(){ return this.uri; }
}
};
 
dojo.provide("dojo.html.style");
 
 
 
dojo.html.getClass = function(/* HTMLElement */node){
// summary
// Returns the string value of the list of CSS classes currently assigned directly
// to the node in question. Returns an empty string if no class attribute is found;
node = dojo.byId(node);
if(!node){ return ""; }
var cs = "";
if(node.className){
cs = node.className;
}else if(dojo.html.hasAttribute(node, "class")){
cs = dojo.html.getAttribute(node, "class");
}
return cs.replace(/^\s+|\s+$/g, ""); // string
}
 
dojo.html.getClasses = function(/* HTMLElement */node) {
// summary
// Returns an array of CSS classes currently assigned directly to the node in question.
// Returns an empty array if no classes are found;
var c = dojo.html.getClass(node);
return (c == "") ? [] : c.split(/\s+/g); // array
}
 
dojo.html.hasClass = function(/* HTMLElement */node, /* string */classname){
// summary
// Returns whether or not the specified classname is a portion of the
// class list currently applied to the node. Does not cover cascaded
// styles, only classes directly applied to the node.
return (new RegExp('(^|\\s+)'+classname+'(\\s+|$)')).test(dojo.html.getClass(node)) // boolean
}
 
dojo.html.prependClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Adds the specified class to the beginning of the class list on the
// passed node. This gives the specified class the highest precidence
// when style cascading is calculated for the node. Returns true or
// false; indicating success or failure of the operation, respectively.
classStr += " " + dojo.html.getClass(node);
return dojo.html.setClass(node, classStr); // boolean
}
 
dojo.html.addClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Adds the specified class to the end of the class list on the
// passed &node;. Returns &true; or &false; indicating success or failure.
if (dojo.html.hasClass(node, classStr)) {
return false;
}
classStr = (dojo.html.getClass(node) + " " + classStr).replace(/^\s+|\s+$/g,"");
return dojo.html.setClass(node, classStr); // boolean
}
 
dojo.html.setClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Clobbers the existing list of classes for the node, replacing it with
// the list given in the 2nd argument. Returns true or false
// indicating success or failure.
node = dojo.byId(node);
var cs = new String(classStr);
try{
if(typeof node.className == "string"){
node.className = cs;
}else if(node.setAttribute){
node.setAttribute("class", classStr);
node.className = cs;
}else{
return false;
}
}catch(e){
dojo.debug("dojo.html.setClass() failed", e);
}
return true;
}
 
dojo.html.removeClass = function(/* HTMLElement */node, /* string */classStr, /* boolean? */allowPartialMatches){
// summary
// Removes the className from the node;. Returns true or false indicating success or failure.
try{
if (!allowPartialMatches) {
var newcs = dojo.html.getClass(node).replace(new RegExp('(^|\\s+)'+classStr+'(\\s+|$)'), "$1$2");
} else {
var newcs = dojo.html.getClass(node).replace(classStr,'');
}
dojo.html.setClass(node, newcs);
}catch(e){
dojo.debug("dojo.html.removeClass() failed", e);
}
return true; // boolean
}
 
dojo.html.replaceClass = function(/* HTMLElement */node, /* string */newClass, /* string */oldClass) {
// summary
// Replaces 'oldClass' and adds 'newClass' to node
dojo.html.removeClass(node, oldClass);
dojo.html.addClass(node, newClass);
}
 
// Enum type for getElementsByClass classMatchType arg:
dojo.html.classMatchType = {
ContainsAll : 0, // all of the classes are part of the node's class (default)
ContainsAny : 1, // any of the classes are part of the node's class
IsOnly : 2 // only all of the classes are part of the node's class
}
 
 
dojo.html.getElementsByClass = function(
/* string */classStr,
/* HTMLElement? */parent,
/* string? */nodeType,
/* integer? */classMatchType,
/* boolean? */useNonXpath
){
// summary
// Returns an array of nodes for the given classStr, children of a
// parent, and optionally of a certain nodeType
// FIXME: temporarily set to false because of several dojo tickets related
// to the xpath version not working consistently in firefox.
useNonXpath = false;
var _document = dojo.doc();
parent = dojo.byId(parent) || _document;
var classes = classStr.split(/\s+/g);
var nodes = [];
if( classMatchType != 1 && classMatchType != 2 ) classMatchType = 0; // make it enum
var reClass = new RegExp("(\\s|^)((" + classes.join(")|(") + "))(\\s|$)");
var srtLength = classes.join(" ").length;
var candidateNodes = [];
if(!useNonXpath && _document.evaluate) { // supports dom 3 xpath
var xpath = ".//" + (nodeType || "*") + "[contains(";
if(classMatchType != dojo.html.classMatchType.ContainsAny){
xpath += "concat(' ',@class,' '), ' " +
classes.join(" ') and contains(concat(' ',@class,' '), ' ") +
" ')";
if (classMatchType == 2) {
xpath += " and string-length(@class)="+srtLength+"]";
}else{
xpath += "]";
}
}else{
xpath += "concat(' ',@class,' '), ' " +
classes.join(" ') or contains(concat(' ',@class,' '), ' ") +
" ')]";
}
var xpathResult = _document.evaluate(xpath, parent, null, XPathResult.ANY_TYPE, null);
var result = xpathResult.iterateNext();
while(result){
try{
candidateNodes.push(result);
result = xpathResult.iterateNext();
}catch(e){ break; }
}
return candidateNodes; // NodeList
}else{
if(!nodeType){
nodeType = "*";
}
candidateNodes = parent.getElementsByTagName(nodeType);
 
var node, i = 0;
outer:
while(node = candidateNodes[i++]){
var nodeClasses = dojo.html.getClasses(node);
if(nodeClasses.length == 0){ continue outer; }
var matches = 0;
for(var j = 0; j < nodeClasses.length; j++){
if(reClass.test(nodeClasses[j])){
if(classMatchType == dojo.html.classMatchType.ContainsAny){
nodes.push(node);
continue outer;
}else{
matches++;
}
}else{
if(classMatchType == dojo.html.classMatchType.IsOnly){
continue outer;
}
}
}
if(matches == classes.length){
if( (classMatchType == dojo.html.classMatchType.IsOnly)&&
(matches == nodeClasses.length)){
nodes.push(node);
}else if(classMatchType == dojo.html.classMatchType.ContainsAll){
nodes.push(node);
}
}
}
return nodes; // NodeList
}
}
dojo.html.getElementsByClassName = dojo.html.getElementsByClass;
 
dojo.html.toCamelCase = function(/* string */selector){
// summary
// Translates a CSS selector string to a camel-cased one.
var arr = selector.split('-'), cc = arr[0];
for(var i = 1; i < arr.length; i++) {
cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
return cc; // string
}
 
dojo.html.toSelectorCase = function(/* string */selector){
// summary
// Translates a camel cased string to a selector cased one.
return selector.replace(/([A-Z])/g, "-$1" ).toLowerCase(); // string
}
 
if (dojo.render.html.ie) {
// IE branch
dojo.html.getComputedStyle = function(/*HTMLElement|String*/node, /*String*/property, /*String*/value) {
// summary
// Get the computed style value for style "property" on "node" (IE).
node = dojo.byId(node); // FIXME: remove ability to access nodes by id for this time-critical function
if(!node || !node.style){return value;}
// FIXME: standardize on camel-case input to improve speed
return node.currentStyle[dojo.html.toCamelCase(property)]; // String
}
// SJM: getComputedStyle should be abandoned and replaced with the below function.
// All our supported browsers can return CSS2 compliant CssStyleDeclaration objects
// which can be queried directly for multiple styles.
dojo.html.getComputedStyles = function(/*HTMLElement*/node) {
// summary
// Get a style object containing computed styles for HTML Element node (IE).
return node.currentStyle; // CSSStyleDeclaration
}
} else {
// non-IE branch
dojo.html.getComputedStyle = function(/*HTMLElement|String*/node, /*String*/property, /*Any*/value) {
// summary
// Get the computed style value for style "property" on "node" (non-IE).
node = dojo.byId(node);
if(!node || !node.style){return value;}
var s = document.defaultView.getComputedStyle(node, null);
// s may be null on Safari
return (s&&s[dojo.html.toCamelCase(property)])||''; // String
}
// SJM: getComputedStyle should be abandoned and replaced with the below function.
// All our supported browsers can return CSS2 compliant CssStyleDeclaration objects
// which can be queried directly for multiple styles.
dojo.html.getComputedStyles = function(node) {
// summary
// Get a style object containing computed styles for HTML Element node (non-IE).
return document.defaultView.getComputedStyle(node, null); // CSSStyleDeclaration
}
}
 
dojo.html.getStyleProperty = function(/* HTMLElement */node, /* string */cssSelector){
// summary
// Returns the value of the passed style
node = dojo.byId(node);
return (node && node.style ? node.style[dojo.html.toCamelCase(cssSelector)] : undefined); // string
}
 
dojo.html.getStyle = function(/* HTMLElement */node, /* string */cssSelector){
// summary
// Returns the computed value of the passed style
var value = dojo.html.getStyleProperty(node, cssSelector);
return (value ? value : dojo.html.getComputedStyle(node, cssSelector)); // string || integer
}
 
dojo.html.setStyle = function(/* HTMLElement */node, /* string */cssSelector, /* string */value){
// summary
// Set the value of passed style on node
node = dojo.byId(node);
if(node && node.style){
var camelCased = dojo.html.toCamelCase(cssSelector);
node.style[camelCased] = value;
}
}
 
dojo.html.setStyleText = function (/* HTMLElement */target, /* string */text) {
// summary
// Try to set the entire cssText property of the passed target; equiv of setting style attribute.
try {
target.style.cssText = text;
} catch (e) {
target.setAttribute("style", text);
}
}
 
dojo.html.copyStyle = function(/* HTMLElement */target, /* HTMLElement */source){
// summary
// work around for opera which doesn't have cssText, and for IE which fails on setAttribute
if(!source.style.cssText){
target.setAttribute("style", source.getAttribute("style"));
}else{
target.style.cssText = source.style.cssText;
}
dojo.html.addClass(target, dojo.html.getClass(source));
}
 
dojo.html.getUnitValue = function(/* HTMLElement */node, /* string */cssSelector, /* boolean? */autoIsZero){
// summary
// Get the value of passed selector, with the specific units used
var s = dojo.html.getComputedStyle(node, cssSelector);
if((!s)||((s == 'auto')&&(autoIsZero))){
return { value: 0, units: 'px' }; // object
}
// FIXME: is regex inefficient vs. parseInt or some manual test?
var match = s.match(/(\-?[\d.]+)([a-z%]*)/i);
if (!match){return dojo.html.getUnitValue.bad;}
return { value: Number(match[1]), units: match[2].toLowerCase() }; // object
}
dojo.html.getUnitValue.bad = { value: NaN, units: '' };
 
if (dojo.render.html.ie) {
// IE branch
dojo.html.toPixelValue = function(/* HTMLElement */element, /* String */styleValue){
// summary
// Extract value in pixels from styleValue (IE version).
// If a value cannot be extracted, zero is returned.
if(!styleValue){return 0;}
if(styleValue.slice(-2) == 'px'){return parseFloat(styleValue);}
var pixelValue = 0;
with(element){
var sLeft = style.left;
var rsLeft = runtimeStyle.left;
runtimeStyle.left = currentStyle.left;
try {
style.left = styleValue || 0;
pixelValue = style.pixelLeft;
style.left = sLeft;
runtimeStyle.left = rsLeft;
}catch(e){
// FIXME: it's possible for styleValue to be incompatible with
// style.left. In particular, border width values of
// "thick", "medium", or "thin" will provoke an exception.
}
}
return pixelValue; // Number
}
} else {
// non-IE branch
dojo.html.toPixelValue = function(/* HTMLElement */element, /* String */styleValue){
// summary
// Extract value in pixels from styleValue (non-IE version).
// If a value cannot be extracted, zero is returned.
return (styleValue && (styleValue.slice(-2)=='px') ? parseFloat(styleValue) : 0); // Number
}
}
 
dojo.html.getPixelValue = function(/* HTMLElement */node, /* string */styleProperty, /* boolean? */autoIsZero){
// summary
// Get a computed style value, in pixels.
// node: HTMLElement
// Node to interrogate
// styleProperty: String
// Style property to query, in either css-selector or camelCase (property) format.
// autoIsZero: Boolean
// Deprecated. Any value that cannot be converted to pixels is returned as zero.
//
// summary
// Get the value of passed selector in pixels.
//
return dojo.html.toPixelValue(node, dojo.html.getComputedStyle(node, styleProperty));
}
 
dojo.html.setPositivePixelValue = function(/* HTMLElement */node, /* string */selector, /* integer */value){
// summary
// Attempt to set the value of selector on node as a positive pixel value.
if(isNaN(value)){return false;}
node.style[selector] = Math.max(0, value) + 'px';
return true; // boolean
}
 
dojo.html.styleSheet = null;
 
// FIXME: this is a really basic stub for adding and removing cssRules, but
// it assumes that you know the index of the cssRule that you want to add
// or remove, making it less than useful. So we need something that can
// search for the selector that you you want to remove.
dojo.html.insertCssRule = function(/* string */selector, /* string */declaration, /* integer? */index) {
// summary
// Attempt to insert declaration as selector on the internal stylesheet; if index try to set it there.
if (!dojo.html.styleSheet) {
if (document.createStyleSheet) { // IE
dojo.html.styleSheet = document.createStyleSheet();
} else if (document.styleSheets[0]) { // rest
// FIXME: should create a new style sheet here
// fall back on an exsiting style sheet
dojo.html.styleSheet = document.styleSheets[0];
} else {
return null; // integer
} // fail
}
 
if (arguments.length < 3) { // index may == 0
if (dojo.html.styleSheet.cssRules) { // W3
index = dojo.html.styleSheet.cssRules.length;
} else if (dojo.html.styleSheet.rules) { // IE
index = dojo.html.styleSheet.rules.length;
} else {
return null; // integer
} // fail
}
 
if (dojo.html.styleSheet.insertRule) { // W3
var rule = selector + " { " + declaration + " }";
return dojo.html.styleSheet.insertRule(rule, index); // integer
} else if (dojo.html.styleSheet.addRule) { // IE
return dojo.html.styleSheet.addRule(selector, declaration, index); // integer
} else {
return null; // integer
} // fail
}
 
dojo.html.removeCssRule = function(/* integer? */index){
// summary
// Attempt to remove the rule at index.
if(!dojo.html.styleSheet){
dojo.debug("no stylesheet defined for removing rules");
return false;
}
if(dojo.render.html.ie){
if(!index){
index = dojo.html.styleSheet.rules.length;
dojo.html.styleSheet.removeRule(index);
}
}else if(document.styleSheets[0]){
if(!index){
index = dojo.html.styleSheet.cssRules.length;
}
dojo.html.styleSheet.deleteRule(index);
}
return true; // boolean
}
 
dojo.html._insertedCssFiles = []; // cache container needed because IE reformats cssText when added to DOM
dojo.html.insertCssFile = function(/* string */URI, /* HTMLDocument? */doc, /* boolean? */checkDuplicates, /* boolean */fail_ok){
// summary
// calls css by XmlHTTP and inserts it into DOM as <style [widgetType="widgetType"]> *downloaded cssText*</style>
if(!URI){ return; }
if(!doc){ doc = document; }
var cssStr = dojo.hostenv.getText(URI, false, fail_ok);
if(cssStr===null){ return; }
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
 
if(checkDuplicates){
var idx = -1, node, ent = dojo.html._insertedCssFiles;
for(var i = 0; i < ent.length; i++){
if((ent[i].doc == doc) && (ent[i].cssText == cssStr)){
idx = i; node = ent[i].nodeRef;
break;
}
}
// make sure we havent deleted our node
if(node){
var styles = doc.getElementsByTagName("style");
for(var i = 0; i < styles.length; i++){
if(styles[i] == node){
return;
}
}
// delete this entry
dojo.html._insertedCssFiles.shift(idx, 1);
}
}
 
var style = dojo.html.insertCssText(cssStr, doc);
dojo.html._insertedCssFiles.push({'doc': doc, 'cssText': cssStr, 'nodeRef': style});
 
// insert custom attribute ex dbgHref="../foo.css" usefull when debugging in DOM inspectors, no?
if(style && djConfig.isDebug){
style.setAttribute("dbgHref", URI);
}
return style; // HTMLStyleElement
}
 
dojo.html.insertCssText = function(/* string */cssStr, /* HTMLDocument? */doc, /* string? */URI){
// summary
// Attempt to insert CSS rules into the document through inserting a style element
// DomNode Style = insertCssText(String ".dojoMenu {color: green;}"[, DomDoc document, dojo.uri.Uri Url ])
if(!cssStr){
return; // HTMLStyleElement
}
if(!doc){ doc = document; }
if(URI){// fix paths in cssStr
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
}
var style = doc.createElement("style");
style.setAttribute("type", "text/css");
// IE is b0rken enough to require that we add the element to the doc
// before changing it's properties
var head = doc.getElementsByTagName("head")[0];
if(!head){ // must have a head tag
dojo.debug("No head tag in document, aborting styles");
return; // HTMLStyleElement
}else{
head.appendChild(style);
}
if(style.styleSheet){// IE
var setFunc = function(){
try{
style.styleSheet.cssText = cssStr;
}catch(e){ dojo.debug(e); }
};
if(style.styleSheet.disabled){
setTimeout(setFunc, 10);
}else{
setFunc();
}
}else{ // w3c
var cssText = doc.createTextNode(cssStr);
style.appendChild(cssText);
}
return style; // HTMLStyleElement
}
 
dojo.html.fixPathsInCssText = function(/* string */cssStr, /* string */URI){
// summary
// usage: cssText comes from dojoroot/src/widget/templates/Foobar.css
// it has .dojoFoo { background-image: url(images/bar.png);} then uri should point to dojoroot/src/widget/templates/
if(!cssStr || !URI){ return; }
var match, str = "", url = "", urlChrs = "[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
var regex = new RegExp('url\\(\\s*('+urlChrs+')\\s*\\)');
var regexProtocol = /(file|https?|ftps?):\/\//;
regexTrim = new RegExp("^[\\s]*(['\"]?)("+urlChrs+")\\1[\\s]*?$");
if(dojo.render.html.ie55 || dojo.render.html.ie60){
var regexIe = new RegExp("AlphaImageLoader\\((.*)src\=['\"]("+urlChrs+")['\"]");
// TODO: need to decide how to handle relative paths and AlphaImageLoader see #1441
// current implementation breaks on build with intern_strings
while(match = regexIe.exec(cssStr)){
url = match[2].replace(regexTrim, "$2");
if(!regexProtocol.exec(url)){
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "AlphaImageLoader(" + match[1] + "src='" + url + "'";
cssStr = cssStr.substr(match.index + match[0].length);
}
cssStr = str + cssStr;
str = "";
}
 
while(match = regex.exec(cssStr)){
url = match[1].replace(regexTrim, "$2");
if(!regexProtocol.exec(url)){
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "url(" + url + ")";
cssStr = cssStr.substr(match.index + match[0].length);
}
return str + cssStr; // string
}
 
dojo.html.setActiveStyleSheet = function(/* string */title){
// summary
// Activate style sheet with specified title.
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")){
a.disabled = true;
if (a.getAttribute("title") == title) { a.disabled = false; }
}
}
}
 
dojo.html.getActiveStyleSheet = function(){
// summary
// return the title of the currently active stylesheet
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if (a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("title")
&& !a.disabled
){
return a.getAttribute("title"); // string
}
}
return null; // string
}
 
dojo.html.getPreferredStyleSheet = function(){
// summary
// Return the preferred stylesheet title (i.e. link without alt attribute)
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("rel").indexOf("alt") == -1
&& a.getAttribute("title")
){
return a.getAttribute("title"); // string
}
}
return null; // string
}
 
dojo.html.applyBrowserClass = function(/* HTMLElement */node){
// summary
// Applies pre-set class names based on browser & version to the passed node.
// Modified version of Morris' CSS hack.
var drh=dojo.render.html;
var classes = {
dj_ie: drh.ie,
dj_ie55: drh.ie55,
dj_ie6: drh.ie60,
dj_ie7: drh.ie70,
dj_iequirks: drh.ie && drh.quirks,
dj_opera: drh.opera,
dj_opera8: drh.opera && (Math.floor(dojo.render.version)==8),
dj_opera9: drh.opera && (Math.floor(dojo.render.version)==9),
dj_khtml: drh.khtml,
dj_safari: drh.safari,
dj_gecko: drh.mozilla
}; // no dojo unsupported browsers
for(var p in classes){
if(classes[p]){
dojo.html.addClass(node, p);
}
}
};
 
dojo.provide("dojo.html.display");
 
 
dojo.html._toggle = function(node, tester, setter){
node = dojo.byId(node);
setter(node, !tester(node));
return tester(node);
}
 
dojo.html.show = function(/* HTMLElement */node){
// summary
// Show the passed element by reverting display property set by dojo.html.hide
node = dojo.byId(node);
if(dojo.html.getStyleProperty(node, 'display')=='none'){
dojo.html.setStyle(node, 'display', (node.dojoDisplayCache||''));
node.dojoDisplayCache = undefined; // cannot use delete on a node in IE6
}
}
 
dojo.html.hide = function(/* HTMLElement */node){
// summary
// Hide the passed element by setting display:none
node = dojo.byId(node);
if(typeof node["dojoDisplayCache"] == "undefined"){ // it could == '', so we cannot say !node.dojoDisplayCount
var d = dojo.html.getStyleProperty(node, 'display')
if(d!='none'){
node.dojoDisplayCache = d;
}
}
dojo.html.setStyle(node, 'display', 'none');
}
 
dojo.html.setShowing = function(/* HTMLElement */node, /* boolean? */showing){
// summary
// Calls show() if showing is true, hide() otherwise
dojo.html[(showing ? 'show' : 'hide')](node);
}
 
dojo.html.isShowing = function(/* HTMLElement */node){
// summary
// Returns whether the element is displayed or not.
// FIXME: returns true if node is bad, isHidden would be easier to make correct
return (dojo.html.getStyleProperty(node, 'display') != 'none'); // boolean
}
 
dojo.html.toggleShowing = function(/* HTMLElement */node){
// summary
// Call setShowing() on node with the complement of isShowing(), then return the new value of isShowing()
return dojo.html._toggle(node, dojo.html.isShowing, dojo.html.setShowing); // boolean
}
 
// Simple mapping of tag names to display values
// FIXME: simplistic
dojo.html.displayMap = { tr: '', td: '', th: '', img: 'inline', span: 'inline', input: 'inline', button: 'inline' };
 
dojo.html.suggestDisplayByTagName = function(/* HTMLElement */node){
// summary
// Suggest a value for the display property that will show 'node' based on it's tag
node = dojo.byId(node);
if(node && node.tagName){
var tag = node.tagName.toLowerCase();
return (tag in dojo.html.displayMap ? dojo.html.displayMap[tag] : 'block'); // string
}
}
 
dojo.html.setDisplay = function(/* HTMLElement */node, /* string */display){
// summary
// Sets the value of style.display to value of 'display' parameter if it is a string.
// Otherwise, if 'display' is false, set style.display to 'none'.
// Finally, set 'display' to a suggested display value based on the node's tag
dojo.html.setStyle(node, 'display', ((display instanceof String || typeof display == "string") ? display : (display ? dojo.html.suggestDisplayByTagName(node) : 'none')));
}
 
dojo.html.isDisplayed = function(/* HTMLElement */node){
// summary
// Is true if the the computed display style for node is not 'none'
// FIXME: returns true if node is bad, isNotDisplayed would be easier to make correct
return (dojo.html.getComputedStyle(node, 'display') != 'none'); // boolean
}
 
dojo.html.toggleDisplay = function(/* HTMLElement */node){
// summary
// Call setDisplay() on node with the complement of isDisplayed(), then
// return the new value of isDisplayed()
return dojo.html._toggle(node, dojo.html.isDisplayed, dojo.html.setDisplay); // boolean
}
 
dojo.html.setVisibility = function(/* HTMLElement */node, /* string */visibility){
// summary
// Sets the value of style.visibility to value of 'visibility' parameter if it is a string.
// Otherwise, if 'visibility' is false, set style.visibility to 'hidden'. Finally, set style.visibility to 'visible'.
dojo.html.setStyle(node, 'visibility', ((visibility instanceof String || typeof visibility == "string") ? visibility : (visibility ? 'visible' : 'hidden')));
}
 
dojo.html.isVisible = function(/* HTMLElement */node){
// summary
// Returns true if the the computed visibility style for node is not 'hidden'
// FIXME: returns true if node is bad, isInvisible would be easier to make correct
return (dojo.html.getComputedStyle(node, 'visibility') != 'hidden'); // boolean
}
 
dojo.html.toggleVisibility = function(node){
// summary
// Call setVisibility() on node with the complement of isVisible(), then return the new value of isVisible()
return dojo.html._toggle(node, dojo.html.isVisible, dojo.html.setVisibility); // boolean
}
 
dojo.html.setOpacity = function(/* HTMLElement */node, /* float */opacity, /* boolean? */dontFixOpacity){
// summary
// Sets the opacity of node in a cross-browser way.
// float between 0.0 (transparent) and 1.0 (opaque)
node = dojo.byId(node);
var h = dojo.render.html;
if(!dontFixOpacity){
if( opacity >= 1.0){
if(h.ie){
dojo.html.clearOpacity(node);
return;
}else{
opacity = 0.999999;
}
}else if( opacity < 0.0){ opacity = 0; }
}
if(h.ie){
if(node.nodeName.toLowerCase() == "tr"){
// FIXME: is this too naive? will we get more than we want?
var tds = node.getElementsByTagName("td");
for(var x=0; x<tds.length; x++){
tds[x].style.filter = "Alpha(Opacity="+opacity*100+")";
}
}
node.style.filter = "Alpha(Opacity="+opacity*100+")";
}else if(h.moz){
node.style.opacity = opacity; // ffox 1.0 directly supports "opacity"
node.style.MozOpacity = opacity;
}else if(h.safari){
node.style.opacity = opacity; // 1.3 directly supports "opacity"
node.style.KhtmlOpacity = opacity;
}else{
node.style.opacity = opacity;
}
}
 
dojo.html.clearOpacity = function(/* HTMLElement */node){
// summary
// Clears any opacity setting on the passed element.
node = dojo.byId(node);
var ns = node.style;
var h = dojo.render.html;
if(h.ie){
try {
if( node.filters && node.filters.alpha ){
ns.filter = ""; // FIXME: may get rid of other filter effects
}
} catch(e) {
/*
* IE7 gives error if node.filters not set;
* don't know why or how to workaround (other than this)
*/
}
}else if(h.moz){
ns.opacity = 1;
ns.MozOpacity = 1;
}else if(h.safari){
ns.opacity = 1;
ns.KhtmlOpacity = 1;
}else{
ns.opacity = 1;
}
}
 
dojo.html.getOpacity = function(/* HTMLElement */node){
// summary
// Returns the opacity of the passed element
node = dojo.byId(node);
var h = dojo.render.html;
if(h.ie){
var opac = (node.filters && node.filters.alpha &&
typeof node.filters.alpha.opacity == "number"
? node.filters.alpha.opacity : 100) / 100;
}else{
var opac = node.style.opacity || node.style.MozOpacity ||
node.style.KhtmlOpacity || 1;
}
return opac >= 0.999999 ? 1.0 : Number(opac); // float
}
 
 
dojo.provide("dojo.html.color");
 
 
 
 
dojo.html.getBackgroundColor = function(/* HTMLElement */node){
// summary
// returns the background color of the passed node as a 32-bit color (RGBA)
node = dojo.byId(node);
var color;
do{
color = dojo.html.getStyle(node, "background-color");
// Safari doesn't say "transparent"
if(color.toLowerCase() == "rgba(0, 0, 0, 0)") { color = "transparent"; }
if(node == document.getElementsByTagName("body")[0]) { node = null; break; }
node = node.parentNode;
}while(node && dojo.lang.inArray(["transparent", ""], color));
if(color == "transparent"){
color = [255, 255, 255, 0];
}else{
color = dojo.gfx.color.extractRGB(color);
}
return color; // array
}
 
dojo.provide("dojo.html.layout");
 
 
 
 
 
dojo.html.sumAncestorProperties = function(/* HTMLElement */node, /* string */prop){
// summary
// Returns the sum of the passed property on all ancestors of node.
node = dojo.byId(node);
if(!node){ return 0; } // FIXME: throw an error?
var retVal = 0;
while(node){
if(dojo.html.getComputedStyle(node, 'position') == 'fixed'){
return 0;
}
var val = node[prop];
if(val){
retVal += val - 0;
if(node==dojo.body()){ break; }// opera and khtml #body & #html has the same values, we only need one value
}
node = node.parentNode;
}
return retVal; // integer
}
 
dojo.html.setStyleAttributes = function(/* HTMLElement */node, /* string */attributes) {
// summary
// allows a dev to pass a string similar to what you'd pass in style="", and apply it to a node.
node = dojo.byId(node);
var splittedAttribs=attributes.replace(/(;)?\s*$/, "").split(";");
for(var i=0; i<splittedAttribs.length; i++){
var nameValue=splittedAttribs[i].split(":");
var name=nameValue[0].replace(/\s*$/, "").replace(/^\s*/, "").toLowerCase();
var value=nameValue[1].replace(/\s*$/, "").replace(/^\s*/, "");
switch(name){
case "opacity":
dojo.html.setOpacity(node, value);
break;
case "content-height":
dojo.html.setContentBox(node, {height: value});
break;
case "content-width":
dojo.html.setContentBox(node, {width: value});
break;
case "outer-height":
dojo.html.setMarginBox(node, {height: value});
break;
case "outer-width":
dojo.html.setMarginBox(node, {width: value});
break;
default:
node.style[dojo.html.toCamelCase(name)]=value;
}
}
}
 
dojo.html.boxSizing = {
MARGIN_BOX: "margin-box",
BORDER_BOX: "border-box",
PADDING_BOX: "padding-box",
CONTENT_BOX: "content-box"
};
 
dojo.html.getAbsolutePosition = dojo.html.abs = function(/* HTMLElement */node, /* boolean? */includeScroll, /* string? */boxType){
// summary
// Gets the absolute position of the passed element based on the document itself.
node = dojo.byId(node, node.ownerDocument);
var ret = {
x: 0,
y: 0
};
 
var bs = dojo.html.boxSizing;
if(!boxType) { boxType = bs.CONTENT_BOX; }
var nativeBoxType = 2; //BORDER box
var targetBoxType;
switch(boxType){
case bs.MARGIN_BOX:
targetBoxType = 3;
break;
case bs.BORDER_BOX:
targetBoxType = 2;
break;
case bs.PADDING_BOX:
default:
targetBoxType = 1;
break;
case bs.CONTENT_BOX:
targetBoxType = 0;
break;
}
 
var h = dojo.render.html;
var db = document["body"]||document["documentElement"];
 
if(h.ie){
with(node.getBoundingClientRect()){
ret.x = left-2;
ret.y = top-2;
}
}else if(document.getBoxObjectFor){
// mozilla
nativeBoxType = 1; //getBoxObjectFor return padding box coordinate
try{
var bo = document.getBoxObjectFor(node);
ret.x = bo.x - dojo.html.sumAncestorProperties(node, "scrollLeft");
ret.y = bo.y - dojo.html.sumAncestorProperties(node, "scrollTop");
}catch(e){
// squelch
}
}else{
if(node["offsetParent"]){
var endNode;
// in Safari, if the node is an absolutely positioned child of
// the body and the body has a margin the offset of the child
// and the body contain the body's margins, so we need to end
// at the body
if( (h.safari)&&
(node.style.getPropertyValue("position") == "absolute")&&
(node.parentNode == db)){
endNode = db;
}else{
endNode = db.parentNode;
}
 
//TODO: set correct nativeBoxType for safari/konqueror
 
if(node.parentNode != db){
var nd = node;
if(dojo.render.html.opera){ nd = db; }
ret.x -= dojo.html.sumAncestorProperties(nd, "scrollLeft");
ret.y -= dojo.html.sumAncestorProperties(nd, "scrollTop");
}
var curnode = node;
do{
var n = curnode["offsetLeft"];
//FIXME: ugly hack to workaround the submenu in
//popupmenu2 does not shown up correctly in opera.
//Someone have a better workaround?
if(!h.opera || n>0){
ret.x += isNaN(n) ? 0 : n;
}
var m = curnode["offsetTop"];
ret.y += isNaN(m) ? 0 : m;
curnode = curnode.offsetParent;
}while((curnode != endNode)&&(curnode != null));
}else if(node["x"]&&node["y"]){
ret.x += isNaN(node.x) ? 0 : node.x;
ret.y += isNaN(node.y) ? 0 : node.y;
}
}
 
// account for document scrolling!
if(includeScroll){
var scroll = dojo.html.getScroll();
ret.y += scroll.top;
ret.x += scroll.left;
}
 
var extentFuncArray=[dojo.html.getPaddingExtent, dojo.html.getBorderExtent, dojo.html.getMarginExtent];
if(nativeBoxType > targetBoxType){
for(var i=targetBoxType;i<nativeBoxType;++i){
ret.y += extentFuncArray[i](node, 'top');
ret.x += extentFuncArray[i](node, 'left');
}
}else if(nativeBoxType < targetBoxType){
for(var i=targetBoxType;i>nativeBoxType;--i){
ret.y -= extentFuncArray[i-1](node, 'top');
ret.x -= extentFuncArray[i-1](node, 'left');
}
}
ret.top = ret.y;
ret.left = ret.x;
return ret; // object
}
 
dojo.html.isPositionAbsolute = function(/* HTMLElement */node){
// summary
// Returns true if the element is absolutely positioned.
return (dojo.html.getComputedStyle(node, 'position') == 'absolute'); // boolean
}
 
dojo.html._sumPixelValues = function(/* HTMLElement */node, selectors, autoIsZero){
var total = 0;
for(var x=0; x<selectors.length; x++){
total += dojo.html.getPixelValue(node, selectors[x], autoIsZero);
}
return total;
}
 
dojo.html.getMargin = function(/* HTMLElement */node){
// summary
// Returns the width and height of the passed node's margin
return {
width: dojo.html._sumPixelValues(node, ["margin-left", "margin-right"], (dojo.html.getComputedStyle(node, 'position') == 'absolute')),
height: dojo.html._sumPixelValues(node, ["margin-top", "margin-bottom"], (dojo.html.getComputedStyle(node, 'position') == 'absolute'))
}; // object
}
 
dojo.html.getBorder = function(/* HTMLElement */node){
// summary
// Returns the width and height of the passed node's border
return {
width: dojo.html.getBorderExtent(node, 'left') + dojo.html.getBorderExtent(node, 'right'),
height: dojo.html.getBorderExtent(node, 'top') + dojo.html.getBorderExtent(node, 'bottom')
}; // object
}
 
dojo.html.getBorderExtent = function(/* HTMLElement */node, /* string */side){
// summary
// returns the width of the requested border
return (dojo.html.getStyle(node, 'border-' + side + '-style') == 'none' ? 0 : dojo.html.getPixelValue(node, 'border-' + side + '-width')); // integer
}
 
dojo.html.getMarginExtent = function(/* HTMLElement */node, /* string */side){
// summary
// returns the width of the requested margin
return dojo.html._sumPixelValues(node, ["margin-" + side], dojo.html.isPositionAbsolute(node)); // integer
}
 
dojo.html.getPaddingExtent = function(/* HTMLElement */node, /* string */side){
// summary
// Returns the width of the requested padding
return dojo.html._sumPixelValues(node, ["padding-" + side], true); // integer
}
 
dojo.html.getPadding = function(/* HTMLElement */node){
// summary
// Returns the width and height of the passed node's padding
return {
width: dojo.html._sumPixelValues(node, ["padding-left", "padding-right"], true),
height: dojo.html._sumPixelValues(node, ["padding-top", "padding-bottom"], true)
}; // object
}
 
dojo.html.getPadBorder = function(/* HTMLElement */node){
// summary
// Returns the width and height of the passed node's padding and border
var pad = dojo.html.getPadding(node);
var border = dojo.html.getBorder(node);
return { width: pad.width + border.width, height: pad.height + border.height }; // object
}
 
dojo.html.getBoxSizing = function(/* HTMLElement */node){
// summary
// Returns which box model the passed element is working with
var h = dojo.render.html;
var bs = dojo.html.boxSizing;
if(((h.ie)||(h.opera)) && node.nodeName.toLowerCase() != "img"){
var cm = document["compatMode"];
if((cm == "BackCompat")||(cm == "QuirksMode")){
return bs.BORDER_BOX; // string
}else{
return bs.CONTENT_BOX; // string
}
}else{
if(arguments.length == 0){ node = document.documentElement; }
var sizing;
if(!h.ie){
sizing = dojo.html.getStyle(node, "-moz-box-sizing");
if(!sizing){
sizing = dojo.html.getStyle(node, "box-sizing");
}
}
return (sizing ? sizing : bs.CONTENT_BOX); // string
}
}
 
dojo.html.isBorderBox = function(/* HTMLElement */node){
// summary
// returns whether the passed element is using border box sizing or not.
return (dojo.html.getBoxSizing(node) == dojo.html.boxSizing.BORDER_BOX); // boolean
}
 
dojo.html.getBorderBox = function(/* HTMLElement */node){
// summary
// Returns the dimensions of the passed element based on border-box sizing.
node = dojo.byId(node);
return { width: node.offsetWidth, height: node.offsetHeight }; // object
}
 
dojo.html.getPaddingBox = function(/* HTMLElement */node){
// summary
// Returns the dimensions of the padding box (see http://www.w3.org/TR/CSS21/box.html)
var box = dojo.html.getBorderBox(node);
var border = dojo.html.getBorder(node);
return {
width: box.width - border.width,
height:box.height - border.height
}; // object
}
 
dojo.html.getContentBox = function(/* HTMLElement */node){
// summary
// Returns the dimensions of the content box (see http://www.w3.org/TR/CSS21/box.html)
node = dojo.byId(node);
var padborder = dojo.html.getPadBorder(node);
return {
width: node.offsetWidth - padborder.width,
height: node.offsetHeight - padborder.height
}; // object
}
 
dojo.html.setContentBox = function(/* HTMLElement */node, /* object */args){
// summary
// Sets the dimensions of the passed node according to content sizing.
node = dojo.byId(node);
var width = 0; var height = 0;
var isbb = dojo.html.isBorderBox(node);
var padborder = (isbb ? dojo.html.getPadBorder(node) : { width: 0, height: 0});
var ret = {};
if(typeof args.width != "undefined"){
width = args.width + padborder.width;
ret.width = dojo.html.setPositivePixelValue(node, "width", width);
}
if(typeof args.height != "undefined"){
height = args.height + padborder.height;
ret.height = dojo.html.setPositivePixelValue(node, "height", height);
}
return ret; // object
}
 
dojo.html.getMarginBox = function(/* HTMLElement */node){
// summary
// returns the dimensions of the passed node including any margins.
var borderbox = dojo.html.getBorderBox(node);
var margin = dojo.html.getMargin(node);
return { width: borderbox.width + margin.width, height: borderbox.height + margin.height }; // object
}
 
dojo.html.setMarginBox = function(/* HTMLElement */node, /* object */args){
// summary
// Sets the dimensions of the passed node using margin box calcs.
node = dojo.byId(node);
var width = 0; var height = 0;
var isbb = dojo.html.isBorderBox(node);
var padborder = (!isbb ? dojo.html.getPadBorder(node) : { width: 0, height: 0 });
var margin = dojo.html.getMargin(node);
var ret = {};
if(typeof args.width != "undefined"){
width = args.width - padborder.width;
width -= margin.width;
ret.width = dojo.html.setPositivePixelValue(node, "width", width);
}
if(typeof args.height != "undefined"){
height = args.height - padborder.height;
height -= margin.height;
ret.height = dojo.html.setPositivePixelValue(node, "height", height);
}
return ret; // object
}
 
dojo.html.getElementBox = function(/* HTMLElement */node, /* string */type){
// summary
// return dimesions of a node based on the passed box model type.
var bs = dojo.html.boxSizing;
switch(type){
case bs.MARGIN_BOX:
return dojo.html.getMarginBox(node); // object
case bs.BORDER_BOX:
return dojo.html.getBorderBox(node); // object
case bs.PADDING_BOX:
return dojo.html.getPaddingBox(node); // object
case bs.CONTENT_BOX:
default:
return dojo.html.getContentBox(node); // object
}
}
// in: coordinate array [x,y,w,h] or dom node
// return: coordinate object
dojo.html.toCoordinateObject = dojo.html.toCoordinateArray = function(/* array */coords, /* boolean? */includeScroll, /* string? */boxtype) {
// summary
// Converts an array of coordinates into an object of named arguments.
if(coords instanceof Array || typeof coords == "array"){
dojo.deprecated("dojo.html.toCoordinateArray", "use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead", "0.5");
// coords is already an array (of format [x,y,w,h]), just return it
while ( coords.length < 4 ) { coords.push(0); }
while ( coords.length > 4 ) { coords.pop(); }
var ret = {
left: coords[0],
top: coords[1],
width: coords[2],
height: coords[3]
};
}else if(!coords.nodeType && !(coords instanceof String || typeof coords == "string") &&
('width' in coords || 'height' in coords || 'left' in coords ||
'x' in coords || 'top' in coords || 'y' in coords)){
// coords is a coordinate object or at least part of one
var ret = {
left: coords.left||coords.x||0,
top: coords.top||coords.y||0,
width: coords.width||0,
height: coords.height||0
};
}else{
// coords is an dom object (or dom object id); return it's coordinates
var node = dojo.byId(coords);
var pos = dojo.html.abs(node, includeScroll, boxtype);
var marginbox = dojo.html.getMarginBox(node);
var ret = {
left: pos.left,
top: pos.top,
width: marginbox.width,
height: marginbox.height
};
}
ret.x = ret.left;
ret.y = ret.top;
return ret; // object
}
 
dojo.html.setMarginBoxWidth = dojo.html.setOuterWidth = function(node, width){
return dojo.html._callDeprecated("setMarginBoxWidth", "setMarginBox", arguments, "width");
}
dojo.html.setMarginBoxHeight = dojo.html.setOuterHeight = function(){
return dojo.html._callDeprecated("setMarginBoxHeight", "setMarginBox", arguments, "height");
}
dojo.html.getMarginBoxWidth = dojo.html.getOuterWidth = function(){
return dojo.html._callDeprecated("getMarginBoxWidth", "getMarginBox", arguments, null, "width");
}
dojo.html.getMarginBoxHeight = dojo.html.getOuterHeight = function(){
return dojo.html._callDeprecated("getMarginBoxHeight", "getMarginBox", arguments, null, "height");
}
dojo.html.getTotalOffset = function(node, type, includeScroll){
return dojo.html._callDeprecated("getTotalOffset", "getAbsolutePosition", arguments, null, type);
}
dojo.html.getAbsoluteX = function(node, includeScroll){
return dojo.html._callDeprecated("getAbsoluteX", "getAbsolutePosition", arguments, null, "x");
}
dojo.html.getAbsoluteY = function(node, includeScroll){
return dojo.html._callDeprecated("getAbsoluteY", "getAbsolutePosition", arguments, null, "y");
}
dojo.html.totalOffsetLeft = function(node, includeScroll){
return dojo.html._callDeprecated("totalOffsetLeft", "getAbsolutePosition", arguments, null, "left");
}
dojo.html.totalOffsetTop = function(node, includeScroll){
return dojo.html._callDeprecated("totalOffsetTop", "getAbsolutePosition", arguments, null, "top");
}
dojo.html.getMarginWidth = function(node){
return dojo.html._callDeprecated("getMarginWidth", "getMargin", arguments, null, "width");
}
dojo.html.getMarginHeight = function(node){
return dojo.html._callDeprecated("getMarginHeight", "getMargin", arguments, null, "height");
}
dojo.html.getBorderWidth = function(node){
return dojo.html._callDeprecated("getBorderWidth", "getBorder", arguments, null, "width");
}
dojo.html.getBorderHeight = function(node){
return dojo.html._callDeprecated("getBorderHeight", "getBorder", arguments, null, "height");
}
dojo.html.getPaddingWidth = function(node){
return dojo.html._callDeprecated("getPaddingWidth", "getPadding", arguments, null, "width");
}
dojo.html.getPaddingHeight = function(node){
return dojo.html._callDeprecated("getPaddingHeight", "getPadding", arguments, null, "height");
}
dojo.html.getPadBorderWidth = function(node){
return dojo.html._callDeprecated("getPadBorderWidth", "getPadBorder", arguments, null, "width");
}
dojo.html.getPadBorderHeight = function(node){
return dojo.html._callDeprecated("getPadBorderHeight", "getPadBorder", arguments, null, "height");
}
dojo.html.getBorderBoxWidth = dojo.html.getInnerWidth = function(){
return dojo.html._callDeprecated("getBorderBoxWidth", "getBorderBox", arguments, null, "width");
}
dojo.html.getBorderBoxHeight = dojo.html.getInnerHeight = function(){
return dojo.html._callDeprecated("getBorderBoxHeight", "getBorderBox", arguments, null, "height");
}
dojo.html.getContentBoxWidth = dojo.html.getContentWidth = function(){
return dojo.html._callDeprecated("getContentBoxWidth", "getContentBox", arguments, null, "width");
}
dojo.html.getContentBoxHeight = dojo.html.getContentHeight = function(){
return dojo.html._callDeprecated("getContentBoxHeight", "getContentBox", arguments, null, "height");
}
dojo.html.setContentBoxWidth = dojo.html.setContentWidth = function(node, width){
return dojo.html._callDeprecated("setContentBoxWidth", "setContentBox", arguments, "width");
}
dojo.html.setContentBoxHeight = dojo.html.setContentHeight = function(node, height){
return dojo.html._callDeprecated("setContentBoxHeight", "setContentBox", arguments, "height");
}
 
dojo.provide("dojo.lfx.html");
 
 
 
 
 
 
 
 
dojo.lfx.html._byId = function(nodes){
if(!nodes){ return []; }
if(dojo.lang.isArrayLike(nodes)){
if(!nodes.alreadyChecked){
var n = [];
dojo.lang.forEach(nodes, function(node){
n.push(dojo.byId(node));
});
n.alreadyChecked = true;
return n;
}else{
return nodes;
}
}else{
var n = [];
n.push(dojo.byId(nodes));
n.alreadyChecked = true;
return n;
}
}
 
dojo.lfx.html.propertyAnimation = function( /*DOMNode[]*/ nodes,
/*Object[]*/ propertyMap,
/*int*/ duration,
/*function*/ easing,
/*Object*/ handlers){
// summary: Returns an animation that will transition the properties of "nodes"
// depending how they are defined in "propertyMap".
// nodes: An array of DOMNodes or one DOMNode.
// propertyMap: { property: String, start: Decimal?, end: Decimal?, units: String? }
// An array of objects defining properties to change.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// handlers: { handler: Function?, onstart: Function?, onstop: Function?, onanimate: Function? }
nodes = dojo.lfx.html._byId(nodes);
 
var targs = {
"propertyMap": propertyMap,
"nodes": nodes,
"duration": duration,
"easing": easing||dojo.lfx.easeDefault
};
var setEmUp = function(args){
if(args.nodes.length==1){
// FIXME: we're only supporting start-value filling when one node is
// passed
var pm = args.propertyMap;
if(!dojo.lang.isArray(args.propertyMap)){
// it's stupid to have to pack an array with a set of objects
// when you can just pass in an object list
var parr = [];
for(var pname in pm){
pm[pname].property = pname;
parr.push(pm[pname]);
}
pm = args.propertyMap = parr;
}
dojo.lang.forEach(pm, function(prop){
if(dj_undef("start", prop)){
if(prop.property != "opacity"){
prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property));
}else{
prop.start = dojo.html.getOpacity(args.nodes[0]);
}
}
});
}
}
 
var coordsAsInts = function(coords){
var cints = [];
dojo.lang.forEach(coords, function(c){
cints.push(Math.round(c));
});
return cints;
}
 
var setStyle = function(n, style){
n = dojo.byId(n);
if(!n || !n.style){ return; }
for(var s in style){
try{
if(s == "opacity"){
dojo.html.setOpacity(n, style[s]);
}else{
n.style[s] = style[s];
}
}catch(e){ dojo.debug(e); }
}
}
 
var propLine = function(properties){
this._properties = properties;
this.diffs = new Array(properties.length);
dojo.lang.forEach(properties, function(prop, i){
// calculate the end - start to optimize a bit
if(dojo.lang.isFunction(prop.start)){
prop.start = prop.start(prop, i);
}
if(dojo.lang.isFunction(prop.end)){
prop.end = prop.end(prop, i);
}
if(dojo.lang.isArray(prop.start)){
// don't loop through the arrays
this.diffs[i] = null;
}else if(prop.start instanceof dojo.gfx.color.Color){
// save these so we don't have to call toRgb() every getValue() call
prop.startRgb = prop.start.toRgb();
prop.endRgb = prop.end.toRgb();
}else{
this.diffs[i] = prop.end - prop.start;
}
}, this);
 
this.getValue = function(n){
var ret = {};
dojo.lang.forEach(this._properties, function(prop, i){
var value = null;
if(dojo.lang.isArray(prop.start)){
// FIXME: what to do here?
}else if(prop.start instanceof dojo.gfx.color.Color){
value = (prop.units||"rgb") + "(";
for(var j = 0 ; j < prop.startRgb.length ; j++){
value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : "");
}
value += ")";
}else{
value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units||"px" : "");
}
ret[dojo.html.toCamelCase(prop.property)] = value;
}, this);
return ret;
}
}
var anim = new dojo.lfx.Animation({
beforeBegin: function(){
setEmUp(targs);
anim.curve = new propLine(targs.propertyMap);
},
onAnimate: function(propValues){
dojo.lang.forEach(targs.nodes, function(node){
setStyle(node, propValues);
});
}
},
targs.duration,
null,
targs.easing
);
if(handlers){
for(var x in handlers){
if(dojo.lang.isFunction(handlers[x])){
anim.connect(x, anim, handlers[x]);
}
}
}
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html._makeFadeable = function(nodes){
var makeFade = function(node){
if(dojo.render.html.ie){
// only set the zoom if the "tickle" value would be the same as the
// default
if( (node.style.zoom.length == 0) &&
(dojo.html.getStyle(node, "zoom") == "normal") ){
// make sure the node "hasLayout"
// NOTE: this has been tested with larger and smaller user-set text
// sizes and works fine
node.style.zoom = "1";
// node.style.zoom = "normal";
}
// don't set the width to auto if it didn't already cascade that way.
// We don't want to f anyones designs
if( (node.style.width.length == 0) &&
(dojo.html.getStyle(node, "width") == "auto") ){
node.style.width = "auto";
}
}
}
if(dojo.lang.isArrayLike(nodes)){
dojo.lang.forEach(nodes, makeFade);
}else{
makeFade(nodes);
}
}
 
dojo.lfx.html.fade = function(/*DOMNode[]*/ nodes,
/*Object*/values,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary:Returns an animation that will fade the "nodes" from the start to end values passed.
// nodes: An array of DOMNodes or one DOMNode.
// values: { start: Decimal?, end: Decimal? }
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var props = { property: "opacity" };
if(!dj_undef("start", values)){
props.start = values.start;
}else{
props.start = function(){ return dojo.html.getOpacity(nodes[0]); };
}
 
if(!dj_undef("end", values)){
props.end = values.end;
}else{
dojo.raise("dojo.lfx.html.fade needs an end value");
}
 
var anim = dojo.lfx.propertyAnimation(nodes, [ props ], duration, easing);
anim.connect("beforeBegin", function(){
dojo.lfx.html._makeFadeable(nodes);
});
if(callback){
anim.connect("onEnd", function(){ callback(nodes, anim); });
}
 
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html.fadeIn = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will fade "nodes" from its current opacity to fully opaque.
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
return dojo.lfx.html.fade(nodes, { end: 1 }, duration, easing, callback); // dojo.lfx.Animation
}
 
dojo.lfx.html.fadeOut = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will fade "nodes" from its current opacity to fully transparent.
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
return dojo.lfx.html.fade(nodes, { end: 0 }, duration, easing, callback); // dojo.lfx.Animation
}
 
dojo.lfx.html.fadeShow = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will fade "nodes" from transparent to opaque and shows
// "nodes" at the end if it is hidden.
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes=dojo.lfx.html._byId(nodes);
dojo.lang.forEach(nodes, function(node){
dojo.html.setOpacity(node, 0.0);
});
 
var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback);
anim.connect("beforeBegin", function(){
if(dojo.lang.isArrayLike(nodes)){
dojo.lang.forEach(nodes, dojo.html.show);
}else{
dojo.html.show(nodes);
}
});
 
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html.fadeHide = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will fade "nodes" from its current opacity to opaque and hides
// "nodes" at the end.
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function(){
if(dojo.lang.isArrayLike(nodes)){
dojo.lang.forEach(nodes, dojo.html.hide);
}else{
dojo.html.hide(nodes);
}
if(callback){ callback(nodes, anim); }
});
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html.wipeIn = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will show and wipe in "nodes".
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
 
dojo.lang.forEach(nodes, function(node){
var oprop = { }; // old properties of node (before we mucked w/them)
// get node height, either it's natural height or it's height specified via style or class attributes
// (for FF, the node has to be (temporarily) rendered to measure height)
// TODO: should this offscreen code be part of dojo.html, so that getBorderBox() works on hidden nodes?
var origTop, origLeft, origPosition;
with(node.style){
origTop=top; origLeft=left; origPosition=position;
top="-9999px"; left="-9999px"; position="absolute";
display="";
}
var nodeHeight = dojo.html.getBorderBox(node).height;
with(node.style){
top=origTop; left=origLeft; position=origPosition;
display="none";
}
 
var anim = dojo.lfx.propertyAnimation(node,
{ "height": {
start: 1, // 0 causes IE to display the whole panel
end: function(){ return nodeHeight; }
}
},
duration,
easing);
anim.connect("beforeBegin", function(){
oprop.overflow = node.style.overflow;
oprop.height = node.style.height;
with(node.style){
overflow = "hidden";
height = "1px"; // 0 causes IE to display the whole panel
}
dojo.html.show(node);
});
anim.connect("onEnd", function(){
with(node.style){
overflow = oprop.overflow;
height = oprop.height;
}
if(callback){ callback(node, anim); }
});
anims.push(anim);
});
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.html.wipeOut = function(/*DOMNode[]*/ nodes, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will wipe out and hide "nodes".
// nodes: An array of DOMNodes or one DOMNode.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function(node){
var oprop = { }; // old properties of node (before we mucked w/them)
var anim = dojo.lfx.propertyAnimation(node,
{ "height": {
start: function(){ return dojo.html.getContentBox(node).height; },
end: 1 // 0 causes IE to display the whole panel
}
},
duration,
easing,
{
"beforeBegin": function(){
oprop.overflow = node.style.overflow;
oprop.height = node.style.height;
with(node.style){
overflow = "hidden";
}
dojo.html.show(node);
},
"onEnd": function(){
dojo.html.hide(node);
with(node.style){
overflow = oprop.overflow;
height = oprop.height;
}
if(callback){ callback(node, anim); }
}
}
);
anims.push(anim);
});
 
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.html.slideTo = function(/*DOMNode*/ nodes,
/*Object*/ coords,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary: Returns an animation that will slide "nodes" from its current position to
// the position defined in "coords".
// nodes: An array of DOMNodes or one DOMNode.
// coords: { top: Decimal?, left: Decimal? }
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
var compute = dojo.html.getComputedStyle;
if(dojo.lang.isArray(coords)){
/* coords: Array
pId: a */
dojo.deprecated('dojo.lfx.html.slideTo(node, array)', 'use dojo.lfx.html.slideTo(node, {top: value, left: value});', '0.5');
coords = { top: coords[0], left: coords[1] };
}
dojo.lang.forEach(nodes, function(node){
var top = null;
var left = null;
var init = (function(){
var innerNode = node;
return function(){
var pos = compute(innerNode, 'position');
top = (pos == 'absolute' ? node.offsetTop : parseInt(compute(node, 'top')) || 0);
left = (pos == 'absolute' ? node.offsetLeft : parseInt(compute(node, 'left')) || 0);
 
if (!dojo.lang.inArray(['absolute', 'relative'], pos)) {
var ret = dojo.html.abs(innerNode, true);
dojo.html.setStyleAttributes(innerNode, "position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
top = ret.y;
left = ret.x;
}
}
})();
init();
var anim = dojo.lfx.propertyAnimation(node,
{ "top": { start: top, end: (coords.top||0) },
"left": { start: left, end: (coords.left||0) }
},
duration,
easing,
{ "beforeBegin": init }
);
 
if(callback){
anim.connect("onEnd", function(){ callback(nodes, anim); });
}
 
anims.push(anim);
});
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.html.slideBy = function(/*DOMNode*/ nodes, /*Object*/ coords, /*int?*/ duration, /*Function?*/ easing, /*Function?*/ callback){
// summary: Returns an animation that will slide "nodes" from its current position
// to its current position plus the numbers defined in "coords".
// nodes: An array of DOMNodes or one DOMNode.
// coords: { top: Decimal?, left: Decimal? }
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
var compute = dojo.html.getComputedStyle;
 
if(dojo.lang.isArray(coords)){
/* coords: Array
pId: a */
dojo.deprecated('dojo.lfx.html.slideBy(node, array)', 'use dojo.lfx.html.slideBy(node, {top: value, left: value});', '0.5');
coords = { top: coords[0], left: coords[1] };
}
 
dojo.lang.forEach(nodes, function(node){
var top = null;
var left = null;
var init = (function(){
var innerNode = node;
return function(){
var pos = compute(innerNode, 'position');
top = (pos == 'absolute' ? node.offsetTop : parseInt(compute(node, 'top')) || 0);
left = (pos == 'absolute' ? node.offsetLeft : parseInt(compute(node, 'left')) || 0);
 
if (!dojo.lang.inArray(['absolute', 'relative'], pos)) {
var ret = dojo.html.abs(innerNode, true);
dojo.html.setStyleAttributes(innerNode, "position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
top = ret.y;
left = ret.x;
}
}
})();
init();
var anim = dojo.lfx.propertyAnimation(node,
{
"top": { start: top, end: top+(coords.top||0) },
"left": { start: left, end: left+(coords.left||0) }
},
duration,
easing).connect("beforeBegin", init);
 
if(callback){
anim.connect("onEnd", function(){ callback(nodes, anim); });
}
 
anims.push(anim);
});
 
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.html.explode = function(/*DOMNode*/ start,
/*DOMNode*/ endNode,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary: Returns an animation that will
// start:
// endNode:
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
var h = dojo.html;
start = dojo.byId(start);
endNode = dojo.byId(endNode);
var startCoords = h.toCoordinateObject(start, true);
var outline = document.createElement("div");
h.copyStyle(outline, endNode);
if(endNode.explodeClassName){ outline.className = endNode.explodeClassName; }
with(outline.style){
position = "absolute";
display = "none";
// border = "1px solid black";
var backgroundStyle = h.getStyle(start, "background-color");
backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent";
backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor;
}
dojo.body().appendChild(outline);
 
with(endNode.style){
visibility = "hidden";
display = "block";
}
var endCoords = h.toCoordinateObject(endNode, true);
with(endNode.style){
display = "none";
visibility = "visible";
}
 
var props = { opacity: { start: 0.5, end: 1.0 } };
dojo.lang.forEach(["height", "width", "top", "left"], function(type){
props[type] = { start: startCoords[type], end: endCoords[type] }
});
var anim = new dojo.lfx.propertyAnimation(outline,
props,
duration,
easing,
{
"beforeBegin": function(){
h.setDisplay(outline, "block");
},
"onEnd": function(){
h.setDisplay(endNode, "block");
outline.parentNode.removeChild(outline);
}
}
);
 
if(callback){
anim.connect("onEnd", function(){ callback(endNode, anim); });
}
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html.implode = function(/*DOMNode*/ startNode,
/*DOMNode*/ end,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary: Returns an animation that will
// startNode:
// end:
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
var h = dojo.html;
startNode = dojo.byId(startNode);
end = dojo.byId(end);
var startCoords = dojo.html.toCoordinateObject(startNode, true);
var endCoords = dojo.html.toCoordinateObject(end, true);
 
var outline = document.createElement("div");
dojo.html.copyStyle(outline, startNode);
if (startNode.explodeClassName) { outline.className = startNode.explodeClassName; }
dojo.html.setOpacity(outline, 0.3);
with(outline.style){
position = "absolute";
display = "none";
backgroundColor = h.getStyle(startNode, "background-color").toLowerCase();
}
dojo.body().appendChild(outline);
 
var props = { opacity: { start: 1.0, end: 0.5 } };
dojo.lang.forEach(["height", "width", "top", "left"], function(type){
props[type] = { start: startCoords[type], end: endCoords[type] }
});
var anim = new dojo.lfx.propertyAnimation(outline,
props,
duration,
easing,
{
"beforeBegin": function(){
dojo.html.hide(startNode);
dojo.html.show(outline);
},
"onEnd": function(){
outline.parentNode.removeChild(outline);
}
}
);
 
if(callback){
anim.connect("onEnd", function(){ callback(startNode, anim); });
}
return anim; // dojo.lfx.Animation
}
 
dojo.lfx.html.highlight = function(/*DOMNode[]*/ nodes,
/*dojo.gfx.color.Color*/ startColor,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary: Returns an animation that will set the background color
// of "nodes" to startColor and transition it to "nodes"
// original color.
// startColor: Color to transition from.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
 
dojo.lang.forEach(nodes, function(node){
var color = dojo.html.getBackgroundColor(node);
var bg = dojo.html.getStyle(node, "background-color").toLowerCase();
var bgImage = dojo.html.getStyle(node, "background-image");
var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)");
while(color.length > 3) { color.pop(); }
 
var rgb = new dojo.gfx.color.Color(startColor);
var endRgb = new dojo.gfx.color.Color(color);
 
var anim = dojo.lfx.propertyAnimation(node,
{ "background-color": { start: rgb, end: endRgb } },
duration,
easing,
{
"beforeBegin": function(){
if(bgImage){
node.style.backgroundImage = "none";
}
node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")";
},
"onEnd": function(){
if(bgImage){
node.style.backgroundImage = bgImage;
}
if(wasTransparent){
node.style.backgroundColor = "transparent";
}
if(callback){
callback(node, anim);
}
}
}
);
 
anims.push(anim);
});
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lfx.html.unhighlight = function(/*DOMNode[]*/ nodes,
/*dojo.gfx.color.Color*/ endColor,
/*int?*/ duration,
/*Function?*/ easing,
/*Function?*/ callback){
// summary: Returns an animation that will transition "nodes" background color
// from its current color to "endColor".
// endColor: Color to transition to.
// duration: Duration of the animation in milliseconds.
// easing: An easing function.
// callback: Function to run at the end of the animation.
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
 
dojo.lang.forEach(nodes, function(node){
var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
var rgb = new dojo.gfx.color.Color(endColor);
 
var bgImage = dojo.html.getStyle(node, "background-image");
var anim = dojo.lfx.propertyAnimation(node,
{ "background-color": { start: color, end: rgb } },
duration,
easing,
{
"beforeBegin": function(){
if(bgImage){
node.style.backgroundImage = "none";
}
node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")";
},
"onEnd": function(){
if(callback){
callback(node, anim);
}
}
}
);
anims.push(anim);
});
return dojo.lfx.combine(anims); // dojo.lfx.Combine
}
 
dojo.lang.mixin(dojo.lfx, dojo.lfx.html);
 
dojo.kwCompoundRequire({
browser: ["dojo.lfx.html"],
dashboard: ["dojo.lfx.html"]
});
dojo.provide("dojo.lfx.*");
 
/trunk/api/js/dojo/iframe_history.html
New file
0,0 → 1,84
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<script type="text/javascript">
// <!--
var noInit = false;
var domain = "";
// document.domain = "localhost";
function defineParams(sparams){
if(sparams){
var ss = (sparams.indexOf("&amp;") >= 0) ? "&amp;" : "&";
sparams = sparams.split(ss);
for(var x=0; x<sparams.length; x++){
var tp = sparams[x].split("=");
if(typeof window[tp[0]] != "undefined"){
window[tp[0]] = ((tp[1]=="true")||(tp[1]=="false")) ? eval(tp[1]) : tp[1];
}
}
}
}
function init(){
// parse the query string if there is one to try to get params that
// we can act on. Also allow params to be in a fragment identifier.
var query = null;
var frag = null;
var url = document.location.href;
var hashIndex = url.indexOf("#");
//Extract fragment identifier
if(hashIndex != -1){
frag = url.substring(hashIndex + 1, url.length);
url = url.substring(0, hashIndex);
}
 
//Extract querystring
var parts = url.split("?");
if(parts.length == 2){
query = parts[1];
}
 
defineParams(query);
defineParams(frag);
 
if(noInit){ return; }
if(domain.length > 0){
document.domain = domain;
}
var hasParentDojo = false;
try{
hasParentDojo = window.parent != window && window.parent["dojo"];
}catch(e){
alert("Initializing iframe_history.html failed. If you are using a cross-domain Dojo build,"
+ " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"
+ " to the path on your domain to iframe_history.html");
throw e;
}
 
if(hasParentDojo){
//Set the page title so IE history shows up with a somewhat correct name.
document.title = window.parent.document.title;
//Notify parent that we are loaded.
var pdj = window.parent.dojo;
if(pdj["undo"] && pdj["undo"]["browser"]){
pdj.undo.browser.iframeLoaded(null, window.location);
}
}
 
}
// -->
</script>
</head>
<body onload="try{ init(); }catch(e){ alert(e); }">
<h4>The Dojo Toolkit -- iframe_history.html</h4>
 
<p>This file is used in Dojo's back/fwd button management.</p>
</body>
</html>
/trunk/api/js/dojo/src/string.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.string");
dojo.require("dojo.string.common");
 
/trunk/api/js/dojo/src/data.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data");
dojo.data = {};
 
/trunk/api/js/dojo/src/logging/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:[["dojo.logging.Logger", false, false]], rhino:["dojo.logging.RhinoLogger"]});
dojo.provide("dojo.logging.*");
 
/trunk/api/js/dojo/src/logging/Logger.js
New file
0,0 → 1,214
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.logging.Logger");
dojo.provide("dojo.logging.LogFilter");
dojo.provide("dojo.logging.Record");
dojo.provide("dojo.log");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.declare");
dojo.logging.Record = function (logLevel, message) {
this.level = logLevel;
this.message = "";
this.msgArgs = [];
this.time = new Date();
if (dojo.lang.isArray(message)) {
if (message.length > 0 && dojo.lang.isString(message[0])) {
this.message = message.shift();
}
this.msgArgs = message;
} else {
this.message = message;
}
};
dojo.logging.LogFilter = function (loggerChain) {
this.passChain = loggerChain || "";
this.filter = function (record) {
return true;
};
};
dojo.logging.Logger = function () {
this.cutOffLevel = 0;
this.propagate = true;
this.parent = null;
this.data = [];
this.filters = [];
this.handlers = [];
};
dojo.extend(dojo.logging.Logger, {_argsToArr:function (args) {
var ret = [];
for (var x = 0; x < args.length; x++) {
ret.push(args[x]);
}
return ret;
}, setLevel:function (lvl) {
this.cutOffLevel = parseInt(lvl);
}, isEnabledFor:function (lvl) {
return parseInt(lvl) >= this.cutOffLevel;
}, getEffectiveLevel:function () {
if ((this.cutOffLevel == 0) && (this.parent)) {
return this.parent.getEffectiveLevel();
}
return this.cutOffLevel;
}, addFilter:function (flt) {
this.filters.push(flt);
return this.filters.length - 1;
}, removeFilterByIndex:function (fltIndex) {
if (this.filters[fltIndex]) {
delete this.filters[fltIndex];
return true;
}
return false;
}, removeFilter:function (fltRef) {
for (var x = 0; x < this.filters.length; x++) {
if (this.filters[x] === fltRef) {
delete this.filters[x];
return true;
}
}
return false;
}, removeAllFilters:function () {
this.filters = [];
}, filter:function (rec) {
for (var x = 0; x < this.filters.length; x++) {
if ((this.filters[x]["filter"]) && (!this.filters[x].filter(rec)) || (rec.level < this.cutOffLevel)) {
return false;
}
}
return true;
}, addHandler:function (hdlr) {
this.handlers.push(hdlr);
return this.handlers.length - 1;
}, handle:function (rec) {
if ((!this.filter(rec)) || (rec.level < this.cutOffLevel)) {
return false;
}
for (var x = 0; x < this.handlers.length; x++) {
if (this.handlers[x]["handle"]) {
this.handlers[x].handle(rec);
}
}
return true;
}, log:function (lvl, msg) {
if ((this.propagate) && (this.parent) && (this.parent.rec.level >= this.cutOffLevel)) {
this.parent.log(lvl, msg);
return false;
}
this.handle(new dojo.logging.Record(lvl, msg));
return true;
}, debug:function (msg) {
return this.logType("DEBUG", this._argsToArr(arguments));
}, info:function (msg) {
return this.logType("INFO", this._argsToArr(arguments));
}, warning:function (msg) {
return this.logType("WARNING", this._argsToArr(arguments));
}, error:function (msg) {
return this.logType("ERROR", this._argsToArr(arguments));
}, critical:function (msg) {
return this.logType("CRITICAL", this._argsToArr(arguments));
}, exception:function (msg, e, squelch) {
if (e) {
var eparts = [e.name, (e.description || e.message)];
if (e.fileName) {
eparts.push(e.fileName);
eparts.push("line " + e.lineNumber);
}
msg += " " + eparts.join(" : ");
}
this.logType("ERROR", msg);
if (!squelch) {
throw e;
}
}, logType:function (type, args) {
return this.log.apply(this, [dojo.logging.log.getLevel(type), args]);
}, warn:function () {
this.warning.apply(this, arguments);
}, err:function () {
this.error.apply(this, arguments);
}, crit:function () {
this.critical.apply(this, arguments);
}});
dojo.logging.LogHandler = function (level) {
this.cutOffLevel = (level) ? level : 0;
this.formatter = null;
this.data = [];
this.filters = [];
};
dojo.lang.extend(dojo.logging.LogHandler, {setFormatter:function (formatter) {
dojo.unimplemented("setFormatter");
}, flush:function () {
}, close:function () {
}, handleError:function () {
dojo.deprecated("dojo.logging.LogHandler.handleError", "use handle()", "0.6");
}, handle:function (record) {
if ((this.filter(record)) && (record.level >= this.cutOffLevel)) {
this.emit(record);
}
}, emit:function (record) {
dojo.unimplemented("emit");
}});
void (function () {
var names = ["setLevel", "addFilter", "removeFilterByIndex", "removeFilter", "removeAllFilters", "filter"];
var tgt = dojo.logging.LogHandler.prototype;
var src = dojo.logging.Logger.prototype;
for (var x = 0; x < names.length; x++) {
tgt[names[x]] = src[names[x]];
}
})();
dojo.logging.log = new dojo.logging.Logger();
dojo.logging.log.levels = [{"name":"DEBUG", "level":1}, {"name":"INFO", "level":2}, {"name":"WARNING", "level":3}, {"name":"ERROR", "level":4}, {"name":"CRITICAL", "level":5}];
dojo.logging.log.loggers = {};
dojo.logging.log.getLogger = function (name) {
if (!this.loggers[name]) {
this.loggers[name] = new dojo.logging.Logger();
this.loggers[name].parent = this;
}
return this.loggers[name];
};
dojo.logging.log.getLevelName = function (lvl) {
for (var x = 0; x < this.levels.length; x++) {
if (this.levels[x].level == lvl) {
return this.levels[x].name;
}
}
return null;
};
dojo.logging.log.getLevel = function (name) {
for (var x = 0; x < this.levels.length; x++) {
if (this.levels[x].name.toUpperCase() == name.toUpperCase()) {
return this.levels[x].level;
}
}
return null;
};
dojo.declare("dojo.logging.MemoryLogHandler", dojo.logging.LogHandler, {initializer:function (level, recordsToKeep, postType, postInterval) {
dojo.logging.LogHandler.call(this, level);
this.numRecords = (typeof djConfig["loggingNumRecords"] != "undefined") ? djConfig["loggingNumRecords"] : ((recordsToKeep) ? recordsToKeep : -1);
this.postType = (typeof djConfig["loggingPostType"] != "undefined") ? djConfig["loggingPostType"] : (postType || -1);
this.postInterval = (typeof djConfig["loggingPostInterval"] != "undefined") ? djConfig["loggingPostInterval"] : (postType || -1);
}, emit:function (record) {
if (!djConfig.isDebug) {
return;
}
var logStr = String(dojo.log.getLevelName(record.level) + ": " + record.time.toLocaleTimeString()) + ": " + record.message;
if (!dj_undef("println", dojo.hostenv)) {
dojo.hostenv.println(logStr, record.msgArgs);
}
this.data.push(record);
if (this.numRecords != -1) {
while (this.data.length > this.numRecords) {
this.data.shift();
}
}
}});
dojo.logging.logQueueHandler = new dojo.logging.MemoryLogHandler(0, 50, 0, 10000);
dojo.logging.log.addHandler(dojo.logging.logQueueHandler);
dojo.log = dojo.logging.log;
 
/trunk/api/js/dojo/src/logging/ConsoleLogger.js
New file
0,0 → 1,84
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.logging.ConsoleLogger");
dojo.require("dojo.logging.Logger");
dojo.lang.extend(dojo.logging.MemoryLogHandler, {debug:function () {
dojo.hostenv.println.apply(this, arguments);
}, info:function () {
dojo.hostenv.println.apply(this, arguments);
}, warn:function () {
dojo.hostenv.println.apply(this, arguments);
}, error:function () {
dojo.hostenv.println.apply(this, arguments);
}, critical:function () {
dojo.hostenv.println.apply(this, arguments);
}, emit:function (record) {
if (!djConfig.isDebug) {
return;
}
var funcName = null;
switch (record.level) {
case 1:
funcName = "debug";
break;
case 2:
funcName = "info";
break;
case 3:
funcName = "warn";
break;
case 4:
funcName = "error";
break;
case 5:
funcName = "critical";
break;
default:
funcName = "debug";
}
var logStr = String(dojo.log.getLevelName(record.level) + ": " + record.time.toLocaleTimeString()) + ": " + record.message;
if (record.msgArgs && record.msgArgs.length > 0) {
this[funcName].call(this, logStr, record.msgArgs);
} else {
this[funcName].call(this, logStr);
}
this.data.push(record);
if (this.numRecords != -1) {
while (this.data.length > this.numRecords) {
this.data.shift();
}
}
}});
if (!dj_undef("console") && !dj_undef("info", console)) {
dojo.lang.extend(dojo.logging.MemoryLogHandler, {debug:function () {
console.debug.apply(this, arguments);
}, info:function () {
console.info.apply(this, arguments);
}, warn:function () {
console.warn.apply(this, arguments);
}, error:function () {
console.error.apply(this, arguments);
}, critical:function () {
console.error.apply(this, arguments);
}});
dojo.lang.extend(dojo.logging.Logger, {exception:function (msg, e, squelch) {
var args = [msg];
if (e) {
msg += " : " + e.name + " " + (e.description || e.message);
args.push(e);
}
this.logType("ERROR", args);
if (!squelch) {
throw e;
}
}});
}
 
/trunk/api/js/dojo/src/DeferredList.js
New file
0,0 → 1,75
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.Deferred");
dojo.provide("dojo.DeferredList");
dojo.DeferredList = function (list, fireOnOneCallback, fireOnOneErrback, consumeErrors, canceller) {
this.list = list;
this.resultList = new Array(this.list.length);
this.chain = [];
this.id = this._nextId();
this.fired = -1;
this.paused = 0;
this.results = [null, null];
this.canceller = canceller;
this.silentlyCancelled = false;
if (this.list.length === 0 && !fireOnOneCallback) {
this.callback(this.resultList);
}
this.finishedCount = 0;
this.fireOnOneCallback = fireOnOneCallback;
this.fireOnOneErrback = fireOnOneErrback;
this.consumeErrors = consumeErrors;
var index = 0;
var _this = this;
dojo.lang.forEach(this.list, function (d) {
var _index = index;
d.addCallback(function (r) {
_this._cbDeferred(_index, true, r);
});
d.addErrback(function (r) {
_this._cbDeferred(_index, false, r);
});
index++;
});
};
dojo.inherits(dojo.DeferredList, dojo.Deferred);
dojo.lang.extend(dojo.DeferredList, {_cbDeferred:function (index, succeeded, result) {
this.resultList[index] = [succeeded, result];
this.finishedCount += 1;
if (this.fired !== 0) {
if (succeeded && this.fireOnOneCallback) {
this.callback([index, result]);
} else {
if (!succeeded && this.fireOnOneErrback) {
this.errback(result);
} else {
if (this.finishedCount == this.list.length) {
this.callback(this.resultList);
}
}
}
}
if (!succeeded && this.consumeErrors) {
result = null;
}
return result;
}, gatherResults:function (deferredList) {
var d = new dojo.DeferredList(deferredList, false, true, false);
d.addCallback(function (results) {
var ret = [];
for (var i = 0; i < results.length; i++) {
ret.push(results[i][1]);
}
return ret;
});
return d;
}});
 
/trunk/api/js/dojo/src/date.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.date");
dojo.deprecated("dojo.date", "use one of the modules in dojo.date.* instead", "0.5");
 
/trunk/api/js/dojo/src/math/points.js
New file
0,0 → 1,40
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.math.points");
dojo.require("dojo.math");
dojo.math.points = {translate:function (a, b) {
if (a.length != b.length) {
dojo.raise("dojo.math.translate: points not same size (a:[" + a + "], b:[" + b + "])");
}
var c = new Array(a.length);
for (var i = 0; i < a.length; i++) {
c[i] = a[i] + b[i];
}
return c;
}, midpoint:function (a, b) {
if (a.length != b.length) {
dojo.raise("dojo.math.midpoint: points not same size (a:[" + a + "], b:[" + b + "])");
}
var c = new Array(a.length);
for (var i = 0; i < a.length; i++) {
c[i] = (a[i] + b[i]) / 2;
}
return c;
}, invert:function (a) {
var b = new Array(a.length);
for (var i = 0; i < a.length; i++) {
b[i] = -a[i];
}
return b;
}, distance:function (a, b) {
return Math.sqrt(Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2));
}};
 
/trunk/api/js/dojo/src/math/matrix.js
New file
0,0 → 1,301
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.math.matrix");
dojo.math.matrix.iDF = 0;
dojo.math.matrix.ALMOST_ZERO = 1e-10;
dojo.math.matrix.multiply = function (a, b) {
var ay = a.length;
var ax = a[0].length;
var by = b.length;
var bx = b[0].length;
if (ax != by) {
dojo.debug("Can't multiply matricies of sizes " + ax + "," + ay + " and " + bx + "," + by);
return [[0]];
}
var c = [];
for (var k = 0; k < ay; k++) {
c[k] = [];
for (var i = 0; i < bx; i++) {
c[k][i] = 0;
for (var m = 0; m < ax; m++) {
c[k][i] += a[k][m] * b[m][i];
}
}
}
return c;
};
dojo.math.matrix.product = function () {
if (arguments.length == 0) {
dojo.debug("can't multiply 0 matrices!");
return 1;
}
var result = arguments[0];
for (var i = 1; i < arguments.length; i++) {
result = dojo.math.matrix.multiply(result, arguments[i]);
}
return result;
};
dojo.math.matrix.sum = function () {
if (arguments.length == 0) {
dojo.debug("can't sum 0 matrices!");
return 0;
}
var result = dojo.math.matrix.copy(arguments[0]);
var rows = result.length;
if (rows == 0) {
dojo.debug("can't deal with matrices of 0 rows!");
return 0;
}
var cols = result[0].length;
if (cols == 0) {
dojo.debug("can't deal with matrices of 0 cols!");
return 0;
}
for (var i = 1; i < arguments.length; ++i) {
var arg = arguments[i];
if (arg.length != rows || arg[0].length != cols) {
dojo.debug("can't add matrices of different dimensions: first dimensions were " + rows + "x" + cols + ", current dimensions are " + arg.length + "x" + arg[0].length);
return 0;
}
for (var r = 0; r < rows; r++) {
for (var c = 0; c < cols; c++) {
result[r][c] += arg[r][c];
}
}
}
return result;
};
dojo.math.matrix.inverse = function (a) {
if (a.length == 1 && a[0].length == 1) {
return [[1 / a[0][0]]];
}
var tms = a.length;
var m = dojo.math.matrix.create(tms, tms);
var mm = dojo.math.matrix.adjoint(a);
var det = dojo.math.matrix.determinant(a);
var dd = 0;
if (det == 0) {
dojo.debug("Determinant Equals 0, Not Invertible.");
return [[0]];
} else {
dd = 1 / det;
}
for (var i = 0; i < tms; i++) {
for (var j = 0; j < tms; j++) {
m[i][j] = dd * mm[i][j];
}
}
return m;
};
dojo.math.matrix.determinant = function (a) {
if (a.length != a[0].length) {
dojo.debug("Can't calculate the determiant of a non-squre matrix!");
return 0;
}
var tms = a.length;
var det = 1;
var b = dojo.math.matrix.upperTriangle(a);
for (var i = 0; i < tms; i++) {
var bii = b[i][i];
if (Math.abs(bii) < dojo.math.matrix.ALMOST_ZERO) {
return 0;
}
det *= bii;
}
det = det * dojo.math.matrix.iDF;
return det;
};
dojo.math.matrix.upperTriangle = function (m) {
m = dojo.math.matrix.copy(m);
var f1 = 0;
var temp = 0;
var tms = m.length;
var v = 1;
dojo.math.matrix.iDF = 1;
for (var col = 0; col < tms - 1; col++) {
if (typeof m[col][col] != "number") {
dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + col + "]=" + m[col][col]);
}
v = 1;
var stop_loop = 0;
while ((m[col][col] == 0) && !stop_loop) {
if (col + v >= tms) {
dojo.math.matrix.iDF = 0;
stop_loop = 1;
} else {
for (var r = 0; r < tms; r++) {
temp = m[col][r];
m[col][r] = m[col + v][r];
m[col + v][r] = temp;
}
v++;
dojo.math.matrix.iDF *= -1;
}
}
for (var row = col + 1; row < tms; row++) {
if (typeof m[row][col] != "number") {
dojo.debug("non-numeric entry found in a numeric matrix: m[" + row + "][" + col + "]=" + m[row][col]);
}
if (typeof m[col][row] != "number") {
dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + row + "]=" + m[col][row]);
}
if (m[col][col] != 0) {
var f1 = (-1) * m[row][col] / m[col][col];
for (var i = col; i < tms; i++) {
m[row][i] = f1 * m[col][i] + m[row][i];
}
}
}
}
return m;
};
dojo.math.matrix.create = function (a, b, value) {
if (!value) {
value = 0;
}
var m = [];
for (var i = 0; i < b; i++) {
m[i] = [];
for (var j = 0; j < a; j++) {
m[i][j] = value;
}
}
return m;
};
dojo.math.matrix.ones = function (a, b) {
return dojo.math.matrix.create(a, b, 1);
};
dojo.math.matrix.zeros = function (a, b) {
return dojo.math.matrix.create(a, b, 0);
};
dojo.math.matrix.identity = function (size, scale) {
if (!scale) {
scale = 1;
}
var m = [];
for (var i = 0; i < size; i++) {
m[i] = [];
for (var j = 0; j < size; j++) {
m[i][j] = (i == j ? scale : 0);
}
}
return m;
};
dojo.math.matrix.adjoint = function (a) {
var tms = a.length;
if (tms <= 1) {
dojo.debug("Can't find the adjoint of a matrix with a dimension less than 2");
return [[0]];
}
if (a.length != a[0].length) {
dojo.debug("Can't find the adjoint of a non-square matrix");
return [[0]];
}
var m = dojo.math.matrix.create(tms, tms);
var ii = 0;
var jj = 0;
var ia = 0;
var ja = 0;
var det = 0;
var ap = dojo.math.matrix.create(tms - 1, tms - 1);
for (var i = 0; i < tms; i++) {
for (var j = 0; j < tms; j++) {
ia = 0;
for (ii = 0; ii < tms; ii++) {
if (ii == i) {
continue;
}
ja = 0;
for (jj = 0; jj < tms; jj++) {
if (jj == j) {
continue;
}
ap[ia][ja] = a[ii][jj];
ja++;
}
ia++;
}
det = dojo.math.matrix.determinant(ap);
m[i][j] = Math.pow(-1, (i + j)) * det;
}
}
m = dojo.math.matrix.transpose(m);
return m;
};
dojo.math.matrix.transpose = function (a) {
var m = dojo.math.matrix.create(a.length, a[0].length);
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a[i].length; j++) {
m[j][i] = a[i][j];
}
}
return m;
};
dojo.math.matrix.format = function (a, decimal_points) {
if (arguments.length <= 1) {
decimal_points = 5;
}
function format_int(x, dp) {
var fac = Math.pow(10, dp);
var a = Math.round(x * fac) / fac;
var b = a.toString();
if (b.charAt(0) != "-") {
b = " " + b;
}
var has_dp = 0;
for (var i = 1; i < b.length; i++) {
if (b.charAt(i) == ".") {
has_dp = 1;
}
}
if (!has_dp) {
b += ".";
}
while (b.length < dp + 3) {
b += "0";
}
return b;
}
var ya = a.length;
var xa = ya > 0 ? a[0].length : 0;
var buffer = "";
for (var y = 0; y < ya; y++) {
buffer += "| ";
for (var x = 0; x < xa; x++) {
buffer += format_int(a[y][x], decimal_points) + " ";
}
buffer += "|\n";
}
return buffer;
};
dojo.math.matrix.copy = function (a) {
var ya = a.length;
var xa = a[0].length;
var m = dojo.math.matrix.create(xa, ya);
for (var y = 0; y < ya; y++) {
for (var x = 0; x < xa; x++) {
m[y][x] = a[y][x];
}
}
return m;
};
dojo.math.matrix.scale = function (k, a) {
a = dojo.math.matrix.copy(a);
var ya = a.length;
var xa = a[0].length;
for (var y = 0; y < ya; y++) {
for (var x = 0; x < xa; x++) {
a[y][x] *= k;
}
}
return a;
};
 
/trunk/api/js/dojo/src/math/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]});
dojo.provide("dojo.math.*");
 
/trunk/api/js/dojo/src/math/curves.js
New file
0,0 → 1,182
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.math.curves");
dojo.require("dojo.math");
dojo.math.curves = {Line:function (start, end) {
this.start = start;
this.end = end;
this.dimensions = start.length;
for (var i = 0; i < start.length; i++) {
start[i] = Number(start[i]);
}
for (var i = 0; i < end.length; i++) {
end[i] = Number(end[i]);
}
this.getValue = function (n) {
var retVal = new Array(this.dimensions);
for (var i = 0; i < this.dimensions; i++) {
retVal[i] = ((this.end[i] - this.start[i]) * n) + this.start[i];
}
return retVal;
};
return this;
}, Bezier:function (pnts) {
this.getValue = function (step) {
if (step >= 1) {
return this.p[this.p.length - 1];
}
if (step <= 0) {
return this.p[0];
}
var retVal = new Array(this.p[0].length);
for (var k = 0; j < this.p[0].length; k++) {
retVal[k] = 0;
}
for (var j = 0; j < this.p[0].length; j++) {
var C = 0;
var D = 0;
for (var i = 0; i < this.p.length; i++) {
C += this.p[i][j] * this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, i);
}
for (var l = 0; l < this.p.length; l++) {
D += this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, l);
}
retVal[j] = C / D;
}
return retVal;
};
this.p = pnts;
return this;
}, CatmullRom:function (pnts, c) {
this.getValue = function (step) {
var percent = step * (this.p.length - 1);
var node = Math.floor(percent);
var progress = percent - node;
var i0 = node - 1;
if (i0 < 0) {
i0 = 0;
}
var i = node;
var i1 = node + 1;
if (i1 >= this.p.length) {
i1 = this.p.length - 1;
}
var i2 = node + 2;
if (i2 >= this.p.length) {
i2 = this.p.length - 1;
}
var u = progress;
var u2 = progress * progress;
var u3 = progress * progress * progress;
var retVal = new Array(this.p[0].length);
for (var k = 0; k < this.p[0].length; k++) {
var x1 = (-this.c * this.p[i0][k]) + ((2 - this.c) * this.p[i][k]) + ((this.c - 2) * this.p[i1][k]) + (this.c * this.p[i2][k]);
var x2 = (2 * this.c * this.p[i0][k]) + ((this.c - 3) * this.p[i][k]) + ((3 - 2 * this.c) * this.p[i1][k]) + (-this.c * this.p[i2][k]);
var x3 = (-this.c * this.p[i0][k]) + (this.c * this.p[i1][k]);
var x4 = this.p[i][k];
retVal[k] = x1 * u3 + x2 * u2 + x3 * u + x4;
}
return retVal;
};
if (!c) {
this.c = 0.7;
} else {
this.c = c;
}
this.p = pnts;
return this;
}, Arc:function (start, end, ccw) {
var center = dojo.math.points.midpoint(start, end);
var sides = dojo.math.points.translate(dojo.math.points.invert(center), start);
var rad = Math.sqrt(Math.pow(sides[0], 2) + Math.pow(sides[1], 2));
var theta = dojo.math.radToDeg(Math.atan(sides[1] / sides[0]));
if (sides[0] < 0) {
theta -= 90;
} else {
theta += 90;
}
dojo.math.curves.CenteredArc.call(this, center, rad, theta, theta + (ccw ? -180 : 180));
}, CenteredArc:function (center, radius, start, end) {
this.center = center;
this.radius = radius;
this.start = start || 0;
this.end = end;
this.getValue = function (n) {
var retVal = new Array(2);
var theta = dojo.math.degToRad(this.start + ((this.end - this.start) * n));
retVal[0] = this.center[0] + this.radius * Math.sin(theta);
retVal[1] = this.center[1] - this.radius * Math.cos(theta);
return retVal;
};
return this;
}, Circle:function (center, radius) {
dojo.math.curves.CenteredArc.call(this, center, radius, 0, 360);
return this;
}, Path:function () {
var curves = [];
var weights = [];
var ranges = [];
var totalWeight = 0;
this.add = function (curve, weight) {
if (weight < 0) {
dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0");
}
curves.push(curve);
weights.push(weight);
totalWeight += weight;
computeRanges();
};
this.remove = function (curve) {
for (var i = 0; i < curves.length; i++) {
if (curves[i] == curve) {
curves.splice(i, 1);
totalWeight -= weights.splice(i, 1)[0];
break;
}
}
computeRanges();
};
this.removeAll = function () {
curves = [];
weights = [];
totalWeight = 0;
};
this.getValue = function (n) {
var found = false, value = 0;
for (var i = 0; i < ranges.length; i++) {
var r = ranges[i];
if (n >= r[0] && n < r[1]) {
var subN = (n - r[0]) / r[2];
value = curves[i].getValue(subN);
found = true;
break;
}
}
if (!found) {
value = curves[curves.length - 1].getValue(1);
}
for (var j = 0; j < i; j++) {
value = dojo.math.points.translate(value, curves[j].getValue(1));
}
return value;
};
function computeRanges() {
var start = 0;
for (var i = 0; i < weights.length; i++) {
var end = start + weights[i] / totalWeight;
var len = end - start;
ranges[i] = [start, end, len];
start = end;
}
}
return this;
}};
 
/trunk/api/js/dojo/src/animation.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.animation");
dojo.require("dojo.animation.Animation");
dojo.deprecated("dojo.animation is slated for removal in 0.5; use dojo.lfx instead.", "0.5");
 
/trunk/api/js/dojo/src/hostenv_spidermonkey.js
New file
0,0 → 1,48
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.hostenv.name_ = "spidermonkey";
dojo.hostenv.println = print;
dojo.hostenv.exit = function (exitcode) {
quit(exitcode);
};
dojo.hostenv.getVersion = function () {
return version();
};
if (typeof line2pc == "undefined") {
dojo.raise("attempt to use SpiderMonkey host environment when no 'line2pc' global");
}
function dj_spidermonkey_current_file(depth) {
var s = "";
try {
throw Error("whatever");
}
catch (e) {
s = e.stack;
}
var matches = s.match(/[^@]*\.js/gi);
if (!matches) {
dojo.raise("could not parse stack string: '" + s + "'");
}
var fname = (typeof depth != "undefined" && depth) ? matches[depth + 1] : matches[matches.length - 1];
if (!fname) {
dojo.raise("could not find file name in stack string '" + s + "'");
}
return fname;
}
if (!dojo.hostenv.library_script_uri_) {
dojo.hostenv.library_script_uri_ = dj_spidermonkey_current_file(0);
}
dojo.hostenv.loadUri = function (uri) {
var ok = load(uri);
return 1;
};
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
/trunk/api/js/dojo/src/flash/flash8/DojoExternalInterface.as
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/flash/flash8/DojoExternalInterface.as
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/flash/flash8/ExpressInstall.as
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/flash/flash8/ExpressInstall.as
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/flash/flash6/DojoExternalInterface.as
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/flash/flash6/DojoExternalInterface.as
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/flash/flash6/flash6_gateway.fla
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/flash/flash6/flash6_gateway.fla
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/browser_debug_xd.js
New file
0,0 → 1,36
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.browser_debug_xd");
dojo.nonDebugProvide = dojo.provide;
dojo.provide = function (resourceName) {
var dbgQueue = dojo.hostenv["xdDebugQueue"];
if (dbgQueue && dbgQueue.length > 0 && resourceName == dbgQueue["currentResourceName"]) {
window.setTimeout("dojo.hostenv.xdDebugFileLoaded('" + resourceName + "')", 1);
}
dojo.nonDebugProvide.apply(dojo, arguments);
};
dojo.hostenv.xdDebugFileLoaded = function (resourceName) {
var dbgQueue = this.xdDebugQueue;
if (resourceName && resourceName == dbgQueue.currentResourceName) {
dbgQueue.shift();
}
if (dbgQueue.length == 0) {
dbgQueue.currentResourceName = null;
this.xdNotifyLoaded();
} else {
dbgQueue.currentResourceName = dbgQueue[0].resourceName;
var element = document.createElement("script");
element.type = "text/javascript";
element.src = dbgQueue[0].resourcePath;
document.getElementsByTagName("head")[0].appendChild(element);
}
};
 
/trunk/api/js/dojo/src/xml/XslTransform.js
New file
0,0 → 1,157
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.xml.XslTransform");
dojo.xml.XslTransform = function (xsltUri) {
dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support).");
var IS_IE = dojo.render.html.ie;
var ACTIVEX_DOMS = ["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"];
var ACTIVEX_FT_DOMS = ["Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"];
var ACTIVEX_TEMPLATES = ["Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"];
function getActiveXImpl(activeXArray) {
for (var i = 0; i < activeXArray.length; i++) {
try {
var testObj = new ActiveXObject(activeXArray[i]);
if (testObj) {
return activeXArray[i];
}
}
catch (e) {
}
}
dojo.raise("Could not find an ActiveX implementation in:\n\n " + activeXArray);
}
if (xsltUri == null || xsltUri == undefined) {
dojo.raise("You must pass the URI String for the XSL file to be used!");
return false;
}
var xsltDocument = null;
var xsltProcessor = null;
if (IS_IE) {
xsltDocument = new ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS));
xsltDocument.async = false;
} else {
xsltProcessor = new XSLTProcessor();
xsltDocument = document.implementation.createDocument("", "", null);
xsltDocument.addEventListener("load", onXslLoad, false);
}
xsltDocument.load(xsltUri);
if (IS_IE) {
var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES));
xslt.stylesheet = xsltDocument;
xsltProcessor = xslt.createProcessor();
}
function onXslLoad() {
xsltProcessor.importStylesheet(xsltDocument);
}
function getResultDom(xmlDoc, params) {
if (IS_IE) {
addIeParams(params);
var result = getIeResultDom(xmlDoc);
removeIeParams(params);
return result;
} else {
return getMozillaResultDom(xmlDoc, params);
}
}
function addIeParams(params) {
if (!params) {
return;
}
for (var i = 0; i < params.length; i++) {
xsltProcessor.addParameter(params[i][0], params[i][1]);
}
}
function removeIeParams(params) {
if (!params) {
return;
}
for (var i = 0; i < params.length; i++) {
xsltProcessor.addParameter(params[i][0], "");
}
}
function getIeResultDom(xmlDoc) {
xsltProcessor.input = xmlDoc;
var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS));
outDoc.async = false;
outDoc.validateOnParse = false;
xsltProcessor.output = outDoc;
xsltProcessor.transform();
if (outDoc.parseError.errorCode != 0) {
var err = outDoc.parseError;
dojo.raise("err.errorCode: " + err.errorCode + "\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: " + err.srcText);
}
return outDoc;
}
function getIeResultStr(xmlDoc, params) {
xsltProcessor.input = xmlDoc;
xsltProcessor.transform();
return xsltProcessor.output;
}
function addMozillaParams(params) {
if (!params) {
return;
}
for (var i = 0; i < params.length; i++) {
xsltProcessor.setParameter(null, params[i][0], params[i][1]);
}
}
function getMozillaResultDom(xmlDoc, params) {
addMozillaParams(params);
var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
xsltProcessor.clearParameters();
return resultDoc;
}
function getMozillaResultStr(xmlDoc, params, parentDoc) {
addMozillaParams(params);
var resultDoc = xsltProcessor.transformToFragment(xmlDoc, parentDoc);
var serializer = new XMLSerializer();
xsltProcessor.clearParameters();
return serializer.serializeToString(resultDoc);
}
this.getResultString = function (xmlDoc, params, parentDoc) {
var content = null;
if (IS_IE) {
addIeParams(params);
content = getIeResultStr(xmlDoc, params);
removeIeParams(params);
} else {
content = getMozillaResultStr(xmlDoc, params, parentDoc);
}
return content;
};
this.transformToContentPane = function (xmlDoc, params, contentPane, parentDoc) {
var content = this.getResultString(xmlDoc, params, parentDoc);
contentPane.setContent(content);
};
this.transformToRegion = function (xmlDoc, params, region, parentDoc) {
try {
var content = this.getResultString(xmlDoc, params, parentDoc);
region.innerHTML = content;
}
catch (e) {
dojo.raise(e.message + "\n\n xsltUri: " + xsltUri);
}
};
this.transformToDocument = function (xmlDoc, params) {
return getResultDom(xmlDoc, params);
};
this.transformToWindow = function (xmlDoc, params, windowDoc, parentDoc) {
try {
windowDoc.open();
windowDoc.write(this.getResultString(xmlDoc, params, parentDoc));
windowDoc.close();
}
catch (e) {
dojo.raise(e.message + "\n\n xsltUri: " + xsltUri);
}
};
};
 
/trunk/api/js/dojo/src/xml/__package__.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.xml.Parse");
dojo.kwCompoundRequire({common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]});
dojo.provide("dojo.xml.*");
 
/trunk/api/js/dojo/src/xml/Parse.js
New file
0,0 → 1,163
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.xml.Parse");
dojo.require("dojo.dom");
dojo.xml.Parse = function () {
var isIE = ((dojo.render.html.capable) && (dojo.render.html.ie));
function getTagName(node) {
try {
return node.tagName.toLowerCase();
}
catch (e) {
return "";
}
}
function getDojoTagName(node) {
var tagName = getTagName(node);
if (!tagName) {
return "";
}
if ((dojo.widget) && (dojo.widget.tags[tagName])) {
return tagName;
}
var p = tagName.indexOf(":");
if (p >= 0) {
return tagName;
}
if (tagName.substr(0, 5) == "dojo:") {
return tagName;
}
if (dojo.render.html.capable && dojo.render.html.ie && node.scopeName != "HTML") {
return node.scopeName.toLowerCase() + ":" + tagName;
}
if (tagName.substr(0, 4) == "dojo") {
return "dojo:" + tagName.substring(4);
}
var djt = node.getAttribute("dojoType") || node.getAttribute("dojotype");
if (djt) {
if (djt.indexOf(":") < 0) {
djt = "dojo:" + djt;
}
return djt.toLowerCase();
}
djt = node.getAttributeNS && node.getAttributeNS(dojo.dom.dojoml, "type");
if (djt) {
return "dojo:" + djt.toLowerCase();
}
try {
djt = node.getAttribute("dojo:type");
}
catch (e) {
}
if (djt) {
return "dojo:" + djt.toLowerCase();
}
if ((dj_global["djConfig"]) && (!djConfig["ignoreClassNames"])) {
var classes = node.className || node.getAttribute("class");
if ((classes) && (classes.indexOf) && (classes.indexOf("dojo-") != -1)) {
var aclasses = classes.split(" ");
for (var x = 0, c = aclasses.length; x < c; x++) {
if (aclasses[x].slice(0, 5) == "dojo-") {
return "dojo:" + aclasses[x].substr(5).toLowerCase();
}
}
}
}
return "";
}
this.parseElement = function (node, hasParentNodeSet, optimizeForDojoML, thisIdx) {
var tagName = getTagName(node);
if (isIE && tagName.indexOf("/") == 0) {
return null;
}
try {
var attr = node.getAttribute("parseWidgets");
if (attr && attr.toLowerCase() == "false") {
return {};
}
}
catch (e) {
}
var process = true;
if (optimizeForDojoML) {
var dojoTagName = getDojoTagName(node);
tagName = dojoTagName || tagName;
process = Boolean(dojoTagName);
}
var parsedNodeSet = {};
parsedNodeSet[tagName] = [];
var pos = tagName.indexOf(":");
if (pos > 0) {
var ns = tagName.substring(0, pos);
parsedNodeSet["ns"] = ns;
if ((dojo.ns) && (!dojo.ns.allow(ns))) {
process = false;
}
}
if (process) {
var attributeSet = this.parseAttributes(node);
for (var attr in attributeSet) {
if ((!parsedNodeSet[tagName][attr]) || (typeof parsedNodeSet[tagName][attr] != "array")) {
parsedNodeSet[tagName][attr] = [];
}
parsedNodeSet[tagName][attr].push(attributeSet[attr]);
}
parsedNodeSet[tagName].nodeRef = node;
parsedNodeSet.tagName = tagName;
parsedNodeSet.index = thisIdx || 0;
}
var count = 0;
for (var i = 0; i < node.childNodes.length; i++) {
var tcn = node.childNodes.item(i);
switch (tcn.nodeType) {
case dojo.dom.ELEMENT_NODE:
var ctn = getDojoTagName(tcn) || getTagName(tcn);
if (!parsedNodeSet[ctn]) {
parsedNodeSet[ctn] = [];
}
parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count));
if ((tcn.childNodes.length == 1) && (tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)) {
parsedNodeSet[ctn][parsedNodeSet[ctn].length - 1].value = tcn.childNodes.item(0).nodeValue;
}
count++;
break;
case dojo.dom.TEXT_NODE:
if (node.childNodes.length == 1) {
parsedNodeSet[tagName].push({value:node.childNodes.item(0).nodeValue});
}
break;
default:
break;
}
}
return parsedNodeSet;
};
this.parseAttributes = function (node) {
var parsedAttributeSet = {};
var atts = node.attributes;
var attnode, i = 0;
while ((attnode = atts[i++])) {
if (isIE) {
if (!attnode) {
continue;
}
if ((typeof attnode == "object") && (typeof attnode.nodeValue == "undefined") || (attnode.nodeValue == null) || (attnode.nodeValue == "")) {
continue;
}
}
var nn = attnode.nodeName.split(":");
nn = (nn.length == 2) ? nn[1] : attnode.nodeName;
parsedAttributeSet[nn] = {value:attnode.nodeValue};
}
return parsedAttributeSet;
};
};
 
/trunk/api/js/dojo/src/hostenv_jsc.js
New file
0,0 → 1,78
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
/*
* JScript .NET jsc
*
*/
 
dojo.hostenv.name_ = 'jsc';
 
// Sanity check this is the right hostenv.
// See the Rotor source code jscript/engine/globalobject.cs for what globals
// are available.
if((typeof ScriptEngineMajorVersion != 'function')||(ScriptEngineMajorVersion() < 7)){
dojo.raise("attempt to use JScript .NET host environment with inappropriate ScriptEngine");
}
 
// for more than you wanted to know about why this import is required even if
// we fully qualify all symbols, see
// http://groups.google.com/groups?th=f050c7aeefdcbde2&rnum=12
import System;
 
dojo.hostenv.getText = function(uri){
if(!System.IO.File.Exists(uri)){
// dojo.raise("No such file '" + uri + "'");
return 0;
}
var reader = new System.IO.StreamReader(uri);
var contents : String = reader.ReadToEnd();
return contents;
}
 
dojo.hostenv.loadUri = function(uri){
var contents = this.getText(uri);
if(!contents){
dojo.raise("got no back contents from uri '" + uri + "': " + contents);
}
// TODO: in JScript .NET, eval will not affect the symbol table of the current code?
var value = dj_eval(contents);
dojo.debug("jsc eval of contents returned: ", value);
return 1;
 
// for an example doing runtime code compilation, see:
// http://groups.google.com/groups?selm=eQ1aeciCBHA.1644%40tkmsftngp05&rnum=6
// Microsoft.JScript or System.CodeDom.Compiler ?
// var engine = new Microsoft.JScript.Vsa.VsaEngine()
// what about loading a js file vs. a dll?
// GetObject("script:" . uri);
}
 
/* The System.Environment object is useful:
print ("CommandLine='" + System.Environment.CommandLine + "' " +
"program name='" + System.Environment.GetCommandLineArgs()[0] + "' " +
"CurrentDirectory='" + System.Environment.CurrentDirectory + "' " +
"StackTrace='" + System.Environment.StackTrace + "'");
*/
 
// same as System.Console.WriteLine
// sigh; Rotor treats symbol "print" at parse time without actually putting it
// in the builtin symbol table.
// Note that the print symbol is not available if jsc is run with the "/print-"
// option.
dojo.hostenv.println = function(s){
print(s); // = print
}
 
dojo.hostenv.getLibraryScriptUri = function(){
return System.Environment.GetCommandLineArgs()[0];
}
 
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
/trunk/api/js/dojo/src/docs.js
New file
0,0 → 1,671
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.docs");
dojo.require("dojo.io.*");
dojo.require("dojo.event.topic");
dojo.require("dojo.rpc.JotService");
dojo.require("dojo.dom");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.Deferred");
dojo.require("dojo.DeferredList");
 
/*
* TODO:
*
* Package summary needs to compensate for "is"
* Handle host environments
* Deal with dojo.widget weirdness
* Parse parameters
* Limit function parameters to only the valid ones (Involves packing parameters onto meta during rewriting)
*
*/
 
dojo.docs = new function() {
this._url = dojo.uri.dojoUri("docscripts");
this._rpc = new dojo.rpc.JotService;
this._rpc.serviceUrl = dojo.uri.dojoUri("docscripts/jsonrpc.php");
};
dojo.lang.mixin(dojo.docs, {
_count: 0,
_callbacks: {function_names: []},
_cache: {}, // Saves the JSON objects in cache
require: function(/*String*/ require, /*bool*/ sync) {
dojo.debug("require(): " + require);
var parts = require.split("/");
var size = parts.length;
var deferred = new dojo.Deferred;
var args = {
mimetype: "text/json",
load: function(type, data){
dojo.debug("require(): loaded for " + require);
if(parts[0] != "function_names") {
for(var i = 0, part; part = parts[i]; i++){
data = data[part];
}
}
deferred.callback(data);
},
error: function(){
deferred.errback();
}
};
 
if(location.protocol == "file:"){
if(size){
if(parts[parts.length - 1] == "documentation"){
parts[parts.length - 1] = "meta";
}
if(parts[0] == "function_names"){
args.url = [this._url, "local_json", "function_names"].join("/");
}else{
var dirs = parts[0].split(".");
args.url = [this._url, "local_json", dirs[0]].join("/");
if(dirs.length > 1){
args.url = [args.url, dirs[1]].join(".");
}
}
}
}
dojo.io.bind(args);
return deferred;
},
getFunctionNames: function(){
return this.require("function_names"); // dojo.Deferred
},
unFormat: function(/*String*/ string){
var fString = string;
if(string.charAt(string.length - 1) == "_"){
fString = [string.substring(0, string.length - 1), "*"].join("");
}
return fString;
},
getMeta: function(/*String*/ pkg, /*String*/ name, /*Function*/ callback, /*String?*/ id){
// summary: Gets information about a function in regards to its meta data
if(typeof name == "function"){
// pId: a
// pkg: ignore
id = callback;
callback = name;
name = pkg;
pkg = null;
dojo.debug("getMeta(" + name + ")");
}else{
dojo.debug("getMeta(" + pkg + "/" + name + ")");
}
if(!id){
id = "_";
}
},
_withPkg: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input, /*String*/ newType){
dojo.debug("_withPkg(" + evt.name + ") has package: " + data[0]);
evt.pkg = data[0];
if("load" == type && evt.pkg){
evt.type = newType;
}else{
if(evt.callbacks && evt.callbacks.length){
evt.callbacks.shift()("error", {}, evt, evt.input);
}
}
},
_gotMeta: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){
dojo.debug("_gotMeta(" + evt.name + ")");
 
var cached = dojo.docs._getCache(evt.pkg, evt.name, "meta", "functions", evt.id);
if(cached.summary){
data.summary = cached.summary;
}
if(evt.callbacks && evt.callbacks.length){
evt.callbacks.shift()(type, data, evt, evt.input);
}
},
getSrc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){
// summary: Gets src file (created by the doc parser)
dojo.debug("getSrc(" + name + ")");
if(!id){
id = "_";
}
},
getDoc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){
// summary: Gets external documentation stored on Jot for a given function
dojo.debug("getDoc(" + name + ")");
 
if(!id){
id = "_";
}
 
var input = {};
 
input.type = "doc";
input.name = name;
input.callbacks = [callback];
},
_gotDoc: function(/*String*/ type, /*Array*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_gotDoc(" + evt.type + ")");
evt[evt.type] = data;
if(evt.expects && evt.expects.doc){
for(var i = 0, expect; expect = evt.expects.doc[i]; i++){
if(!(expect in evt)){
dojo.debug("_gotDoc() waiting for more data");
return;
}
}
}
var cache = dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta");
 
var description = evt.fn.description;
cache.description = description;
data = {
returns: evt.fn.returns,
id: evt.id,
variables: []
}
if(!cache.parameters){
cache.parameters = {};
}
for(var i = 0, param; param = evt.param[i]; i++){
var fName = param["DocParamForm/name"];
if(!cache.parameters[fName]){
cache.parameters[fName] = {};
}
cache.parameters[fName].description = param["DocParamForm/desc"]
}
 
data.description = cache.description;
data.parameters = cache.parameters;
evt.type = "doc";
if(evt.callbacks && evt.callbacks.length){
evt.callbacks.shift()("load", data, evt, input);
}
},
getPkgDoc: function(/*String*/ name, /*Function*/ callback){
// summary: Gets external documentation stored on Jot for a given package
dojo.debug("getPkgDoc(" + name + ")");
var input = {};
},
getPkgInfo: function(/*String*/ name, /*Function*/ callback){
// summary: Gets a combination of the metadata and external documentation for a given package
dojo.debug("getPkgInfo(" + name + ")");
 
var input = {
expects: {
pkginfo: ["pkgmeta", "pkgdoc"]
},
callback: callback
};
dojo.docs.getPkgMeta(input, name, dojo.docs._getPkgInfo);
dojo.docs.getPkgDoc(input, name, dojo.docs._getPkgInfo);
},
_getPkgInfo: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){
dojo.debug("_getPkgInfo() for " + evt.type);
var input = {};
var results = {};
if(typeof key == "object"){
input = key;
input[evt.type] = data;
if(input.expects && input.expects.pkginfo){
for(var i = 0, expect; expect = input.expects.pkginfo[i]; i++){
if(!(expect in input)){
dojo.debug("_getPkgInfo() waiting for more data");
return;
}
}
}
results = input.pkgmeta;
results.description = input.pkgdoc;
}
 
if(input.callback){
input.callback("load", results, evt);
}
},
getInfo: function(/*String*/ name, /*Function*/ callback){
dojo.debug("getInfo(" + name + ")");
var input = {
expects: {
"info": ["meta", "doc"]
},
callback: callback
}
dojo.docs.getMeta(input, name, dojo.docs._getInfo);
dojo.docs.getDoc(input, name, dojo.docs._getInfo);
},
_getInfo: function(/*String*/ type, /*String*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_getInfo(" + evt.type + ")");
if(input && input.expects && input.expects.info){
input[evt.type] = data;
for(var i = 0, expect; expect = input.expects.info[i]; i++){
if(!(expect in input)){
dojo.debug("_getInfo() waiting for more data");
return;
}
}
}
 
if(input.callback){
input.callback("load", dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta"), evt, input);
}
},
_getMainText: function(/*String*/ text){
// summary: Grabs the innerHTML from a Jot Rech Text node
dojo.debug("_getMainText()");
return text.replace(/^<html[^<]*>/, "").replace(/<\/html>$/, "").replace(/<\w+\s*\/>/g, "");
},
getPackageMeta: function(/*Object*/ input){
dojo.debug("getPackageMeta(): " + input.package);
return this.require(input.package + "/meta", input.sync);
},
getFunctionMeta: function(/*Object*/ input){
var package = input.package || "";
var name = input.name;
var id = input.id || "_";
dojo.debug("getFunctionMeta(): " + name);
 
if(!name) return;
 
if(package){
return this.require(package + "/meta/functions/" + name + "/" + id + "/meta");
}else{
this.getFunctionNames();
}
},
getFunctionDocumentation: function(/*Object*/ input){
var package = input.package || "";
var name = input.name;
var id = input.id || "_";
dojo.debug("getFunctionDocumentation(): " + name);
if(!name) return;
if(package){
return this.require(package + "/meta/functions/" + name + "/" + id + "/documentation");
}
},
_onDocSearch: function(/*Object*/ input){
var _this = this;
var name = input.name.toLowerCase();
if(!name) return;
 
this.getFunctionNames().addCallback(function(data){
dojo.debug("_onDocSearch(): function names loaded for " + name);
 
var output = [];
var list = [];
var closure = function(pkg, fn) {
return function(data){
dojo.debug("_onDocSearch(): package meta loaded for: " + pkg);
if(data.functions){
var functions = data.functions;
for(var key in functions){
if(fn == key){
var ids = functions[key];
for(var id in ids){
var fnMeta = ids[id];
output.push({
package: pkg,
name: fn,
id: id,
summary: fnMeta.summary
});
}
}
}
}
return output;
}
}
 
pkgLoop:
for(var pkg in data){
if(pkg.toLowerCase() == name){
name = pkg;
dojo.debug("_onDocSearch found a package");
//dojo.docs._onDocSelectPackage(input);
return;
}
for(var i = 0, fn; fn = data[pkg][i]; i++){
if(fn.toLowerCase().indexOf(name) != -1){
dojo.debug("_onDocSearch(): Search matched " + fn);
var meta = _this.getPackageMeta({package: pkg});
meta.addCallback(closure(pkg, fn));
list.push(meta);
 
// Build a list of all packages that need to be loaded and their loaded state.
continue pkgLoop;
}
}
}
list = new dojo.DeferredList(list);
list.addCallback(function(results){
dojo.debug("_onDocSearch(): All packages loaded");
_this._printFunctionResults(results[0][1]);
});
});
},
_onDocSearchFn: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){
dojo.debug("_onDocSearchFn(" + evt.name + ")");
 
var name = evt.name || evt.pkg;
 
dojo.debug("_onDocSearchFn found a function");
 
evt.pkgs = packages;
evt.pkg = name;
evt.loaded = 0;
for(var i = 0, pkg; pkg = packages[i]; i++){
dojo.docs.getPkgMeta(evt, pkg, dojo.docs._onDocResults);
}
},
_onPkgResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_onPkgResults(" + evt.type + ")");
var description = "";
var path = "";
var methods = {};
var requires = {};
if(input){
input[evt.type] = data;
if(input.expects && input.expects.pkgresults){
for(var i = 0, expect; expect = input.expects.pkgresults[i]; i++){
if(!(expect in input)){
dojo.debug("_onPkgResults() waiting for more data");
return;
}
}
}
path = input.pkgdoc.path;
description = input.pkgdoc.description;
methods = input.pkgmeta.methods;
requires = input.pkgmeta.requires;
}
var pkg = evt.name.replace("_", "*");
var results = {
path: path,
description: description,
size: 0,
methods: [],
pkg: pkg,
requires: requires
}
var rePrivate = /_[^.]+$/;
for(var method in methods){
if(!rePrivate.test(method)){
for(var pId in methods[method]){
results.methods.push({
pkg: pkg,
name: method,
id: pId,
summary: methods[method][pId].summary
})
}
}
}
results.size = results.methods.length;
dojo.docs._printPkgResult(results);
},
_onDocResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_onDocResults(" + evt.name + "/" + input.pkg + ") " + type);
++input.loaded;
 
if(input.loaded == input.pkgs.length){
var pkgs = input.pkgs;
var name = input.pkg;
var results = {methods: []};
var rePrivate = /_[^.]+$/;
data = dojo.docs._cache;
 
for(var i = 0, pkg; pkg = pkgs[i]; i++){
var methods = dojo.docs._getCache(pkg, "meta", "methods");
for(var fn in methods){
if(fn.toLowerCase().indexOf(name) == -1){
continue;
}
if(fn != "requires" && !rePrivate.test(fn)){
for(var pId in methods[fn]){
var result = {
pkg: pkg,
name: fn,
id: "_",
summary: ""
}
if(methods[fn][pId].summary){
result.summary = methods[fn][pId].summary;
}
results.methods.push(result);
}
}
}
}
 
dojo.debug("Publishing docResults");
dojo.docs._printFnResults(results);
}
},
_printFunctionResults: function(results){
dojo.debug("_printFnResults(): called");
// summary: Call this function to send the /docs/function/results topic
},
_printPkgResult: function(results){
dojo.debug("_printPkgResult(): called");
},
_onDocSelectFunction: function(/*Object*/ input){
// summary: Get doc, meta, and src
var name = input.name;
var package = input.package || "";
var id = input.id || "_";
dojo.debug("_onDocSelectFunction(" + name + ")");
if(!name || !package) return false;
 
var pkgMeta = this.getPackageMeta({package: package});
var meta = this.getFunctionMeta({package: package, name: name, id: id});
var doc = this.getFunctionDocumentation({package: package, name: name, id: id});
var list = new dojo.DeferredList([pkgMeta, meta, doc]);
list.addCallback(function(results){
dojo.debug("_onDocSelectFunction() loaded");
for(var i = 0, result; result = results[i]; i++){
dojo.debugShallow(result[1]);
}
});
return list;
},
_onDocSelectPackage: function(/*Object*/ input){
dojo.debug("_onDocSelectPackage(" + input.name + ")")
input.expects = {
"pkgresults": ["pkgmeta", "pkgdoc"]
};
dojo.docs.getPkgMeta(input, input.name, dojo.docs._onPkgResults);
dojo.docs.getPkgDoc(input, input.name, dojo.docs._onPkgResults);
},
_onDocSelectResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_onDocSelectResults(" + evt.type + ", " + evt.name + ")");
if(evt.type == "meta"){
dojo.docs.getPkgMeta(input, evt.pkg, dojo.docs._onDocSelectResults);
}
if(input){
input[evt.type] = data;
if(input.expects && input.expects.docresults){
for(var i = 0, expect; expect = input.expects.docresults[i]; i++){
if(!(expect in input)){
dojo.debug("_onDocSelectResults() waiting for more data");
return;
}
}
}
}
 
dojo.docs._printFunctionDetail(input);
},
_printFunctionDetail: function(results) {
// summary: Call this function to send the /docs/function/detail topic event
},
 
selectFunction: function(/*String*/ name, /*String?*/ id){
// summary: The combined information
},
savePackage: function(/*Object*/ callbackObject, /*String*/ callback, /*Object*/ parameters){
dojo.event.kwConnect({
srcObj: dojo.docs,
srcFunc: "_savedPkgRpc",
targetObj: callbackObject,
targetFunc: callback,
once: true
});
var props = {};
var cache = dojo.docs._getCache(parameters.pkg, "meta");
 
var i = 1;
 
if(!cache.path){
var path = "id";
props[["pname", i].join("")] = "DocPkgForm/require";
props[["pvalue", i++].join("")] = parameters.pkg;
}else{
var path = cache.path;
}
 
props.form = "//DocPkgForm";
props.path = ["/WikiHome/DojoDotDoc/", path].join("");
 
if(parameters.description){
props[["pname", i].join("")] = "main/text";
props[["pvalue", i++].join("")] = parameters.description;
}
dojo.docs._rpc.callRemote("saveForm", props).addCallbacks(dojo.docs._pkgRpc, dojo.docs._pkgRpc);
},
_pkgRpc: function(data){
if(data.name){
dojo.docs._getCache(data["DocPkgForm/require"], "meta").path = data.name;
dojo.docs._savedPkgRpc("load");
}else{
dojo.docs._savedPkgRpc("error");
}
},
_savedPkgRpc: function(type){
},
functionPackages: function(/*String*/ name, /*Function*/ callback, /*Object*/ input){
// summary: Gets the package associated with a function and stores it in the .pkg value of input
dojo.debug("functionPackages() name: " + name);
 
if(!input){
input = {};
}
if(!input.callbacks){
input.callbacks = [];
}
 
input.type = "function_names";
input.name = name;
input.callbacks.unshift(callback);
input.callbacks.unshift(dojo.docs._functionPackages);
},
_functionPackages: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){
dojo.debug("_functionPackages() name: " + evt.name);
evt.pkg = '';
 
var results = [];
var data = dojo.docs._cache['function_names'];
for(var key in data){
if(dojo.lang.inArray(data[key], evt.name)){
dojo.debug("_functionPackages() package: " + key);
results.push(key);
}
}
 
if(evt.callbacks && evt.callbacks.length){
evt.callbacks.shift()(type, results, evt, evt.input);
}
},
setUserName: function(/*String*/ name){
dojo.docs._userName = name;
if(name && dojo.docs._password){
dojo.docs._logIn();
}
},
setPassword: function(/*String*/ password){
dojo.docs._password = password;
if(password && dojo.docs._userName){
dojo.docs._logIn();
}
},
_logIn: function(){
dojo.io.bind({
url: dojo.docs._rpc.serviceUrl.toString(),
method: "post",
mimetype: "text/json",
content: {
username: dojo.docs._userName,
password: dojo.docs._password
},
load: function(type, data){
if(data.error){
dojo.docs.logInSuccess();
}else{
dojo.docs.logInFailure();
}
},
error: function(){
dojo.docs.logInFailure();
}
});
},
logInSuccess: function(){},
logInFailure: function(){},
_set: function(/*Object*/ base, /*String...*/ keys, /*String*/ value){
var args = [];
for(var i = 0, arg; arg = arguments[i]; i++){
args.push(arg);
}
 
if(args.length < 3) return;
base = args.shift();
value = args.pop();
var key = args.pop();
for(var i = 0, arg; arg = args[i]; i++){
if(typeof base[arg] != "object"){
base[arg] = {};
}
base = base[arg];
}
base[key] = value;
},
_getCache: function(/*String...*/ keys){
var obj = dojo.docs._cache;
for(var i = 0; i < arguments.length; i++){
var arg = arguments[i];
if(!obj[arg]){
obj[arg] = {};
}
obj = obj[arg];
}
return obj;
}
});
 
dojo.event.topic.subscribe("/docs/search", dojo.docs, "_onDocSearch");
dojo.event.topic.subscribe("/docs/function/select", dojo.docs, "_onDocSelectFunction");
dojo.event.topic.subscribe("/docs/package/select", dojo.docs, "_onDocSelectPackage");
 
dojo.event.topic.registerPublisher("/docs/function/results", dojo.docs, "_printFunctionResults");
dojo.event.topic.registerPublisher("/docs/function/detail", dojo.docs, "_printFunctionDetail");
dojo.event.topic.registerPublisher("/docs/package/detail", dojo.docs, "_printPkgResult");
/trunk/api/js/dojo/src/html/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.html.common", "dojo.html.style"]});
dojo.provide("dojo.html.*");
 
/trunk/api/js/dojo/src/html/common.js
New file
0,0 → 1,180
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.common");
dojo.require("dojo.lang.common");
dojo.require("dojo.dom");
dojo.lang.mixin(dojo.html, dojo.dom);
dojo.html.body = function () {
dojo.deprecated("dojo.html.body() moved to dojo.body()", "0.5");
return dojo.body();
};
dojo.html.getEventTarget = function (evt) {
if (!evt) {
evt = dojo.global().event || {};
}
var t = (evt.srcElement ? evt.srcElement : (evt.target ? evt.target : null));
while ((t) && (t.nodeType != 1)) {
t = t.parentNode;
}
return t;
};
dojo.html.getViewport = function () {
var _window = dojo.global();
var _document = dojo.doc();
var w = 0;
var h = 0;
if (dojo.render.html.mozilla) {
w = _document.documentElement.clientWidth;
h = _window.innerHeight;
} else {
if (!dojo.render.html.opera && _window.innerWidth) {
w = _window.innerWidth;
h = _window.innerHeight;
} else {
if (!dojo.render.html.opera && dojo.exists(_document, "documentElement.clientWidth")) {
var w2 = _document.documentElement.clientWidth;
if (!w || w2 && w2 < w) {
w = w2;
}
h = _document.documentElement.clientHeight;
} else {
if (dojo.body().clientWidth) {
w = dojo.body().clientWidth;
h = dojo.body().clientHeight;
}
}
}
}
return {width:w, height:h};
};
dojo.html.getScroll = function () {
var _window = dojo.global();
var _document = dojo.doc();
var top = _window.pageYOffset || _document.documentElement.scrollTop || dojo.body().scrollTop || 0;
var left = _window.pageXOffset || _document.documentElement.scrollLeft || dojo.body().scrollLeft || 0;
return {top:top, left:left, offset:{x:left, y:top}};
};
dojo.html.getParentByType = function (node, type) {
var _document = dojo.doc();
var parent = dojo.byId(node);
type = type.toLowerCase();
while ((parent) && (parent.nodeName.toLowerCase() != type)) {
if (parent == (_document["body"] || _document["documentElement"])) {
return null;
}
parent = parent.parentNode;
}
return parent;
};
dojo.html.getAttribute = function (node, attr) {
node = dojo.byId(node);
if ((!node) || (!node.getAttribute)) {
return null;
}
var ta = typeof attr == "string" ? attr : new String(attr);
var v = node.getAttribute(ta.toUpperCase());
if ((v) && (typeof v == "string") && (v != "")) {
return v;
}
if (v && v.value) {
return v.value;
}
if ((node.getAttributeNode) && (node.getAttributeNode(ta))) {
return (node.getAttributeNode(ta)).value;
} else {
if (node.getAttribute(ta)) {
return node.getAttribute(ta);
} else {
if (node.getAttribute(ta.toLowerCase())) {
return node.getAttribute(ta.toLowerCase());
}
}
}
return null;
};
dojo.html.hasAttribute = function (node, attr) {
return dojo.html.getAttribute(dojo.byId(node), attr) ? true : false;
};
dojo.html.getCursorPosition = function (e) {
e = e || dojo.global().event;
var cursor = {x:0, y:0};
if (e.pageX || e.pageY) {
cursor.x = e.pageX;
cursor.y = e.pageY;
} else {
var de = dojo.doc().documentElement;
var db = dojo.body();
cursor.x = e.clientX + ((de || db)["scrollLeft"]) - ((de || db)["clientLeft"]);
cursor.y = e.clientY + ((de || db)["scrollTop"]) - ((de || db)["clientTop"]);
}
return cursor;
};
dojo.html.isTag = function (node) {
node = dojo.byId(node);
if (node && node.tagName) {
for (var i = 1; i < arguments.length; i++) {
if (node.tagName.toLowerCase() == String(arguments[i]).toLowerCase()) {
return String(arguments[i]).toLowerCase();
}
}
}
return "";
};
if (dojo.render.html.ie && !dojo.render.html.ie70) {
if (window.location.href.substr(0, 6).toLowerCase() != "https:") {
(function () {
var xscript = dojo.doc().createElement("script");
xscript.src = "javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
dojo.doc().getElementsByTagName("head")[0].appendChild(xscript);
})();
}
} else {
dojo.html.createExternalElement = function (doc, tag) {
return doc.createElement(tag);
};
}
dojo.html._callDeprecated = function (inFunc, replFunc, args, argName, retValue) {
dojo.deprecated("dojo.html." + inFunc, "replaced by dojo.html." + replFunc + "(" + (argName ? "node, {" + argName + ": " + argName + "}" : "") + ")" + (retValue ? "." + retValue : ""), "0.5");
var newArgs = [];
if (argName) {
var argsIn = {};
argsIn[argName] = args[1];
newArgs.push(args[0]);
newArgs.push(argsIn);
} else {
newArgs = args;
}
var ret = dojo.html[replFunc].apply(dojo.html, args);
if (retValue) {
return ret[retValue];
} else {
return ret;
}
};
dojo.html.getViewportWidth = function () {
return dojo.html._callDeprecated("getViewportWidth", "getViewport", arguments, null, "width");
};
dojo.html.getViewportHeight = function () {
return dojo.html._callDeprecated("getViewportHeight", "getViewport", arguments, null, "height");
};
dojo.html.getViewportSize = function () {
return dojo.html._callDeprecated("getViewportSize", "getViewport", arguments);
};
dojo.html.getScrollTop = function () {
return dojo.html._callDeprecated("getScrollTop", "getScroll", arguments, null, "top");
};
dojo.html.getScrollLeft = function () {
return dojo.html._callDeprecated("getScrollLeft", "getScroll", arguments, null, "left");
};
dojo.html.getScrollOffset = function () {
return dojo.html._callDeprecated("getScrollOffset", "getScroll", arguments, null, "offset");
};
 
/trunk/api/js/dojo/src/html/images/shadowB.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowB.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowR.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowR.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowBR.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowBR.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowT.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowT.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowTR.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowTR.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowL.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowL.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowBL.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowBL.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/images/shadowTL.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/html/images/shadowTL.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/html/layout.js
New file
0,0 → 1,386
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.layout");
dojo.require("dojo.html.common");
dojo.require("dojo.html.style");
dojo.require("dojo.html.display");
dojo.html.sumAncestorProperties = function (node, prop) {
node = dojo.byId(node);
if (!node) {
return 0;
}
var retVal = 0;
while (node) {
if (dojo.html.getComputedStyle(node, "position") == "fixed") {
return 0;
}
var val = node[prop];
if (val) {
retVal += val - 0;
if (node == dojo.body()) {
break;
}
}
node = node.parentNode;
}
return retVal;
};
dojo.html.setStyleAttributes = function (node, attributes) {
node = dojo.byId(node);
var splittedAttribs = attributes.replace(/(;)?\s*$/, "").split(";");
for (var i = 0; i < splittedAttribs.length; i++) {
var nameValue = splittedAttribs[i].split(":");
var name = nameValue[0].replace(/\s*$/, "").replace(/^\s*/, "").toLowerCase();
var value = nameValue[1].replace(/\s*$/, "").replace(/^\s*/, "");
switch (name) {
case "opacity":
dojo.html.setOpacity(node, value);
break;
case "content-height":
dojo.html.setContentBox(node, {height:value});
break;
case "content-width":
dojo.html.setContentBox(node, {width:value});
break;
case "outer-height":
dojo.html.setMarginBox(node, {height:value});
break;
case "outer-width":
dojo.html.setMarginBox(node, {width:value});
break;
default:
node.style[dojo.html.toCamelCase(name)] = value;
}
}
};
dojo.html.boxSizing = {MARGIN_BOX:"margin-box", BORDER_BOX:"border-box", PADDING_BOX:"padding-box", CONTENT_BOX:"content-box"};
dojo.html.getAbsolutePosition = dojo.html.abs = function (node, includeScroll, boxType) {
node = dojo.byId(node, node.ownerDocument);
var ret = {x:0, y:0};
var bs = dojo.html.boxSizing;
if (!boxType) {
boxType = bs.CONTENT_BOX;
}
var nativeBoxType = 2;
var targetBoxType;
switch (boxType) {
case bs.MARGIN_BOX:
targetBoxType = 3;
break;
case bs.BORDER_BOX:
targetBoxType = 2;
break;
case bs.PADDING_BOX:
default:
targetBoxType = 1;
break;
case bs.CONTENT_BOX:
targetBoxType = 0;
break;
}
var h = dojo.render.html;
var db = document["body"] || document["documentElement"];
if (h.ie) {
with (node.getBoundingClientRect()) {
ret.x = left - 2;
ret.y = top - 2;
}
} else {
if (document.getBoxObjectFor) {
nativeBoxType = 1;
try {
var bo = document.getBoxObjectFor(node);
ret.x = bo.x - dojo.html.sumAncestorProperties(node, "scrollLeft");
ret.y = bo.y - dojo.html.sumAncestorProperties(node, "scrollTop");
}
catch (e) {
}
} else {
if (node["offsetParent"]) {
var endNode;
if ((h.safari) && (node.style.getPropertyValue("position") == "absolute") && (node.parentNode == db)) {
endNode = db;
} else {
endNode = db.parentNode;
}
if (node.parentNode != db) {
var nd = node;
if (dojo.render.html.opera) {
nd = db;
}
ret.x -= dojo.html.sumAncestorProperties(nd, "scrollLeft");
ret.y -= dojo.html.sumAncestorProperties(nd, "scrollTop");
}
var curnode = node;
do {
var n = curnode["offsetLeft"];
if (!h.opera || n > 0) {
ret.x += isNaN(n) ? 0 : n;
}
var m = curnode["offsetTop"];
ret.y += isNaN(m) ? 0 : m;
curnode = curnode.offsetParent;
} while ((curnode != endNode) && (curnode != null));
} else {
if (node["x"] && node["y"]) {
ret.x += isNaN(node.x) ? 0 : node.x;
ret.y += isNaN(node.y) ? 0 : node.y;
}
}
}
}
if (includeScroll) {
var scroll = dojo.html.getScroll();
ret.y += scroll.top;
ret.x += scroll.left;
}
var extentFuncArray = [dojo.html.getPaddingExtent, dojo.html.getBorderExtent, dojo.html.getMarginExtent];
if (nativeBoxType > targetBoxType) {
for (var i = targetBoxType; i < nativeBoxType; ++i) {
ret.y += extentFuncArray[i](node, "top");
ret.x += extentFuncArray[i](node, "left");
}
} else {
if (nativeBoxType < targetBoxType) {
for (var i = targetBoxType; i > nativeBoxType; --i) {
ret.y -= extentFuncArray[i - 1](node, "top");
ret.x -= extentFuncArray[i - 1](node, "left");
}
}
}
ret.top = ret.y;
ret.left = ret.x;
return ret;
};
dojo.html.isPositionAbsolute = function (node) {
return (dojo.html.getComputedStyle(node, "position") == "absolute");
};
dojo.html._sumPixelValues = function (node, selectors, autoIsZero) {
var total = 0;
for (var x = 0; x < selectors.length; x++) {
total += dojo.html.getPixelValue(node, selectors[x], autoIsZero);
}
return total;
};
dojo.html.getMargin = function (node) {
return {width:dojo.html._sumPixelValues(node, ["margin-left", "margin-right"], (dojo.html.getComputedStyle(node, "position") == "absolute")), height:dojo.html._sumPixelValues(node, ["margin-top", "margin-bottom"], (dojo.html.getComputedStyle(node, "position") == "absolute"))};
};
dojo.html.getBorder = function (node) {
return {width:dojo.html.getBorderExtent(node, "left") + dojo.html.getBorderExtent(node, "right"), height:dojo.html.getBorderExtent(node, "top") + dojo.html.getBorderExtent(node, "bottom")};
};
dojo.html.getBorderExtent = function (node, side) {
return (dojo.html.getStyle(node, "border-" + side + "-style") == "none" ? 0 : dojo.html.getPixelValue(node, "border-" + side + "-width"));
};
dojo.html.getMarginExtent = function (node, side) {
return dojo.html._sumPixelValues(node, ["margin-" + side], dojo.html.isPositionAbsolute(node));
};
dojo.html.getPaddingExtent = function (node, side) {
return dojo.html._sumPixelValues(node, ["padding-" + side], true);
};
dojo.html.getPadding = function (node) {
return {width:dojo.html._sumPixelValues(node, ["padding-left", "padding-right"], true), height:dojo.html._sumPixelValues(node, ["padding-top", "padding-bottom"], true)};
};
dojo.html.getPadBorder = function (node) {
var pad = dojo.html.getPadding(node);
var border = dojo.html.getBorder(node);
return {width:pad.width + border.width, height:pad.height + border.height};
};
dojo.html.getBoxSizing = function (node) {
var h = dojo.render.html;
var bs = dojo.html.boxSizing;
if (((h.ie) || (h.opera)) && node.nodeName.toLowerCase() != "img") {
var cm = document["compatMode"];
if ((cm == "BackCompat") || (cm == "QuirksMode")) {
return bs.BORDER_BOX;
} else {
return bs.CONTENT_BOX;
}
} else {
if (arguments.length == 0) {
node = document.documentElement;
}
var sizing;
if (!h.ie) {
sizing = dojo.html.getStyle(node, "-moz-box-sizing");
if (!sizing) {
sizing = dojo.html.getStyle(node, "box-sizing");
}
}
return (sizing ? sizing : bs.CONTENT_BOX);
}
};
dojo.html.isBorderBox = function (node) {
return (dojo.html.getBoxSizing(node) == dojo.html.boxSizing.BORDER_BOX);
};
dojo.html.getBorderBox = function (node) {
node = dojo.byId(node);
return {width:node.offsetWidth, height:node.offsetHeight};
};
dojo.html.getPaddingBox = function (node) {
var box = dojo.html.getBorderBox(node);
var border = dojo.html.getBorder(node);
return {width:box.width - border.width, height:box.height - border.height};
};
dojo.html.getContentBox = function (node) {
node = dojo.byId(node);
var padborder = dojo.html.getPadBorder(node);
return {width:node.offsetWidth - padborder.width, height:node.offsetHeight - padborder.height};
};
dojo.html.setContentBox = function (node, args) {
node = dojo.byId(node);
var width = 0;
var height = 0;
var isbb = dojo.html.isBorderBox(node);
var padborder = (isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
var ret = {};
if (typeof args.width != "undefined") {
width = args.width + padborder.width;
ret.width = dojo.html.setPositivePixelValue(node, "width", width);
}
if (typeof args.height != "undefined") {
height = args.height + padborder.height;
ret.height = dojo.html.setPositivePixelValue(node, "height", height);
}
return ret;
};
dojo.html.getMarginBox = function (node) {
var borderbox = dojo.html.getBorderBox(node);
var margin = dojo.html.getMargin(node);
return {width:borderbox.width + margin.width, height:borderbox.height + margin.height};
};
dojo.html.setMarginBox = function (node, args) {
node = dojo.byId(node);
var width = 0;
var height = 0;
var isbb = dojo.html.isBorderBox(node);
var padborder = (!isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
var margin = dojo.html.getMargin(node);
var ret = {};
if (typeof args.width != "undefined") {
width = args.width - padborder.width;
width -= margin.width;
ret.width = dojo.html.setPositivePixelValue(node, "width", width);
}
if (typeof args.height != "undefined") {
height = args.height - padborder.height;
height -= margin.height;
ret.height = dojo.html.setPositivePixelValue(node, "height", height);
}
return ret;
};
dojo.html.getElementBox = function (node, type) {
var bs = dojo.html.boxSizing;
switch (type) {
case bs.MARGIN_BOX:
return dojo.html.getMarginBox(node);
case bs.BORDER_BOX:
return dojo.html.getBorderBox(node);
case bs.PADDING_BOX:
return dojo.html.getPaddingBox(node);
case bs.CONTENT_BOX:
default:
return dojo.html.getContentBox(node);
}
};
dojo.html.toCoordinateObject = dojo.html.toCoordinateArray = function (coords, includeScroll, boxtype) {
if (coords instanceof Array || typeof coords == "array") {
dojo.deprecated("dojo.html.toCoordinateArray", "use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead", "0.5");
while (coords.length < 4) {
coords.push(0);
}
while (coords.length > 4) {
coords.pop();
}
var ret = {left:coords[0], top:coords[1], width:coords[2], height:coords[3]};
} else {
if (!coords.nodeType && !(coords instanceof String || typeof coords == "string") && ("width" in coords || "height" in coords || "left" in coords || "x" in coords || "top" in coords || "y" in coords)) {
var ret = {left:coords.left || coords.x || 0, top:coords.top || coords.y || 0, width:coords.width || 0, height:coords.height || 0};
} else {
var node = dojo.byId(coords);
var pos = dojo.html.abs(node, includeScroll, boxtype);
var marginbox = dojo.html.getMarginBox(node);
var ret = {left:pos.left, top:pos.top, width:marginbox.width, height:marginbox.height};
}
}
ret.x = ret.left;
ret.y = ret.top;
return ret;
};
dojo.html.setMarginBoxWidth = dojo.html.setOuterWidth = function (node, width) {
return dojo.html._callDeprecated("setMarginBoxWidth", "setMarginBox", arguments, "width");
};
dojo.html.setMarginBoxHeight = dojo.html.setOuterHeight = function () {
return dojo.html._callDeprecated("setMarginBoxHeight", "setMarginBox", arguments, "height");
};
dojo.html.getMarginBoxWidth = dojo.html.getOuterWidth = function () {
return dojo.html._callDeprecated("getMarginBoxWidth", "getMarginBox", arguments, null, "width");
};
dojo.html.getMarginBoxHeight = dojo.html.getOuterHeight = function () {
return dojo.html._callDeprecated("getMarginBoxHeight", "getMarginBox", arguments, null, "height");
};
dojo.html.getTotalOffset = function (node, type, includeScroll) {
return dojo.html._callDeprecated("getTotalOffset", "getAbsolutePosition", arguments, null, type);
};
dojo.html.getAbsoluteX = function (node, includeScroll) {
return dojo.html._callDeprecated("getAbsoluteX", "getAbsolutePosition", arguments, null, "x");
};
dojo.html.getAbsoluteY = function (node, includeScroll) {
return dojo.html._callDeprecated("getAbsoluteY", "getAbsolutePosition", arguments, null, "y");
};
dojo.html.totalOffsetLeft = function (node, includeScroll) {
return dojo.html._callDeprecated("totalOffsetLeft", "getAbsolutePosition", arguments, null, "left");
};
dojo.html.totalOffsetTop = function (node, includeScroll) {
return dojo.html._callDeprecated("totalOffsetTop", "getAbsolutePosition", arguments, null, "top");
};
dojo.html.getMarginWidth = function (node) {
return dojo.html._callDeprecated("getMarginWidth", "getMargin", arguments, null, "width");
};
dojo.html.getMarginHeight = function (node) {
return dojo.html._callDeprecated("getMarginHeight", "getMargin", arguments, null, "height");
};
dojo.html.getBorderWidth = function (node) {
return dojo.html._callDeprecated("getBorderWidth", "getBorder", arguments, null, "width");
};
dojo.html.getBorderHeight = function (node) {
return dojo.html._callDeprecated("getBorderHeight", "getBorder", arguments, null, "height");
};
dojo.html.getPaddingWidth = function (node) {
return dojo.html._callDeprecated("getPaddingWidth", "getPadding", arguments, null, "width");
};
dojo.html.getPaddingHeight = function (node) {
return dojo.html._callDeprecated("getPaddingHeight", "getPadding", arguments, null, "height");
};
dojo.html.getPadBorderWidth = function (node) {
return dojo.html._callDeprecated("getPadBorderWidth", "getPadBorder", arguments, null, "width");
};
dojo.html.getPadBorderHeight = function (node) {
return dojo.html._callDeprecated("getPadBorderHeight", "getPadBorder", arguments, null, "height");
};
dojo.html.getBorderBoxWidth = dojo.html.getInnerWidth = function () {
return dojo.html._callDeprecated("getBorderBoxWidth", "getBorderBox", arguments, null, "width");
};
dojo.html.getBorderBoxHeight = dojo.html.getInnerHeight = function () {
return dojo.html._callDeprecated("getBorderBoxHeight", "getBorderBox", arguments, null, "height");
};
dojo.html.getContentBoxWidth = dojo.html.getContentWidth = function () {
return dojo.html._callDeprecated("getContentBoxWidth", "getContentBox", arguments, null, "width");
};
dojo.html.getContentBoxHeight = dojo.html.getContentHeight = function () {
return dojo.html._callDeprecated("getContentBoxHeight", "getContentBox", arguments, null, "height");
};
dojo.html.setContentBoxWidth = dojo.html.setContentWidth = function (node, width) {
return dojo.html._callDeprecated("setContentBoxWidth", "setContentBox", arguments, "width");
};
dojo.html.setContentBoxHeight = dojo.html.setContentHeight = function (node, height) {
return dojo.html._callDeprecated("setContentBoxHeight", "setContentBox", arguments, "height");
};
 
/trunk/api/js/dojo/src/html/util.js
New file
0,0 → 1,354
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.util");
dojo.require("dojo.html.layout");
dojo.html.getElementWindow = function (element) {
return dojo.html.getDocumentWindow(element.ownerDocument);
};
dojo.html.getDocumentWindow = function (doc) {
if (dojo.render.html.safari && !doc._parentWindow) {
var fix = function (win) {
win.document._parentWindow = win;
for (var i = 0; i < win.frames.length; i++) {
fix(win.frames[i]);
}
};
fix(window.top);
}
if (dojo.render.html.ie && window !== document.parentWindow && !doc._parentWindow) {
doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
var win = doc._parentWindow;
doc._parentWindow = null;
return win;
}
return doc._parentWindow || doc.parentWindow || doc.defaultView;
};
dojo.html.gravity = function (node, e) {
node = dojo.byId(node);
var mouse = dojo.html.getCursorPosition(e);
with (dojo.html) {
var absolute = getAbsolutePosition(node, true);
var bb = getBorderBox(node);
var nodecenterx = absolute.x + (bb.width / 2);
var nodecentery = absolute.y + (bb.height / 2);
}
with (dojo.html.gravity) {
return ((mouse.x < nodecenterx ? WEST : EAST) | (mouse.y < nodecentery ? NORTH : SOUTH));
}
};
dojo.html.gravity.NORTH = 1;
dojo.html.gravity.SOUTH = 1 << 1;
dojo.html.gravity.EAST = 1 << 2;
dojo.html.gravity.WEST = 1 << 3;
dojo.html.overElement = function (element, e) {
element = dojo.byId(element);
var mouse = dojo.html.getCursorPosition(e);
var bb = dojo.html.getBorderBox(element);
var absolute = dojo.html.getAbsolutePosition(element, true, dojo.html.boxSizing.BORDER_BOX);
var top = absolute.y;
var bottom = top + bb.height;
var left = absolute.x;
var right = left + bb.width;
return (mouse.x >= left && mouse.x <= right && mouse.y >= top && mouse.y <= bottom);
};
dojo.html.renderedTextContent = function (node) {
node = dojo.byId(node);
var result = "";
if (node == null) {
return result;
}
for (var i = 0; i < node.childNodes.length; i++) {
switch (node.childNodes[i].nodeType) {
case 1:
case 5:
var display = "unknown";
try {
display = dojo.html.getStyle(node.childNodes[i], "display");
}
catch (E) {
}
switch (display) {
case "block":
case "list-item":
case "run-in":
case "table":
case "table-row-group":
case "table-header-group":
case "table-footer-group":
case "table-row":
case "table-column-group":
case "table-column":
case "table-cell":
case "table-caption":
result += "\n";
result += dojo.html.renderedTextContent(node.childNodes[i]);
result += "\n";
break;
case "none":
break;
default:
if (node.childNodes[i].tagName && node.childNodes[i].tagName.toLowerCase() == "br") {
result += "\n";
} else {
result += dojo.html.renderedTextContent(node.childNodes[i]);
}
break;
}
break;
case 3:
case 2:
case 4:
var text = node.childNodes[i].nodeValue;
var textTransform = "unknown";
try {
textTransform = dojo.html.getStyle(node, "text-transform");
}
catch (E) {
}
switch (textTransform) {
case "capitalize":
var words = text.split(" ");
for (var i = 0; i < words.length; i++) {
words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
}
text = words.join(" ");
break;
case "uppercase":
text = text.toUpperCase();
break;
case "lowercase":
text = text.toLowerCase();
break;
default:
break;
}
switch (textTransform) {
case "nowrap":
break;
case "pre-wrap":
break;
case "pre-line":
break;
case "pre":
break;
default:
text = text.replace(/\s+/, " ");
if (/\s$/.test(result)) {
text.replace(/^\s/, "");
}
break;
}
result += text;
break;
default:
break;
}
}
return result;
};
dojo.html.createNodesFromText = function (txt, trim) {
if (trim) {
txt = txt.replace(/^\s+|\s+$/g, "");
}
var tn = dojo.doc().createElement("div");
tn.style.visibility = "hidden";
dojo.body().appendChild(tn);
var tableType = "none";
if ((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))) {
txt = "<table><tbody><tr>" + txt + "</tr></tbody></table>";
tableType = "cell";
} else {
if ((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))) {
txt = "<table><tbody>" + txt + "</tbody></table>";
tableType = "row";
} else {
if ((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))) {
txt = "<table>" + txt + "</table>";
tableType = "section";
}
}
}
tn.innerHTML = txt;
if (tn["normalize"]) {
tn.normalize();
}
var parent = null;
switch (tableType) {
case "cell":
parent = tn.getElementsByTagName("tr")[0];
break;
case "row":
parent = tn.getElementsByTagName("tbody")[0];
break;
case "section":
parent = tn.getElementsByTagName("table")[0];
break;
default:
parent = tn;
break;
}
var nodes = [];
for (var x = 0; x < parent.childNodes.length; x++) {
nodes.push(parent.childNodes[x].cloneNode(true));
}
tn.style.display = "none";
dojo.html.destroyNode(tn);
return nodes;
};
dojo.html.placeOnScreen = function (node, desiredX, desiredY, padding, hasScroll, corners, tryOnly) {
if (desiredX instanceof Array || typeof desiredX == "array") {
tryOnly = corners;
corners = hasScroll;
hasScroll = padding;
padding = desiredY;
desiredY = desiredX[1];
desiredX = desiredX[0];
}
if (corners instanceof String || typeof corners == "string") {
corners = corners.split(",");
}
if (!isNaN(padding)) {
padding = [Number(padding), Number(padding)];
} else {
if (!(padding instanceof Array || typeof padding == "array")) {
padding = [0, 0];
}
}
var scroll = dojo.html.getScroll().offset;
var view = dojo.html.getViewport();
node = dojo.byId(node);
var oldDisplay = node.style.display;
node.style.display = "";
var bb = dojo.html.getBorderBox(node);
var w = bb.width;
var h = bb.height;
node.style.display = oldDisplay;
if (!(corners instanceof Array || typeof corners == "array")) {
corners = ["TL"];
}
var bestx, besty, bestDistance = Infinity, bestCorner;
for (var cidex = 0; cidex < corners.length; ++cidex) {
var corner = corners[cidex];
var match = true;
var tryX = desiredX - (corner.charAt(1) == "L" ? 0 : w) + padding[0] * (corner.charAt(1) == "L" ? 1 : -1);
var tryY = desiredY - (corner.charAt(0) == "T" ? 0 : h) + padding[1] * (corner.charAt(0) == "T" ? 1 : -1);
if (hasScroll) {
tryX -= scroll.x;
tryY -= scroll.y;
}
if (tryX < 0) {
tryX = 0;
match = false;
}
if (tryY < 0) {
tryY = 0;
match = false;
}
var x = tryX + w;
if (x > view.width) {
x = view.width - w;
match = false;
} else {
x = tryX;
}
x = Math.max(padding[0], x) + scroll.x;
var y = tryY + h;
if (y > view.height) {
y = view.height - h;
match = false;
} else {
y = tryY;
}
y = Math.max(padding[1], y) + scroll.y;
if (match) {
bestx = x;
besty = y;
bestDistance = 0;
bestCorner = corner;
break;
} else {
var dist = Math.pow(x - tryX - scroll.x, 2) + Math.pow(y - tryY - scroll.y, 2);
if (bestDistance > dist) {
bestDistance = dist;
bestx = x;
besty = y;
bestCorner = corner;
}
}
}
if (!tryOnly) {
node.style.left = bestx + "px";
node.style.top = besty + "px";
}
return {left:bestx, top:besty, x:bestx, y:besty, dist:bestDistance, corner:bestCorner};
};
dojo.html.placeOnScreenPoint = function (node, desiredX, desiredY, padding, hasScroll) {
dojo.deprecated("dojo.html.placeOnScreenPoint", "use dojo.html.placeOnScreen() instead", "0.5");
return dojo.html.placeOnScreen(node, desiredX, desiredY, padding, hasScroll, ["TL", "TR", "BL", "BR"]);
};
dojo.html.placeOnScreenAroundElement = function (node, aroundNode, padding, aroundType, aroundCorners, tryOnly) {
var best, bestDistance = Infinity;
aroundNode = dojo.byId(aroundNode);
var oldDisplay = aroundNode.style.display;
aroundNode.style.display = "";
var mb = dojo.html.getElementBox(aroundNode, aroundType);
var aroundNodeW = mb.width;
var aroundNodeH = mb.height;
var aroundNodePos = dojo.html.getAbsolutePosition(aroundNode, true, aroundType);
aroundNode.style.display = oldDisplay;
for (var nodeCorner in aroundCorners) {
var pos, desiredX, desiredY;
var corners = aroundCorners[nodeCorner];
desiredX = aroundNodePos.x + (nodeCorner.charAt(1) == "L" ? 0 : aroundNodeW);
desiredY = aroundNodePos.y + (nodeCorner.charAt(0) == "T" ? 0 : aroundNodeH);
pos = dojo.html.placeOnScreen(node, desiredX, desiredY, padding, true, corners, true);
if (pos.dist == 0) {
best = pos;
break;
} else {
if (bestDistance > pos.dist) {
bestDistance = pos.dist;
best = pos;
}
}
}
if (!tryOnly) {
node.style.left = best.left + "px";
node.style.top = best.top + "px";
}
return best;
};
dojo.html.scrollIntoView = function (node) {
if (!node) {
return;
}
if (dojo.render.html.ie) {
if (dojo.html.getBorderBox(node.parentNode).height <= node.parentNode.scrollHeight) {
node.scrollIntoView(false);
}
} else {
if (dojo.render.html.mozilla) {
node.scrollIntoView(false);
} else {
var parent = node.parentNode;
var parentBottom = parent.scrollTop + dojo.html.getBorderBox(parent).height;
var nodeBottom = node.offsetTop + dojo.html.getMarginBox(node).height;
if (parentBottom < nodeBottom) {
parent.scrollTop += (nodeBottom - parentBottom);
} else {
if (parent.scrollTop > node.offsetTop) {
parent.scrollTop -= (parent.scrollTop - node.offsetTop);
}
}
}
}
};
 
/trunk/api/js/dojo/src/html/color.js
New file
0,0 → 1,36
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.html.style");
dojo.provide("dojo.html.color");
dojo.require("dojo.gfx.color");
dojo.require("dojo.lang.common");
dojo.html.getBackgroundColor = function (node) {
node = dojo.byId(node);
var color;
do {
color = dojo.html.getStyle(node, "background-color");
if (color.toLowerCase() == "rgba(0, 0, 0, 0)") {
color = "transparent";
}
if (node == document.getElementsByTagName("body")[0]) {
node = null;
break;
}
node = node.parentNode;
} while (node && dojo.lang.inArray(["transparent", ""], color));
if (color == "transparent") {
color = [255, 255, 255, 0];
} else {
color = dojo.gfx.color.extractRGB(color);
}
return color;
};
 
/trunk/api/js/dojo/src/html/style.js
New file
0,0 → 1,481
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.style");
dojo.require("dojo.html.common");
dojo.require("dojo.uri.Uri");
dojo.html.getClass = function (node) {
node = dojo.byId(node);
if (!node) {
return "";
}
var cs = "";
if (node.className) {
cs = node.className;
} else {
if (dojo.html.hasAttribute(node, "class")) {
cs = dojo.html.getAttribute(node, "class");
}
}
return cs.replace(/^\s+|\s+$/g, "");
};
dojo.html.getClasses = function (node) {
var c = dojo.html.getClass(node);
return (c == "") ? [] : c.split(/\s+/g);
};
dojo.html.hasClass = function (node, classname) {
return (new RegExp("(^|\\s+)" + classname + "(\\s+|$)")).test(dojo.html.getClass(node));
};
dojo.html.prependClass = function (node, classStr) {
classStr += " " + dojo.html.getClass(node);
return dojo.html.setClass(node, classStr);
};
dojo.html.addClass = function (node, classStr) {
if (dojo.html.hasClass(node, classStr)) {
return false;
}
classStr = (dojo.html.getClass(node) + " " + classStr).replace(/^\s+|\s+$/g, "");
return dojo.html.setClass(node, classStr);
};
dojo.html.setClass = function (node, classStr) {
node = dojo.byId(node);
var cs = new String(classStr);
try {
if (typeof node.className == "string") {
node.className = cs;
} else {
if (node.setAttribute) {
node.setAttribute("class", classStr);
node.className = cs;
} else {
return false;
}
}
}
catch (e) {
dojo.debug("dojo.html.setClass() failed", e);
}
return true;
};
dojo.html.removeClass = function (node, classStr, allowPartialMatches) {
try {
if (!allowPartialMatches) {
var newcs = dojo.html.getClass(node).replace(new RegExp("(^|\\s+)" + classStr + "(\\s+|$)"), "$1$2");
} else {
var newcs = dojo.html.getClass(node).replace(classStr, "");
}
dojo.html.setClass(node, newcs);
}
catch (e) {
dojo.debug("dojo.html.removeClass() failed", e);
}
return true;
};
dojo.html.replaceClass = function (node, newClass, oldClass) {
dojo.html.removeClass(node, oldClass);
dojo.html.addClass(node, newClass);
};
dojo.html.classMatchType = {ContainsAll:0, ContainsAny:1, IsOnly:2};
dojo.html.getElementsByClass = function (classStr, parent, nodeType, classMatchType, useNonXpath) {
useNonXpath = false;
var _document = dojo.doc();
parent = dojo.byId(parent) || _document;
var classes = classStr.split(/\s+/g);
var nodes = [];
if (classMatchType != 1 && classMatchType != 2) {
classMatchType = 0;
}
var reClass = new RegExp("(\\s|^)((" + classes.join(")|(") + "))(\\s|$)");
var srtLength = classes.join(" ").length;
var candidateNodes = [];
if (!useNonXpath && _document.evaluate) {
var xpath = ".//" + (nodeType || "*") + "[contains(";
if (classMatchType != dojo.html.classMatchType.ContainsAny) {
xpath += "concat(' ',@class,' '), ' " + classes.join(" ') and contains(concat(' ',@class,' '), ' ") + " ')";
if (classMatchType == 2) {
xpath += " and string-length(@class)=" + srtLength + "]";
} else {
xpath += "]";
}
} else {
xpath += "concat(' ',@class,' '), ' " + classes.join(" ') or contains(concat(' ',@class,' '), ' ") + " ')]";
}
var xpathResult = _document.evaluate(xpath, parent, null, XPathResult.ANY_TYPE, null);
var result = xpathResult.iterateNext();
while (result) {
try {
candidateNodes.push(result);
result = xpathResult.iterateNext();
}
catch (e) {
break;
}
}
return candidateNodes;
} else {
if (!nodeType) {
nodeType = "*";
}
candidateNodes = parent.getElementsByTagName(nodeType);
var node, i = 0;
outer:
while (node = candidateNodes[i++]) {
var nodeClasses = dojo.html.getClasses(node);
if (nodeClasses.length == 0) {
continue outer;
}
var matches = 0;
for (var j = 0; j < nodeClasses.length; j++) {
if (reClass.test(nodeClasses[j])) {
if (classMatchType == dojo.html.classMatchType.ContainsAny) {
nodes.push(node);
continue outer;
} else {
matches++;
}
} else {
if (classMatchType == dojo.html.classMatchType.IsOnly) {
continue outer;
}
}
}
if (matches == classes.length) {
if ((classMatchType == dojo.html.classMatchType.IsOnly) && (matches == nodeClasses.length)) {
nodes.push(node);
} else {
if (classMatchType == dojo.html.classMatchType.ContainsAll) {
nodes.push(node);
}
}
}
}
return nodes;
}
};
dojo.html.getElementsByClassName = dojo.html.getElementsByClass;
dojo.html.toCamelCase = function (selector) {
var arr = selector.split("-"), cc = arr[0];
for (var i = 1; i < arr.length; i++) {
cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
return cc;
};
dojo.html.toSelectorCase = function (selector) {
return selector.replace(/([A-Z])/g, "-$1").toLowerCase();
};
if (dojo.render.html.ie) {
dojo.html.getComputedStyle = function (node, property, value) {
node = dojo.byId(node);
if (!node || !node.style) {
return value;
}
return node.currentStyle[dojo.html.toCamelCase(property)];
};
dojo.html.getComputedStyles = function (node) {
return node.currentStyle;
};
} else {
dojo.html.getComputedStyle = function (node, property, value) {
node = dojo.byId(node);
if (!node || !node.style) {
return value;
}
var s = document.defaultView.getComputedStyle(node, null);
return (s && s[dojo.html.toCamelCase(property)]) || "";
};
dojo.html.getComputedStyles = function (node) {
return document.defaultView.getComputedStyle(node, null);
};
}
dojo.html.getStyleProperty = function (node, cssSelector) {
node = dojo.byId(node);
return (node && node.style ? node.style[dojo.html.toCamelCase(cssSelector)] : undefined);
};
dojo.html.getStyle = function (node, cssSelector) {
var value = dojo.html.getStyleProperty(node, cssSelector);
return (value ? value : dojo.html.getComputedStyle(node, cssSelector));
};
dojo.html.setStyle = function (node, cssSelector, value) {
node = dojo.byId(node);
if (node && node.style) {
var camelCased = dojo.html.toCamelCase(cssSelector);
node.style[camelCased] = value;
}
};
dojo.html.setStyleText = function (target, text) {
try {
target.style.cssText = text;
}
catch (e) {
target.setAttribute("style", text);
}
};
dojo.html.copyStyle = function (target, source) {
if (!source.style.cssText) {
target.setAttribute("style", source.getAttribute("style"));
} else {
target.style.cssText = source.style.cssText;
}
dojo.html.addClass(target, dojo.html.getClass(source));
};
dojo.html.getUnitValue = function (node, cssSelector, autoIsZero) {
var s = dojo.html.getComputedStyle(node, cssSelector);
if ((!s) || ((s == "auto") && (autoIsZero))) {
return {value:0, units:"px"};
}
var match = s.match(/(\-?[\d.]+)([a-z%]*)/i);
if (!match) {
return dojo.html.getUnitValue.bad;
}
return {value:Number(match[1]), units:match[2].toLowerCase()};
};
dojo.html.getUnitValue.bad = {value:NaN, units:""};
if (dojo.render.html.ie) {
dojo.html.toPixelValue = function (element, styleValue) {
if (!styleValue) {
return 0;
}
if (styleValue.slice(-2) == "px") {
return parseFloat(styleValue);
}
var pixelValue = 0;
with (element) {
var sLeft = style.left;
var rsLeft = runtimeStyle.left;
runtimeStyle.left = currentStyle.left;
try {
style.left = styleValue || 0;
pixelValue = style.pixelLeft;
style.left = sLeft;
runtimeStyle.left = rsLeft;
}
catch (e) {
}
}
return pixelValue;
};
} else {
dojo.html.toPixelValue = function (element, styleValue) {
return (styleValue && (styleValue.slice(-2) == "px") ? parseFloat(styleValue) : 0);
};
}
dojo.html.getPixelValue = function (node, styleProperty, autoIsZero) {
return dojo.html.toPixelValue(node, dojo.html.getComputedStyle(node, styleProperty));
};
dojo.html.setPositivePixelValue = function (node, selector, value) {
if (isNaN(value)) {
return false;
}
node.style[selector] = Math.max(0, value) + "px";
return true;
};
dojo.html.styleSheet = null;
dojo.html.insertCssRule = function (selector, declaration, index) {
if (!dojo.html.styleSheet) {
if (document.createStyleSheet) {
dojo.html.styleSheet = document.createStyleSheet();
} else {
if (document.styleSheets[0]) {
dojo.html.styleSheet = document.styleSheets[0];
} else {
return null;
}
}
}
if (arguments.length < 3) {
if (dojo.html.styleSheet.cssRules) {
index = dojo.html.styleSheet.cssRules.length;
} else {
if (dojo.html.styleSheet.rules) {
index = dojo.html.styleSheet.rules.length;
} else {
return null;
}
}
}
if (dojo.html.styleSheet.insertRule) {
var rule = selector + " { " + declaration + " }";
return dojo.html.styleSheet.insertRule(rule, index);
} else {
if (dojo.html.styleSheet.addRule) {
return dojo.html.styleSheet.addRule(selector, declaration, index);
} else {
return null;
}
}
};
dojo.html.removeCssRule = function (index) {
if (!dojo.html.styleSheet) {
dojo.debug("no stylesheet defined for removing rules");
return false;
}
if (dojo.render.html.ie) {
if (!index) {
index = dojo.html.styleSheet.rules.length;
dojo.html.styleSheet.removeRule(index);
}
} else {
if (document.styleSheets[0]) {
if (!index) {
index = dojo.html.styleSheet.cssRules.length;
}
dojo.html.styleSheet.deleteRule(index);
}
}
return true;
};
dojo.html._insertedCssFiles = [];
dojo.html.insertCssFile = function (URI, doc, checkDuplicates, fail_ok) {
if (!URI) {
return;
}
if (!doc) {
doc = document;
}
var cssStr = dojo.hostenv.getText(URI, false, fail_ok);
if (cssStr === null) {
return;
}
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
if (checkDuplicates) {
var idx = -1, node, ent = dojo.html._insertedCssFiles;
for (var i = 0; i < ent.length; i++) {
if ((ent[i].doc == doc) && (ent[i].cssText == cssStr)) {
idx = i;
node = ent[i].nodeRef;
break;
}
}
if (node) {
var styles = doc.getElementsByTagName("style");
for (var i = 0; i < styles.length; i++) {
if (styles[i] == node) {
return;
}
}
dojo.html._insertedCssFiles.shift(idx, 1);
}
}
var style = dojo.html.insertCssText(cssStr, doc);
dojo.html._insertedCssFiles.push({"doc":doc, "cssText":cssStr, "nodeRef":style});
if (style && djConfig.isDebug) {
style.setAttribute("dbgHref", URI);
}
return style;
};
dojo.html.insertCssText = function (cssStr, doc, URI) {
if (!cssStr) {
return;
}
if (!doc) {
doc = document;
}
if (URI) {
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
}
var style = doc.createElement("style");
style.setAttribute("type", "text/css");
var head = doc.getElementsByTagName("head")[0];
if (!head) {
dojo.debug("No head tag in document, aborting styles");
return;
} else {
head.appendChild(style);
}
if (style.styleSheet) {
var setFunc = function () {
try {
style.styleSheet.cssText = cssStr;
}
catch (e) {
dojo.debug(e);
}
};
if (style.styleSheet.disabled) {
setTimeout(setFunc, 10);
} else {
setFunc();
}
} else {
var cssText = doc.createTextNode(cssStr);
style.appendChild(cssText);
}
return style;
};
dojo.html.fixPathsInCssText = function (cssStr, URI) {
if (!cssStr || !URI) {
return;
}
var match, str = "", url = "", urlChrs = "[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
var regex = new RegExp("url\\(\\s*(" + urlChrs + ")\\s*\\)");
var regexProtocol = /(file|https?|ftps?):\/\//;
regexTrim = new RegExp("^[\\s]*(['\"]?)(" + urlChrs + ")\\1[\\s]*?$");
if (dojo.render.html.ie55 || dojo.render.html.ie60) {
var regexIe = new RegExp("AlphaImageLoader\\((.*)src=['\"](" + urlChrs + ")['\"]");
while (match = regexIe.exec(cssStr)) {
url = match[2].replace(regexTrim, "$2");
if (!regexProtocol.exec(url)) {
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "AlphaImageLoader(" + match[1] + "src='" + url + "'";
cssStr = cssStr.substr(match.index + match[0].length);
}
cssStr = str + cssStr;
str = "";
}
while (match = regex.exec(cssStr)) {
url = match[1].replace(regexTrim, "$2");
if (!regexProtocol.exec(url)) {
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "url(" + url + ")";
cssStr = cssStr.substr(match.index + match[0].length);
}
return str + cssStr;
};
dojo.html.setActiveStyleSheet = function (title) {
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if (a.getAttribute("title") == title) {
a.disabled = false;
}
}
}
};
dojo.html.getActiveStyleSheet = function () {
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) {
return a.getAttribute("title");
}
}
return null;
};
dojo.html.getPreferredStyleSheet = function () {
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title")) {
return a.getAttribute("title");
}
}
return null;
};
dojo.html.applyBrowserClass = function (node) {
var drh = dojo.render.html;
var classes = {dj_ie:drh.ie, dj_ie55:drh.ie55, dj_ie6:drh.ie60, dj_ie7:drh.ie70, dj_iequirks:drh.ie && drh.quirks, dj_opera:drh.opera, dj_opera8:drh.opera && (Math.floor(dojo.render.version) == 8), dj_opera9:drh.opera && (Math.floor(dojo.render.version) == 9), dj_khtml:drh.khtml, dj_safari:drh.safari, dj_gecko:drh.mozilla};
for (var p in classes) {
if (classes[p]) {
dojo.html.addClass(node, p);
}
}
};
 
/trunk/api/js/dojo/src/html/iframe.js
New file
0,0 → 1,82
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.iframe");
dojo.require("dojo.html.util");
dojo.html.iframeContentWindow = function (iframe_el) {
var win = dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(iframe_el)) || dojo.html.iframeContentDocument(iframe_el).__parent__ || (iframe_el.name && document.frames[iframe_el.name]) || null;
return win;
};
dojo.html.iframeContentDocument = function (iframe_el) {
var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null;
return doc;
};
dojo.html.BackgroundIframe = function (node) {
if (dojo.render.html.ie55 || dojo.render.html.ie60) {
var html = "<iframe src='javascript:false'" + " style='position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;" + "z-index: -1; filter:Alpha(Opacity=\"0\");' " + ">";
this.iframe = dojo.doc().createElement(html);
this.iframe.tabIndex = -1;
if (node) {
node.appendChild(this.iframe);
this.domNode = node;
} else {
dojo.body().appendChild(this.iframe);
this.iframe.style.display = "none";
}
}
};
dojo.lang.extend(dojo.html.BackgroundIframe, {iframe:null, onResized:function () {
if (this.iframe && this.domNode && this.domNode.parentNode) {
var outer = dojo.html.getMarginBox(this.domNode);
if (outer.width == 0 || outer.height == 0) {
dojo.lang.setTimeout(this, this.onResized, 100);
return;
}
this.iframe.style.width = outer.width + "px";
this.iframe.style.height = outer.height + "px";
}
}, size:function (node) {
if (!this.iframe) {
return;
}
var coords = dojo.html.toCoordinateObject(node, true, dojo.html.boxSizing.BORDER_BOX);
with (this.iframe.style) {
width = coords.width + "px";
height = coords.height + "px";
left = coords.left + "px";
top = coords.top + "px";
}
}, setZIndex:function (node) {
if (!this.iframe) {
return;
}
if (dojo.dom.isNode(node)) {
this.iframe.style.zIndex = dojo.html.getStyle(node, "z-index") - 1;
} else {
if (!isNaN(node)) {
this.iframe.style.zIndex = node;
}
}
}, show:function () {
if (this.iframe) {
this.iframe.style.display = "block";
}
}, hide:function () {
if (this.iframe) {
this.iframe.style.display = "none";
}
}, remove:function () {
if (this.iframe) {
dojo.html.removeNode(this.iframe, true);
delete this.iframe;
this.iframe = null;
}
}});
 
/trunk/api/js/dojo/src/html/display.js
New file
0,0 → 1,145
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.display");
dojo.require("dojo.html.style");
dojo.html._toggle = function (node, tester, setter) {
node = dojo.byId(node);
setter(node, !tester(node));
return tester(node);
};
dojo.html.show = function (node) {
node = dojo.byId(node);
if (dojo.html.getStyleProperty(node, "display") == "none") {
dojo.html.setStyle(node, "display", (node.dojoDisplayCache || ""));
node.dojoDisplayCache = undefined;
}
};
dojo.html.hide = function (node) {
node = dojo.byId(node);
if (typeof node["dojoDisplayCache"] == "undefined") {
var d = dojo.html.getStyleProperty(node, "display");
if (d != "none") {
node.dojoDisplayCache = d;
}
}
dojo.html.setStyle(node, "display", "none");
};
dojo.html.setShowing = function (node, showing) {
dojo.html[(showing ? "show" : "hide")](node);
};
dojo.html.isShowing = function (node) {
return (dojo.html.getStyleProperty(node, "display") != "none");
};
dojo.html.toggleShowing = function (node) {
return dojo.html._toggle(node, dojo.html.isShowing, dojo.html.setShowing);
};
dojo.html.displayMap = {tr:"", td:"", th:"", img:"inline", span:"inline", input:"inline", button:"inline"};
dojo.html.suggestDisplayByTagName = function (node) {
node = dojo.byId(node);
if (node && node.tagName) {
var tag = node.tagName.toLowerCase();
return (tag in dojo.html.displayMap ? dojo.html.displayMap[tag] : "block");
}
};
dojo.html.setDisplay = function (node, display) {
dojo.html.setStyle(node, "display", ((display instanceof String || typeof display == "string") ? display : (display ? dojo.html.suggestDisplayByTagName(node) : "none")));
};
dojo.html.isDisplayed = function (node) {
return (dojo.html.getComputedStyle(node, "display") != "none");
};
dojo.html.toggleDisplay = function (node) {
return dojo.html._toggle(node, dojo.html.isDisplayed, dojo.html.setDisplay);
};
dojo.html.setVisibility = function (node, visibility) {
dojo.html.setStyle(node, "visibility", ((visibility instanceof String || typeof visibility == "string") ? visibility : (visibility ? "visible" : "hidden")));
};
dojo.html.isVisible = function (node) {
return (dojo.html.getComputedStyle(node, "visibility") != "hidden");
};
dojo.html.toggleVisibility = function (node) {
return dojo.html._toggle(node, dojo.html.isVisible, dojo.html.setVisibility);
};
dojo.html.setOpacity = function (node, opacity, dontFixOpacity) {
node = dojo.byId(node);
var h = dojo.render.html;
if (!dontFixOpacity) {
if (opacity >= 1) {
if (h.ie) {
dojo.html.clearOpacity(node);
return;
} else {
opacity = 0.999999;
}
} else {
if (opacity < 0) {
opacity = 0;
}
}
}
if (h.ie) {
if (node.nodeName.toLowerCase() == "tr") {
var tds = node.getElementsByTagName("td");
for (var x = 0; x < tds.length; x++) {
tds[x].style.filter = "Alpha(Opacity=" + opacity * 100 + ")";
}
}
node.style.filter = "Alpha(Opacity=" + opacity * 100 + ")";
} else {
if (h.moz) {
node.style.opacity = opacity;
node.style.MozOpacity = opacity;
} else {
if (h.safari) {
node.style.opacity = opacity;
node.style.KhtmlOpacity = opacity;
} else {
node.style.opacity = opacity;
}
}
}
};
dojo.html.clearOpacity = function (node) {
node = dojo.byId(node);
var ns = node.style;
var h = dojo.render.html;
if (h.ie) {
try {
if (node.filters && node.filters.alpha) {
ns.filter = "";
}
}
catch (e) {
}
} else {
if (h.moz) {
ns.opacity = 1;
ns.MozOpacity = 1;
} else {
if (h.safari) {
ns.opacity = 1;
ns.KhtmlOpacity = 1;
} else {
ns.opacity = 1;
}
}
}
};
dojo.html.getOpacity = function (node) {
node = dojo.byId(node);
var h = dojo.render.html;
if (h.ie) {
var opac = (node.filters && node.filters.alpha && typeof node.filters.alpha.opacity == "number" ? node.filters.alpha.opacity : 100) / 100;
} else {
var opac = node.style.opacity || node.style.MozOpacity || node.style.KhtmlOpacity || 1;
}
return opac >= 0.999999 ? 1 : Number(opac);
};
 
/trunk/api/js/dojo/src/html/selection.js
New file
0,0 → 1,337
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.html.common");
dojo.provide("dojo.html.selection");
dojo.require("dojo.dom");
dojo.require("dojo.lang.common");
dojo.html.selectionType = {NONE:0, TEXT:1, CONTROL:2};
dojo.html.clearSelection = function () {
var _window = dojo.global();
var _document = dojo.doc();
try {
if (_window["getSelection"]) {
if (dojo.render.html.safari) {
_window.getSelection().collapse();
} else {
_window.getSelection().removeAllRanges();
}
} else {
if (_document.selection) {
if (_document.selection.empty) {
_document.selection.empty();
} else {
if (_document.selection.clear) {
_document.selection.clear();
}
}
}
}
return true;
}
catch (e) {
dojo.debug(e);
return false;
}
};
dojo.html.disableSelection = function (element) {
element = dojo.byId(element) || dojo.body();
var h = dojo.render.html;
if (h.mozilla) {
element.style.MozUserSelect = "none";
} else {
if (h.safari) {
element.style.KhtmlUserSelect = "none";
} else {
if (h.ie) {
element.unselectable = "on";
} else {
return false;
}
}
}
return true;
};
dojo.html.enableSelection = function (element) {
element = dojo.byId(element) || dojo.body();
var h = dojo.render.html;
if (h.mozilla) {
element.style.MozUserSelect = "";
} else {
if (h.safari) {
element.style.KhtmlUserSelect = "";
} else {
if (h.ie) {
element.unselectable = "off";
} else {
return false;
}
}
}
return true;
};
dojo.html.selectElement = function (element) {
dojo.deprecated("dojo.html.selectElement", "replaced by dojo.html.selection.selectElementChildren", 0.5);
};
dojo.html.selectInputText = function (element) {
var _window = dojo.global();
var _document = dojo.doc();
element = dojo.byId(element);
if (_document["selection"] && dojo.body()["createTextRange"]) {
var range = element.createTextRange();
range.moveStart("character", 0);
range.moveEnd("character", element.value.length);
range.select();
} else {
if (_window["getSelection"]) {
var selection = _window.getSelection();
element.setSelectionRange(0, element.value.length);
}
}
element.focus();
};
dojo.html.isSelectionCollapsed = function () {
dojo.deprecated("dojo.html.isSelectionCollapsed", "replaced by dojo.html.selection.isCollapsed", 0.5);
return dojo.html.selection.isCollapsed();
};
dojo.lang.mixin(dojo.html.selection, {getType:function () {
if (dojo.doc()["selection"]) {
return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];
} else {
var stype = dojo.html.selectionType.TEXT;
var oSel;
try {
oSel = dojo.global().getSelection();
}
catch (e) {
}
if (oSel && oSel.rangeCount == 1) {
var oRange = oSel.getRangeAt(0);
if (oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != dojo.dom.TEXT_NODE) {
stype = dojo.html.selectionType.CONTROL;
}
}
return stype;
}
}, isCollapsed:function () {
var _window = dojo.global();
var _document = dojo.doc();
if (_document["selection"]) {
return _document.selection.createRange().text == "";
} else {
if (_window["getSelection"]) {
var selection = _window.getSelection();
if (dojo.lang.isString(selection)) {
return selection == "";
} else {
return selection.isCollapsed || selection.toString() == "";
}
}
}
}, getSelectedElement:function () {
if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
if (dojo.doc()["selection"]) {
var range = dojo.doc().selection.createRange();
if (range && range.item) {
return dojo.doc().selection.createRange().item(0);
}
} else {
var selection = dojo.global().getSelection();
return selection.anchorNode.childNodes[selection.anchorOffset];
}
}
}, getParentElement:function () {
if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
var p = dojo.html.selection.getSelectedElement();
if (p) {
return p.parentNode;
}
} else {
if (dojo.doc()["selection"]) {
return dojo.doc().selection.createRange().parentElement();
} else {
var selection = dojo.global().getSelection();
if (selection) {
var node = selection.anchorNode;
while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
node = node.parentNode;
}
return node;
}
}
}
}, getSelectedText:function () {
if (dojo.doc()["selection"]) {
if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
return null;
}
return dojo.doc().selection.createRange().text;
} else {
var selection = dojo.global().getSelection();
if (selection) {
return selection.toString();
}
}
}, getSelectedHtml:function () {
if (dojo.doc()["selection"]) {
if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
return null;
}
return dojo.doc().selection.createRange().htmlText;
} else {
var selection = dojo.global().getSelection();
if (selection && selection.rangeCount) {
var frag = selection.getRangeAt(0).cloneContents();
var div = document.createElement("div");
div.appendChild(frag);
return div.innerHTML;
}
return null;
}
}, hasAncestorElement:function (tagName) {
return (dojo.html.selection.getAncestorElement.apply(this, arguments) != null);
}, getAncestorElement:function (tagName) {
var node = dojo.html.selection.getSelectedElement() || dojo.html.selection.getParentElement();
while (node) {
if (dojo.html.selection.isTag(node, arguments).length > 0) {
return node;
}
node = node.parentNode;
}
return null;
}, isTag:function (node, tags) {
if (node && node.tagName) {
for (var i = 0; i < tags.length; i++) {
if (node.tagName.toLowerCase() == String(tags[i]).toLowerCase()) {
return String(tags[i]).toLowerCase();
}
}
}
return "";
}, selectElement:function (element) {
var _window = dojo.global();
var _document = dojo.doc();
element = dojo.byId(element);
if (_document.selection && dojo.body().createTextRange) {
try {
var range = dojo.body().createControlRange();
range.addElement(element);
range.select();
}
catch (e) {
dojo.html.selection.selectElementChildren(element);
}
} else {
if (_window["getSelection"]) {
var selection = _window.getSelection();
if (selection["removeAllRanges"]) {
var range = _document.createRange();
range.selectNode(element);
selection.removeAllRanges();
selection.addRange(range);
}
}
}
}, selectElementChildren:function (element) {
var _window = dojo.global();
var _document = dojo.doc();
element = dojo.byId(element);
if (_document.selection && dojo.body().createTextRange) {
var range = dojo.body().createTextRange();
range.moveToElementText(element);
range.select();
} else {
if (_window["getSelection"]) {
var selection = _window.getSelection();
if (selection["setBaseAndExtent"]) {
selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1);
} else {
if (selection["selectAllChildren"]) {
selection.selectAllChildren(element);
}
}
}
}
}, getBookmark:function () {
var bookmark;
var _document = dojo.doc();
if (_document["selection"]) {
var range = _document.selection.createRange();
bookmark = range.getBookmark();
} else {
var selection;
try {
selection = dojo.global().getSelection();
}
catch (e) {
}
if (selection) {
var range = selection.getRangeAt(0);
bookmark = range.cloneRange();
} else {
dojo.debug("No idea how to store the current selection for this browser!");
}
}
return bookmark;
}, moveToBookmark:function (bookmark) {
var _document = dojo.doc();
if (_document["selection"]) {
var range = _document.selection.createRange();
range.moveToBookmark(bookmark);
range.select();
} else {
var selection;
try {
selection = dojo.global().getSelection();
}
catch (e) {
}
if (selection && selection["removeAllRanges"]) {
selection.removeAllRanges();
selection.addRange(bookmark);
} else {
dojo.debug("No idea how to restore selection for this browser!");
}
}
}, collapse:function (beginning) {
if (dojo.global()["getSelection"]) {
var selection = dojo.global().getSelection();
if (selection.removeAllRanges) {
if (beginning) {
selection.collapseToStart();
} else {
selection.collapseToEnd();
}
} else {
dojo.global().getSelection().collapse(beginning);
}
} else {
if (dojo.doc().selection) {
var range = dojo.doc().selection.createRange();
range.collapse(beginning);
range.select();
}
}
}, remove:function () {
if (dojo.doc().selection) {
var selection = dojo.doc().selection;
if (selection.type.toUpperCase() != "NONE") {
selection.clear();
}
return selection;
} else {
var selection = dojo.global().getSelection();
for (var i = 0; i < selection.rangeCount; i++) {
selection.getRangeAt(i).deleteContents();
}
return selection;
}
}});
 
/trunk/api/js/dojo/src/html/shadow.js
New file
0,0 → 1,15
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.shadow");
dojo.require("dojo.lfx.shadow");
dojo.deprecated("dojo.html.shadow has been moved to dojo.lfx.", "0.5");
dojo.html.shadow = dojo.lfx.shadow;
 
/trunk/api/js/dojo/src/html/metrics.js
New file
0,0 → 1,213
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html.metrics");
dojo.require("dojo.html.layout");
dojo.html.getScrollbar = function () {
var scroll = document.createElement("div");
scroll.style.width = "100px";
scroll.style.height = "100px";
scroll.style.overflow = "scroll";
scroll.style.position = "absolute";
scroll.style.top = "-300px";
scroll.style.left = "0px";
var test = document.createElement("div");
test.style.width = "400px";
test.style.height = "400px";
scroll.appendChild(test);
dojo.body().appendChild(scroll);
var width = scroll.offsetWidth - scroll.clientWidth;
dojo.body().removeChild(scroll);
scroll.removeChild(test);
scroll = test = null;
return {width:width};
};
dojo.html.getFontMeasurements = function () {
var heights = {"1em":0, "1ex":0, "100%":0, "12pt":0, "16px":0, "xx-small":0, "x-small":0, "small":0, "medium":0, "large":0, "x-large":0, "xx-large":0};
if (dojo.render.html.ie) {
document.documentElement.style.fontSize = "100%";
}
var div = document.createElement("div");
div.style.position = "absolute";
div.style.left = "-100px";
div.style.top = "0";
div.style.width = "30px";
div.style.height = "1000em";
div.style.border = "0";
div.style.margin = "0";
div.style.padding = "0";
div.style.outline = "0";
div.style.lineHeight = "1";
div.style.overflow = "hidden";
dojo.body().appendChild(div);
for (var p in heights) {
div.style.fontSize = p;
heights[p] = Math.round(div.offsetHeight * 12 / 16) * 16 / 12 / 1000;
}
dojo.body().removeChild(div);
div = null;
return heights;
};
dojo.html._fontMeasurements = null;
dojo.html.getCachedFontMeasurements = function (recalculate) {
if (recalculate || !dojo.html._fontMeasurements) {
dojo.html._fontMeasurements = dojo.html.getFontMeasurements();
}
return dojo.html._fontMeasurements;
};
dojo.html.measureFragment = function (node, html, boxType) {
var clone = node.cloneNode(true);
clone.innerHTML = html;
node.parentNode.appendChild(clone);
var ret = dojo.html.getElementBox(clone, boxType);
node.parentNode.removeChild(clone);
clone = null;
return ret;
};
dojo.html.getFittedFragment = function (node, html) {
function cl(node) {
var element = document.createElement(node.tagName);
element.id = node.id + "-clone";
element.className = node.className;
for (var j = 0; j < node.attributes.length; j++) {
if (node.attributes[j].specified) {
if (node.attributes[j].nodeName.toLowerCase() != "style" && node.attributes[j].nodeName.toLowerCase() != "edited" && node.attributes[j].nodeName.toLowerCase() != "contenteditable" && node.attributes[j].nodeName.toLowerCase() != "id" && node.attributes[j].nodeName.toLowerCase() != "class") {
element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue);
}
}
}
return element;
}
var height = dojo.html.getFontMeasurements()["16px"];
var n = cl(node);
n.style.width = dojo.html.getBorderBox(node).width + "px";
n.style.height = (height + 4) + "px";
node.parentNode.appendChild(n);
var rem = dojo.html.fitToElement(n, html);
var ret = n.innerHTML;
n.parentNode.removeChild(n);
return ret;
};
dojo.html.fitToElement = function (node, html) {
function cl(node) {
var element = document.createElement(node.tagName);
element.id = node.id + "-clone";
element.className = node.className;
for (var j = 0; j < node.attributes.length; j++) {
if (node.attributes[j].specified) {
if (node.attributes[j].nodeName.toLowerCase() != "style" && node.attributes[j].nodeName.toLowerCase() != "edited" && node.attributes[j].nodeName.toLowerCase() != "contenteditable" && node.attributes[j].nodeName.toLowerCase() != "id" && node.attributes[j].nodeName.toLowerCase() != "class") {
element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue);
}
}
}
return element;
}
var clone = cl(node);
node.parentNode.appendChild(clone);
var t = dojo.html.getBorderBox(node);
clone.style.width = t.width + "px";
var singletons = ["br", "img", "hr", "input", "!--"];
var chop = ["<BR>", "<br>", "<br/>", "<br />", "<p></p>", "<P></P>"];
var openTags = [];
var str = html;
var i = 0;
var limit = str.length;
var add = 0;
var doLoop = true;
clone.innerHTML = str;
while (doLoop) {
add = Math.round((limit - i) / 2);
if (add <= 1) {
doLoop = false;
}
i += add;
clone.innerHTML = str.substr(0, i);
if (clone.offsetHeight > t.height) {
limit = i;
i -= add;
}
}
if (str.substr(0, i) != str) {
var lastSpace = str.substr(0, i).lastIndexOf(" ");
var lastNewLine = str.substr(0, i).lastIndexOf("\n");
var lastGreater = str.substr(0, i).lastIndexOf(">");
var lastLess = str.substr(0, i).lastIndexOf("<");
if (lastLess <= lastGreater && lastNewLine == i - 1) {
i = i;
} else {
if (lastSpace != -1 && lastSpace > lastGreater && lastGreater > lastLess) {
i = lastSpace + 1;
} else {
if (lastLess > lastGreater) {
i = lastLess;
} else {
if (lastGreater != -1) {
i = lastGreater + 1;
}
}
}
}
}
str = str.substr(0, i);
var ret = html.substr(str.length);
var doPush = true;
var tags = str.split("<");
tags.shift();
for (var j = 0; j < tags.length; j++) {
tags[j] = tags[j].split(">")[0];
if (tags[j].charAt(tags[j].length - 1) == "/") {
continue;
}
if (tags[j].charAt(0) != "/") {
for (var k = 0; k < singletons.length; k++) {
if (tags[j].split(" ")[0].toLowerCase() == singletons[k]) {
doPush = false;
}
}
if (doPush) {
openTags.push(tags[j]);
}
doPush = true;
} else {
openTags.pop();
}
}
for (var j = 0; j < chop.length; j++) {
if (ret.charAt(0) == "\n") {
ret = ret.substr(1);
}
while (ret.indexOf(chop[j]) == 0) {
ret = ret.substr(chop[j].length);
}
}
for (var j = openTags.length - 1; j >= 0; j--) {
if (str.lastIndexOf(openTags[j]) == (str.length - openTags[j].length - 1)) {
str = str.substring(0, str.lastIndexOf(openTags[j]));
} else {
str += "</" + openTags[j] + ">";
}
if (ret.length > 0) {
ret = "<" + openTags[j] + ">" + ret;
}
}
for (var j = 0; j < chop.length; j++) {
if (ret.charAt(0) == "\n") {
ret = ret.substr(1);
}
while (ret.indexOf(chop[j]) == 0) {
ret = ret.substr(chop[j].length);
}
}
node.innerHTML = str;
clone.parentNode.removeChild(clone);
clone = null;
return ret;
};
 
/trunk/api/js/dojo/src/dnd/HtmlDragAndDrop.js
New file
0,0 → 1,367
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.HtmlDragAndDrop");
dojo.require("dojo.dnd.HtmlDragManager");
dojo.require("dojo.dnd.DragAndDrop");
dojo.require("dojo.html.*");
dojo.require("dojo.html.display");
dojo.require("dojo.html.util");
dojo.require("dojo.html.selection");
dojo.require("dojo.html.iframe");
dojo.require("dojo.lang.extras");
dojo.require("dojo.lfx.*");
dojo.require("dojo.event.*");
dojo.declare("dojo.dnd.HtmlDragSource", dojo.dnd.DragSource, {dragClass:"", onDragStart:function () {
var dragObj = new dojo.dnd.HtmlDragObject(this.dragObject, this.type);
if (this.dragClass) {
dragObj.dragClass = this.dragClass;
}
if (this.constrainToContainer) {
dragObj.constrainTo(this.constrainingContainer || this.domNode.parentNode);
}
return dragObj;
}, setDragHandle:function (node) {
node = dojo.byId(node);
dojo.dnd.dragManager.unregisterDragSource(this);
this.domNode = node;
dojo.dnd.dragManager.registerDragSource(this);
}, setDragTarget:function (node) {
this.dragObject = node;
}, constrainTo:function (container) {
this.constrainToContainer = true;
if (container) {
this.constrainingContainer = container;
}
}, onSelected:function () {
for (var i = 0; i < this.dragObjects.length; i++) {
dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragSource(this.dragObjects[i]));
}
}, addDragObjects:function (el) {
for (var i = 0; i < arguments.length; i++) {
this.dragObjects.push(dojo.byId(arguments[i]));
}
}}, function (node, type) {
node = dojo.byId(node);
this.dragObjects = [];
this.constrainToContainer = false;
if (node) {
this.domNode = node;
this.dragObject = node;
this.type = (type) || (this.domNode.nodeName.toLowerCase());
dojo.dnd.DragSource.prototype.reregister.call(this);
}
});
dojo.declare("dojo.dnd.HtmlDragObject", dojo.dnd.DragObject, {dragClass:"", opacity:0.5, createIframe:true, disableX:false, disableY:false, createDragNode:function () {
var node = this.domNode.cloneNode(true);
if (this.dragClass) {
dojo.html.addClass(node, this.dragClass);
}
if (this.opacity < 1) {
dojo.html.setOpacity(node, this.opacity);
}
var ltn = node.tagName.toLowerCase();
var isTr = (ltn == "tr");
if ((isTr) || (ltn == "tbody")) {
var doc = this.domNode.ownerDocument;
var table = doc.createElement("table");
if (isTr) {
var tbody = doc.createElement("tbody");
table.appendChild(tbody);
tbody.appendChild(node);
} else {
table.appendChild(node);
}
var tmpSrcTr = ((isTr) ? this.domNode : this.domNode.firstChild);
var tmpDstTr = ((isTr) ? node : node.firstChild);
var domTds = tmpSrcTr.childNodes;
var cloneTds = tmpDstTr.childNodes;
for (var i = 0; i < domTds.length; i++) {
if ((cloneTds[i]) && (cloneTds[i].style)) {
cloneTds[i].style.width = dojo.html.getContentBox(domTds[i]).width + "px";
}
}
node = table;
}
if ((dojo.render.html.ie55 || dojo.render.html.ie60) && this.createIframe) {
with (node.style) {
top = "0px";
left = "0px";
}
var outer = document.createElement("div");
outer.appendChild(node);
this.bgIframe = new dojo.html.BackgroundIframe(outer);
outer.appendChild(this.bgIframe.iframe);
node = outer;
}
node.style.zIndex = 999;
return node;
}, onDragStart:function (e) {
dojo.html.clearSelection();
this.scrollOffset = dojo.html.getScroll().offset;
this.dragStartPosition = dojo.html.getAbsolutePosition(this.domNode, true);
this.dragOffset = {y:this.dragStartPosition.y - e.pageY, x:this.dragStartPosition.x - e.pageX};
this.dragClone = this.createDragNode();
this.containingBlockPosition = this.domNode.offsetParent ? dojo.html.getAbsolutePosition(this.domNode.offsetParent, true) : {x:0, y:0};
if (this.constrainToContainer) {
this.constraints = this.getConstraints();
}
with (this.dragClone.style) {
position = "absolute";
top = this.dragOffset.y + e.pageY + "px";
left = this.dragOffset.x + e.pageX + "px";
}
dojo.body().appendChild(this.dragClone);
dojo.event.topic.publish("dragStart", {source:this});
}, getConstraints:function () {
if (this.constrainingContainer.nodeName.toLowerCase() == "body") {
var viewport = dojo.html.getViewport();
var width = viewport.width;
var height = viewport.height;
var scroll = dojo.html.getScroll().offset;
var x = scroll.x;
var y = scroll.y;
} else {
var content = dojo.html.getContentBox(this.constrainingContainer);
width = content.width;
height = content.height;
x = this.containingBlockPosition.x + dojo.html.getPixelValue(this.constrainingContainer, "padding-left", true) + dojo.html.getBorderExtent(this.constrainingContainer, "left");
y = this.containingBlockPosition.y + dojo.html.getPixelValue(this.constrainingContainer, "padding-top", true) + dojo.html.getBorderExtent(this.constrainingContainer, "top");
}
var mb = dojo.html.getMarginBox(this.domNode);
return {minX:x, minY:y, maxX:x + width - mb.width, maxY:y + height - mb.height};
}, updateDragOffset:function () {
var scroll = dojo.html.getScroll().offset;
if (scroll.y != this.scrollOffset.y) {
var diff = scroll.y - this.scrollOffset.y;
this.dragOffset.y += diff;
this.scrollOffset.y = scroll.y;
}
if (scroll.x != this.scrollOffset.x) {
var diff = scroll.x - this.scrollOffset.x;
this.dragOffset.x += diff;
this.scrollOffset.x = scroll.x;
}
}, onDragMove:function (e) {
this.updateDragOffset();
var x = this.dragOffset.x + e.pageX;
var y = this.dragOffset.y + e.pageY;
if (this.constrainToContainer) {
if (x < this.constraints.minX) {
x = this.constraints.minX;
}
if (y < this.constraints.minY) {
y = this.constraints.minY;
}
if (x > this.constraints.maxX) {
x = this.constraints.maxX;
}
if (y > this.constraints.maxY) {
y = this.constraints.maxY;
}
}
this.setAbsolutePosition(x, y);
dojo.event.topic.publish("dragMove", {source:this});
}, setAbsolutePosition:function (x, y) {
if (!this.disableY) {
this.dragClone.style.top = y + "px";
}
if (!this.disableX) {
this.dragClone.style.left = x + "px";
}
}, onDragEnd:function (e) {
switch (e.dragStatus) {
case "dropSuccess":
dojo.html.removeNode(this.dragClone);
this.dragClone = null;
break;
case "dropFailure":
var startCoords = dojo.html.getAbsolutePosition(this.dragClone, true);
var endCoords = {left:this.dragStartPosition.x + 1, top:this.dragStartPosition.y + 1};
var anim = dojo.lfx.slideTo(this.dragClone, endCoords, 300);
var dragObject = this;
dojo.event.connect(anim, "onEnd", function (e) {
dojo.html.removeNode(dragObject.dragClone);
dragObject.dragClone = null;
});
anim.play();
break;
}
dojo.event.topic.publish("dragEnd", {source:this});
}, constrainTo:function (container) {
this.constrainToContainer = true;
if (container) {
this.constrainingContainer = container;
} else {
this.constrainingContainer = this.domNode.parentNode;
}
}}, function (node, type) {
this.domNode = dojo.byId(node);
this.type = type;
this.constrainToContainer = false;
this.dragSource = null;
dojo.dnd.DragObject.prototype.register.call(this);
});
dojo.declare("dojo.dnd.HtmlDropTarget", dojo.dnd.DropTarget, {vertical:false, onDragOver:function (e) {
if (!this.accepts(e.dragObjects)) {
return false;
}
this.childBoxes = [];
for (var i = 0, child; i < this.domNode.childNodes.length; i++) {
child = this.domNode.childNodes[i];
if (child.nodeType != dojo.html.ELEMENT_NODE) {
continue;
}
var pos = dojo.html.getAbsolutePosition(child, true);
var inner = dojo.html.getBorderBox(child);
this.childBoxes.push({top:pos.y, bottom:pos.y + inner.height, left:pos.x, right:pos.x + inner.width, height:inner.height, width:inner.width, node:child});
}
return true;
}, _getNodeUnderMouse:function (e) {
for (var i = 0, child; i < this.childBoxes.length; i++) {
with (this.childBoxes[i]) {
if (e.pageX >= left && e.pageX <= right && e.pageY >= top && e.pageY <= bottom) {
return i;
}
}
}
return -1;
}, createDropIndicator:function () {
this.dropIndicator = document.createElement("div");
with (this.dropIndicator.style) {
position = "absolute";
zIndex = 999;
if (this.vertical) {
borderLeftWidth = "1px";
borderLeftColor = "black";
borderLeftStyle = "solid";
height = dojo.html.getBorderBox(this.domNode).height + "px";
top = dojo.html.getAbsolutePosition(this.domNode, true).y + "px";
} else {
borderTopWidth = "1px";
borderTopColor = "black";
borderTopStyle = "solid";
width = dojo.html.getBorderBox(this.domNode).width + "px";
left = dojo.html.getAbsolutePosition(this.domNode, true).x + "px";
}
}
}, onDragMove:function (e, dragObjects) {
var i = this._getNodeUnderMouse(e);
if (!this.dropIndicator) {
this.createDropIndicator();
}
var gravity = this.vertical ? dojo.html.gravity.WEST : dojo.html.gravity.NORTH;
var hide = false;
if (i < 0) {
if (this.childBoxes.length) {
var before = (dojo.html.gravity(this.childBoxes[0].node, e) & gravity);
if (before) {
hide = true;
}
} else {
var before = true;
}
} else {
var child = this.childBoxes[i];
var before = (dojo.html.gravity(child.node, e) & gravity);
if (child.node === dragObjects[0].dragSource.domNode) {
hide = true;
} else {
var currentPosChild = before ? (i > 0 ? this.childBoxes[i - 1] : child) : (i < this.childBoxes.length - 1 ? this.childBoxes[i + 1] : child);
if (currentPosChild.node === dragObjects[0].dragSource.domNode) {
hide = true;
}
}
}
if (hide) {
this.dropIndicator.style.display = "none";
return;
} else {
this.dropIndicator.style.display = "";
}
this.placeIndicator(e, dragObjects, i, before);
if (!dojo.html.hasParent(this.dropIndicator)) {
dojo.body().appendChild(this.dropIndicator);
}
}, placeIndicator:function (e, dragObjects, boxIndex, before) {
var targetProperty = this.vertical ? "left" : "top";
var child;
if (boxIndex < 0) {
if (this.childBoxes.length) {
child = before ? this.childBoxes[0] : this.childBoxes[this.childBoxes.length - 1];
} else {
this.dropIndicator.style[targetProperty] = dojo.html.getAbsolutePosition(this.domNode, true)[this.vertical ? "x" : "y"] + "px";
}
} else {
child = this.childBoxes[boxIndex];
}
if (child) {
this.dropIndicator.style[targetProperty] = (before ? child[targetProperty] : child[this.vertical ? "right" : "bottom"]) + "px";
if (this.vertical) {
this.dropIndicator.style.height = child.height + "px";
this.dropIndicator.style.top = child.top + "px";
} else {
this.dropIndicator.style.width = child.width + "px";
this.dropIndicator.style.left = child.left + "px";
}
}
}, onDragOut:function (e) {
if (this.dropIndicator) {
dojo.html.removeNode(this.dropIndicator);
delete this.dropIndicator;
}
}, onDrop:function (e) {
this.onDragOut(e);
var i = this._getNodeUnderMouse(e);
var gravity = this.vertical ? dojo.html.gravity.WEST : dojo.html.gravity.NORTH;
if (i < 0) {
if (this.childBoxes.length) {
if (dojo.html.gravity(this.childBoxes[0].node, e) & gravity) {
return this.insert(e, this.childBoxes[0].node, "before");
} else {
return this.insert(e, this.childBoxes[this.childBoxes.length - 1].node, "after");
}
}
return this.insert(e, this.domNode, "append");
}
var child = this.childBoxes[i];
if (dojo.html.gravity(child.node, e) & gravity) {
return this.insert(e, child.node, "before");
} else {
return this.insert(e, child.node, "after");
}
}, insert:function (e, refNode, position) {
var node = e.dragObject.domNode;
if (position == "before") {
return dojo.html.insertBefore(node, refNode);
} else {
if (position == "after") {
return dojo.html.insertAfter(node, refNode);
} else {
if (position == "append") {
refNode.appendChild(node);
return true;
}
}
}
return false;
}}, function (node, types) {
if (arguments.length == 0) {
return;
}
this.domNode = dojo.byId(node);
dojo.dnd.DropTarget.call(this);
if (types && dojo.lang.isString(types)) {
types = [types];
}
this.acceptedTypes = types || [];
dojo.dnd.dragManager.registerDropTarget(this);
});
 
/trunk/api/js/dojo/src/dnd/Sortable.js
New file
0,0 → 1,22
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.Sortable");
dojo.require("dojo.dnd.*");
dojo.dnd.Sortable = function () {
};
dojo.lang.extend(dojo.dnd.Sortable, {ondragstart:function (e) {
var dragObject = e.target;
while (dragObject.parentNode && dragObject.parentNode != this) {
dragObject = dragObject.parentNode;
}
return dragObject;
}});
 
/trunk/api/js/dojo/src/dnd/HtmlDragCopy.js
New file
0,0 → 1,68
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.HtmlDragCopy");
dojo.require("dojo.dnd.*");
dojo.declare("dojo.dnd.HtmlDragCopySource", dojo.dnd.HtmlDragSource, function (node, type, copyOnce) {
this.copyOnce = copyOnce;
this.makeCopy = true;
}, {onDragStart:function () {
var dragObj = new dojo.dnd.HtmlDragCopyObject(this.dragObject, this.type, this);
if (this.dragClass) {
dragObj.dragClass = this.dragClass;
}
if (this.constrainToContainer) {
dragObj.constrainTo(this.constrainingContainer || this.domNode.parentNode);
}
return dragObj;
}, onSelected:function () {
for (var i = 0; i < this.dragObjects.length; i++) {
dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragCopySource(this.dragObjects[i]));
}
}});
dojo.declare("dojo.dnd.HtmlDragCopyObject", dojo.dnd.HtmlDragObject, function (dragObject, type, source) {
this.copySource = source;
}, {onDragStart:function (e) {
dojo.dnd.HtmlDragCopyObject.superclass.onDragStart.apply(this, arguments);
if (this.copySource.makeCopy) {
this.sourceNode = this.domNode;
this.domNode = this.domNode.cloneNode(true);
}
}, onDragEnd:function (e) {
switch (e.dragStatus) {
case "dropFailure":
var startCoords = dojo.html.getAbsolutePosition(this.dragClone, true);
var endCoords = {left:this.dragStartPosition.x + 1, top:this.dragStartPosition.y + 1};
var anim = dojo.lfx.slideTo(this.dragClone, endCoords, 500, dojo.lfx.easeOut);
var dragObject = this;
dojo.event.connect(anim, "onEnd", function (e) {
dojo.lang.setTimeout(function () {
dojo.html.removeNode(dragObject.dragClone);
dragObject.dragClone = null;
if (dragObject.copySource.makeCopy) {
dojo.html.removeNode(dragObject.domNode);
dragObject.domNode = dragObject.sourceNode;
dragObject.sourceNode = null;
}
}, 200);
});
anim.play();
dojo.event.topic.publish("dragEnd", {source:this});
return;
}
dojo.dnd.HtmlDragCopyObject.superclass.onDragEnd.apply(this, arguments);
this.copySource.dragObject = this.domNode;
if (this.copySource.copyOnce) {
this.copySource.makeCopy = false;
}
new dojo.dnd.HtmlDragCopySource(this.sourceNode, this.type, this.copySource.copyOnce);
this.sourceNode = null;
}});
 
/trunk/api/js/dojo/src/dnd/HtmlDragManager.js
New file
0,0 → 1,293
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.HtmlDragManager");
dojo.require("dojo.dnd.DragAndDrop");
dojo.require("dojo.event.*");
dojo.require("dojo.lang.array");
dojo.require("dojo.html.common");
dojo.require("dojo.html.layout");
dojo.declare("dojo.dnd.HtmlDragManager", dojo.dnd.DragManager, {disabled:false, nestedTargets:false, mouseDownTimer:null, dsCounter:0, dsPrefix:"dojoDragSource", dropTargetDimensions:[], currentDropTarget:null, previousDropTarget:null, _dragTriggered:false, selectedSources:[], dragObjects:[], dragSources:[], dropTargets:[], currentX:null, currentY:null, lastX:null, lastY:null, mouseDownX:null, mouseDownY:null, threshold:7, dropAcceptable:false, cancelEvent:function (e) {
e.stopPropagation();
e.preventDefault();
}, registerDragSource:function (ds) {
if (ds["domNode"]) {
var dp = this.dsPrefix;
var dpIdx = dp + "Idx_" + (this.dsCounter++);
ds.dragSourceId = dpIdx;
this.dragSources[dpIdx] = ds;
ds.domNode.setAttribute(dp, dpIdx);
if (dojo.render.html.ie) {
dojo.event.browser.addListener(ds.domNode, "ondragstart", this.cancelEvent);
}
}
}, unregisterDragSource:function (ds) {
if (ds["domNode"]) {
var dp = this.dsPrefix;
var dpIdx = ds.dragSourceId;
delete ds.dragSourceId;
delete this.dragSources[dpIdx];
ds.domNode.setAttribute(dp, null);
if (dojo.render.html.ie) {
dojo.event.browser.removeListener(ds.domNode, "ondragstart", this.cancelEvent);
}
}
}, registerDropTarget:function (dt) {
this.dropTargets.push(dt);
}, unregisterDropTarget:function (dt) {
var index = dojo.lang.find(this.dropTargets, dt, true);
if (index >= 0) {
this.dropTargets.splice(index, 1);
}
}, getDragSource:function (e) {
var tn = e.target;
if (tn === dojo.body()) {
return;
}
var ta = dojo.html.getAttribute(tn, this.dsPrefix);
while ((!ta) && (tn)) {
tn = tn.parentNode;
if ((!tn) || (tn === dojo.body())) {
return;
}
ta = dojo.html.getAttribute(tn, this.dsPrefix);
}
return this.dragSources[ta];
}, onKeyDown:function (e) {
}, onMouseDown:function (e) {
if (this.disabled) {
return;
}
if (dojo.render.html.ie) {
if (e.button != 1) {
return;
}
} else {
if (e.which != 1) {
return;
}
}
var target = e.target.nodeType == dojo.html.TEXT_NODE ? e.target.parentNode : e.target;
if (dojo.html.isTag(target, "button", "textarea", "input", "select", "option")) {
return;
}
var ds = this.getDragSource(e);
if (!ds) {
return;
}
if (!dojo.lang.inArray(this.selectedSources, ds)) {
this.selectedSources.push(ds);
ds.onSelected();
}
this.mouseDownX = e.pageX;
this.mouseDownY = e.pageY;
e.preventDefault();
dojo.event.connect(document, "onmousemove", this, "onMouseMove");
}, onMouseUp:function (e, cancel) {
if (this.selectedSources.length == 0) {
return;
}
this.mouseDownX = null;
this.mouseDownY = null;
this._dragTriggered = false;
e.dragSource = this.dragSource;
if ((!e.shiftKey) && (!e.ctrlKey)) {
if (this.currentDropTarget) {
this.currentDropTarget.onDropStart();
}
dojo.lang.forEach(this.dragObjects, function (tempDragObj) {
var ret = null;
if (!tempDragObj) {
return;
}
if (this.currentDropTarget) {
e.dragObject = tempDragObj;
var ce = this.currentDropTarget.domNode.childNodes;
if (ce.length > 0) {
e.dropTarget = ce[0];
while (e.dropTarget == tempDragObj.domNode) {
e.dropTarget = e.dropTarget.nextSibling;
}
} else {
e.dropTarget = this.currentDropTarget.domNode;
}
if (this.dropAcceptable) {
ret = this.currentDropTarget.onDrop(e);
} else {
this.currentDropTarget.onDragOut(e);
}
}
e.dragStatus = this.dropAcceptable && ret ? "dropSuccess" : "dropFailure";
dojo.lang.delayThese([function () {
try {
tempDragObj.dragSource.onDragEnd(e);
}
catch (err) {
var ecopy = {};
for (var i in e) {
if (i == "type") {
ecopy.type = "mouseup";
continue;
}
ecopy[i] = e[i];
}
tempDragObj.dragSource.onDragEnd(ecopy);
}
}, function () {
tempDragObj.onDragEnd(e);
}]);
}, this);
this.selectedSources = [];
this.dragObjects = [];
this.dragSource = null;
if (this.currentDropTarget) {
this.currentDropTarget.onDropEnd();
}
} else {
}
dojo.event.disconnect(document, "onmousemove", this, "onMouseMove");
this.currentDropTarget = null;
}, onScroll:function () {
for (var i = 0; i < this.dragObjects.length; i++) {
if (this.dragObjects[i].updateDragOffset) {
this.dragObjects[i].updateDragOffset();
}
}
if (this.dragObjects.length) {
this.cacheTargetLocations();
}
}, _dragStartDistance:function (x, y) {
if ((!this.mouseDownX) || (!this.mouseDownX)) {
return;
}
var dx = Math.abs(x - this.mouseDownX);
var dx2 = dx * dx;
var dy = Math.abs(y - this.mouseDownY);
var dy2 = dy * dy;
return parseInt(Math.sqrt(dx2 + dy2), 10);
}, cacheTargetLocations:function () {
dojo.profile.start("cacheTargetLocations");
this.dropTargetDimensions = [];
dojo.lang.forEach(this.dropTargets, function (tempTarget) {
var tn = tempTarget.domNode;
if (!tn || !tempTarget.accepts([this.dragSource])) {
return;
}
var abs = dojo.html.getAbsolutePosition(tn, true);
var bb = dojo.html.getBorderBox(tn);
this.dropTargetDimensions.push([[abs.x, abs.y], [abs.x + bb.width, abs.y + bb.height], tempTarget]);
}, this);
dojo.profile.end("cacheTargetLocations");
}, onMouseMove:function (e) {
if ((dojo.render.html.ie) && (e.button != 1)) {
this.currentDropTarget = null;
this.onMouseUp(e, true);
return;
}
if ((this.selectedSources.length) && (!this.dragObjects.length)) {
var dx;
var dy;
if (!this._dragTriggered) {
this._dragTriggered = (this._dragStartDistance(e.pageX, e.pageY) > this.threshold);
if (!this._dragTriggered) {
return;
}
dx = e.pageX - this.mouseDownX;
dy = e.pageY - this.mouseDownY;
}
this.dragSource = this.selectedSources[0];
dojo.lang.forEach(this.selectedSources, function (tempSource) {
if (!tempSource) {
return;
}
var tdo = tempSource.onDragStart(e);
if (tdo) {
tdo.onDragStart(e);
tdo.dragOffset.y += dy;
tdo.dragOffset.x += dx;
tdo.dragSource = tempSource;
this.dragObjects.push(tdo);
}
}, this);
this.previousDropTarget = null;
this.cacheTargetLocations();
}
dojo.lang.forEach(this.dragObjects, function (dragObj) {
if (dragObj) {
dragObj.onDragMove(e);
}
});
if (this.currentDropTarget) {
var c = dojo.html.toCoordinateObject(this.currentDropTarget.domNode, true);
var dtp = [[c.x, c.y], [c.x + c.width, c.y + c.height]];
}
if ((!this.nestedTargets) && (dtp) && (this.isInsideBox(e, dtp))) {
if (this.dropAcceptable) {
this.currentDropTarget.onDragMove(e, this.dragObjects);
}
} else {
var bestBox = this.findBestTarget(e);
if (bestBox.target === null) {
if (this.currentDropTarget) {
this.currentDropTarget.onDragOut(e);
this.previousDropTarget = this.currentDropTarget;
this.currentDropTarget = null;
}
this.dropAcceptable = false;
return;
}
if (this.currentDropTarget !== bestBox.target) {
if (this.currentDropTarget) {
this.previousDropTarget = this.currentDropTarget;
this.currentDropTarget.onDragOut(e);
}
this.currentDropTarget = bestBox.target;
e.dragObjects = this.dragObjects;
this.dropAcceptable = this.currentDropTarget.onDragOver(e);
} else {
if (this.dropAcceptable) {
this.currentDropTarget.onDragMove(e, this.dragObjects);
}
}
}
}, findBestTarget:function (e) {
var _this = this;
var bestBox = new Object();
bestBox.target = null;
bestBox.points = null;
dojo.lang.every(this.dropTargetDimensions, function (tmpDA) {
if (!_this.isInsideBox(e, tmpDA)) {
return true;
}
bestBox.target = tmpDA[2];
bestBox.points = tmpDA;
return Boolean(_this.nestedTargets);
});
return bestBox;
}, isInsideBox:function (e, coords) {
if ((e.pageX > coords[0][0]) && (e.pageX < coords[1][0]) && (e.pageY > coords[0][1]) && (e.pageY < coords[1][1])) {
return true;
}
return false;
}, onMouseOver:function (e) {
}, onMouseOut:function (e) {
}});
dojo.dnd.dragManager = new dojo.dnd.HtmlDragManager();
(function () {
var d = document;
var dm = dojo.dnd.dragManager;
dojo.event.connect(d, "onkeydown", dm, "onKeyDown");
dojo.event.connect(d, "onmouseover", dm, "onMouseOver");
dojo.event.connect(d, "onmouseout", dm, "onMouseOut");
dojo.event.connect(d, "onmousedown", dm, "onMouseDown");
dojo.event.connect(d, "onmouseup", dm, "onMouseUp");
dojo.event.connect(window, "onscroll", dm, "onScroll");
})();
 
/trunk/api/js/dojo/src/dnd/TreeDragAndDropV3.js
New file
0,0 → 1,216
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.TreeDragAndDropV3");
dojo.require("dojo.dnd.HtmlDragAndDrop");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.extras");
dojo.require("dojo.Deferred");
dojo.require("dojo.html.layout");
dojo.dnd.TreeDragSourceV3 = function (node, syncController, type, treeNode) {
this.controller = syncController;
this.treeNode = treeNode;
dojo.dnd.HtmlDragSource.call(this, node, type);
};
dojo.inherits(dojo.dnd.TreeDragSourceV3, dojo.dnd.HtmlDragSource);
dojo.dnd.TreeDropTargetV3 = function (domNode, controller, type, treeNode) {
this.treeNode = treeNode;
this.controller = controller;
dojo.dnd.HtmlDropTarget.call(this, domNode, type);
};
dojo.inherits(dojo.dnd.TreeDropTargetV3, dojo.dnd.HtmlDropTarget);
dojo.lang.extend(dojo.dnd.TreeDropTargetV3, {autoExpandDelay:1500, autoExpandTimer:null, position:null, indicatorStyle:"2px black groove", showIndicator:function (position) {
if (this.position == position) {
return;
}
this.hideIndicator();
this.position = position;
var node = this.treeNode;
node.contentNode.style.width = dojo.html.getBorderBox(node.labelNode).width + "px";
if (position == "onto") {
node.contentNode.style.border = this.indicatorStyle;
} else {
if (position == "before") {
node.contentNode.style.borderTop = this.indicatorStyle;
} else {
if (position == "after") {
node.contentNode.style.borderBottom = this.indicatorStyle;
}
}
}
}, hideIndicator:function () {
this.treeNode.contentNode.style.borderBottom = "";
this.treeNode.contentNode.style.borderTop = "";
this.treeNode.contentNode.style.border = "";
this.treeNode.contentNode.style.width = "";
this.position = null;
}, onDragOver:function (e) {
var accepts = dojo.dnd.HtmlDropTarget.prototype.onDragOver.apply(this, arguments);
if (accepts && this.treeNode.isFolder && !this.treeNode.isExpanded) {
this.setAutoExpandTimer();
}
if (accepts) {
this.cacheNodeCoords();
}
return accepts;
}, accepts:function (dragObjects) {
var accepts = dojo.dnd.HtmlDropTarget.prototype.accepts.apply(this, arguments);
if (!accepts) {
return false;
}
for (var i = 0; i < dragObjects.length; i++) {
var sourceTreeNode = dragObjects[i].treeNode;
if (sourceTreeNode === this.treeNode) {
return false;
}
}
return true;
}, setAutoExpandTimer:function () {
var _this = this;
var autoExpand = function () {
if (dojo.dnd.dragManager.currentDropTarget === _this) {
_this.controller.expand(_this.treeNode);
dojo.dnd.dragManager.cacheTargetLocations();
}
};
this.autoExpandTimer = dojo.lang.setTimeout(autoExpand, _this.autoExpandDelay);
}, getAcceptPosition:function (e, dragObjects) {
var DndMode = this.treeNode.tree.DndMode;
if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO && this.treeNode.actionIsDisabledNow(this.treeNode.actions.ADDCHILD)) {
DndMode &= ~dojo.widget.TreeV3.prototype.DndModes.ONTO;
}
var position = this.getPosition(e, DndMode);
if (position == "onto") {
return position;
}
for (var i = 0; i < dragObjects.length; i++) {
var source = dragObjects[i].dragSource;
if (source.treeNode && this.isAdjacentNode(source.treeNode, position)) {
continue;
}
if (!this.controller.canMove(source.treeNode ? source.treeNode : source, this.treeNode.parent)) {
return false;
}
}
return position;
}, onDropEnd:function (e) {
this.clearAutoExpandTimer();
this.hideIndicator();
}, onDragOut:function (e) {
this.clearAutoExpandTimer();
this.hideIndicator();
}, clearAutoExpandTimer:function () {
if (this.autoExpandTimer) {
clearTimeout(this.autoExpandTimer);
this.autoExpandTimer = null;
}
}, onDragMove:function (e, dragObjects) {
var position = this.getAcceptPosition(e, dragObjects);
if (position) {
this.showIndicator(position);
}
}, isAdjacentNode:function (sourceNode, position) {
if (sourceNode === this.treeNode) {
return true;
}
if (sourceNode.getNextSibling() === this.treeNode && position == "before") {
return true;
}
if (sourceNode.getPreviousSibling() === this.treeNode && position == "after") {
return true;
}
return false;
}, cacheNodeCoords:function () {
var node = this.treeNode.contentNode;
this.cachedNodeY = dojo.html.getAbsolutePosition(node).y;
this.cachedNodeHeight = dojo.html.getBorderBox(node).height;
}, getPosition:function (e, DndMode) {
var mousey = e.pageY || e.clientY + dojo.body().scrollTop;
var relY = mousey - this.cachedNodeY;
var p = relY / this.cachedNodeHeight;
var position = "";
if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO && DndMode & dojo.widget.TreeV3.prototype.DndModes.BETWEEN) {
if (p <= 0.33) {
position = "before";
} else {
if (p <= 0.66 || this.treeNode.isExpanded && this.treeNode.children.length && !this.treeNode.isLastChild()) {
position = "onto";
} else {
position = "after";
}
}
} else {
if (DndMode & dojo.widget.TreeV3.prototype.DndModes.BETWEEN) {
if (p <= 0.5 || this.treeNode.isExpanded && this.treeNode.children.length && !this.treeNode.isLastChild()) {
position = "before";
} else {
position = "after";
}
} else {
if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO) {
position = "onto";
}
}
}
return position;
}, getTargetParentIndex:function (source, position) {
var index = position == "before" ? this.treeNode.getParentIndex() : this.treeNode.getParentIndex() + 1;
if (source.treeNode && this.treeNode.parent === source.treeNode.parent && this.treeNode.getParentIndex() > source.treeNode.getParentIndex()) {
index--;
}
return index;
}, onDrop:function (e) {
var position = this.position;
var source = e.dragObject.dragSource;
var targetParent, targetIndex;
if (position == "onto") {
targetParent = this.treeNode;
targetIndex = 0;
} else {
targetIndex = this.getTargetParentIndex(source, position);
targetParent = this.treeNode.parent;
}
var r = this.getDropHandler(e, source, targetParent, targetIndex)();
return r;
}, getDropHandler:function (e, source, targetParent, targetIndex) {
var handler;
var _this = this;
handler = function () {
var result;
if (source.treeNode) {
result = _this.controller.move(source.treeNode, targetParent, targetIndex, true);
} else {
if (dojo.lang.isFunction(source.onDrop)) {
source.onDrop(targetParent, targetIndex);
}
var treeNode = source.getTreeNode();
if (treeNode) {
result = _this.controller.createChild(targetParent, targetIndex, treeNode, true);
} else {
result = true;
}
}
if (result instanceof dojo.Deferred) {
var isSuccess = result.fired == 0;
if (!isSuccess) {
_this.handleDropError(source, targetParent, targetIndex, result);
}
return isSuccess;
} else {
return result;
}
};
return handler;
}, handleDropError:function (source, parent, index, result) {
dojo.debug("TreeDropTargetV3.handleDropError: DND error occured");
dojo.debugShallow(result);
}});
 
/trunk/api/js/dojo/src/dnd/DragAndDrop.js
New file
0,0 → 1,74
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.declare");
dojo.provide("dojo.dnd.DragAndDrop");
dojo.declare("dojo.dnd.DragSource", null, {type:"", onDragEnd:function (evt) {
}, onDragStart:function (evt) {
}, onSelected:function (evt) {
}, unregister:function () {
dojo.dnd.dragManager.unregisterDragSource(this);
}, reregister:function () {
dojo.dnd.dragManager.registerDragSource(this);
}});
dojo.declare("dojo.dnd.DragObject", null, {type:"", register:function () {
var dm = dojo.dnd.dragManager;
if (dm["registerDragObject"]) {
dm.registerDragObject(this);
}
}, onDragStart:function (evt) {
}, onDragMove:function (evt) {
}, onDragOver:function (evt) {
}, onDragOut:function (evt) {
}, onDragEnd:function (evt) {
}, onDragLeave:dojo.lang.forward("onDragOut"), onDragEnter:dojo.lang.forward("onDragOver"), ondragout:dojo.lang.forward("onDragOut"), ondragover:dojo.lang.forward("onDragOver")});
dojo.declare("dojo.dnd.DropTarget", null, {acceptsType:function (type) {
if (!dojo.lang.inArray(this.acceptedTypes, "*")) {
if (!dojo.lang.inArray(this.acceptedTypes, type)) {
return false;
}
}
return true;
}, accepts:function (dragObjects) {
if (!dojo.lang.inArray(this.acceptedTypes, "*")) {
for (var i = 0; i < dragObjects.length; i++) {
if (!dojo.lang.inArray(this.acceptedTypes, dragObjects[i].type)) {
return false;
}
}
}
return true;
}, unregister:function () {
dojo.dnd.dragManager.unregisterDropTarget(this);
}, onDragOver:function (evt) {
}, onDragOut:function (evt) {
}, onDragMove:function (evt) {
}, onDropStart:function (evt) {
}, onDrop:function (evt) {
}, onDropEnd:function () {
}}, function () {
this.acceptedTypes = [];
});
dojo.dnd.DragEvent = function () {
this.dragSource = null;
this.dragObject = null;
this.target = null;
this.eventStatus = "success";
};
dojo.declare("dojo.dnd.DragManager", null, {selectedSources:[], dragObjects:[], dragSources:[], registerDragSource:function (source) {
}, dropTargets:[], registerDropTarget:function (target) {
}, lastDragTarget:null, currentDragTarget:null, onKeyDown:function () {
}, onMouseOut:function () {
}, onMouseMove:function () {
}, onMouseUp:function () {
}});
 
/trunk/api/js/dojo/src/dnd/TreeDragAndDrop.js
New file
0,0 → 1,251
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.TreeDragAndDrop");
dojo.require("dojo.dnd.HtmlDragAndDrop");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.extras");
dojo.require("dojo.html.layout");
dojo.dnd.TreeDragSource = function (node, syncController, type, treeNode) {
this.controller = syncController;
this.treeNode = treeNode;
dojo.dnd.HtmlDragSource.call(this, node, type);
};
dojo.inherits(dojo.dnd.TreeDragSource, dojo.dnd.HtmlDragSource);
dojo.lang.extend(dojo.dnd.TreeDragSource, {onDragStart:function () {
var dragObject = dojo.dnd.HtmlDragSource.prototype.onDragStart.call(this);
dragObject.treeNode = this.treeNode;
dragObject.onDragStart = dojo.lang.hitch(dragObject, function (e) {
this.savedSelectedNode = this.treeNode.tree.selector.selectedNode;
if (this.savedSelectedNode) {
this.savedSelectedNode.unMarkSelected();
}
var result = dojo.dnd.HtmlDragObject.prototype.onDragStart.apply(this, arguments);
var cloneGrid = this.dragClone.getElementsByTagName("img");
for (var i = 0; i < cloneGrid.length; i++) {
cloneGrid.item(i).style.backgroundImage = "url()";
}
return result;
});
dragObject.onDragEnd = function (e) {
if (this.savedSelectedNode) {
this.savedSelectedNode.markSelected();
}
return dojo.dnd.HtmlDragObject.prototype.onDragEnd.apply(this, arguments);
};
return dragObject;
}, onDragEnd:function (e) {
var res = dojo.dnd.HtmlDragSource.prototype.onDragEnd.call(this, e);
return res;
}});
dojo.dnd.TreeDropTarget = function (domNode, controller, type, treeNode) {
this.treeNode = treeNode;
this.controller = controller;
dojo.dnd.HtmlDropTarget.apply(this, [domNode, type]);
};
dojo.inherits(dojo.dnd.TreeDropTarget, dojo.dnd.HtmlDropTarget);
dojo.lang.extend(dojo.dnd.TreeDropTarget, {autoExpandDelay:1500, autoExpandTimer:null, position:null, indicatorStyle:"2px black solid", showIndicator:function (position) {
if (this.position == position) {
return;
}
this.hideIndicator();
this.position = position;
if (position == "before") {
this.treeNode.labelNode.style.borderTop = this.indicatorStyle;
} else {
if (position == "after") {
this.treeNode.labelNode.style.borderBottom = this.indicatorStyle;
} else {
if (position == "onto") {
this.treeNode.markSelected();
}
}
}
}, hideIndicator:function () {
this.treeNode.labelNode.style.borderBottom = "";
this.treeNode.labelNode.style.borderTop = "";
this.treeNode.unMarkSelected();
this.position = null;
}, onDragOver:function (e) {
var accepts = dojo.dnd.HtmlDropTarget.prototype.onDragOver.apply(this, arguments);
if (accepts && this.treeNode.isFolder && !this.treeNode.isExpanded) {
this.setAutoExpandTimer();
}
return accepts;
}, accepts:function (dragObjects) {
var accepts = dojo.dnd.HtmlDropTarget.prototype.accepts.apply(this, arguments);
if (!accepts) {
return false;
}
var sourceTreeNode = dragObjects[0].treeNode;
if (dojo.lang.isUndefined(sourceTreeNode) || !sourceTreeNode || !sourceTreeNode.isTreeNode) {
dojo.raise("Source is not TreeNode or not found");
}
if (sourceTreeNode === this.treeNode) {
return false;
}
return true;
}, setAutoExpandTimer:function () {
var _this = this;
var autoExpand = function () {
if (dojo.dnd.dragManager.currentDropTarget === _this) {
_this.controller.expand(_this.treeNode);
}
};
this.autoExpandTimer = dojo.lang.setTimeout(autoExpand, _this.autoExpandDelay);
}, getDNDMode:function () {
return this.treeNode.tree.DNDMode;
}, getAcceptPosition:function (e, sourceTreeNode) {
var DNDMode = this.getDNDMode();
if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO && !(!this.treeNode.actionIsDisabled(dojo.widget.TreeNode.prototype.actions.ADDCHILD) && sourceTreeNode.parent !== this.treeNode && this.controller.canMove(sourceTreeNode, this.treeNode))) {
DNDMode &= ~dojo.widget.Tree.prototype.DNDModes.ONTO;
}
var position = this.getPosition(e, DNDMode);
if (position == "onto" || (!this.isAdjacentNode(sourceTreeNode, position) && this.controller.canMove(sourceTreeNode, this.treeNode.parent))) {
return position;
} else {
return false;
}
}, onDragOut:function (e) {
this.clearAutoExpandTimer();
this.hideIndicator();
}, clearAutoExpandTimer:function () {
if (this.autoExpandTimer) {
clearTimeout(this.autoExpandTimer);
this.autoExpandTimer = null;
}
}, onDragMove:function (e, dragObjects) {
var sourceTreeNode = dragObjects[0].treeNode;
var position = this.getAcceptPosition(e, sourceTreeNode);
if (position) {
this.showIndicator(position);
}
}, isAdjacentNode:function (sourceNode, position) {
if (sourceNode === this.treeNode) {
return true;
}
if (sourceNode.getNextSibling() === this.treeNode && position == "before") {
return true;
}
if (sourceNode.getPreviousSibling() === this.treeNode && position == "after") {
return true;
}
return false;
}, getPosition:function (e, DNDMode) {
var node = dojo.byId(this.treeNode.labelNode);
var mousey = e.pageY || e.clientY + dojo.body().scrollTop;
var nodey = dojo.html.getAbsolutePosition(node).y;
var height = dojo.html.getBorderBox(node).height;
var relY = mousey - nodey;
var p = relY / height;
var position = "";
if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO && DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {
if (p <= 0.3) {
position = "before";
} else {
if (p <= 0.7) {
position = "onto";
} else {
position = "after";
}
}
} else {
if (DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {
if (p <= 0.5) {
position = "before";
} else {
position = "after";
}
} else {
if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO) {
position = "onto";
}
}
}
return position;
}, getTargetParentIndex:function (sourceTreeNode, position) {
var index = position == "before" ? this.treeNode.getParentIndex() : this.treeNode.getParentIndex() + 1;
if (this.treeNode.parent === sourceTreeNode.parent && this.treeNode.getParentIndex() > sourceTreeNode.getParentIndex()) {
index--;
}
return index;
}, onDrop:function (e) {
var position = this.position;
this.onDragOut(e);
var sourceTreeNode = e.dragObject.treeNode;
if (!dojo.lang.isObject(sourceTreeNode)) {
dojo.raise("TreeNode not found in dragObject");
}
if (position == "onto") {
return this.controller.move(sourceTreeNode, this.treeNode, 0);
} else {
var index = this.getTargetParentIndex(sourceTreeNode, position);
return this.controller.move(sourceTreeNode, this.treeNode.parent, index);
}
}});
dojo.dnd.TreeDNDController = function (treeController) {
this.treeController = treeController;
this.dragSources = {};
this.dropTargets = {};
};
dojo.lang.extend(dojo.dnd.TreeDNDController, {listenTree:function (tree) {
dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");
dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");
dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
}, unlistenTree:function (tree) {
dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");
dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");
dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
}, onTreeDestroy:function (message) {
this.unlistenTree(message.source);
}, onCreateDOMNode:function (message) {
this.registerDNDNode(message.source);
}, onAddChild:function (message) {
this.registerDNDNode(message.child);
}, onMoveFrom:function (message) {
var _this = this;
dojo.lang.forEach(message.child.getDescendants(), function (node) {
_this.unregisterDNDNode(node);
});
}, onMoveTo:function (message) {
var _this = this;
dojo.lang.forEach(message.child.getDescendants(), function (node) {
_this.registerDNDNode(node);
});
}, registerDNDNode:function (node) {
if (!node.tree.DNDMode) {
return;
}
var source = null;
var target = null;
if (!node.actionIsDisabled(node.actions.MOVE)) {
var source = new dojo.dnd.TreeDragSource(node.labelNode, this, node.tree.widgetId, node);
this.dragSources[node.widgetId] = source;
}
var target = new dojo.dnd.TreeDropTarget(node.labelNode, this.treeController, node.tree.DNDAcceptTypes, node);
this.dropTargets[node.widgetId] = target;
}, unregisterDNDNode:function (node) {
if (this.dragSources[node.widgetId]) {
dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);
delete this.dragSources[node.widgetId];
}
if (this.dropTargets[node.widgetId]) {
dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);
delete this.dropTargets[node.widgetId];
}
}});
 
/trunk/api/js/dojo/src/dnd/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.dnd.DragAndDrop"], browser:["dojo.dnd.HtmlDragAndDrop"], dashboard:["dojo.dnd.HtmlDragAndDrop"]});
dojo.provide("dojo.dnd.*");
 
/trunk/api/js/dojo/src/dnd/HtmlDragMove.js
New file
0,0 → 1,52
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dnd.HtmlDragMove");
dojo.require("dojo.dnd.*");
dojo.declare("dojo.dnd.HtmlDragMoveSource", dojo.dnd.HtmlDragSource, {onDragStart:function () {
var dragObj = new dojo.dnd.HtmlDragMoveObject(this.dragObject, this.type);
if (this.constrainToContainer) {
dragObj.constrainTo(this.constrainingContainer);
}
return dragObj;
}, onSelected:function () {
for (var i = 0; i < this.dragObjects.length; i++) {
dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragMoveSource(this.dragObjects[i]));
}
}});
dojo.declare("dojo.dnd.HtmlDragMoveObject", dojo.dnd.HtmlDragObject, {onDragStart:function (e) {
dojo.html.clearSelection();
this.dragClone = this.domNode;
if (dojo.html.getComputedStyle(this.domNode, "position") != "absolute") {
this.domNode.style.position = "relative";
}
var left = parseInt(dojo.html.getComputedStyle(this.domNode, "left"));
var top = parseInt(dojo.html.getComputedStyle(this.domNode, "top"));
this.dragStartPosition = {x:isNaN(left) ? 0 : left, y:isNaN(top) ? 0 : top};
this.scrollOffset = dojo.html.getScroll().offset;
this.dragOffset = {y:this.dragStartPosition.y - e.pageY, x:this.dragStartPosition.x - e.pageX};
this.containingBlockPosition = {x:0, y:0};
if (this.constrainToContainer) {
this.constraints = this.getConstraints();
}
dojo.event.connect(this.domNode, "onclick", this, "_squelchOnClick");
}, onDragEnd:function (e) {
}, setAbsolutePosition:function (x, y) {
if (!this.disableY) {
this.domNode.style.top = y + "px";
}
if (!this.disableX) {
this.domNode.style.left = x + "px";
}
}, _squelchOnClick:function (e) {
dojo.event.browser.stopEvent(e);
dojo.event.disconnect(this.domNode, "onclick", this, "_squelchOnClick");
}});
 
/trunk/api/js/dojo/src/hostenv_dashboard.js
New file
0,0 → 1,178
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.render.name = dojo.hostenv.name_ = "dashboard";
dojo.hostenv.println = function (message) {
return alert(message);
};
dojo.hostenv.getXmlhttpObject = function (kwArgs) {
if (widget.system && kwArgs) {
if ((kwArgs.contentType && kwArgs.contentType.indexOf("text/") != 0) || (kwArgs.headers && kwArgs.headers["content-type"] && kwArgs.headers["content-type"].indexOf("text/") != 0)) {
var curl = new dojo.hostenv.CurlRequest;
curl._save = true;
return curl;
} else {
if (kwArgs.method && kwArgs.method.toUpperCase() == "HEAD") {
return new dojo.hostenv.CurlRequest;
} else {
if (kwArgs.headers && kwArgs.header.referer) {
return new dojo.hostenv.CurlRequest;
}
}
}
}
return new XMLHttpRequest;
};
dojo.hostenv.CurlRequest = function () {
this.onreadystatechange = null;
this.readyState = 0;
this.responseText = "";
this.responseXML = null;
this.status = 0;
this.statusText = "";
this._method = "";
this._url = "";
this._async = true;
this._referrer = "";
this._headers = [];
this._save = false;
this._responseHeader = "";
this._responseHeaders = {};
this._fileName = "";
this._username = "";
this._password = "";
};
dojo.hostenv.CurlRequest.prototype.open = function (method, url, async, username, password) {
this._method = method;
this._url = url;
if (async) {
this._async = async;
}
if (username) {
this._username = username;
}
if (password) {
this._password = password;
}
};
dojo.hostenv.CurlRequest.prototype.setRequestHeader = function (label, value) {
switch (label) {
case "Referer":
this._referrer = value;
break;
case "content-type":
break;
default:
this._headers.push(label + "=" + value);
break;
}
};
dojo.hostenv.CurlRequest.prototype.getAllResponseHeaders = function () {
return this._responseHeader;
};
dojo.hostenv.CurlRequest.prototype.getResponseHeader = function (headerLabel) {
return this._responseHeaders[headerLabel];
};
dojo.hostenv.CurlRequest.prototype.send = function (content) {
this.readyState = 1;
if (this.onreadystatechange) {
this.onreadystatechange.call(this);
}
var query = {sS:""};
if (this._referrer) {
query.e = this._referrer;
}
if (this._headers.length) {
query.H = this._headers.join("&");
}
if (this._username) {
if (this._password) {
query.u = this._username + ":" + this._password;
} else {
query.u = this._username;
}
}
if (content) {
query.d = this.content;
if (this._method != "POST") {
query.G = "";
}
}
if (this._method == "HEAD") {
query.I = "";
} else {
if (this._save) {
query.I = "";
} else {
query.i = "";
}
}
var system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null);
this.readyState = 2;
if (this.onreadystatechange) {
this.onreadystatechange.call(this);
}
if (system.errorString) {
this.responseText = system.errorString;
this.status = 0;
} else {
if (this._save) {
this._responseHeader = system.outputString;
} else {
var split = system.outputString.replace(/\r/g, "").split("\n\n", 2);
this._responseHeader = split[0];
this.responseText = split[1];
}
split = this._responseHeader.split("\n");
this.statusText = split.shift();
this.status = this.statusText.split(" ")[1];
for (var i = 0, header; header = split[i]; i++) {
var header_split = header.split(": ", 2);
this._responseHeaders[header_split[0]] = header_split[1];
}
if (this._save) {
widget.system("/bin/mkdir cache", null);
this._fileName = this._url.split("/").pop().replace(/\W/g, "");
this._fileName += "." + this._responseHeaders["Content-Type"].replace(/[\r\n]/g, "").split("/").pop();
delete query.I;
query.o = "cache/" + this._fileName;
system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null);
if (!system.errorString) {
this.responseText = "cache/" + this._fileName;
}
} else {
if (this._method == "HEAD") {
this.responseText = this._responseHeader;
}
}
}
this.readyState = 4;
if (this.onreadystatechange) {
this.onreadystatechange.call(this);
}
};
dojo.hostenv.CurlRequest._formatCall = function (query, url) {
var call = ["/usr/bin/curl"];
for (var key in query) {
if (query[key] != "") {
call.push("-" + key + " '" + query[key].replace(/'/g, "'") + "'");
} else {
call.push("-" + key);
}
}
call.push("'" + url.replace(/'/g, "'") + "'");
return call.join(" ");
};
dojo.hostenv.exit = function () {
if (widget.system) {
widget.system("/bin/rm -rf cache/*", null);
}
};
 
/trunk/api/js/dojo/src/experimental.js
New file
0,0 → 1,20
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.experimental");
dojo.experimental = function (moduleName, extra) {
var message = "EXPERIMENTAL: " + moduleName;
message += " -- Not yet ready for use. APIs subject to change without notice.";
if (extra) {
message += " " + extra;
}
dojo.debug(message);
};
 
/trunk/api/js/dojo/src/data/old/Type.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Type");
dojo.require("dojo.data.old.Item");
dojo.data.old.Type = function (dataProvider) {
dojo.data.old.Item.call(this, dataProvider);
};
dojo.inherits(dojo.data.old.Type, dojo.data.old.Item);
 
/trunk/api/js/dojo/src/data/old/Attribute.js
New file
0,0 → 1,33
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Attribute");
dojo.require("dojo.data.old.Item");
dojo.require("dojo.lang.assert");
dojo.data.old.Attribute = function (dataProvider, attributeId) {
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
dojo.lang.assertType(attributeId, String);
dojo.data.old.Item.call(this, dataProvider);
this._attributeId = attributeId;
};
dojo.inherits(dojo.data.old.Attribute, dojo.data.old.Item);
dojo.data.old.Attribute.prototype.toString = function () {
return this._attributeId;
};
dojo.data.old.Attribute.prototype.getAttributeId = function () {
return this._attributeId;
};
dojo.data.old.Attribute.prototype.getType = function () {
return this.get("type");
};
dojo.data.old.Attribute.prototype.setType = function (type) {
this.set("type", type);
};
 
/trunk/api/js/dojo/src/data/old/Observable.js
New file
0,0 → 1,38
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Observable");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.assert");
dojo.data.old.Observable = function () {
};
dojo.data.old.Observable.prototype.addObserver = function (observer) {
dojo.lang.assertType(observer, Object);
dojo.lang.assertType(observer.observedObjectHasChanged, Function);
if (!this._arrayOfObservers) {
this._arrayOfObservers = [];
}
if (!dojo.lang.inArray(this._arrayOfObservers, observer)) {
this._arrayOfObservers.push(observer);
}
};
dojo.data.old.Observable.prototype.removeObserver = function (observer) {
if (!this._arrayOfObservers) {
return;
}
var index = dojo.lang.indexOf(this._arrayOfObservers, observer);
if (index != -1) {
this._arrayOfObservers.splice(index, 1);
}
};
dojo.data.old.Observable.prototype.getObservers = function () {
return this._arrayOfObservers;
};
 
/trunk/api/js/dojo/src/data/old/Kind.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Kind");
dojo.require("dojo.data.old.Item");
dojo.data.old.Kind = function (dataProvider) {
dojo.data.old.Item.call(this, dataProvider);
};
dojo.inherits(dojo.data.old.Kind, dojo.data.old.Item);
 
/trunk/api/js/dojo/src/data/old/__package__.js
New file
0,0 → 1,15
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.experimental");
dojo.experimental("dojo.data.old.*");
dojo.kwCompoundRequire({common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]});
dojo.provide("dojo.data.old.*");
 
/trunk/api/js/dojo/src/data/old/to_do.txt
New file
0,0 → 1,45
Existing Features
* can import data from .json or .csv format files
* can import data from del.icio.us
* can create and modify data programmatically
* can bind data to dojo.widget.Chart
* can bind data to dojo.widget.SortableTable
* can bind one data set to multiple widgets
* notifications: widgets are notified when data changes
* notification available per-item or per-resultSet
* can create ad-hoc attributes
* attributes can be loosely-typed
* attributes can have meta-data like type and display name
* half-implemented support for sorting
* half-implemented support for export to .json
* API for getting data in simple arrays
* API for getting ResultSets with iterators (precursor to support for something like the openrico.org live grid)
~~~~~~~~~~~~~~~~~~~~~~~~
To-Do List
* be able to import data from an html <table></table>
* think about being able to import data from some type of XML
* think about integration with dojo.undo.Manager
* think more about how to represent the notion of different data types
* think about what problems we'll run into when we have a MySQL data provider
* in TableBindingHack, improve support for data types in the SortableTable binding
* deal with ids (including MySQL multi-field keys)
* add support for item-references: employeeItem.set('department', departmentItem);
* deal with Attributes as instances of Items, not just subclasses of Items
* unit tests for compare/sort code
* unit tests for everything
* implement item.toString('json') and item.toString('xml')
* implement dataProvider.newItem({name: 'foo', age: 26})
* deal better with transactions
* add support for deleting items
* don't send out multiple notifications to the same observer
* deal with item versions
* prototype a Yahoo data provider -- http://developer.yahoo.net/common/json.html
* prototype a data provider that enforces strong typing
* prototype a data provider that prevents ad-hoc attributes
* prototype a data provider that enforces single-kind item
* prototype a data provider that allows for login/authentication
* have loosely typed result sets play nicely with widgets that expect strong typing
* prototype an example of spreadsheet-style formulas or derivation rules
* experiment with some sort of fetch() that returns only a subset of a data provider's items
 
/trunk/api/js/dojo/src/data/old/ResultSet.js
New file
0,0 → 1,50
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.ResultSet");
dojo.require("dojo.lang.assert");
dojo.require("dojo.collections.Collections");
dojo.data.old.ResultSet = function (dataProvider, arrayOfItems) {
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
dojo.lang.assertType(arrayOfItems, Array, {optional:true});
dojo.data.old.Observable.call(this);
this._dataProvider = dataProvider;
this._arrayOfItems = [];
if (arrayOfItems) {
this._arrayOfItems = arrayOfItems;
}
};
dojo.inherits(dojo.data.old.ResultSet, dojo.data.old.Observable);
dojo.data.old.ResultSet.prototype.toString = function () {
var returnString = this._arrayOfItems.join(", ");
return returnString;
};
dojo.data.old.ResultSet.prototype.toArray = function () {
return this._arrayOfItems;
};
dojo.data.old.ResultSet.prototype.getIterator = function () {
return new dojo.collections.Iterator(this._arrayOfItems);
};
dojo.data.old.ResultSet.prototype.getLength = function () {
return this._arrayOfItems.length;
};
dojo.data.old.ResultSet.prototype.getItemAt = function (index) {
return this._arrayOfItems[index];
};
dojo.data.old.ResultSet.prototype.indexOf = function (item) {
return dojo.lang.indexOf(this._arrayOfItems, item);
};
dojo.data.old.ResultSet.prototype.contains = function (item) {
return dojo.lang.inArray(this._arrayOfItems, item);
};
dojo.data.old.ResultSet.prototype.getDataProvider = function () {
return this._dataProvider;
};
 
/trunk/api/js/dojo/src/data/old/Value.js
New file
0,0 → 1,33
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Value");
dojo.require("dojo.lang.assert");
dojo.data.old.Value = function (value) {
this._value = value;
this._type = null;
};
dojo.data.old.Value.prototype.toString = function () {
return this._value.toString();
};
dojo.data.old.Value.prototype.getValue = function () {
return this._value;
};
dojo.data.old.Value.prototype.getType = function () {
dojo.unimplemented("dojo.data.old.Value.prototype.getType");
return this._type;
};
dojo.data.old.Value.prototype.compare = function () {
dojo.unimplemented("dojo.data.old.Value.prototype.compare");
};
dojo.data.old.Value.prototype.isEqual = function () {
dojo.unimplemented("dojo.data.old.Value.prototype.isEqual");
};
 
/trunk/api/js/dojo/src/data/old/format/Json.js
New file
0,0 → 1,69
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.format.Json");
dojo.require("dojo.lang.assert");
dojo.data.old.format.Json = new function () {
this.loadDataProviderFromFileContents = function (dataProvider, jsonFileContents) {
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base);
dojo.lang.assertType(jsonFileContents, String);
var arrayOfJsonData = eval("(" + jsonFileContents + ")");
this.loadDataProviderFromArrayOfJsonData(dataProvider, arrayOfJsonData);
};
this.loadDataProviderFromArrayOfJsonData = function (dataProvider, arrayOfJsonData) {
dojo.lang.assertType(arrayOfJsonData, Array, {optional:true});
if (arrayOfJsonData && (arrayOfJsonData.length > 0)) {
var firstRow = arrayOfJsonData[0];
dojo.lang.assertType(firstRow, [Array, "pureobject"]);
if (dojo.lang.isArray(firstRow)) {
_loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData);
} else {
dojo.lang.assertType(firstRow, "pureobject");
_loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData);
}
}
};
this.getJsonStringFromResultSet = function (resultSet) {
dojo.unimplemented("dojo.data.old.format.Json.getJsonStringFromResultSet");
var jsonString = null;
return jsonString;
};
function _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData) {
var arrayOfKeys = arrayOfJsonData[0];
for (var i = 1; i < arrayOfJsonData.length; ++i) {
var row = arrayOfJsonData[i];
var item = dataProvider.getNewItemToLoad();
for (var j in row) {
var value = row[j];
var key = arrayOfKeys[j];
item.load(key, value);
}
}
}
function _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData) {
for (var i in arrayOfJsonData) {
var row = arrayOfJsonData[i];
var item = dataProvider.getNewItemToLoad();
for (var key in row) {
var value = row[key];
if (dojo.lang.isArray(value)) {
var arrayOfValues = value;
for (var j in arrayOfValues) {
value = arrayOfValues[j];
item.load(key, value);
}
} else {
item.load(key, value);
}
}
}
}
}();
 
/trunk/api/js/dojo/src/data/old/format/Csv.js
New file
0,0 → 1,79
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.format.Csv");
dojo.require("dojo.lang.assert");
dojo.data.old.format.Csv = new function () {
this.getArrayStructureFromCsvFileContents = function (csvFileContents) {
dojo.lang.assertType(csvFileContents, String);
var lineEndingCharacters = new RegExp("\r\n|\n|\r");
var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
var doubleQuotes = new RegExp("\"\"", "g");
var arrayOfOutputRecords = [];
var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
for (var i in arrayOfInputLines) {
var singleLine = arrayOfInputLines[i];
if (singleLine.length > 0) {
var listOfFields = singleLine.split(",");
var j = 0;
while (j < listOfFields.length) {
var space_field_space = listOfFields[j];
var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
var field = field_space.replace(trailingWhiteSpaceCharacters, "");
var firstChar = field.charAt(0);
var lastChar = field.charAt(field.length - 1);
var secondToLastChar = field.charAt(field.length - 2);
var thirdToLastChar = field.charAt(field.length - 3);
if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
if (j + 1 === listOfFields.length) {
return null;
}
var nextField = listOfFields[j + 1];
listOfFields[j] = field_space + "," + nextField;
listOfFields.splice(j + 1, 1);
} else {
if ((firstChar == "\"") && (lastChar == "\"")) {
field = field.slice(1, (field.length - 1));
field = field.replace(doubleQuotes, "\"");
}
listOfFields[j] = field;
j += 1;
}
}
arrayOfOutputRecords.push(listOfFields);
}
}
return arrayOfOutputRecords;
};
this.loadDataProviderFromFileContents = function (dataProvider, csvFileContents) {
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base);
dojo.lang.assertType(csvFileContents, String);
var arrayOfArrays = this.getArrayStructureFromCsvFileContents(csvFileContents);
if (arrayOfArrays) {
var arrayOfKeys = arrayOfArrays[0];
for (var i = 1; i < arrayOfArrays.length; ++i) {
var row = arrayOfArrays[i];
var item = dataProvider.getNewItemToLoad();
for (var j in row) {
var value = row[j];
var key = arrayOfKeys[j];
item.load(key, value);
}
}
}
};
this.getCsvStringFromResultSet = function (resultSet) {
dojo.unimplemented("dojo.data.old.format.Csv.getCsvStringFromResultSet");
var csvString = null;
return csvString;
};
}();
 
/trunk/api/js/dojo/src/data/old/Item.js
New file
0,0 → 1,221
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.Item");
dojo.require("dojo.data.old.Observable");
dojo.require("dojo.data.old.Value");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.assert");
dojo.data.old.Item = function (dataProvider) {
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
dojo.data.old.Observable.call(this);
this._dataProvider = dataProvider;
this._dictionaryOfAttributeValues = {};
};
dojo.inherits(dojo.data.old.Item, dojo.data.old.Observable);
dojo.data.old.Item.compare = function (itemOne, itemTwo) {
dojo.lang.assertType(itemOne, dojo.data.old.Item);
if (!dojo.lang.isOfType(itemTwo, dojo.data.old.Item)) {
return -1;
}
var nameOne = itemOne.getName();
var nameTwo = itemTwo.getName();
if (nameOne == nameTwo) {
var attributeArrayOne = itemOne.getAttributes();
var attributeArrayTwo = itemTwo.getAttributes();
if (attributeArrayOne.length != attributeArrayTwo.length) {
if (attributeArrayOne.length > attributeArrayTwo.length) {
return 1;
} else {
return -1;
}
}
for (var i in attributeArrayOne) {
var attribute = attributeArrayOne[i];
var arrayOfValuesOne = itemOne.getValues(attribute);
var arrayOfValuesTwo = itemTwo.getValues(attribute);
dojo.lang.assert(arrayOfValuesOne && (arrayOfValuesOne.length > 0));
if (!arrayOfValuesTwo) {
return 1;
}
if (arrayOfValuesOne.length != arrayOfValuesTwo.length) {
if (arrayOfValuesOne.length > arrayOfValuesTwo.length) {
return 1;
} else {
return -1;
}
}
for (var j in arrayOfValuesOne) {
var value = arrayOfValuesOne[j];
if (!itemTwo.hasAttributeValue(value)) {
return 1;
}
}
return 0;
}
} else {
if (nameOne > nameTwo) {
return 1;
} else {
return -1;
}
}
};
dojo.data.old.Item.prototype.toString = function () {
var arrayOfStrings = [];
var attributes = this.getAttributes();
for (var i in attributes) {
var attribute = attributes[i];
var arrayOfValues = this.getValues(attribute);
var valueString;
if (arrayOfValues.length == 1) {
valueString = arrayOfValues[0];
} else {
valueString = "[";
valueString += arrayOfValues.join(", ");
valueString += "]";
}
arrayOfStrings.push(" " + attribute + ": " + valueString);
}
var returnString = "{ ";
returnString += arrayOfStrings.join(",\n");
returnString += " }";
return returnString;
};
dojo.data.old.Item.prototype.compare = function (otherItem) {
return dojo.data.old.Item.compare(this, otherItem);
};
dojo.data.old.Item.prototype.isEqual = function (otherItem) {
return (this.compare(otherItem) == 0);
};
dojo.data.old.Item.prototype.getName = function () {
return this.get("name");
};
dojo.data.old.Item.prototype.get = function (attributeId) {
var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
if (dojo.lang.isUndefined(literalOrValueOrArray)) {
return null;
}
if (literalOrValueOrArray instanceof dojo.data.old.Value) {
return literalOrValueOrArray.getValue();
}
if (dojo.lang.isArray(literalOrValueOrArray)) {
var dojoDataValue = literalOrValueOrArray[0];
return dojoDataValue.getValue();
}
return literalOrValueOrArray;
};
dojo.data.old.Item.prototype.getValue = function (attributeId) {
var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
if (dojo.lang.isUndefined(literalOrValueOrArray)) {
return null;
}
if (literalOrValueOrArray instanceof dojo.data.old.Value) {
return literalOrValueOrArray;
}
if (dojo.lang.isArray(literalOrValueOrArray)) {
var dojoDataValue = literalOrValueOrArray[0];
return dojoDataValue;
}
var literal = literalOrValueOrArray;
dojoDataValue = new dojo.data.old.Value(literal);
this._dictionaryOfAttributeValues[attributeId] = dojoDataValue;
return dojoDataValue;
};
dojo.data.old.Item.prototype.getValues = function (attributeId) {
var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
if (dojo.lang.isUndefined(literalOrValueOrArray)) {
return null;
}
if (literalOrValueOrArray instanceof dojo.data.old.Value) {
var array = [literalOrValueOrArray];
this._dictionaryOfAttributeValues[attributeId] = array;
return array;
}
if (dojo.lang.isArray(literalOrValueOrArray)) {
return literalOrValueOrArray;
}
var literal = literalOrValueOrArray;
var dojoDataValue = new dojo.data.old.Value(literal);
array = [dojoDataValue];
this._dictionaryOfAttributeValues[attributeId] = array;
return array;
};
dojo.data.old.Item.prototype.load = function (attributeId, value) {
this._dataProvider.registerAttribute(attributeId);
var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
if (dojo.lang.isUndefined(literalOrValueOrArray)) {
this._dictionaryOfAttributeValues[attributeId] = value;
return;
}
if (!(value instanceof dojo.data.old.Value)) {
value = new dojo.data.old.Value(value);
}
if (literalOrValueOrArray instanceof dojo.data.old.Value) {
var array = [literalOrValueOrArray, value];
this._dictionaryOfAttributeValues[attributeId] = array;
return;
}
if (dojo.lang.isArray(literalOrValueOrArray)) {
literalOrValueOrArray.push(value);
return;
}
var literal = literalOrValueOrArray;
var dojoDataValue = new dojo.data.old.Value(literal);
array = [dojoDataValue, value];
this._dictionaryOfAttributeValues[attributeId] = array;
};
dojo.data.old.Item.prototype.set = function (attributeId, value) {
this._dataProvider.registerAttribute(attributeId);
this._dictionaryOfAttributeValues[attributeId] = value;
this._dataProvider.noteChange(this, attributeId, value);
};
dojo.data.old.Item.prototype.setValue = function (attributeId, value) {
this.set(attributeId, value);
};
dojo.data.old.Item.prototype.addValue = function (attributeId, value) {
this.load(attributeId, value);
this._dataProvider.noteChange(this, attributeId, value);
};
dojo.data.old.Item.prototype.setValues = function (attributeId, arrayOfValues) {
dojo.lang.assertType(arrayOfValues, Array);
this._dataProvider.registerAttribute(attributeId);
var finalArray = [];
this._dictionaryOfAttributeValues[attributeId] = finalArray;
for (var i in arrayOfValues) {
var value = arrayOfValues[i];
if (!(value instanceof dojo.data.old.Value)) {
value = new dojo.data.old.Value(value);
}
finalArray.push(value);
this._dataProvider.noteChange(this, attributeId, value);
}
};
dojo.data.old.Item.prototype.getAttributes = function () {
var arrayOfAttributes = [];
for (var key in this._dictionaryOfAttributeValues) {
arrayOfAttributes.push(this._dataProvider.getAttribute(key));
}
return arrayOfAttributes;
};
dojo.data.old.Item.prototype.hasAttribute = function (attributeId) {
return (attributeId in this._dictionaryOfAttributeValues);
};
dojo.data.old.Item.prototype.hasAttributeValue = function (attributeId, value) {
var arrayOfValues = this.getValues(attributeId);
for (var i in arrayOfValues) {
var candidateValue = arrayOfValues[i];
if (candidateValue.isEqual(value)) {
return true;
}
}
return false;
};
 
/trunk/api/js/dojo/src/data/old/provider/JotSpot.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.provider.JotSpot");
dojo.require("dojo.data.old.provider.Base");
dojo.data.old.provider.JotSpot = function () {
dojo.unimplemented("dojo.data.old.provider.JotSpot");
};
dojo.inherits(dojo.data.old.provider.JotSpot, dojo.data.old.provider.Base);
 
/trunk/api/js/dojo/src/data/old/provider/MySql.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.provider.MySql");
dojo.require("dojo.data.old.provider.Base");
dojo.data.old.provider.MySql = function () {
dojo.unimplemented("dojo.data.old.provider.MySql");
};
dojo.inherits(dojo.data.old.provider.MySql, dojo.data.old.provider.Base);
 
/trunk/api/js/dojo/src/data/old/provider/FlatFile.js
New file
0,0 → 1,111
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.provider.FlatFile");
dojo.require("dojo.data.old.provider.Base");
dojo.require("dojo.data.old.Item");
dojo.require("dojo.data.old.Attribute");
dojo.require("dojo.data.old.ResultSet");
dojo.require("dojo.data.old.format.Json");
dojo.require("dojo.data.old.format.Csv");
dojo.require("dojo.lang.assert");
dojo.data.old.provider.FlatFile = function (keywordParameters) {
dojo.lang.assertType(keywordParameters, "pureobject", {optional:true});
dojo.data.old.provider.Base.call(this);
this._arrayOfItems = [];
this._resultSet = null;
this._dictionaryOfAttributes = {};
if (keywordParameters) {
var jsonObjects = keywordParameters["jsonObjects"];
var jsonString = keywordParameters["jsonString"];
var fileUrl = keywordParameters["url"];
if (jsonObjects) {
dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, jsonObjects);
}
if (jsonString) {
dojo.data.old.format.Json.loadDataProviderFromFileContents(this, jsonString);
}
if (fileUrl) {
var arrayOfParts = fileUrl.split(".");
var lastPart = arrayOfParts[(arrayOfParts.length - 1)];
var formatParser = null;
if (lastPart == "json") {
formatParser = dojo.data.old.format.Json;
}
if (lastPart == "csv") {
formatParser = dojo.data.old.format.Csv;
}
if (formatParser) {
var fileContents = dojo.hostenv.getText(fileUrl);
formatParser.loadDataProviderFromFileContents(this, fileContents);
} else {
dojo.lang.assert(false, "new dojo.data.old.provider.FlatFile({url: }) was passed a file without a .csv or .json suffix");
}
}
}
};
dojo.inherits(dojo.data.old.provider.FlatFile, dojo.data.old.provider.Base);
dojo.data.old.provider.FlatFile.prototype.getProviderCapabilities = function (keyword) {
dojo.lang.assertType(keyword, String, {optional:true});
if (!this._ourCapabilities) {
this._ourCapabilities = {transactions:false, undo:false, login:false, versioning:false, anonymousRead:true, anonymousWrite:false, permissions:false, queries:false, strongTyping:false, datatypes:[String, Date, Number]};
}
if (keyword) {
return this._ourCapabilities[keyword];
} else {
return this._ourCapabilities;
}
};
dojo.data.old.provider.FlatFile.prototype.registerAttribute = function (attributeId) {
var registeredAttribute = this.getAttribute(attributeId);
if (!registeredAttribute) {
var newAttribute = new dojo.data.old.Attribute(this, attributeId);
this._dictionaryOfAttributes[attributeId] = newAttribute;
registeredAttribute = newAttribute;
}
return registeredAttribute;
};
dojo.data.old.provider.FlatFile.prototype.getAttribute = function (attributeId) {
var attribute = (this._dictionaryOfAttributes[attributeId] || null);
return attribute;
};
dojo.data.old.provider.FlatFile.prototype.getAttributes = function () {
var arrayOfAttributes = [];
for (var key in this._dictionaryOfAttributes) {
var attribute = this._dictionaryOfAttributes[key];
arrayOfAttributes.push(attribute);
}
return arrayOfAttributes;
};
dojo.data.old.provider.FlatFile.prototype.fetchArray = function (query) {
return this._arrayOfItems;
};
dojo.data.old.provider.FlatFile.prototype.fetchResultSet = function (query) {
if (!this._resultSet) {
this._resultSet = new dojo.data.old.ResultSet(this, this.fetchArray(query));
}
return this._resultSet;
};
dojo.data.old.provider.FlatFile.prototype._newItem = function () {
var item = new dojo.data.old.Item(this);
this._arrayOfItems.push(item);
return item;
};
dojo.data.old.provider.FlatFile.prototype._newAttribute = function (attributeId) {
dojo.lang.assertType(attributeId, String);
dojo.lang.assert(this.getAttribute(attributeId) === null);
var attribute = new dojo.data.old.Attribute(this, attributeId);
this._dictionaryOfAttributes[attributeId] = attribute;
return attribute;
};
dojo.data.old.provider.Base.prototype._getResultSets = function () {
return [this._resultSet];
};
 
/trunk/api/js/dojo/src/data/old/provider/Base.js
New file
0,0 → 1,122
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.provider.Base");
dojo.require("dojo.lang.assert");
dojo.data.old.provider.Base = function () {
this._countOfNestedTransactions = 0;
this._changesInCurrentTransaction = null;
};
dojo.data.old.provider.Base.prototype.beginTransaction = function () {
if (this._countOfNestedTransactions === 0) {
this._changesInCurrentTransaction = [];
}
this._countOfNestedTransactions += 1;
};
dojo.data.old.provider.Base.prototype.endTransaction = function () {
this._countOfNestedTransactions -= 1;
dojo.lang.assert(this._countOfNestedTransactions >= 0);
if (this._countOfNestedTransactions === 0) {
var listOfChangesMade = this._saveChanges();
this._changesInCurrentTransaction = null;
if (listOfChangesMade.length > 0) {
this._notifyObserversOfChanges(listOfChangesMade);
}
}
};
dojo.data.old.provider.Base.prototype.getNewItemToLoad = function () {
return this._newItem();
};
dojo.data.old.provider.Base.prototype.newItem = function (itemName) {
dojo.lang.assertType(itemName, String, {optional:true});
var item = this._newItem();
if (itemName) {
item.set("name", itemName);
}
return item;
};
dojo.data.old.provider.Base.prototype.newAttribute = function (attributeId) {
dojo.lang.assertType(attributeId, String, {optional:true});
var attribute = this._newAttribute(attributeId);
return attribute;
};
dojo.data.old.provider.Base.prototype.getAttribute = function (attributeId) {
dojo.unimplemented("dojo.data.old.provider.Base");
var attribute;
return attribute;
};
dojo.data.old.provider.Base.prototype.getAttributes = function () {
dojo.unimplemented("dojo.data.old.provider.Base");
return this._arrayOfAttributes;
};
dojo.data.old.provider.Base.prototype.fetchArray = function () {
dojo.unimplemented("dojo.data.old.provider.Base");
return [];
};
dojo.data.old.provider.Base.prototype.fetchResultSet = function () {
dojo.unimplemented("dojo.data.old.provider.Base");
var resultSet;
return resultSet;
};
dojo.data.old.provider.Base.prototype.noteChange = function (item, attribute, value) {
var change = {item:item, attribute:attribute, value:value};
if (this._countOfNestedTransactions === 0) {
this.beginTransaction();
this._changesInCurrentTransaction.push(change);
this.endTransaction();
} else {
this._changesInCurrentTransaction.push(change);
}
};
dojo.data.old.provider.Base.prototype.addItemObserver = function (item, observer) {
dojo.lang.assertType(item, dojo.data.old.Item);
item.addObserver(observer);
};
dojo.data.old.provider.Base.prototype.removeItemObserver = function (item, observer) {
dojo.lang.assertType(item, dojo.data.old.Item);
item.removeObserver(observer);
};
dojo.data.old.provider.Base.prototype._newItem = function () {
var item = new dojo.data.old.Item(this);
return item;
};
dojo.data.old.provider.Base.prototype._newAttribute = function (attributeId) {
var attribute = new dojo.data.old.Attribute(this);
return attribute;
};
dojo.data.old.provider.Base.prototype._saveChanges = function () {
var arrayOfChangesMade = this._changesInCurrentTransaction;
return arrayOfChangesMade;
};
dojo.data.old.provider.Base.prototype._notifyObserversOfChanges = function (arrayOfChanges) {
var arrayOfResultSets = this._getResultSets();
for (var i in arrayOfChanges) {
var change = arrayOfChanges[i];
var changedItem = change.item;
var arrayOfItemObservers = changedItem.getObservers();
for (var j in arrayOfItemObservers) {
var observer = arrayOfItemObservers[j];
observer.observedObjectHasChanged(changedItem, change);
}
for (var k in arrayOfResultSets) {
var resultSet = arrayOfResultSets[k];
var arrayOfResultSetObservers = resultSet.getObservers();
for (var m in arrayOfResultSetObservers) {
observer = arrayOfResultSetObservers[m];
observer.observedObjectHasChanged(resultSet, change);
}
}
}
};
dojo.data.old.provider.Base.prototype._getResultSets = function () {
dojo.unimplemented("dojo.data.old.provider.Base");
return [];
};
 
/trunk/api/js/dojo/src/data/old/provider/Delicious.js
New file
0,0 → 1,31
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.old.provider.Delicious");
dojo.require("dojo.data.old.provider.FlatFile");
dojo.require("dojo.data.old.format.Json");
dojo.data.old.provider.Delicious = function () {
dojo.data.old.provider.FlatFile.call(this);
if (Delicious && Delicious.posts) {
dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, Delicious.posts);
} else {
}
var u = this.registerAttribute("u");
var d = this.registerAttribute("d");
var t = this.registerAttribute("t");
u.load("name", "Bookmark");
d.load("name", "Description");
t.load("name", "Tags");
u.load("type", "String");
d.load("type", "String");
t.load("type", "String");
};
dojo.inherits(dojo.data.old.provider.Delicious, dojo.data.old.provider.FlatFile);
 
/trunk/api/js/dojo/src/data/OpmlStore.js
New file
0,0 → 1,164
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.OpmlStore");
dojo.require("dojo.data.core.Read");
dojo.require("dojo.data.core.Result");
dojo.require("dojo.lang.assert");
dojo.require("dojo.json");
dojo.require("dojo.experimental");
dojo.experimental("dojo.data.OpmlStore");
dojo.declare("dojo.data.OpmlStore", dojo.data.core.Read, {initializer:function (keywordParameters) {
this._arrayOfTopLevelItems = [];
this._metadataNodes = null;
this._loadFinished = false;
this._opmlFileUrl = keywordParameters["url"];
}, _assertIsItem:function (item) {
if (!this.isItem(item)) {
throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item");
}
}, _removeChildNodesThatAreNotElementNodes:function (node, recursive) {
var childNodes = node.childNodes;
if (childNodes.length == 0) {
return;
}
var nodesToRemove = [];
var i, childNode;
for (i = 0; i < childNodes.length; ++i) {
childNode = childNodes[i];
if (childNode.nodeType != Node.ELEMENT_NODE) {
nodesToRemove.push(childNode);
}
}
for (i = 0; i < nodesToRemove.length; ++i) {
childNode = nodesToRemove[i];
node.removeChild(childNode);
}
if (recursive) {
for (i = 0; i < childNodes.length; ++i) {
childNode = childNodes[i];
this._removeChildNodesThatAreNotElementNodes(childNode, recursive);
}
}
}, _processRawXmlTree:function (rawXmlTree) {
var headNodes = rawXmlTree.getElementsByTagName("head");
var headNode = headNodes[0];
this._removeChildNodesThatAreNotElementNodes(headNode);
this._metadataNodes = headNode.childNodes;
var bodyNodes = rawXmlTree.getElementsByTagName("body");
var bodyNode = bodyNodes[0];
this._removeChildNodesThatAreNotElementNodes(bodyNode, true);
var bodyChildNodes = bodyNodes[0].childNodes;
for (var i = 0; i < bodyChildNodes.length; ++i) {
var node = bodyChildNodes[i];
if (node.tagName == "outline") {
this._arrayOfTopLevelItems.push(node);
}
}
}, get:function (item, attribute, defaultValue) {
this._assertIsItem(item);
if (attribute == "children") {
return (item.firstChild || defaultValue);
} else {
var value = item.getAttribute(attribute);
value = (value != undefined) ? value : defaultValue;
return value;
}
}, getValues:function (item, attribute) {
this._assertIsItem(item);
if (attribute == "children") {
var array = [];
for (var i = 0; i < item.childNodes.length; ++i) {
array.push(item.childNodes[i]);
}
return array;
} else {
return [item.getAttribute(attribute)];
}
}, getAttributes:function (item) {
this._assertIsItem(item);
var attributes = [];
var xmlNode = item;
var xmlAttributes = xmlNode.attributes;
for (var i = 0; i < xmlAttributes.length; ++i) {
var xmlAttribute = xmlAttributes.item(i);
attributes.push(xmlAttribute.nodeName);
}
if (xmlNode.childNodes.length > 0) {
attributes.push("children");
}
return attributes;
}, hasAttribute:function (item, attribute) {
return (this.getValues(item, attribute).length > 0);
}, containsValue:function (item, attribute, value) {
var values = this.getValues(item, attribute);
for (var i = 0; i < values.length; ++i) {
var possibleValue = values[i];
if (value == possibleValue) {
return true;
}
}
return false;
}, isItem:function (something) {
return (something && something.nodeType == Node.ELEMENT_NODE && something.tagName == "outline");
}, isItemAvailable:function (something) {
return this.isItem(something);
}, find:function (keywordArgs) {
var result = null;
if (keywordArgs instanceof dojo.data.core.Result) {
result = keywordArgs;
result.store = this;
} else {
result = new dojo.data.core.Result(keywordArgs, this);
}
var self = this;
var bindHandler = function (type, data, evt) {
var scope = result.scope || dj_global;
if (type == "load") {
self._processRawXmlTree(data);
if (result.saveResult) {
result.items = self._arrayOfTopLevelItems;
}
if (result.onbegin) {
result.onbegin.call(scope, result);
}
for (var i = 0; i < self._arrayOfTopLevelItems.length; i++) {
var item = self._arrayOfTopLevelItems[i];
if (result.onnext && !result._aborted) {
result.onnext.call(scope, item, result);
}
}
if (result.oncompleted && !result._aborted) {
result.oncompleted.call(scope, result);
}
} else {
if (type == "error" || type == "timeout") {
var errorObject = data;
if (result.onerror) {
result.onerror.call(scope, data);
}
}
}
};
if (!this._loadFinished) {
if (this._opmlFileUrl) {
var bindRequest = dojo.io.bind({url:this._opmlFileUrl, handle:bindHandler, mimetype:"text/xml", sync:(result.sync || false)});
result._abortFunc = bindRequest.abort;
}
}
return result;
}, getIdentity:function (item) {
dojo.unimplemented("dojo.data.OpmlStore.getIdentity()");
return null;
}, findByIdentity:function (identity) {
dojo.unimplemented("dojo.data.OpmlStore.findByIdentity()");
return null;
}});
 
/trunk/api/js/dojo/src/data/CsvStore.js
New file
0,0 → 1,113
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.CsvStore");
dojo.require("dojo.data.core.RemoteStore");
dojo.require("dojo.lang.assert");
dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : "";
var queryUrl = result.query ? result.query : "";
requestKw.url = serverQueryUrl + queryUrl;
requestKw.method = "get";
}, _resultToQueryData:function (serverResponseData) {
var csvFileContentString = serverResponseData;
var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString);
var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays);
var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects);
return remoteStoreData;
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
}, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) {
dojo.lang.assertType(csvFileContents, String);
var lineEndingCharacters = new RegExp("\r\n|\n|\r");
var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
var doubleQuotes = new RegExp("\"\"", "g");
var arrayOfOutputRecords = [];
var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
for (var i in arrayOfInputLines) {
var singleLine = arrayOfInputLines[i];
if (singleLine.length > 0) {
var listOfFields = singleLine.split(",");
var j = 0;
while (j < listOfFields.length) {
var space_field_space = listOfFields[j];
var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
var field = field_space.replace(trailingWhiteSpaceCharacters, "");
var firstChar = field.charAt(0);
var lastChar = field.charAt(field.length - 1);
var secondToLastChar = field.charAt(field.length - 2);
var thirdToLastChar = field.charAt(field.length - 3);
if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
if (j + 1 === listOfFields.length) {
return null;
}
var nextField = listOfFields[j + 1];
listOfFields[j] = field_space + "," + nextField;
listOfFields.splice(j + 1, 1);
} else {
if ((firstChar == "\"") && (lastChar == "\"")) {
field = field.slice(1, (field.length - 1));
field = field.replace(doubleQuotes, "\"");
}
listOfFields[j] = field;
j += 1;
}
}
arrayOfOutputRecords.push(listOfFields);
}
}
return arrayOfOutputRecords;
}, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) {
dojo.lang.assertType(arrayOfArrays, Array);
var arrayOfItems = [];
if (arrayOfArrays.length > 1) {
var arrayOfKeys = arrayOfArrays[0];
for (var i = 1; i < arrayOfArrays.length; ++i) {
var row = arrayOfArrays[i];
var item = {};
for (var j in row) {
var value = row[j];
var key = arrayOfKeys[j];
item[key] = value;
}
arrayOfItems.push(item);
}
}
return arrayOfItems;
}, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) {
dojo.lang.assertType(arrayOfObjects, Array);
var output = {};
for (var i = 0; i < arrayOfObjects.length; ++i) {
var object = arrayOfObjects[i];
for (var key in object) {
var value = object[key];
object[key] = [value];
}
output[i] = object;
}
return output;
}, newItem:function (attributes, keywordArgs) {
dojo.unimplemented("dojo.data.CsvStore.newItem");
}, deleteItem:function (item) {
dojo.unimplemented("dojo.data.CsvStore.deleteItem");
}, setValues:function (item, attribute, values) {
dojo.unimplemented("dojo.data.CsvStore.setValues");
}, set:function (item, attribute, value) {
dojo.unimplemented("dojo.data.CsvStore.set");
}, unsetAttribute:function (item, attribute) {
dojo.unimplemented("dojo.data.CsvStore.unsetAttribute");
}, save:function (keywordArgs) {
dojo.unimplemented("dojo.data.CsvStore.save");
}, revert:function () {
dojo.unimplemented("dojo.data.CsvStore.revert");
}, isDirty:function (item) {
dojo.unimplemented("dojo.data.CsvStore.isDirty");
}});
 
/trunk/api/js/dojo/src/data/RdfStore.js
New file
0,0 → 1,183
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.RdfStore");
dojo.provide("dojo.data.RhizomeStore");
dojo.require("dojo.lang.declare");
dojo.require("dojo.data.core.RemoteStore");
dojo.require("dojo.experimental");
dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) {
this.type = type;
this._converter = convertFunc;
this.uri = uri;
this.serialize = function (value) {
return this._converter.call(value, value);
};
};
dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) {
var literal = value.value;
if (value["xml:lang"]) {
literal.lang = value["xml:lang"];
}
return literal;
}, uri:function (value) {
return {id:value.value};
}, bnode:function (value) {
return {id:"_:" + value.value};
}, "http://www.w3.org/2001/XMLSchema#int":function (value) {
return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#integer":function (value) {
return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#long":function (value) {
return parseInt(value.value);
}, "http://www.w3.org/2001/XMLSchema#float":function (value) {
return parseFloat(value.value);
}, "http://www.w3.org/2001/XMLSchema#double":function (value) {
return parseFloat(value.value);
}, "http://www.w3.org/2001/XMLSchema#boolean":function (value) {
return !value || value == "false" || value == "0" ? false : true;
}}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) {
var length = this._datatypeSerializers.length;
for (var i = 0; i < length; i++) {
var datatype = this._datatypeSerializers[i];
if (value instanceof datatype.type) {
return datatype;
}
}
}, _toRDFValue:function (value) {
var rdfvalue = {};
if (value.id) {
if (value.id.slice(0, 2) == "_:") {
rdfvalue.type = "bnode";
rdfvalue.value = value.id.substring(2);
} else {
rdfvalue.type = "uri";
rdfvalue.value = value.id;
}
} else {
if (typeof value == "string" || value instanceof String) {
rdfvalue.type = "literal";
rdfvalue.value = value;
if (value.lang) {
rdfvalue["xml:lang"] = value.lang;
}
} else {
if (typeof value == "number") {
value = new Number(value);
} else {
if (typeof value == "boolean") {
value = new Boolean(value);
}
}
var datatype = this._findDatatypeSerializer(value);
if (datatype) {
rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()};
} else {
rdfvalue = {"type":"literal", "value":value.toString()};
}
}
}
return rdfvalue;
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}};
var resources = [];
for (var key in this._deleted) {
resources.push(key);
}
rdfResult.results.deleted = resources;
for (key in this._changed) {
var subject = this._toRDFValue(this.getIdentity(key));
var attributes = this._changed[key];
for (var attr in attributes) {
var predicate = {type:"uri", value:attr};
var values = attributes[attr];
if (!values.length) {
continue;
}
var rdfvalues = [];
for (var i = 0; i < values.length; i++) {
var rdfvalue = this._toRDFValue(values[i]);
rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue});
}
}
}
var oldRegistry = dojo.json.jsonRegistry;
dojo.json.jsonRegistry = this._jsonRegistry;
var jsonString = dojo.json.serialize(rdfResult);
dojo.json.jsonRegistry = oldRegistry;
requestKw.postContent = jsonString;
}, _resultToQueryMetadata:function (json) {
return json.head;
}, _resultToQueryData:function (json) {
var items = {};
var stmts = json.results.bindings;
for (var i = 0; i < stmts.length; i++) {
var stmt = stmts[i];
var subject = stmt.s.value;
if (stmt.s.type == "bnode") {
subject = "_:" + subject;
}
var attributes = data[subject];
if (!attributes) {
attributes = {};
data[stmt.s] = attributes;
}
var attr = attributes[stmt.p.value];
if (!attr) {
attributes[stmt.p.value] = [stmt.o];
} else {
attr.push(stmt.o);
}
}
return items;
}});
dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) {
this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search=";
this._serverSaveUrl = kwArgs.baseUrl + "save-metadata";
}, _resultToQueryMetadata:function (json) {
return json;
}, _resultToQueryData:function (json) {
return json;
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
requestKw.url = this._serverSaveUrl;
requestKw.method = "post";
requestKw.mimetype = "text/plain";
var resources = [];
for (var key in this._deleted) {
resources.push(key);
}
var changes = {};
for (key in this._changed) {
if (!this._added[key]) {
resources.push(key);
}
var attributes = this._changed[key];
var rdfattributes = {};
for (var attr in attributes) {
var values = attributes[attr];
if (!values.length) {
continue;
}
var rdfvalues = [];
for (var i = 0; i < values.length; i++) {
var rdfvalue = this._toRDFValue(values[i]);
rdfvalues.push(rdfvalue);
}
rdfattributes[attr] = rdfvalues;
}
changes[key] = rdfattributes;
}
var oldRegistry = dojo.json.jsonRegistry;
dojo.json.jsonRegistry = this._jsonRegistry;
var jsonString = dojo.json.serialize(changes);
dojo.json.jsonRegistry = oldRegistry;
requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString};
}});
 
/trunk/api/js/dojo/src/data/YahooStore.js
New file
0,0 → 1,42
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.YahooStore");
dojo.require("dojo.data.core.RemoteStore");
dojo.require("dojo.lang.declare");
dojo.require("dojo.io.ScriptSrcIO");
dojo.declare("dojo.data.YahooStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
var start = 1;
var count = 1;
if (result) {
start = result.start || start;
count = result.count || count;
}
var sourceUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=dojo&language=en&query=" + result.query + "&start=" + start + "&results=" + count + "&output=json";
requestKw.url = sourceUrl;
requestKw.transport = "ScriptSrcTransport";
requestKw.mimetype = "text/json";
requestKw.jsonParamName = "callback";
}, _resultToQueryMetadata:function (json) {
return json.ResultSet;
}, _resultToQueryData:function (json) {
var data = {};
for (var i = 0; i < json.ResultSet.totalResultsReturned; ++i) {
var record = json.ResultSet.Result[i];
var item = {};
item["Url"] = [record.Url];
item["Title"] = [record.Title];
item["Summary"] = [record.Summary];
var arrayIndex = (json.ResultSet.firstResultPosition - 1) + i;
data[arrayIndex.toString()] = item;
}
return data;
}});
 
/trunk/api/js/dojo/src/data/core/RemoteStore.js
New file
0,0 → 1,352
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.core.RemoteStore");
dojo.require("dojo.data.core.Read");
dojo.require("dojo.data.core.Write");
dojo.require("dojo.data.core.Result");
dojo.require("dojo.experimental");
dojo.require("dojo.Deferred");
dojo.require("dojo.lang.declare");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.experimental("dojo.data.core.RemoteStore");
dojo.lang.declare("dojo.data.core.RemoteStore", [dojo.data.core.Read, dojo.data.core.Write], {_datatypeMap:{}, _jsonRegistry:dojo.json.jsonRegistry, initializer:function (kwArgs) {
if (!kwArgs) {
kwArgs = {};
}
this._serverQueryUrl = kwArgs.queryUrl || "";
this._serverSaveUrl = kwArgs.saveUrl || "";
this._deleted = {};
this._changed = {};
this._added = {};
this._results = {};
this._data = {};
this._numItems = 0;
}, _setupQueryRequest:function (result, requestKw) {
result.query = result.query || "";
requestKw.url = this._serverQueryUrl + encodeURIComponent(result.query);
requestKw.method = "get";
requestKw.mimetype = "text/json";
}, _resultToQueryMetadata:function (serverResponseData) {
return serverResponseData;
}, _resultToQueryData:function (serverResponseData) {
return serverResponseData.data;
}, _remoteToLocalValues:function (attributes) {
for (var key in attributes) {
var values = attributes[key];
for (var i = 0; i < values.length; i++) {
var value = values[i];
var type = value.datatype || value.type;
if (type) {
var localValue = value.value;
if (this._datatypeMap[type]) {
localValue = this._datatypeMap[type](value);
}
values[i] = localValue;
}
}
}
return attributes;
}, _queryToQueryKey:function (query) {
if (typeof query == "string") {
return query;
} else {
return dojo.json.serialize(query);
}
}, _assertIsItem:function (item) {
if (!this.isItem(item)) {
throw new Error("dojo.data.RemoteStore: a function was passed an item argument that was not an item");
}
}, get:function (item, attribute, defaultValue) {
var valueArray = this.getValues(item, attribute);
if (valueArray.length == 0) {
return defaultValue;
}
return valueArray[0];
}, getValues:function (item, attribute) {
var itemIdentity = this.getIdentity(item);
this._assertIsItem(itemIdentity);
var changes = this._changed[itemIdentity];
if (changes) {
var newvalues = changes[attribute];
if (newvalues !== undefined) {
return newvalues;
} else {
return [];
}
}
return this._data[itemIdentity][0][attribute];
}, getAttributes:function (item) {
var itemIdentity = this.getIdentity(item);
if (!itemIdentity) {
return undefined;
}
var atts = [];
var attrDict = this._data[itemIdentity][0];
for (var att in attrDict) {
atts.push(att);
}
return atts;
}, hasAttribute:function (item, attribute) {
var valueArray = this.getValues(item, attribute);
return valueArray.length ? true : false;
}, containsValue:function (item, attribute, value) {
var valueArray = this.getValues(item, attribute);
for (var i = 0; i < valueArray.length; i++) {
if (valueArray[i] == value) {
return true;
}
}
return false;
}, isItem:function (something) {
if (!something) {
return false;
}
var itemIdentity = something;
if (this._deleted[itemIdentity]) {
return false;
}
if (this._data[itemIdentity]) {
return true;
}
if (this._added[itemIdentity]) {
return true;
}
return false;
}, find:function (keywordArgs) {
var result = null;
if (keywordArgs instanceof dojo.data.core.Result) {
result = keywordArgs;
result.store = this;
} else {
result = new dojo.data.core.Result(keywordArgs, this);
}
var query = result.query;
var self = this;
var bindfunc = function (type, data, evt) {
var scope = result.scope || dj_global;
if (type == "load") {
result.resultMetadata = self._resultToQueryMetadata(data);
var dataDict = self._resultToQueryData(data);
if (result.onbegin) {
result.onbegin.call(scope, result);
}
var count = 0;
var resultData = [];
var newItemCount = 0;
for (var key in dataDict) {
if (result._aborted) {
break;
}
if (!self._deleted[key]) {
var values = dataDict[key];
var attributeDict = self._remoteToLocalValues(values);
var existingValue = self._data[key];
var refCount = 1;
if (existingValue) {
refCount = ++existingValue[1];
} else {
newItemCount++;
}
self._data[key] = [attributeDict, refCount];
resultData.push(key);
count++;
if (result.onnext) {
result.onnext.call(scope, key, result);
}
}
}
self._results[self._queryToQueryKey(query)] = resultData;
self._numItems += newItemCount;
result.length = count;
if (result.saveResult) {
result.items = resultData;
}
if (!result._aborted && result.oncompleted) {
result.oncompleted.call(scope, result);
}
} else {
if (type == "error" || type == "timeout") {
dojo.debug("find error: " + dojo.json.serialize(data));
if (result.onerror) {
result.onerror.call(scope, data);
}
}
}
};
var bindKw = keywordArgs.bindArgs || {};
bindKw.sync = result.sync;
bindKw.handle = bindfunc;
this._setupQueryRequest(result, bindKw);
var request = dojo.io.bind(bindKw);
result._abortFunc = request.abort;
return result;
}, getIdentity:function (item) {
if (!this.isItem(item)) {
return null;
}
return (item.id ? item.id : item);
}, newItem:function (attributes, keywordArgs) {
var itemIdentity = keywordArgs["identity"];
if (this._deleted[itemIdentity]) {
delete this._deleted[itemIdentity];
} else {
this._added[itemIdentity] = 1;
}
if (attributes) {
for (var attribute in attributes) {
var valueOrArrayOfValues = attributes[attribute];
if (dojo.lang.isArray(valueOrArrayOfValues)) {
this.setValues(itemIdentity, attribute, valueOrArrayOfValues);
} else {
this.set(itemIdentity, attribute, valueOrArrayOfValues);
}
}
}
return {id:itemIdentity};
}, deleteItem:function (item) {
var identity = this.getIdentity(item);
if (!identity) {
return false;
}
if (this._added[identity]) {
delete this._added[identity];
} else {
this._deleted[identity] = 1;
}
if (this._changed[identity]) {
delete this._changed[identity];
}
return true;
}, setValues:function (item, attribute, values) {
var identity = this.getIdentity(item);
if (!identity) {
return undefined;
}
var changes = this._changed[identity];
if (!changes) {
changes = {};
this._changed[identity] = changes;
}
changes[attribute] = values;
return true;
}, set:function (item, attribute, value) {
return this.setValues(item, attribute, [value]);
}, unsetAttribute:function (item, attribute) {
return this.setValues(item, attribute, []);
}, _initChanges:function () {
this._deleted = {};
this._changed = {};
this._added = {};
}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
requestKw.url = this._serverSaveUrl;
requestKw.method = "post";
requestKw.mimetype = "text/plain";
var deleted = [];
for (var key in this._deleted) {
deleted.push(key);
}
var saveStruct = {"changed":this._changed, "deleted":deleted};
var oldRegistry = dojo.json.jsonRegistry;
dojo.json.jsonRegistry = this._jsonRegistry;
var jsonString = dojo.json.serialize(saveStruct);
dojo.json.jsonRegistry = oldRegistry;
requestKw.postContent = jsonString;
}, save:function (keywordArgs) {
keywordArgs = keywordArgs || {};
var result = new dojo.Deferred();
var self = this;
var bindfunc = function (type, data, evt) {
if (type == "load") {
if (result.fired == 1) {
return;
}
var key = null;
for (key in self._added) {
if (!self._data[key]) {
self._data[key] = [{}, 1];
}
}
for (key in self._changed) {
var existing = self._data[key];
var changes = self._changed[key];
if (existing) {
existing[0] = changes;
} else {
self._data[key] = [changes, 1];
}
}
for (key in self._deleted) {
if (self._data[key]) {
delete self._data[key];
}
}
self._initChanges();
result.callback(true);
} else {
if (type == "error" || type == "timeout") {
result.errback(data);
}
}
};
var bindKw = {sync:keywordArgs["sync"], handle:bindfunc};
this._setupSaveRequest(keywordArgs, bindKw);
var request = dojo.io.bind(bindKw);
result.canceller = function (deferred) {
request.abort();
};
return result;
}, revert:function () {
this._initChanges();
return true;
}, isDirty:function (item) {
if (item) {
var identity = item.id || item;
return this._deleted[identity] || this._changed[identity];
} else {
var key = null;
for (key in this._changed) {
return true;
}
for (key in this._deleted) {
return true;
}
for (key in this._added) {
return true;
}
return false;
}
}, createReference:function (idstring) {
return {id:idstring};
}, getSize:function () {
return this._numItems;
}, forgetResults:function (query) {
var queryKey = this._queryToQueryKey(query);
var results = this._results[queryKey];
if (!results) {
return false;
}
var removed = 0;
for (var i = 0; i < results.length; i++) {
var key = results[i];
var existingValue = this._data[key];
if (existingValue[1] <= 1) {
delete this._data[key];
removed++;
} else {
existingValue[1] = --existingValue[1];
}
}
delete this._results[queryKey];
this._numItems -= removed;
return true;
}});
 
/trunk/api/js/dojo/src/data/core/Write.js
New file
0,0 → 1,42
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.core.Write");
dojo.require("dojo.data.core.Read");
dojo.require("dojo.lang.declare");
dojo.require("dojo.experimental");
dojo.experimental("dojo.data.core.Write");
dojo.declare("dojo.data.core.Write", dojo.data.core.Read, {newItem:function (keywordArgs) {
var newItem;
dojo.unimplemented("dojo.data.core.Write.newItem");
return newItem;
}, deleteItem:function (item) {
dojo.unimplemented("dojo.data.core.Write.deleteItem");
return false;
}, set:function (item, attribute, value) {
dojo.unimplemented("dojo.data.core.Write.set");
return false;
}, setValues:function (item, attribute, values) {
dojo.unimplemented("dojo.data.core.Write.setValues");
return false;
}, unsetAttribute:function (item, attribute) {
dojo.unimplemented("dojo.data.core.Write.clear");
return false;
}, save:function () {
dojo.unimplemented("dojo.data.core.Write.save");
return false;
}, revert:function () {
dojo.unimplemented("dojo.data.core.Write.revert");
return false;
}, isDirty:function (item) {
dojo.unimplemented("dojo.data.core.Write.isDirty");
return false;
}});
 
/trunk/api/js/dojo/src/data/core/Read.js
New file
0,0 → 1,53
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.core.Read");
dojo.require("dojo.data.core.Result");
dojo.require("dojo.lang.declare");
dojo.require("dojo.experimental");
dojo.experimental("dojo.data.core.Read");
dojo.declare("dojo.data.core.Read", null, {get:function (item, attribute, defaultValue) {
dojo.unimplemented("dojo.data.core.Read.get");
var attributeValue = null;
return attributeValue;
}, getValues:function (item, attribute) {
dojo.unimplemented("dojo.data.core.Read.getValues");
var array = null;
return array;
}, getAttributes:function (item) {
dojo.unimplemented("dojo.data.core.Read.getAttributes");
var array = null;
return array;
}, hasAttribute:function (item, attribute) {
dojo.unimplemented("dojo.data.core.Read.hasAttribute");
return false;
}, containsValue:function (item, attribute, value) {
dojo.unimplemented("dojo.data.core.Read.containsValue");
return false;
}, isItem:function (something) {
dojo.unimplemented("dojo.data.core.Read.isItem");
return false;
}, isItemAvailable:function (something) {
dojo.unimplemented("dojo.data.core.Read.isItemAvailable");
return false;
}, find:function (keywordArgs) {
dojo.unimplemented("dojo.data.core.Read.find");
var result = null;
return result;
}, getIdentity:function (item) {
dojo.unimplemented("dojo.data.core.Read.getIdentity");
var itemIdentifyString = null;
return itemIdentifyString;
}, findByIdentity:function (identity) {
dojo.unimplemented("dojo.data.core.Read.getByIdentity");
var item = null;
return item;
}});
 
/trunk/api/js/dojo/src/data/core/Result.js
New file
0,0 → 1,34
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.data.core.Result");
dojo.require("dojo.lang.declare");
dojo.require("dojo.experimental");
dojo.experimental("dojo.data.core.Result");
dojo.declare("dojo.data.core.Result", null, {initializer:function (keywordArgs, store) {
this.fromKwArgs(keywordArgs || {});
this.items = null;
this.resultMetadata = null;
this.length = -1;
this.store = store;
this._aborted = false;
this._abortFunc = null;
}, sync:true, abort:function () {
this._aborted = true;
if (this._abortFunc) {
this._abortFunc();
}
}, fromKwArgs:function (kwArgs) {
if (typeof kwArgs.saveResult == "undefined") {
this.saveResult = kwArgs.onnext ? false : true;
}
dojo.lang.mixin(this, kwArgs);
}});
 
/trunk/api/js/dojo/src/bootstrap1.js
New file
0,0 → 1,158
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
var dj_global = this;
var dj_currentContext = this;
function dj_undef(name, object) {
return (typeof (object || dj_currentContext)[name] == "undefined");
}
if (dj_undef("djConfig", this)) {
var djConfig = {};
}
if (dj_undef("dojo", this)) {
var dojo = {};
}
dojo.global = function () {
return dj_currentContext;
};
dojo.locale = djConfig.locale;
dojo.version = {major:0, minor:4, patch:2, flag:"", revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]), toString:function () {
with (dojo.version) {
return major + "." + minor + "." + patch + flag + " (" + revision + ")";
}
}};
dojo.evalProp = function (name, object, create) {
if ((!object) || (!name)) {
return undefined;
}
if (!dj_undef(name, object)) {
return object[name];
}
return (create ? (object[name] = {}) : undefined);
};
dojo.parseObjPath = function (path, context, create) {
var object = (context || dojo.global());
var names = path.split(".");
var prop = names.pop();
for (var i = 0, l = names.length; i < l && object; i++) {
object = dojo.evalProp(names[i], object, create);
}
return {obj:object, prop:prop};
};
dojo.evalObjPath = function (path, create) {
if (typeof path != "string") {
return dojo.global();
}
if (path.indexOf(".") == -1) {
return dojo.evalProp(path, dojo.global(), create);
}
var ref = dojo.parseObjPath(path, dojo.global(), create);
if (ref) {
return dojo.evalProp(ref.prop, ref.obj, create);
}
return null;
};
dojo.errorToString = function (exception) {
if (!dj_undef("message", exception)) {
return exception.message;
} else {
if (!dj_undef("description", exception)) {
return exception.description;
} else {
return exception;
}
}
};
dojo.raise = function (message, exception) {
if (exception) {
message = message + ": " + dojo.errorToString(exception);
} else {
message = dojo.errorToString(message);
}
try {
if (djConfig.isDebug) {
dojo.hostenv.println("FATAL exception raised: " + message);
}
}
catch (e) {
}
throw exception || Error(message);
};
dojo.debug = function () {
};
dojo.debugShallow = function (obj) {
};
dojo.profile = {start:function () {
}, end:function () {
}, stop:function () {
}, dump:function () {
}};
function dj_eval(scriptFragment) {
return dj_global.eval ? dj_global.eval(scriptFragment) : eval(scriptFragment);
}
dojo.unimplemented = function (funcname, extra) {
var message = "'" + funcname + "' not implemented";
if (extra != null) {
message += " " + extra;
}
dojo.raise(message);
};
dojo.deprecated = function (behaviour, extra, removal) {
var message = "DEPRECATED: " + behaviour;
if (extra) {
message += " " + extra;
}
if (removal) {
message += " -- will be removed in version: " + removal;
}
dojo.debug(message);
};
dojo.render = (function () {
function vscaffold(prefs, names) {
var tmp = {capable:false, support:{builtin:false, plugin:false}, prefixes:prefs};
for (var i = 0; i < names.length; i++) {
tmp[names[i]] = false;
}
return tmp;
}
return {name:"", ver:dojo.version, os:{win:false, linux:false, osx:false}, html:vscaffold(["html"], ["ie", "opera", "khtml", "safari", "moz"]), svg:vscaffold(["svg"], ["corel", "adobe", "batik"]), vml:vscaffold(["vml"], ["ie"]), swf:vscaffold(["Swf", "Flash", "Mm"], ["mm"]), swt:vscaffold(["Swt"], ["ibm"])};
})();
dojo.hostenv = (function () {
var config = {isDebug:false, allowQueryConfig:false, baseScriptUri:"", baseRelativePath:"", libraryScriptUri:"", iePreventClobber:false, ieClobberMinimal:true, preventBackButtonFix:true, delayMozLoadingFix:false, searchIds:[], parseWidgets:true};
if (typeof djConfig == "undefined") {
djConfig = config;
} else {
for (var option in config) {
if (typeof djConfig[option] == "undefined") {
djConfig[option] = config[option];
}
}
}
return {name_:"(unset)", version_:"(unset)", getName:function () {
return this.name_;
}, getVersion:function () {
return this.version_;
}, getText:function (uri) {
dojo.unimplemented("getText", "uri=" + uri);
}};
})();
dojo.hostenv.getBaseScriptUri = function () {
if (djConfig.baseScriptUri.length) {
return djConfig.baseScriptUri;
}
var uri = new String(djConfig.libraryScriptUri || djConfig.baseRelativePath);
if (!uri) {
dojo.raise("Nothing returned by getLibraryScriptUri(): " + uri);
}
var lastslash = uri.lastIndexOf("/");
djConfig.baseScriptUri = djConfig.baseRelativePath;
return djConfig.baseScriptUri;
};
 
/trunk/api/js/dojo/src/behavior.js
New file
0,0 → 1,148
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.behavior");
dojo.require("dojo.event.*");
dojo.require("dojo.experimental");
dojo.experimental("dojo.behavior");
dojo.behavior = new function () {
function arrIn(obj, name) {
if (!obj[name]) {
obj[name] = [];
}
return obj[name];
}
function forIn(obj, scope, func) {
var tmpObj = {};
for (var x in obj) {
if (typeof tmpObj[x] == "undefined") {
if (!func) {
scope(obj[x], x);
} else {
func.call(scope, obj[x], x);
}
}
}
}
this.behaviors = {};
this.add = function (behaviorObj) {
var tmpObj = {};
forIn(behaviorObj, this, function (behavior, name) {
var tBehavior = arrIn(this.behaviors, name);
if ((dojo.lang.isString(behavior)) || (dojo.lang.isFunction(behavior))) {
behavior = {found:behavior};
}
forIn(behavior, function (rule, ruleName) {
arrIn(tBehavior, ruleName).push(rule);
});
});
};
this.apply = function () {
dojo.profile.start("dojo.behavior.apply");
var r = dojo.render.html;
var safariGoodEnough = (!r.safari);
if (r.safari) {
var uas = r.UA.split("AppleWebKit/")[1];
if (parseInt(uas.match(/[0-9.]{3,}/)) >= 420) {
safariGoodEnough = true;
}
}
if ((dj_undef("behaviorFastParse", djConfig) ? (safariGoodEnough) : djConfig["behaviorFastParse"])) {
this.applyFast();
} else {
this.applySlow();
}
dojo.profile.end("dojo.behavior.apply");
};
this.matchCache = {};
this.elementsById = function (id, handleRemoved) {
var removed = [];
var added = [];
arrIn(this.matchCache, id);
if (handleRemoved) {
var nodes = this.matchCache[id];
for (var x = 0; x < nodes.length; x++) {
if (nodes[x].id != "") {
removed.push(nodes[x]);
nodes.splice(x, 1);
x--;
}
}
}
var tElem = dojo.byId(id);
while (tElem) {
if (!tElem["idcached"]) {
added.push(tElem);
}
tElem.id = "";
tElem = dojo.byId(id);
}
this.matchCache[id] = this.matchCache[id].concat(added);
dojo.lang.forEach(this.matchCache[id], function (node) {
node.id = id;
node.idcached = true;
});
return {"removed":removed, "added":added, "match":this.matchCache[id]};
};
this.applyToNode = function (node, action, ruleSetName) {
if (typeof action == "string") {
dojo.event.topic.registerPublisher(action, node, ruleSetName);
} else {
if (typeof action == "function") {
if (ruleSetName == "found") {
action(node);
} else {
dojo.event.connect(node, ruleSetName, action);
}
} else {
action.srcObj = node;
action.srcFunc = ruleSetName;
dojo.event.kwConnect(action);
}
}
};
this.applyFast = function () {
dojo.profile.start("dojo.behavior.applyFast");
forIn(this.behaviors, function (tBehavior, id) {
var elems = dojo.behavior.elementsById(id);
dojo.lang.forEach(elems.added, function (elem) {
forIn(tBehavior, function (ruleSet, ruleSetName) {
if (dojo.lang.isArray(ruleSet)) {
dojo.lang.forEach(ruleSet, function (action) {
dojo.behavior.applyToNode(elem, action, ruleSetName);
});
}
});
});
});
dojo.profile.end("dojo.behavior.applyFast");
};
this.applySlow = function () {
dojo.profile.start("dojo.behavior.applySlow");
var all = document.getElementsByTagName("*");
var allLen = all.length;
for (var x = 0; x < allLen; x++) {
var elem = all[x];
if ((elem.id) && (!elem["behaviorAdded"]) && (this.behaviors[elem.id])) {
elem["behaviorAdded"] = true;
forIn(this.behaviors[elem.id], function (ruleSet, ruleSetName) {
if (dojo.lang.isArray(ruleSet)) {
dojo.lang.forEach(ruleSet, function (action) {
dojo.behavior.applyToNode(elem, action, ruleSetName);
});
}
});
}
}
dojo.profile.end("dojo.behavior.applySlow");
};
};
dojo.addOnLoad(dojo.behavior, "apply");
 
/trunk/api/js/dojo/src/svg.js
New file
0,0 → 1,257
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.svg");
dojo.require("dojo.lang.common");
dojo.require("dojo.dom");
dojo.mixin(dojo.svg, dojo.dom);
dojo.svg.graphics = dojo.svg.g = new function (d) {
this.suspend = function () {
try {
d.documentElement.suspendRedraw(0);
}
catch (e) {
}
};
this.resume = function () {
try {
d.documentElement.unsuspendRedraw(0);
}
catch (e) {
}
};
this.force = function () {
try {
d.documentElement.forceRedraw();
}
catch (e) {
}
};
}(document);
dojo.svg.animations = dojo.svg.anim = new function (d) {
this.arePaused = function () {
try {
return d.documentElement.animationsPaused();
}
catch (e) {
return false;
}
};
this.pause = function () {
try {
d.documentElement.pauseAnimations();
}
catch (e) {
}
};
this.resume = function () {
try {
d.documentElement.unpauseAnimations();
}
catch (e) {
}
};
}(document);
dojo.svg.toCamelCase = function (selector) {
var arr = selector.split("-"), cc = arr[0];
for (var i = 1; i < arr.length; i++) {
cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
return cc;
};
dojo.svg.toSelectorCase = function (selector) {
return selector.replace(/([A-Z])/g, "-$1").toLowerCase();
};
dojo.svg.getStyle = function (node, cssSelector) {
return document.defaultView.getComputedStyle(node, cssSelector);
};
dojo.svg.getNumericStyle = function (node, cssSelector) {
return parseFloat(dojo.svg.getStyle(node, cssSelector));
};
dojo.svg.getOpacity = function (node) {
return Math.min(1, dojo.svg.getNumericStyle(node, "fill-opacity"));
};
dojo.svg.setOpacity = function (node, opacity) {
node.setAttributeNS(this.xmlns.svg, "fill-opacity", opacity);
node.setAttributeNS(this.xmlns.svg, "stroke-opacity", opacity);
};
dojo.svg.clearOpacity = function (node) {
node.setAttributeNS(this.xmlns.svg, "fill-opacity", "1.0");
node.setAttributeNS(this.xmlns.svg, "stroke-opacity", "1.0");
};
dojo.svg.getCoords = function (node) {
if (node.getBBox) {
var box = node.getBBox();
return {x:box.x, y:box.y};
}
return null;
};
dojo.svg.setCoords = function (node, coords) {
var p = dojo.svg.getCoords();
if (!p) {
return;
}
var dx = p.x - coords.x;
var dy = p.y - coords.y;
dojo.svg.translate(node, dx, dy);
};
dojo.svg.getDimensions = function (node) {
if (node.getBBox) {
var box = node.getBBox();
return {width:box.width, height:box.height};
}
return null;
};
dojo.svg.setDimensions = function (node, dim) {
if (node.width) {
node.width.baseVal.value = dim.width;
node.height.baseVal.value = dim.height;
} else {
if (node.r) {
node.r.baseVal.value = Math.min(dim.width, dim.height) / 2;
} else {
if (node.rx) {
node.rx.baseVal.value = dim.width / 2;
node.ry.baseVal.value = dim.height / 2;
}
}
}
};
dojo.svg.translate = function (node, dx, dy) {
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
t.setTranslate(dx, dy);
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.scale = function (node, scaleX, scaleY) {
if (!scaleY) {
var scaleY = scaleX;
}
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
t.setScale(scaleX, scaleY);
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.rotate = function (node, ang, cx, cy) {
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
if (cx == null) {
t.setMatrix(t.matrix.rotate(ang));
} else {
t.setRotate(ang, cx, cy);
}
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.skew = function (node, ang, axis) {
var dir = axis || "x";
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
if (dir != "x") {
t.setSkewY(ang);
} else {
t.setSkewX(ang);
}
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.flip = function (node, axis) {
var dir = axis || "x";
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
t.setMatrix((dir != "x") ? t.matrix.flipY() : t.matrix.flipX());
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.invert = function (node) {
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var t = node.ownerSVGElement.createSVGTransform();
t.setMatrix(t.matrix.inverse());
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.applyMatrix = function (node, a, b, c, d, e, f) {
if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
var m;
if (b) {
var m = node.ownerSVGElement.createSVGMatrix();
m.a = a;
m.b = b;
m.c = c;
m.d = d;
m.e = e;
m.f = f;
} else {
m = a;
}
var t = node.ownerSVGElement.createSVGTransform();
t.setMatrix(m);
node.transform.baseVal.appendItem(t);
}
};
dojo.svg.group = function (nodes) {
var p = nodes.item(0).parentNode;
var g = document.createElementNS(this.xmlns.svg, "g");
for (var i = 0; i < nodes.length; i++) {
g.appendChild(nodes.item(i));
}
p.appendChild(g);
return g;
};
dojo.svg.ungroup = function (g) {
var p = g.parentNode;
while (g.childNodes.length > 0) {
p.appendChild(g.childNodes.item(0));
}
p.removeChild(g);
};
dojo.svg.getGroup = function (node) {
var a = this.getAncestors(node);
for (var i = 0; i < a.length; i++) {
if (a[i].nodeType == this.ELEMENT_NODE && a[i].nodeName.toLowerCase() == "g") {
return a[i];
}
}
return null;
};
dojo.svg.bringToFront = function (node) {
var n = this.getGroup(node) || node;
n.ownerSVGElement.appendChild(n);
};
dojo.svg.sendToBack = function (node) {
var n = this.getGroup(node) || node;
n.ownerSVGElement.insertBefore(n, n.ownerSVGElement.firstChild);
};
dojo.svg.bringForward = function (node) {
var n = this.getGroup(node) || node;
if (this.getLastChildElement(n.parentNode) != n) {
this.insertAfter(n, this.getNextSiblingElement(n), true);
}
};
dojo.svg.sendBackward = function (node) {
var n = this.getGroup(node) || node;
if (this.getFirstChildElement(n.parentNode) != n) {
this.insertBefore(n, this.getPreviousSiblingElement(n), true);
}
};
dojo.svg.createNodesFromText = function (txt, wrap) {
var docFrag = (new DOMParser()).parseFromString(txt, "text/xml").normalize();
if (wrap) {
return [docFrag.firstChild.cloneNode(true)];
}
var nodes = [];
for (var x = 0; x < docFrag.childNodes.length; x++) {
nodes.push(docFrag.childNodes.item(x).cloneNode(true));
}
return nodes;
};
 
/trunk/api/js/dojo/src/date/supplemental.js
New file
0,0 → 1,45
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.date.supplemental");
dojo.date.getFirstDayOfWeek = function (locale) {
var firstDay = {mv:5, ae:6, af:6, bh:6, dj:6, dz:6, eg:6, er:6, et:6, iq:6, ir:6, jo:6, ke:6, kw:6, lb:6, ly:6, ma:6, om:6, qa:6, sa:6, sd:6, so:6, tn:6, ye:6, as:0, au:0, az:0, bw:0, ca:0, cn:0, fo:0, ge:0, gl:0, gu:0, hk:0, ie:0, il:0, is:0, jm:0, jp:0, kg:0, kr:0, la:0, mh:0, mo:0, mp:0, mt:0, nz:0, ph:0, pk:0, sg:0, th:0, tt:0, tw:0, um:0, us:0, uz:0, vi:0, za:0, zw:0, et:0, mw:0, ng:0, tj:0, gb:0, sy:4};
locale = dojo.hostenv.normalizeLocale(locale);
var country = locale.split("-")[1];
var dow = firstDay[country];
return (typeof dow == "undefined") ? 1 : dow;
};
dojo.date.getWeekend = function (locale) {
var weekendStart = {eg:5, il:5, sy:5, "in":0, ae:4, bh:4, dz:4, iq:4, jo:4, kw:4, lb:4, ly:4, ma:4, om:4, qa:4, sa:4, sd:4, tn:4, ye:4};
var weekendEnd = {ae:5, bh:5, dz:5, iq:5, jo:5, kw:5, lb:5, ly:5, ma:5, om:5, qa:5, sa:5, sd:5, tn:5, ye:5, af:5, ir:5, eg:6, il:6, sy:6};
locale = dojo.hostenv.normalizeLocale(locale);
var country = locale.split("-")[1];
var start = weekendStart[country];
var end = weekendEnd[country];
if (typeof start == "undefined") {
start = 6;
}
if (typeof end == "undefined") {
end = 0;
}
return {start:start, end:end};
};
dojo.date.isWeekend = function (dateObj, locale) {
var weekend = dojo.date.getWeekend(locale);
var day = (dateObj || new Date()).getDay();
if (weekend.end < weekend.start) {
weekend.end += 7;
if (day < weekend.start) {
day += 7;
}
}
return day >= weekend.start && day <= weekend.end;
};
 
/trunk/api/js/dojo/src/date/serialize.js
New file
0,0 → 1,127
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.date.serialize");
dojo.require("dojo.string.common");
dojo.date.setIso8601 = function (dateObject, formattedString) {
var comps = (formattedString.indexOf("T") == -1) ? formattedString.split(" ") : formattedString.split("T");
dateObject = dojo.date.setIso8601Date(dateObject, comps[0]);
if (comps.length == 2) {
dateObject = dojo.date.setIso8601Time(dateObject, comps[1]);
}
return dateObject;
};
dojo.date.fromIso8601 = function (formattedString) {
return dojo.date.setIso8601(new Date(0, 0), formattedString);
};
dojo.date.setIso8601Date = function (dateObject, formattedString) {
var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" + "(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$";
var d = formattedString.match(new RegExp(regexp));
if (!d) {
dojo.debug("invalid date string: " + formattedString);
return null;
}
var year = d[1];
var month = d[4];
var date = d[6];
var dayofyear = d[8];
var week = d[10];
var dayofweek = d[12] ? d[12] : 1;
dateObject.setFullYear(year);
if (dayofyear) {
dateObject.setMonth(0);
dateObject.setDate(Number(dayofyear));
} else {
if (week) {
dateObject.setMonth(0);
dateObject.setDate(1);
var gd = dateObject.getDay();
var day = gd ? gd : 7;
var offset = Number(dayofweek) + (7 * Number(week));
if (day <= 4) {
dateObject.setDate(offset + 1 - day);
} else {
dateObject.setDate(offset + 8 - day);
}
} else {
if (month) {
dateObject.setDate(1);
dateObject.setMonth(month - 1);
}
if (date) {
dateObject.setDate(date);
}
}
}
return dateObject;
};
dojo.date.fromIso8601Date = function (formattedString) {
return dojo.date.setIso8601Date(new Date(0, 0), formattedString);
};
dojo.date.setIso8601Time = function (dateObject, formattedString) {
var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$";
var d = formattedString.match(new RegExp(timezone));
var offset = 0;
if (d) {
if (d[0] != "Z") {
offset = (Number(d[3]) * 60) + Number(d[5]);
offset *= ((d[2] == "-") ? 1 : -1);
}
offset -= dateObject.getTimezoneOffset();
formattedString = formattedString.substr(0, formattedString.length - d[0].length);
}
var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(.([0-9]+))?)?)?$";
d = formattedString.match(new RegExp(regexp));
if (!d) {
dojo.debug("invalid time string: " + formattedString);
return null;
}
var hours = d[1];
var mins = Number((d[3]) ? d[3] : 0);
var secs = (d[5]) ? d[5] : 0;
var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;
dateObject.setHours(hours);
dateObject.setMinutes(mins);
dateObject.setSeconds(secs);
dateObject.setMilliseconds(ms);
if (offset !== 0) {
dateObject.setTime(dateObject.getTime() + offset * 60000);
}
return dateObject;
};
dojo.date.fromIso8601Time = function (formattedString) {
return dojo.date.setIso8601Time(new Date(0, 0), formattedString);
};
dojo.date.toRfc3339 = function (dateObject, selector) {
if (!dateObject) {
dateObject = new Date();
}
var _ = dojo.string.pad;
var formattedDate = [];
if (selector != "timeOnly") {
var date = [_(dateObject.getFullYear(), 4), _(dateObject.getMonth() + 1, 2), _(dateObject.getDate(), 2)].join("-");
formattedDate.push(date);
}
if (selector != "dateOnly") {
var time = [_(dateObject.getHours(), 2), _(dateObject.getMinutes(), 2), _(dateObject.getSeconds(), 2)].join(":");
var timezoneOffset = dateObject.getTimezoneOffset();
time += (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60), 2) + ":" + _(Math.abs(timezoneOffset) % 60, 2);
formattedDate.push(time);
}
return formattedDate.join("T");
};
dojo.date.fromRfc3339 = function (rfcDate) {
if (rfcDate.indexOf("Tany") != -1) {
rfcDate = rfcDate.replace("Tany", "");
}
var dateObject = new Date();
return dojo.date.setIso8601(dateObject, rfcDate);
};
 
/trunk/api/js/dojo/src/date/common.js
New file
0,0 → 1,314
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.date.common");
dojo.date.setDayOfYear = function (dateObject, dayOfYear) {
dateObject.setMonth(0);
dateObject.setDate(dayOfYear);
return dateObject;
};
dojo.date.getDayOfYear = function (dateObject) {
var fullYear = dateObject.getFullYear();
var lastDayOfPrevYear = new Date(fullYear - 1, 11, 31);
return Math.floor((dateObject.getTime() - lastDayOfPrevYear.getTime()) / 86400000);
};
dojo.date.setWeekOfYear = function (dateObject, week, firstDay) {
if (arguments.length == 1) {
firstDay = 0;
}
dojo.unimplemented("dojo.date.setWeekOfYear");
};
dojo.date.getWeekOfYear = function (dateObject, firstDay) {
if (arguments.length == 1) {
firstDay = 0;
}
var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1);
var day = firstDayOfYear.getDay();
firstDayOfYear.setDate(firstDayOfYear.getDate() - day + firstDay - (day > firstDay ? 7 : 0));
return Math.floor((dateObject.getTime() - firstDayOfYear.getTime()) / 604800000);
};
dojo.date.setIsoWeekOfYear = function (dateObject, week, firstDay) {
if (arguments.length == 1) {
firstDay = 1;
}
dojo.unimplemented("dojo.date.setIsoWeekOfYear");
};
dojo.date.getIsoWeekOfYear = function (dateObject, firstDay) {
if (arguments.length == 1) {
firstDay = 1;
}
dojo.unimplemented("dojo.date.getIsoWeekOfYear");
};
dojo.date.shortTimezones = ["IDLW", "BET", "HST", "MART", "AKST", "PST", "MST", "CST", "EST", "AST", "NFT", "BST", "FST", "AT", "GMT", "CET", "EET", "MSK", "IRT", "GST", "AFT", "AGTT", "IST", "NPT", "ALMT", "MMT", "JT", "AWST", "JST", "ACST", "AEST", "LHST", "VUT", "NFT", "NZT", "CHAST", "PHOT", "LINT"];
dojo.date.timezoneOffsets = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];
dojo.date.getDaysInMonth = function (dateObject) {
var month = dateObject.getMonth();
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (month == 1 && dojo.date.isLeapYear(dateObject)) {
return 29;
} else {
return days[month];
}
};
dojo.date.isLeapYear = function (dateObject) {
var year = dateObject.getFullYear();
return (year % 400 == 0) ? true : (year % 100 == 0) ? false : (year % 4 == 0) ? true : false;
};
dojo.date.getTimezoneName = function (dateObject) {
var str = dateObject.toString();
var tz = "";
var match;
var pos = str.indexOf("(");
if (pos > -1) {
pos++;
tz = str.substring(pos, str.indexOf(")"));
} else {
var pat = /([A-Z\/]+) \d{4}$/;
if ((match = str.match(pat))) {
tz = match[1];
} else {
str = dateObject.toLocaleString();
pat = / ([A-Z\/]+)$/;
if ((match = str.match(pat))) {
tz = match[1];
}
}
}
return tz == "AM" || tz == "PM" ? "" : tz;
};
dojo.date.getOrdinal = function (dateObject) {
var date = dateObject.getDate();
if (date % 100 != 11 && date % 10 == 1) {
return "st";
} else {
if (date % 100 != 12 && date % 10 == 2) {
return "nd";
} else {
if (date % 100 != 13 && date % 10 == 3) {
return "rd";
} else {
return "th";
}
}
}
};
dojo.date.compareTypes = {DATE:1, TIME:2};
dojo.date.compare = function (dateA, dateB, options) {
var dA = dateA;
var dB = dateB || new Date();
var now = new Date();
with (dojo.date.compareTypes) {
var opt = options || (DATE | TIME);
var d1 = new Date((opt & DATE) ? dA.getFullYear() : now.getFullYear(), (opt & DATE) ? dA.getMonth() : now.getMonth(), (opt & DATE) ? dA.getDate() : now.getDate(), (opt & TIME) ? dA.getHours() : 0, (opt & TIME) ? dA.getMinutes() : 0, (opt & TIME) ? dA.getSeconds() : 0);
var d2 = new Date((opt & DATE) ? dB.getFullYear() : now.getFullYear(), (opt & DATE) ? dB.getMonth() : now.getMonth(), (opt & DATE) ? dB.getDate() : now.getDate(), (opt & TIME) ? dB.getHours() : 0, (opt & TIME) ? dB.getMinutes() : 0, (opt & TIME) ? dB.getSeconds() : 0);
}
if (d1.valueOf() > d2.valueOf()) {
return 1;
}
if (d1.valueOf() < d2.valueOf()) {
return -1;
}
return 0;
};
dojo.date.dateParts = {YEAR:0, MONTH:1, DAY:2, HOUR:3, MINUTE:4, SECOND:5, MILLISECOND:6, QUARTER:7, WEEK:8, WEEKDAY:9};
dojo.date.add = function (dt, interv, incr) {
if (typeof dt == "number") {
dt = new Date(dt);
}
function fixOvershoot() {
if (sum.getDate() < dt.getDate()) {
sum.setDate(0);
}
}
var sum = new Date(dt);
with (dojo.date.dateParts) {
switch (interv) {
case YEAR:
sum.setFullYear(dt.getFullYear() + incr);
fixOvershoot();
break;
case QUARTER:
incr *= 3;
case MONTH:
sum.setMonth(dt.getMonth() + incr);
fixOvershoot();
break;
case WEEK:
incr *= 7;
case DAY:
sum.setDate(dt.getDate() + incr);
break;
case WEEKDAY:
var dat = dt.getDate();
var weeks = 0;
var days = 0;
var strt = 0;
var trgt = 0;
var adj = 0;
var mod = incr % 5;
if (mod == 0) {
days = (incr > 0) ? 5 : -5;
weeks = (incr > 0) ? ((incr - 5) / 5) : ((incr + 5) / 5);
} else {
days = mod;
weeks = parseInt(incr / 5);
}
strt = dt.getDay();
if (strt == 6 && incr > 0) {
adj = 1;
} else {
if (strt == 0 && incr < 0) {
adj = -1;
}
}
trgt = (strt + days);
if (trgt == 0 || trgt == 6) {
adj = (incr > 0) ? 2 : -2;
}
sum.setDate(dat + (7 * weeks) + days + adj);
break;
case HOUR:
sum.setHours(sum.getHours() + incr);
break;
case MINUTE:
sum.setMinutes(sum.getMinutes() + incr);
break;
case SECOND:
sum.setSeconds(sum.getSeconds() + incr);
break;
case MILLISECOND:
sum.setMilliseconds(sum.getMilliseconds() + incr);
break;
default:
break;
}
}
return sum;
};
dojo.date.diff = function (dtA, dtB, interv) {
if (typeof dtA == "number") {
dtA = new Date(dtA);
}
if (typeof dtB == "number") {
dtB = new Date(dtB);
}
var yeaDiff = dtB.getFullYear() - dtA.getFullYear();
var monDiff = (dtB.getMonth() - dtA.getMonth()) + (yeaDiff * 12);
var msDiff = dtB.getTime() - dtA.getTime();
var secDiff = msDiff / 1000;
var minDiff = secDiff / 60;
var houDiff = minDiff / 60;
var dayDiff = houDiff / 24;
var weeDiff = dayDiff / 7;
var delta = 0;
with (dojo.date.dateParts) {
switch (interv) {
case YEAR:
delta = yeaDiff;
break;
case QUARTER:
var mA = dtA.getMonth();
var mB = dtB.getMonth();
var qA = Math.floor(mA / 3) + 1;
var qB = Math.floor(mB / 3) + 1;
qB += (yeaDiff * 4);
delta = qB - qA;
break;
case MONTH:
delta = monDiff;
break;
case WEEK:
delta = parseInt(weeDiff);
break;
case DAY:
delta = dayDiff;
break;
case WEEKDAY:
var days = Math.round(dayDiff);
var weeks = parseInt(days / 7);
var mod = days % 7;
if (mod == 0) {
days = weeks * 5;
} else {
var adj = 0;
var aDay = dtA.getDay();
var bDay = dtB.getDay();
weeks = parseInt(days / 7);
mod = days % 7;
var dtMark = new Date(dtA);
dtMark.setDate(dtMark.getDate() + (weeks * 7));
var dayMark = dtMark.getDay();
if (dayDiff > 0) {
switch (true) {
case aDay == 6:
adj = -1;
break;
case aDay == 0:
adj = 0;
break;
case bDay == 6:
adj = -1;
break;
case bDay == 0:
adj = -2;
break;
case (dayMark + mod) > 5:
adj = -2;
break;
default:
break;
}
} else {
if (dayDiff < 0) {
switch (true) {
case aDay == 6:
adj = 0;
break;
case aDay == 0:
adj = 1;
break;
case bDay == 6:
adj = 2;
break;
case bDay == 0:
adj = 1;
break;
case (dayMark + mod) < 0:
adj = 2;
break;
default:
break;
}
}
}
days += adj;
days -= (weeks * 2);
}
delta = days;
break;
case HOUR:
delta = houDiff;
break;
case MINUTE:
delta = minDiff;
break;
case SECOND:
delta = secDiff;
break;
case MILLISECOND:
delta = msDiff;
break;
default:
break;
}
}
return Math.round(delta);
};
 
/trunk/api/js/dojo/src/date/format.js
New file
0,0 → 1,711
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.date.format");
dojo.require("dojo.date.common");
dojo.require("dojo.date.supplemental");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.func");
dojo.require("dojo.string.common");
dojo.require("dojo.i18n.common");
dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "de,en,es,fi,fr,hu,ja,it,ko,nl,pt,sv,zh,pt-br,zh-cn,zh-hk,zh-tw,ROOT");
dojo.requireLocalization("dojo.i18n.calendar", "gregorianExtras", null, "ja,zh,ROOT");
(function () {
dojo.date.format = function (dateObject, options) {
if (typeof options == "string") {
dojo.deprecated("dojo.date.format", "To format dates with POSIX-style strings, please use dojo.date.strftime instead", "0.5");
return dojo.date.strftime(dateObject, options);
}
function formatPattern(dateObject, pattern) {
return pattern.replace(/([a-z])\1*/ig, function (match) {
var s;
var c = match.charAt(0);
var l = match.length;
var pad;
var widthList = ["abbr", "wide", "narrow"];
switch (c) {
case "G":
if (l > 3) {
dojo.unimplemented("Era format not implemented");
}
s = info.eras[dateObject.getFullYear() < 0 ? 1 : 0];
break;
case "y":
s = dateObject.getFullYear();
switch (l) {
case 1:
break;
case 2:
s = String(s).substr(-2);
break;
default:
pad = true;
}
break;
case "Q":
case "q":
s = Math.ceil((dateObject.getMonth() + 1) / 3);
switch (l) {
case 1:
case 2:
pad = true;
break;
case 3:
case 4:
dojo.unimplemented("Quarter format not implemented");
}
break;
case "M":
case "L":
var m = dateObject.getMonth();
var width;
switch (l) {
case 1:
case 2:
s = m + 1;
pad = true;
break;
case 3:
case 4:
case 5:
width = widthList[l - 3];
break;
}
if (width) {
var type = (c == "L") ? "standalone" : "format";
var prop = ["months", type, width].join("-");
s = info[prop][m];
}
break;
case "w":
var firstDay = 0;
s = dojo.date.getWeekOfYear(dateObject, firstDay);
pad = true;
break;
case "d":
s = dateObject.getDate();
pad = true;
break;
case "D":
s = dojo.date.getDayOfYear(dateObject);
pad = true;
break;
case "E":
case "e":
case "c":
var d = dateObject.getDay();
var width;
switch (l) {
case 1:
case 2:
if (c == "e") {
var first = dojo.date.getFirstDayOfWeek(options.locale);
d = (d - first + 7) % 7;
}
if (c != "c") {
s = d + 1;
pad = true;
break;
}
case 3:
case 4:
case 5:
width = widthList[l - 3];
break;
}
if (width) {
var type = (c == "c") ? "standalone" : "format";
var prop = ["days", type, width].join("-");
s = info[prop][d];
}
break;
case "a":
var timePeriod = (dateObject.getHours() < 12) ? "am" : "pm";
s = info[timePeriod];
break;
case "h":
case "H":
case "K":
case "k":
var h = dateObject.getHours();
switch (c) {
case "h":
s = (h % 12) || 12;
break;
case "H":
s = h;
break;
case "K":
s = (h % 12);
break;
case "k":
s = h || 24;
break;
}
pad = true;
break;
case "m":
s = dateObject.getMinutes();
pad = true;
break;
case "s":
s = dateObject.getSeconds();
pad = true;
break;
case "S":
s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l - 3));
break;
case "v":
case "z":
s = dojo.date.getTimezoneName(dateObject);
if (s) {
break;
}
l = 4;
case "Z":
var offset = dateObject.getTimezoneOffset();
var tz = [(offset <= 0 ? "+" : "-"), dojo.string.pad(Math.floor(Math.abs(offset) / 60), 2), dojo.string.pad(Math.abs(offset) % 60, 2)];
if (l == 4) {
tz.splice(0, 0, "GMT");
tz.splice(3, 0, ":");
}
s = tz.join("");
break;
case "Y":
case "u":
case "W":
case "F":
case "g":
case "A":
dojo.debug(match + " modifier not yet implemented");
s = "?";
break;
default:
dojo.raise("dojo.date.format: invalid pattern char: " + pattern);
}
if (pad) {
s = dojo.string.pad(s, l);
}
return s;
});
}
options = options || {};
var locale = dojo.hostenv.normalizeLocale(options.locale);
var formatLength = options.formatLength || "full";
var info = dojo.date._getGregorianBundle(locale);
var str = [];
var sauce = dojo.lang.curry(this, formatPattern, dateObject);
if (options.selector != "timeOnly") {
var datePattern = options.datePattern || info["dateFormat-" + formatLength];
if (datePattern) {
str.push(_processPattern(datePattern, sauce));
}
}
if (options.selector != "dateOnly") {
var timePattern = options.timePattern || info["timeFormat-" + formatLength];
if (timePattern) {
str.push(_processPattern(timePattern, sauce));
}
}
var result = str.join(" ");
return result;
};
dojo.date.parse = function (value, options) {
options = options || {};
var locale = dojo.hostenv.normalizeLocale(options.locale);
var info = dojo.date._getGregorianBundle(locale);
var formatLength = options.formatLength || "full";
if (!options.selector) {
options.selector = "dateOnly";
}
var datePattern = options.datePattern || info["dateFormat-" + formatLength];
var timePattern = options.timePattern || info["timeFormat-" + formatLength];
var pattern;
if (options.selector == "dateOnly") {
pattern = datePattern;
} else {
if (options.selector == "timeOnly") {
pattern = timePattern;
} else {
if (options.selector == "dateTime") {
pattern = datePattern + " " + timePattern;
} else {
var msg = "dojo.date.parse: Unknown selector param passed: '" + options.selector + "'.";
msg += " Defaulting to date pattern.";
dojo.debug(msg);
pattern = datePattern;
}
}
}
var groups = [];
var dateREString = _processPattern(pattern, dojo.lang.curry(this, _buildDateTimeRE, groups, info, options));
var dateRE = new RegExp("^" + dateREString + "$");
var match = dateRE.exec(value);
if (!match) {
return null;
}
var widthList = ["abbr", "wide", "narrow"];
var result = new Date(1972, 0);
var expected = {};
for (var i = 1; i < match.length; i++) {
var grp = groups[i - 1];
var l = grp.length;
var v = match[i];
switch (grp.charAt(0)) {
case "y":
if (l != 2) {
result.setFullYear(v);
expected.year = v;
} else {
if (v < 100) {
v = Number(v);
var year = "" + new Date().getFullYear();
var century = year.substring(0, 2) * 100;
var yearPart = Number(year.substring(2, 4));
var cutoff = Math.min(yearPart + 20, 99);
var num = (v < cutoff) ? century + v : century - 100 + v;
result.setFullYear(num);
expected.year = num;
} else {
if (options.strict) {
return null;
}
result.setFullYear(v);
expected.year = v;
}
}
break;
case "M":
if (l > 2) {
if (!options.strict) {
v = v.replace(/\./g, "");
v = v.toLowerCase();
}
var months = info["months-format-" + widthList[l - 3]].concat();
for (var j = 0; j < months.length; j++) {
if (!options.strict) {
months[j] = months[j].toLowerCase();
}
if (v == months[j]) {
result.setMonth(j);
expected.month = j;
break;
}
}
if (j == months.length) {
dojo.debug("dojo.date.parse: Could not parse month name: '" + v + "'.");
return null;
}
} else {
result.setMonth(v - 1);
expected.month = v - 1;
}
break;
case "E":
case "e":
if (!options.strict) {
v = v.toLowerCase();
}
var days = info["days-format-" + widthList[l - 3]].concat();
for (var j = 0; j < days.length; j++) {
if (!options.strict) {
days[j] = days[j].toLowerCase();
}
if (v == days[j]) {
break;
}
}
if (j == days.length) {
dojo.debug("dojo.date.parse: Could not parse weekday name: '" + v + "'.");
return null;
}
break;
case "d":
result.setDate(v);
expected.date = v;
break;
case "a":
var am = options.am || info.am;
var pm = options.pm || info.pm;
if (!options.strict) {
v = v.replace(/\./g, "").toLowerCase();
am = am.replace(/\./g, "").toLowerCase();
pm = pm.replace(/\./g, "").toLowerCase();
}
if (options.strict && v != am && v != pm) {
dojo.debug("dojo.date.parse: Could not parse am/pm part.");
return null;
}
var hours = result.getHours();
if (v == pm && hours < 12) {
result.setHours(hours + 12);
} else {
if (v == am && hours == 12) {
result.setHours(0);
}
}
break;
case "K":
if (v == 24) {
v = 0;
}
case "h":
case "H":
case "k":
if (v > 23) {
dojo.debug("dojo.date.parse: Illegal hours value");
return null;
}
result.setHours(v);
break;
case "m":
result.setMinutes(v);
break;
case "s":
result.setSeconds(v);
break;
case "S":
result.setMilliseconds(v);
break;
default:
dojo.unimplemented("dojo.date.parse: unsupported pattern char=" + grp.charAt(0));
}
}
if (expected.year && result.getFullYear() != expected.year) {
dojo.debug("Parsed year: '" + result.getFullYear() + "' did not match input year: '" + expected.year + "'.");
return null;
}
if (expected.month && result.getMonth() != expected.month) {
dojo.debug("Parsed month: '" + result.getMonth() + "' did not match input month: '" + expected.month + "'.");
return null;
}
if (expected.date && result.getDate() != expected.date) {
dojo.debug("Parsed day of month: '" + result.getDate() + "' did not match input day of month: '" + expected.date + "'.");
return null;
}
return result;
};
function _processPattern(pattern, applyPattern, applyLiteral, applyAll) {
var identity = function (x) {
return x;
};
applyPattern = applyPattern || identity;
applyLiteral = applyLiteral || identity;
applyAll = applyAll || identity;
var chunks = pattern.match(/(''|[^'])+/g);
var literal = false;
for (var i = 0; i < chunks.length; i++) {
if (!chunks[i]) {
chunks[i] = "";
} else {
chunks[i] = (literal ? applyLiteral : applyPattern)(chunks[i]);
literal = !literal;
}
}
return applyAll(chunks.join(""));
}
function _buildDateTimeRE(groups, info, options, pattern) {
return pattern.replace(/([a-z])\1*/ig, function (match) {
var s;
var c = match.charAt(0);
var l = match.length;
switch (c) {
case "y":
s = "\\d" + ((l == 2) ? "{2,4}" : "+");
break;
case "M":
s = (l > 2) ? "\\S+" : "\\d{1,2}";
break;
case "d":
s = "\\d{1,2}";
break;
case "E":
s = "\\S+";
break;
case "h":
case "H":
case "K":
case "k":
s = "\\d{1,2}";
break;
case "m":
case "s":
s = "[0-5]\\d";
break;
case "S":
s = "\\d{1,3}";
break;
case "a":
var am = options.am || info.am || "AM";
var pm = options.pm || info.pm || "PM";
if (options.strict) {
s = am + "|" + pm;
} else {
s = am;
s += (am != am.toLowerCase()) ? "|" + am.toLowerCase() : "";
s += "|";
s += (pm != pm.toLowerCase()) ? pm + "|" + pm.toLowerCase() : pm;
}
break;
default:
dojo.unimplemented("parse of date format, pattern=" + pattern);
}
if (groups) {
groups.push(match);
}
return "\\s*(" + s + ")\\s*";
});
}
})();
dojo.date.strftime = function (dateObject, format, locale) {
var padChar = null;
function _(s, n) {
return dojo.string.pad(s, n || 2, padChar || "0");
}
var info = dojo.date._getGregorianBundle(locale);
function $(property) {
switch (property) {
case "a":
return dojo.date.getDayShortName(dateObject, locale);
case "A":
return dojo.date.getDayName(dateObject, locale);
case "b":
case "h":
return dojo.date.getMonthShortName(dateObject, locale);
case "B":
return dojo.date.getMonthName(dateObject, locale);
case "c":
return dojo.date.format(dateObject, {locale:locale});
case "C":
return _(Math.floor(dateObject.getFullYear() / 100));
case "d":
return _(dateObject.getDate());
case "D":
return $("m") + "/" + $("d") + "/" + $("y");
case "e":
if (padChar == null) {
padChar = " ";
}
return _(dateObject.getDate());
case "f":
if (padChar == null) {
padChar = " ";
}
return _(dateObject.getMonth() + 1);
case "g":
break;
case "G":
dojo.unimplemented("unimplemented modifier 'G'");
break;
case "F":
return $("Y") + "-" + $("m") + "-" + $("d");
case "H":
return _(dateObject.getHours());
case "I":
return _(dateObject.getHours() % 12 || 12);
case "j":
return _(dojo.date.getDayOfYear(dateObject), 3);
case "k":
if (padChar == null) {
padChar = " ";
}
return _(dateObject.getHours());
case "l":
if (padChar == null) {
padChar = " ";
}
return _(dateObject.getHours() % 12 || 12);
case "m":
return _(dateObject.getMonth() + 1);
case "M":
return _(dateObject.getMinutes());
case "n":
return "\n";
case "p":
return info[dateObject.getHours() < 12 ? "am" : "pm"];
case "r":
return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p");
case "R":
return $("H") + ":" + $("M");
case "S":
return _(dateObject.getSeconds());
case "t":
return "\t";
case "T":
return $("H") + ":" + $("M") + ":" + $("S");
case "u":
return String(dateObject.getDay() || 7);
case "U":
return _(dojo.date.getWeekOfYear(dateObject));
case "V":
return _(dojo.date.getIsoWeekOfYear(dateObject));
case "W":
return _(dojo.date.getWeekOfYear(dateObject, 1));
case "w":
return String(dateObject.getDay());
case "x":
return dojo.date.format(dateObject, {selector:"dateOnly", locale:locale});
case "X":
return dojo.date.format(dateObject, {selector:"timeOnly", locale:locale});
case "y":
return _(dateObject.getFullYear() % 100);
case "Y":
return String(dateObject.getFullYear());
case "z":
var timezoneOffset = dateObject.getTimezoneOffset();
return (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60)) + ":" + _(Math.abs(timezoneOffset) % 60);
case "Z":
return dojo.date.getTimezoneName(dateObject);
case "%":
return "%";
}
}
var string = "";
var i = 0;
var index = 0;
var switchCase = null;
while ((index = format.indexOf("%", i)) != -1) {
string += format.substring(i, index++);
switch (format.charAt(index++)) {
case "_":
padChar = " ";
break;
case "-":
padChar = "";
break;
case "0":
padChar = "0";
break;
case "^":
switchCase = "upper";
break;
case "*":
switchCase = "lower";
break;
case "#":
switchCase = "swap";
break;
default:
padChar = null;
index--;
break;
}
var property = $(format.charAt(index++));
switch (switchCase) {
case "upper":
property = property.toUpperCase();
break;
case "lower":
property = property.toLowerCase();
break;
case "swap":
var compareString = property.toLowerCase();
var swapString = "";
var j = 0;
var ch = "";
while (j < property.length) {
ch = property.charAt(j);
swapString += (ch == compareString.charAt(j)) ? ch.toUpperCase() : ch.toLowerCase();
j++;
}
property = swapString;
break;
default:
break;
}
switchCase = null;
string += property;
i = index;
}
string += format.substring(i);
return string;
};
(function () {
var _customFormats = [];
dojo.date.addCustomFormats = function (packageName, bundleName) {
_customFormats.push({pkg:packageName, name:bundleName});
};
dojo.date._getGregorianBundle = function (locale) {
var gregorian = {};
dojo.lang.forEach(_customFormats, function (desc) {
var bundle = dojo.i18n.getLocalization(desc.pkg, desc.name, locale);
gregorian = dojo.lang.mixin(gregorian, bundle);
}, this);
return gregorian;
};
})();
dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorian");
dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorianExtras");
dojo.date.getNames = function (item, type, use, locale) {
var label;
var lookup = dojo.date._getGregorianBundle(locale);
var props = [item, use, type];
if (use == "standAlone") {
label = lookup[props.join("-")];
}
props[1] = "format";
return (label || lookup[props.join("-")]).concat();
};
dojo.date.getDayName = function (dateObject, locale) {
return dojo.date.getNames("days", "wide", "format", locale)[dateObject.getDay()];
};
dojo.date.getDayShortName = function (dateObject, locale) {
return dojo.date.getNames("days", "abbr", "format", locale)[dateObject.getDay()];
};
dojo.date.getMonthName = function (dateObject, locale) {
return dojo.date.getNames("months", "wide", "format", locale)[dateObject.getMonth()];
};
dojo.date.getMonthShortName = function (dateObject, locale) {
return dojo.date.getNames("months", "abbr", "format", locale)[dateObject.getMonth()];
};
dojo.date.toRelativeString = function (dateObject) {
var now = new Date();
var diff = (now - dateObject) / 1000;
var end = " ago";
var future = false;
if (diff < 0) {
future = true;
end = " from now";
diff = -diff;
}
if (diff < 60) {
diff = Math.round(diff);
return diff + " second" + (diff == 1 ? "" : "s") + end;
}
if (diff < 60 * 60) {
diff = Math.round(diff / 60);
return diff + " minute" + (diff == 1 ? "" : "s") + end;
}
if (diff < 60 * 60 * 24) {
diff = Math.round(diff / 3600);
return diff + " hour" + (diff == 1 ? "" : "s") + end;
}
if (diff < 60 * 60 * 24 * 7) {
diff = Math.round(diff / (3600 * 24));
if (diff == 1) {
return future ? "Tomorrow" : "Yesterday";
} else {
return diff + " days" + end;
}
}
return dojo.date.format(dateObject);
};
dojo.date.toSql = function (dateObject, noTime) {
return dojo.date.strftime(dateObject, "%F" + !noTime ? " %T" : "");
};
dojo.date.fromSql = function (sqlDate) {
var parts = sqlDate.split(/[\- :]/g);
while (parts.length < 6) {
parts.push(0);
}
return new Date(parts[0], (parseInt(parts[1], 10) - 1), parts[2], parts[3], parts[4], parts[5]);
};
 
/trunk/api/js/dojo/src/i18n/common.js
New file
0,0 → 1,42
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.i18n.common");
dojo.i18n.getLocalization = function (packageName, bundleName, locale) {
dojo.hostenv.preloadLocalizations();
locale = dojo.hostenv.normalizeLocale(locale);
var elements = locale.split("-");
var module = [packageName, "nls", bundleName].join(".");
var bundle = dojo.hostenv.findModule(module, true);
var localization;
for (var i = elements.length; i > 0; i--) {
var loc = elements.slice(0, i).join("_");
if (bundle[loc]) {
localization = bundle[loc];
break;
}
}
if (!localization) {
localization = bundle.ROOT;
}
if (localization) {
var clazz = function () {
};
clazz.prototype = localization;
return new clazz();
}
dojo.raise("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale);
};
dojo.i18n.isLTR = function (locale) {
var lang = dojo.hostenv.normalizeLocale(locale).split("-")[0];
var RTL = {ar:true, fa:true, he:true, ur:true, yi:true};
return !RTL[lang];
};
 
/trunk/api/js/dojo/src/i18n/number.js
New file
0,0 → 1,149
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.i18n.number");
dojo.require("dojo.experimental");
dojo.experimental("dojo.i18n.number");
dojo.require("dojo.regexp");
dojo.require("dojo.i18n.common");
dojo.require("dojo.lang.common");
dojo.i18n.number.format = function (value, flags, locale) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = formatData[1];
}
if (typeof flags.decimal == "undefined") {
flags.decimal = formatData[2];
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = formatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = formatData[4];
}
if (typeof flags.round == "undefined") {
flags.round = true;
}
if (typeof flags.signed == "undefined") {
flags.signed = true;
}
var output = (flags.signed && (value < 0)) ? "-" : "";
value = Math.abs(value);
var whole = String((((flags.places > 0) || !flags.round) ? Math.floor : Math.round)(value));
function splitSubstrings(str, count) {
for (var subs = []; str.length >= count; str = str.substr(0, str.length - count)) {
subs.push(str.substr(-count));
}
if (str.length > 0) {
subs.push(str);
}
return subs.reverse();
}
if (flags.groupSize2 && (whole.length > flags.groupSize)) {
var groups = splitSubstrings(whole.substr(0, whole.length - flags.groupSize), flags.groupSize2);
groups.push(whole.substr(-flags.groupSize));
output = output + groups.join(flags.separator);
} else {
if (flags.groupSize) {
output = output + splitSubstrings(whole, flags.groupSize).join(flags.separator);
} else {
output = output + whole;
}
}
if (flags.places > 0) {
var fract = value - Math.floor(value);
fract = (flags.round ? Math.round : Math.floor)(fract * Math.pow(10, flags.places));
output = output + flags.decimal + fract;
}
return output;
};
dojo.i18n.number.parse = function (value, locale, flags) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = formatData[1];
}
if (typeof flags.decimal == "undefined") {
flags.decimal = formatData[2];
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = formatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = formatData[4];
}
if (typeof flags.validate == "undefined") {
flags.validate = true;
}
if (flags.validate && !dojo.i18n.number.isReal(value, locale, flags)) {
return Number.NaN;
}
var numbers = value.split(flags.decimal);
if (numbers.length > 2) {
return Number.NaN;
}
var whole = Number(numbers[0].replace(new RegExp("\\" + flags.separator, "g"), ""));
var fract = (numbers.length == 1) ? 0 : Number(numbers[1]) / Math.pow(10, String(numbers[1]).length);
return whole + fract;
};
dojo.i18n.number.isInteger = function (value, locale, flags) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = formatData[1];
} else {
if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) {
flags.separator = [formatData[1], ""];
}
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = formatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = formatData[4];
}
var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
return re.test(value);
};
dojo.i18n.number.isReal = function (value, locale, flags) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = formatData[1];
} else {
if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) {
flags.separator = [formatData[1], ""];
}
}
if (typeof flags.decimal == "undefined") {
flags.decimal = formatData[2];
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = formatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = formatData[4];
}
var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
return re.test(value);
};
(function () {
dojo.i18n.number.FORMAT_TABLE = {"ar-ae":["", "", ",", 1], "ar-bh":["", "", ",", 1], "ar-dz":["", "", ",", 1], "ar-eg":["", "", ",", 1], "ar-jo":["", "", ",", 1], "ar-kw":["", "", ",", 1], "ar-lb":["", "", ",", 1], "ar-ma":["", "", ",", 1], "ar-om":["", "", ",", 1], "ar-qa":["", "", ",", 1], "ar-sa":["", "", ",", 1], "ar-sy":["", "", ",", 1], "ar-tn":["", "", ",", 1], "ar-ye":["", "", ",", 1], "cs-cz":[".", ".", ",", 3], "da-dk":[".", ".", ",", 3], "de-at":[".", ".", ",", 3], "de-de":[".", ".", ",", 3], "de-lu":[".", ".", ",", 3], "de-ch":["'", "'", ".", 3], "el-gr":[".", ".", ",", 3], "en-au":[",", ",", ".", 3], "en-ca":[",", ",", ".", 3], "en-gb":[",", ",", ".", 3], "en-hk":[",", ",", ".", 3], "en-ie":[",", ",", ".", 3], "en-in":[",", ",", ".", 3, 2], "en-nz":[",", ",", ".", 3], "en-us":[",", ",", ".", 3], "en-za":[",", ",", ".", 3], "es-ar":[".", ".", ",", 3], "es-bo":[".", ".", ",", 3], "es-cl":[".", ".", ",", 3], "es-co":[".", ".", ",", 3], "es-cr":[".", ".", ",", 3], "es-do":[".", ".", ",", 3], "es-ec":[".", ".", ",", 3], "es-es":[".", ".", ",", 3], "es-gt":[",", ",", ".", 3], "es-hn":[",", ",", ".", 3], "es-mx":[",", ",", ".", 3], "es-ni":[",", ",", ".", 3], "es-pa":[",", ",", ".", 3], "es-pe":[",", ",", ".", 3], "es-pr":[",", ",", ".", 3], "es-py":[".", ".", ",", 3], "es-sv":[",", ",", ".", 3], "es-uy":[".", ".", ",", 3], "es-ve":[".", ".", ",", 3], "fi-fi":[" ", " ", ",", 3], "fr-be":[".", ".", ",", 3], "fr-ca":[" ", " ", ",", 3], "fr-ch":[" ", " ", ".", 3], "fr-fr":[" ", " ", ",", 3], "fr-lu":[".", ".", ",", 3], "he-il":[",", ",", ".", 3], "hu-hu":[" ", " ", ",", 3], "it-ch":[" ", " ", ".", 3], "it-it":[".", ".", ",", 3], "ja-jp":[",", ",", ".", 3], "ko-kr":[",", ",", ".", 3], "no-no":[".", ".", ",", 3], "nl-be":[" ", " ", ",", 3], "nl-nl":[".", ".", ",", 3], "pl-pl":[".", ".", ",", 3], "pt-br":[".", ".", ",", 3], "pt-pt":[".", ".", "$", 3], "ru-ru":[" ", " ", ",", 3], "sv-se":[".", " ", ",", 3], "tr-tr":[".", ".", ",", 3], "zh-cn":[",", ",", ".", 3], "zh-hk":[",", ",", ".", 3], "zh-tw":[",", ",", ".", 3], "*":[",", ",", ".", 3]};
})();
dojo.i18n.number._mapToLocalizedFormatData = function (table, locale) {
locale = dojo.hostenv.normalizeLocale(locale);
var data = table[locale];
if (typeof data == "undefined") {
data = table["*"];
}
return data;
};
 
/trunk/api/js/dojo/src/i18n/currency.js
New file
0,0 → 1,136
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.i18n.currency");
dojo.require("dojo.experimental");
dojo.experimental("dojo.i18n.currency");
dojo.require("dojo.regexp");
dojo.require("dojo.i18n.common");
dojo.require("dojo.i18n.number");
dojo.require("dojo.lang.common");
dojo.i18n.currency.format = function (value, iso, flags, locale) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
if (typeof flags.places == "undefined") {
flags.places = formatData.places;
}
if (typeof flags.places == "undefined") {
flags.places = 2;
}
flags.signed = false;
var result = dojo.i18n.number.format(value, flags, locale);
var sym = formatData.symbol;
if (formatData.adjSpace == "symbol") {
if (formatData.placement == "after") {
sym = " " + sym;
} else {
sym = sym + " ";
}
}
if (value < 0) {
if (formatData.signPlacement == "before") {
sym = "-" + sym;
} else {
if (formatData.signPlacement == "after") {
sym = sym + "-";
}
}
}
var spc = (formatData.adjSpace == "number") ? " " : "";
if (formatData.placement == "after") {
result = result + spc + sym;
} else {
result = sym + spc + result;
}
if (value < 0) {
if (formatData.signPlacement == "around") {
result = "(" + result + ")";
} else {
if (formatData.signPlacement == "end") {
result = result + "-";
} else {
if (!formatData.signPlacement || formatData.signPlacement == "begin") {
result = "-" + result;
}
}
}
}
return result;
};
dojo.i18n.currency.parse = function (value, iso, locale, flags) {
if (typeof flags.validate == "undefined") {
flags.validate = true;
}
if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) {
return Number.NaN;
}
var sign = (value.indexOf("-") != -1);
var abs = abs.replace(/\-/, "");
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
abs = abs.replace(new RegExp("\\" + formatData.symbol), "");
var number = dojo.i18n.number.parse(abs, locale, flags);
if (sign) {
number = number * -1;
}
return number;
};
dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) {
flags = (typeof flags == "object") ? flags : {};
var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = numberFormatData[0];
} else {
if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) {
flags.separator = [numberFormatData[0], ""];
}
}
if (typeof flags.decimal == "undefined") {
flags.decimal = numberFormatData[2];
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = numberFormatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = numberFormatData[4];
}
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
if (typeof flags.places == "undefined") {
flags.places = formatData.places;
}
if (typeof flags.places == "undefined") {
flags.places = 2;
}
if (typeof flags.symbol == "undefined") {
flags.symbol = formatData.symbol;
} else {
if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) {
flags.symbol = [formatData.symbol, ""];
}
}
if (typeof flags.placement == "undefined") {
flags.placement = formatData.placement;
}
var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
return re.test(value);
};
dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) {
var formatData = dojo.i18n.currency.FORMAT_TABLE[iso];
if (!dojo.lang.isArray(formatData)) {
return formatData;
}
return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale);
};
(function () {
var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"};
var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"};
var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"};
dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}};
})();
 
/trunk/api/js/dojo/src/i18n/calendar/nls/de/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"Wochentag", "dateFormat-medium":"dd.MM.yyyy", "field-second":"Sekunde", "field-week":"Woche", "pm":"nachm.", "timeFormat-full":"H:mm' Uhr 'z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"vorm.", "days-standAlone-narrow":["S", "M", "D", "M", "D", "F", "S"], "field-year":"Jahr", "eras":["v. Chr.", "n. Chr."], "field-hour":"Stunde", "dateFormat-long":"d. MMMM yyyy", "field-day":"Tag", "field-dayperiod":"Tagesh\xe4lfte", "field-month":"Monat", "dateFormat-short":"dd.MM.yy", "months-format-wide":["Januar", "Februar", "M\xe4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], "field-era":"Epoche", "months-format-abbr":["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], "days-format-wide":["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], "dateFormat-full":"EEEE, d. MMMM yyyy", "field-zone":"Zone", "days-format-abbr":["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
/trunk/api/js/dojo/src/i18n/calendar/nls/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "pm":"PM", "timeFormat-full":"HH:mm:ss z", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "am":"AM", "days-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7"], "field-year":"Year", "eras":["BCE", "CE"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "months-format-wide":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-era":"Era", "timeFormat-short":"HH:mm", "months-format-abbr":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "timeFormat-long":"HH:mm:ss z", "days-format-wide":["1", "2", "3", "4", "5", "6", "7"], "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone", "days-format-abbr":["1", "2", "3", "4", "5", "6", "7"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/sv/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"veckodag", "dateFormat-medium":"d MMM yyyy", "field-second":"sekund", "field-week":"vecka", "pm":"em", "timeFormat-full":"'kl. 'HH.mm.ss z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"fm", "days-standAlone-narrow":["S", "M", "T", "O", "T", "F", "L"], "field-year":"\xe5r", "eras":["f.Kr.", "e.Kr."], "field-minute":"minut", "timeFormat-medium":"HH.mm.ss", "field-hour":"timme", "dateFormat-long":"EEEE d MMM yyyy", "field-day":"dag", "field-dayperiod":"dagsperiod", "field-month":"m\xe5nad", "dateFormat-short":"yyyy-MM-dd", "months-format-wide":["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], "field-era":"era", "timeFormat-short":"HH.mm", "months-format-abbr":["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "timeFormat-long":"HH.mm.ss z", "days-format-wide":["s\xf6ndag", "m\xe5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\xf6rdag"], "dateFormat-full":"EEEE'en den' d MMMM yyyy", "field-zone":"tidszon", "days-format-abbr":["s\xf6", "m\xe5", "ti", "on", "to", "fr", "l\xf6"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/ja/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"days-standAlone-narrow":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-full":"H'\u6642'mm'\u5206'ss'\u79d2'z", "eras":["\u7d00\u5143\u524d", "\u897f\u66a6"], "timeFormat-medium":"H:mm:ss", "dateFormat-medium":"yyyy/MM/dd", "am":"\u5348\u524d", "months-format-abbr":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-long":"H:mm:ss:z", "timeFormat-short":"H:mm", "pm":"\u5348\u5f8c", "months-format-wide":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-format-wide":["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/ja/gregorianExtras.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-yearOnly":"yyyy\u5e74"})
/trunk/api/js/dojo/src/i18n/calendar/nls/README
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/i18n/calendar/nls/README
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/i18n/calendar/nls/fi/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"viikonp\xe4iv\xe4", "dateFormat-medium":"d.M.yyyy", "field-second":"sekunti", "field-week":"viikko", "pm":"ip.", "timeFormat-full":"H.mm.ss v", "months-standAlone-narrow":["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], "am":"ap.", "days-standAlone-narrow":["S", "M", "T", "K", "T", "P", "L"], "field-year":"vuosi", "eras":["eKr.", "jKr."], "field-minute":"minuutti", "timeFormat-medium":"H.mm.ss", "field-hour":"tunti", "dateFormat-long":"d. MMMM'ta 'yyyy", "field-day":"p\xe4iv\xe4", "field-dayperiod":"ap/ip-valinta", "field-month":"kuukausi", "dateFormat-short":"d.M.yyyy", "months-format-wide":["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\xe4kuu", "hein\xe4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], "field-era":"aikakausi", "timeFormat-short":"H.mm", "months-format-abbr":["tammi", "helmi", "maalis", "huhti", "touko", "kes\xe4", "hein\xe4", "elo", "syys", "loka", "marras", "joulu"], "timeFormat-long":"'klo 'H.mm.ss", "days-format-wide":["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], "dateFormat-full":"EEEE'na 'd. MMMM'ta 'yyyy", "field-zone":"aikavy\xf6hyke", "days-format-abbr":["su", "ma", "ti", "ke", "to", "pe", "la"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/en/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"MMMM d, yyyy", "timeFormat-full":"h:mm:ss a v", "eras":["BC", "AD"], "timeFormat-medium":"h:mm:ss a", "dateFormat-medium":"MMM d, yyyy", "months-format-abbr":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "dateFormat-full":"EEEE, MMMM d, yyyy", "days-format-abbr":["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "timeFormat-long":"h:mm:ss a z", "timeFormat-short":"h:mm a", "dateFormat-short":"M/d/yy", "months-format-wide":["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "days-standAlone-narrow":["S", "M", "T", "W", "T", "F", "S"], "days-format-wide":["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/es/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"d\xeda de la semana", "dateFormat-medium":"dd-MMM-yy", "field-second":"segundo", "field-week":"semana", "pm":"p.m.", "timeFormat-full":"HH'H'mm''ss\" z", "months-standAlone-narrow":["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"a.m.", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"a\xf1o", "eras":["a.C.", "d.C."], "field-minute":"minuto", "field-hour":"hora", "dateFormat-long":"d' de 'MMMM' de 'yyyy", "field-day":"d\xeda", "field-dayperiod":"periodo del d\xeda", "field-month":"mes", "dateFormat-short":"d/MM/yy", "months-format-wide":["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], "field-era":"era", "months-format-abbr":["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], "days-format-wide":["domingo", "lunes", "martes", "mi\xe9rcoles", "jueves", "viernes", "s\xe1bado"], "dateFormat-full":"EEEE d' de 'MMMM' de 'yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mi\xe9", "jue", "vie", "s\xe1b"], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
/trunk/api/js/dojo/src/i18n/calendar/nls/fr/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"jour de la semaine", "dateFormat-medium":"d MMM yy", "field-second":"seconde", "field-week":"semaine", "pm":"ap. m.", "timeFormat-full":"HH' h 'mm z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"matin", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"ann\xe9e", "eras":["av. J.-C.", "apr. J.-C."], "field-minute":"minute", "field-hour":"heure", "dateFormat-long":"d MMMM yyyy", "field-day":"jour", "field-dayperiod":"p\xe9riode de la journ\xe9e", "field-month":"mois", "dateFormat-short":"dd/MM/yy", "months-format-wide":["janvier", "f\xe9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\xfbt", "septembre", "octobre", "novembre", "d\xe9cembre"], "field-era":"\xe9poque", "months-format-abbr":["janv.", "f\xe9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\xfbt", "sept.", "oct.", "nov.", "d\xe9c."], "days-format-wide":["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zone", "days-format-abbr":["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
/trunk/api/js/dojo/src/i18n/calendar/nls/zh-tw/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-medium":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-second":"\u79d2", "field-week":"\u9031", "timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "field-year":"\u5e74", "field-minute":"\u5206\u9418", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u6642", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u6574\u65e5", "field-dayperiod":"\u65e5\u9593", "field-month":"\u6708", "dateFormat-short":"yy'\u5e74'M'\u6708'd'\u65e5'", "field-era":"\u5e74\u4ee3", "timeFormat-short":"ah:mm", "months-format-abbr":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "field-weekday":"\u9031\u5929", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-zone":"\u5340\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/ko/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"months-standAlone-narrow":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-long":"yyyy'\ub144' M'\uc6d4' d'\uc77c'", "timeFormat-full":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08' z", "eras":["\uae30\uc6d0\uc804", "\uc11c\uae30"], "timeFormat-medium":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-medium":"yyyy. MM. dd", "am":"\uc624\uc804", "months-format-abbr":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-full":"yyyy'\ub144' M'\uc6d4' d'\uc77c' EEEE", "days-format-abbr":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "timeFormat-long":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08'", "timeFormat-short":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-short":"yy. MM. dd", "pm":"\uc624\ud6c4", "months-format-wide":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "days-standAlone-narrow":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "days-format-wide":["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/nl/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-medium":"d MMM yyyy", "field-second":"Seconde", "timeFormat-full":"HH:mm:ss v", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "days-standAlone-narrow":["Z", "M", "D", "W", "D", "V", "Z"], "field-year":"Jaar", "eras":["v. Chr.", "n. Chr."], "field-minute":"Minuut", "field-hour":"Uur", "dateFormat-long":"d MMMM yyyy", "field-day":"Dag", "field-dayperiod":"Dagdeel", "field-month":"Maand", "dateFormat-short":"dd-MM-yy", "months-format-wide":["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], "field-era":"Tijdperk", "months-format-abbr":["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "days-format-wide":["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], "dateFormat-full":"EEEE d MMMM yyyy", "days-format-abbr":["zo", "ma", "di", "wo", "do", "vr", "za"], "field-weekday":"Dag van de week", "field-week":"Week", "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/hu/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"h\xe9t napja", "dateFormat-medium":"yyyy MMM d", "field-second":"m\xe1sodperc", "field-week":"h\xe9t", "pm":"d.u.", "timeFormat-full":"h:mm:ss a v", "months-standAlone-narrow":["J", "F", "M", "\xc1", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"d.e.", "days-standAlone-narrow":["V", "H", "K", "Sz", "Cs", "P", "Sz"], "field-year":"\xe9v", "eras":["k.e.", "k.u."], "field-minute":"perc", "timeFormat-medium":"h:mm:ss a", "field-hour":"\xf3ra", "dateFormat-long":"yyyy MMMM d", "field-day":"nap", "field-dayperiod":"napszak", "field-month":"h\xf3nap", "dateFormat-short":"yyyy-M-d", "months-format-wide":["janu\xe1r", "febru\xe1r", "m\xe1rcius", "\xe1prilis", "m\xe1jus", "j\xfanius", "j\xfalius", "augusztus", "szeptember", "okt\xf3ber", "november", "december"], "field-era":"\xe9ra", "timeFormat-short":"h:mm a", "months-format-abbr":["jan", "feb", "m\xe1r", "apr", "m\xe1j", "j\xfan", "j\xfal", "aug", "sze", "okt", "nov", "dec"], "timeFormat-long":"h:mm:ss a z", "days-format-wide":["vas\xe1rnap", "h\xe9tf\u0151", "kedd", "szerda", "cs\xfct\xf6rt\xf6k", "p\xe9ntek", "szombat"], "dateFormat-full":"yyyy MMMM d, EEEE", "field-zone":"z\xf3na", "days-format-abbr":["Va", "H\xe9", "Ke", "Sze", "Cs\xfc", "P\xe9", "Szo"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/it/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-weekday":"giorno della settimana", "dateFormat-medium":"dd/MMM/yy", "field-second":"secondo", "field-week":"settimana", "pm":"p.", "months-standAlone-narrow":["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], "am":"m.", "days-standAlone-narrow":["D", "L", "M", "M", "G", "V", "S"], "field-year":"anno", "eras":["aC", "dC"], "field-minute":"minuto", "field-hour":"ora", "dateFormat-long":"dd MMMM yyyy", "field-day":"giorno", "field-dayperiod":"periodo del giorno", "field-month":"mese", "dateFormat-short":"dd/MM/yy", "months-format-wide":["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], "field-era":"era", "months-format-abbr":["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], "days-format-wide":["domenica", "luned\xec", "marted\xec", "mercoled\xec", "gioved\xec", "venerd\xec", "sabato"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mer", "gio", "ven", "sab"], "timeFormat-full":"HH:mm:ss z", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
/trunk/api/js/dojo/src/i18n/calendar/nls/gregorianExtras.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-yearOnly":"yyyy"})
/trunk/api/js/dojo/src/i18n/calendar/nls/zh-cn/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-medium":"yyyy-M-d", "field-second":"\u79d2\u949f", "field-week":"\u5468", "timeFormat-full":"ahh'\u65f6'mm'\u5206'ss'\u79d2' z", "field-year":"\u5e74", "field-minute":"\u5206\u949f", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u65f6", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u65e5", "field-dayperiod":"\u4e0a\u5348/\u4e0b\u5348", "field-month":"\u6708", "dateFormat-short":"yy-M-d", "field-era":"\u65f6\u671f", "timeFormat-short":"ah:mm", "timeFormat-long":"ahh'\u65f6'mm'\u5206'ss'\u79d2'", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-weekday":"\u5468\u5929", "field-zone":"\u533a\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})
/trunk/api/js/dojo/src/i18n/calendar/nls/zh/gregorianExtras.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"dateFormat-yearOnly":"yyyy'\u5e74'"})
/trunk/api/js/dojo/src/i18n/calendar/nls/zh/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "timeFormat-full":"HH:mm:ss z", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/zh-hk/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "timeFormat-medium":"a h:mm:ss", "dateFormat-medium":"yyyy/M/d", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "timeFormat-short":"a h:mm", "dateFormat-short":"yyyy/M/d", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/pt/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "timeFormat-full":"HH'H'mm'm'ss's' z", "eras":["a.C.", "d.C."], "dateFormat-medium":"d/MMM/yyyy", "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "dateFormat-short":"dd-MM-yyyy", "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})
/trunk/api/js/dojo/src/i18n/calendar/nls/pt-br/gregorian.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"field-hour":"Hora", "field-dayperiod":"Per\xedodo do dia", "field-minute":"Minuto", "timeFormat-full":"HH'h'mm'min'ss's' z", "field-weekday":"Dia da semana", "field-week":"Semana", "field-second":"Segundo", "dateFormat-medium":"dd/MM/yyyy", "field-day":"Dia", "timeFormat-long":"H'h'm'min's's' z", "field-month":"M\xeas", "field-year":"Ano", "dateFormat-short":"dd/MM/yy", "field-zone":"Fuso", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "eras":["a.C.", "d.C."], "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "field-era":"Era", "timeFormat-short":"HH:mm"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/GBP.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"British Pound Sterling", "symbol":"\xa3"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/INR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"Indian Rupee"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/ITL.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"Italian Lira", "symbol":"\u20a4"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/EUR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"Euro", "symbol":"\u20ac"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/USD.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"US Dollar", "symbol":"US$"})
/trunk/api/js/dojo/src/i18n/currency/nls/en/JPY.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"Japanese Yen", "symbol":"\xa5"})
/trunk/api/js/dojo/src/i18n/currency/nls/GBP.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"GBP", "symbol":"\xa3"})
/trunk/api/js/dojo/src/i18n/currency/nls/INR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"INR"})
/trunk/api/js/dojo/src/i18n/currency/nls/ITL.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"ITL", "symbol":"\u20a4"})
/trunk/api/js/dojo/src/i18n/currency/nls/EUR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"EUR", "symbol":"\u20ac"})
/trunk/api/js/dojo/src/i18n/currency/nls/USD.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"USD", "symbol":"$"})
/trunk/api/js/dojo/src/i18n/currency/nls/en-us/USD.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"symbol":"$", "displayName":"US Dollar"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/GBP.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u82f1\u56fd\u30dd\u30f3\u30c9", "symbol":"\xa3"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/INR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc", "symbol":"INR"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/ITL.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u30a4\u30bf\u30ea\u30a2 \u30ea\u30e9", "symbol":"\u20a4"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/EUR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u30e6\u30fc\u30ed", "symbol":"\u20ac"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/USD.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u7c73\u30c9\u30eb", "symbol":"$"})
/trunk/api/js/dojo/src/i18n/currency/nls/ja/JPY.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u65e5\u672c\u5186", "symbol":"\uffe5"})
/trunk/api/js/dojo/src/i18n/currency/nls/JPY.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"JPY", "symbol":"\xa5"})
/trunk/api/js/dojo/src/i18n/currency/nls/README
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/i18n/currency/nls/README
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/i18n/currency/nls/hi/JPY.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u091c\u093e\u092a\u093e\u0928\u0940 \u092f\u0947\u0928", "symbol":"\xa5"})
/trunk/api/js/dojo/src/i18n/currency/nls/hi/GBP.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u092c\u094d\u0930\u093f\u0924\u0928 \u0915\u093e \u092a\u094c\u0928\u094d\u0921 \u0938\u094d\u091f\u0930\u094d\u0932\u093f\u0917", "symbol":"\xa3"})
/trunk/api/js/dojo/src/i18n/currency/nls/hi/INR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u092d\u093e\u0930\u0924\u0940\u092f \u0930\u0942\u092a\u092f\u093e", "symbol":"\u0930\u0941."})
/trunk/api/js/dojo/src/i18n/currency/nls/hi/ITL.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u0907\u0924\u0932\u0940 \u0915\u093e \u0932\u0940\u0930\u093e", "symbol":"\u20a4"})
/trunk/api/js/dojo/src/i18n/currency/nls/hi/EUR.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u092f\u0941\u0930\u094b", "symbol":"\u20ac"})
/trunk/api/js/dojo/src/i18n/currency/nls/hi/USD.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"displayName":"\u0905\u092e\u0930\u0940\u0915\u0940 \u0921\u093e\u0932\u0930", "symbol":"$"})
/trunk/api/js/dojo/src/i18n/currency/common.js
New file
0,0 → 1,136
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.i18n.currency.common");
dojo.require("dojo.experimental");
dojo.experimental("dojo.i18n.currency");
dojo.require("dojo.regexp");
dojo.require("dojo.i18n.common");
dojo.require("dojo.i18n.number");
dojo.require("dojo.lang.common");
dojo.i18n.currency.format = function (value, iso, flags, locale) {
flags = (typeof flags == "object") ? flags : {};
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
if (typeof flags.places == "undefined") {
flags.places = formatData.places;
}
if (typeof flags.places == "undefined") {
flags.places = 2;
}
flags.signed = false;
var result = dojo.i18n.number.format(value, flags, locale);
var sym = formatData.symbol;
if (formatData.adjSpace == "symbol") {
if (formatData.placement == "after") {
sym = " " + sym;
} else {
sym = sym + " ";
}
}
if (value < 0) {
if (formatData.signPlacement == "before") {
sym = "-" + sym;
} else {
if (formatData.signPlacement == "after") {
sym = sym + "-";
}
}
}
var spc = (formatData.adjSpace == "number") ? " " : "";
if (formatData.placement == "after") {
result = result + spc + sym;
} else {
result = sym + spc + result;
}
if (value < 0) {
if (formatData.signPlacement == "around") {
result = "(" + result + ")";
} else {
if (formatData.signPlacement == "end") {
result = result + "-";
} else {
if (!formatData.signPlacement || formatData.signPlacement == "begin") {
result = "-" + result;
}
}
}
}
return result;
};
dojo.i18n.currency.parse = function (value, iso, locale, flags) {
if (typeof flags.validate == "undefined") {
flags.validate = true;
}
if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) {
return Number.NaN;
}
var sign = (value.indexOf("-") != -1);
var abs = abs.replace(/\-/, "");
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
abs = abs.replace(new RegExp("\\" + formatData.symbol), "");
var number = dojo.i18n.number.parse(abs, locale, flags);
if (sign) {
number = number * -1;
}
return number;
};
dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) {
flags = (typeof flags == "object") ? flags : {};
var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
if (typeof flags.separator == "undefined") {
flags.separator = numberFormatData[0];
} else {
if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) {
flags.separator = [numberFormatData[0], ""];
}
}
if (typeof flags.decimal == "undefined") {
flags.decimal = numberFormatData[2];
}
if (typeof flags.groupSize == "undefined") {
flags.groupSize = numberFormatData[3];
}
if (typeof flags.groupSize2 == "undefined") {
flags.groupSize2 = numberFormatData[4];
}
var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
if (typeof flags.places == "undefined") {
flags.places = formatData.places;
}
if (typeof flags.places == "undefined") {
flags.places = 2;
}
if (typeof flags.symbol == "undefined") {
flags.symbol = formatData.symbol;
} else {
if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) {
flags.symbol = [formatData.symbol, ""];
}
}
if (typeof flags.placement == "undefined") {
flags.placement = formatData.placement;
}
var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
return re.test(value);
};
dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) {
var formatData = dojo.i18n.currency.FORMAT_TABLE[iso];
if (!dojo.lang.isArray(formatData)) {
return formatData;
}
return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale);
};
(function () {
var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"};
var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"};
var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"};
dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}};
})();
 
/trunk/api/js/dojo/src/html.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.html");
dojo.require("dojo.html.*");
dojo.deprecated("dojo.html", "replaced by dojo.html.*", "0.5");
 
/trunk/api/js/dojo/src/namespaces/dojo.js
New file
0,0 → 1,163
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.namespaces.dojo");
dojo.require("dojo.ns");
 
(function(){
// Mapping of all widget short names to their full package names
// This is used for widget autoloading - no dojo.require() is necessary.
// If you use a widget in markup or create one dynamically, then this
// mapping is used to find and load any dependencies not already loaded.
// You should use your own namespace for any custom widgets.
// For extra widgets you use, dojo.declare() may be used to explicitly load them.
// Experimental and deprecated widgets are not included in this table
var map = {
html: {
"accordioncontainer": "dojo.widget.AccordionContainer",
"animatedpng": "dojo.widget.AnimatedPng",
"button": "dojo.widget.Button",
"chart": "dojo.widget.Chart",
"checkbox": "dojo.widget.Checkbox",
"clock": "dojo.widget.Clock",
"colorpalette": "dojo.widget.ColorPalette",
"combobox": "dojo.widget.ComboBox",
"combobutton": "dojo.widget.Button",
"contentpane": "dojo.widget.ContentPane",
"currencytextbox": "dojo.widget.CurrencyTextbox",
"datepicker": "dojo.widget.DatePicker",
"datetextbox": "dojo.widget.DateTextbox",
"debugconsole": "dojo.widget.DebugConsole",
"dialog": "dojo.widget.Dialog",
"dropdownbutton": "dojo.widget.Button",
"dropdowndatepicker": "dojo.widget.DropdownDatePicker",
"dropdowntimepicker": "dojo.widget.DropdownTimePicker",
"emaillisttextbox": "dojo.widget.InternetTextbox",
"emailtextbox": "dojo.widget.InternetTextbox",
"editor": "dojo.widget.Editor",
"editor2": "dojo.widget.Editor2",
"filteringtable": "dojo.widget.FilteringTable",
"fisheyelist": "dojo.widget.FisheyeList",
"fisheyelistitem": "dojo.widget.FisheyeList",
"floatingpane": "dojo.widget.FloatingPane",
"modalfloatingpane": "dojo.widget.FloatingPane",
"form": "dojo.widget.Form",
"googlemap": "dojo.widget.GoogleMap",
"inlineeditbox": "dojo.widget.InlineEditBox",
"integerspinner": "dojo.widget.Spinner",
"integertextbox": "dojo.widget.IntegerTextbox",
"ipaddresstextbox": "dojo.widget.InternetTextbox",
"layoutcontainer": "dojo.widget.LayoutContainer",
"linkpane": "dojo.widget.LinkPane",
"popupmenu2": "dojo.widget.Menu2",
"menuitem2": "dojo.widget.Menu2",
"menuseparator2": "dojo.widget.Menu2",
"menubar2": "dojo.widget.Menu2",
"menubaritem2": "dojo.widget.Menu2",
"pagecontainer": "dojo.widget.PageContainer",
"pagecontroller": "dojo.widget.PageContainer",
"popupcontainer": "dojo.widget.PopupContainer",
"progressbar": "dojo.widget.ProgressBar",
"radiogroup": "dojo.widget.RadioGroup",
"realnumbertextbox": "dojo.widget.RealNumberTextbox",
"regexptextbox": "dojo.widget.RegexpTextbox",
"repeater": "dojo.widget.Repeater",
"resizabletextarea": "dojo.widget.ResizableTextarea",
"richtext": "dojo.widget.RichText",
"select": "dojo.widget.Select",
"show": "dojo.widget.Show",
"showaction": "dojo.widget.ShowAction",
"showslide": "dojo.widget.ShowSlide",
"slidervertical": "dojo.widget.Slider",
"sliderhorizontal": "dojo.widget.Slider",
"slider":"dojo.widget.Slider",
"slideshow": "dojo.widget.SlideShow",
"sortabletable": "dojo.widget.SortableTable",
"splitcontainer": "dojo.widget.SplitContainer",
"tabcontainer": "dojo.widget.TabContainer",
"tabcontroller": "dojo.widget.TabContainer",
"taskbar": "dojo.widget.TaskBar",
"textbox": "dojo.widget.Textbox",
"timepicker": "dojo.widget.TimePicker",
"timetextbox": "dojo.widget.DateTextbox",
"titlepane": "dojo.widget.TitlePane",
"toaster": "dojo.widget.Toaster",
"toggler": "dojo.widget.Toggler",
"toolbar": "dojo.widget.Toolbar",
"toolbarcontainer": "dojo.widget.Toolbar",
"toolbaritem": "dojo.widget.Toolbar",
"toolbarbuttongroup": "dojo.widget.Toolbar",
"toolbarbutton": "dojo.widget.Toolbar",
"toolbardialog": "dojo.widget.Toolbar",
"toolbarmenu": "dojo.widget.Toolbar",
"toolbarseparator": "dojo.widget.Toolbar",
"toolbarspace": "dojo.widget.Toolbar",
"toolbarselect": "dojo.widget.Toolbar",
"toolbarcolordialog": "dojo.widget.Toolbar",
"tooltip": "dojo.widget.Tooltip",
"tree": "dojo.widget.Tree",
"treebasiccontroller": "dojo.widget.TreeBasicController",
"treecontextmenu": "dojo.widget.TreeContextMenu",
"treedisablewrapextension": "dojo.widget.TreeDisableWrapExtension",
"treedociconextension": "dojo.widget.TreeDocIconExtension",
"treeeditor": "dojo.widget.TreeEditor",
"treeemphasizeonselect": "dojo.widget.TreeEmphasizeOnSelect",
"treeexpandtonodeonselect": "dojo.widget.TreeExpandToNodeOnSelect",
"treelinkextension": "dojo.widget.TreeLinkExtension",
"treeloadingcontroller": "dojo.widget.TreeLoadingController",
"treemenuitem": "dojo.widget.TreeContextMenu",
"treenode": "dojo.widget.TreeNode",
"treerpccontroller": "dojo.widget.TreeRPCController",
"treeselector": "dojo.widget.TreeSelector",
"treetoggleonselect": "dojo.widget.TreeToggleOnSelect",
"treev3": "dojo.widget.TreeV3",
"treebasiccontrollerv3": "dojo.widget.TreeBasicControllerV3",
"treecontextmenuv3": "dojo.widget.TreeContextMenuV3",
"treedndcontrollerv3": "dojo.widget.TreeDndControllerV3",
"treeloadingcontrollerv3": "dojo.widget.TreeLoadingControllerV3",
"treemenuitemv3": "dojo.widget.TreeContextMenuV3",
"treerpccontrollerv3": "dojo.widget.TreeRpcControllerV3",
"treeselectorv3": "dojo.widget.TreeSelectorV3",
"urltextbox": "dojo.widget.InternetTextbox",
"usphonenumbertextbox": "dojo.widget.UsTextbox",
"ussocialsecuritynumbertextbox": "dojo.widget.UsTextbox",
"usstatetextbox": "dojo.widget.UsTextbox",
"usziptextbox": "dojo.widget.UsTextbox",
"validationtextbox": "dojo.widget.ValidationTextbox",
"treeloadingcontroller": "dojo.widget.TreeLoadingController",
"wizardcontainer": "dojo.widget.Wizard",
"wizardpane": "dojo.widget.Wizard",
"yahoomap": "dojo.widget.YahooMap"
},
svg: {
"chart": "dojo.widget.svg.Chart"
},
vml: {
"chart": "dojo.widget.vml.Chart"
}
};
 
dojo.addDojoNamespaceMapping = function(/*String*/shortName, /*String*/packageName){
// summary:
// Add an entry to the mapping table for the dojo: namespace
//
// shortName: the name to be used as the widget's tag name in the dojo: namespace
// packageName: the path to the Javascript module in dotted package notation
map[shortName]=packageName;
};
function dojoNamespaceResolver(name, domain){
if(!domain){ domain="html"; }
if(!map[domain]){ return null; }
return map[domain][name];
}
 
dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver);
})();
/trunk/api/js/dojo/src/io.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io");
dojo.require("dojo.io.*");
dojo.deprecated("dojo.io", "replaced by dojo.io.*", "0.5");
 
/trunk/api/js/dojo/src/hostenv_wsh.js
New file
0,0 → 1,33
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.hostenv.name_ = "wsh";
if (typeof WScript == "undefined") {
dojo.raise("attempt to use WSH host environment when no WScript global");
}
dojo.hostenv.println = WScript.Echo;
dojo.hostenv.getCurrentScriptUri = function () {
return WScript.ScriptFullName();
};
dojo.hostenv.getText = function (fpath) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var istream = fso.OpenTextFile(fpath, 1);
if (!istream) {
return null;
}
var contents = istream.ReadAll();
istream.Close();
return contents;
};
dojo.hostenv.exit = function (exitcode) {
WScript.Quit(exitcode);
};
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
/trunk/api/js/dojo/src/lfx/Animation.js
New file
0,0 → 1,402
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.Animation");
dojo.require("dojo.lang.func");
dojo.lfx.Line = function (start, end) {
this.start = start;
this.end = end;
if (dojo.lang.isArray(start)) {
var diff = [];
dojo.lang.forEach(this.start, function (s, i) {
diff[i] = this.end[i] - s;
}, this);
this.getValue = function (n) {
var res = [];
dojo.lang.forEach(this.start, function (s, i) {
res[i] = (diff[i] * n) + s;
}, this);
return res;
};
} else {
var diff = end - start;
this.getValue = function (n) {
return (diff * n) + this.start;
};
}
};
if ((dojo.render.html.khtml) && (!dojo.render.html.safari)) {
dojo.lfx.easeDefault = function (n) {
return (parseFloat("0.5") + ((Math.sin((n + parseFloat("1.5")) * Math.PI)) / 2));
};
} else {
dojo.lfx.easeDefault = function (n) {
return (0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2));
};
}
dojo.lfx.easeIn = function (n) {
return Math.pow(n, 3);
};
dojo.lfx.easeOut = function (n) {
return (1 - Math.pow(1 - n, 3));
};
dojo.lfx.easeInOut = function (n) {
return ((3 * Math.pow(n, 2)) - (2 * Math.pow(n, 3)));
};
dojo.lfx.IAnimation = function () {
};
dojo.lang.extend(dojo.lfx.IAnimation, {curve:null, duration:1000, easing:null, repeatCount:0, rate:10, handler:null, beforeBegin:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, play:null, pause:null, stop:null, connect:function (evt, scope, newFunc) {
if (!newFunc) {
newFunc = scope;
scope = this;
}
newFunc = dojo.lang.hitch(scope, newFunc);
var oldFunc = this[evt] || function () {
};
this[evt] = function () {
var ret = oldFunc.apply(this, arguments);
newFunc.apply(this, arguments);
return ret;
};
return this;
}, fire:function (evt, args) {
if (this[evt]) {
this[evt].apply(this, (args || []));
}
return this;
}, repeat:function (count) {
this.repeatCount = count;
return this;
}, _active:false, _paused:false});
dojo.lfx.Animation = function (handlers, duration, curve, easing, repeatCount, rate) {
dojo.lfx.IAnimation.call(this);
if (dojo.lang.isNumber(handlers) || (!handlers && duration.getValue)) {
rate = repeatCount;
repeatCount = easing;
easing = curve;
curve = duration;
duration = handlers;
handlers = null;
} else {
if (handlers.getValue || dojo.lang.isArray(handlers)) {
rate = easing;
repeatCount = curve;
easing = duration;
curve = handlers;
duration = null;
handlers = null;
}
}
if (dojo.lang.isArray(curve)) {
this.curve = new dojo.lfx.Line(curve[0], curve[1]);
} else {
this.curve = curve;
}
if (duration != null && duration > 0) {
this.duration = duration;
}
if (repeatCount) {
this.repeatCount = repeatCount;
}
if (rate) {
this.rate = rate;
}
if (handlers) {
dojo.lang.forEach(["handler", "beforeBegin", "onBegin", "onEnd", "onPlay", "onStop", "onAnimate"], function (item) {
if (handlers[item]) {
this.connect(item, handlers[item]);
}
}, this);
}
if (easing && dojo.lang.isFunction(easing)) {
this.easing = easing;
}
};
dojo.inherits(dojo.lfx.Animation, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Animation, {_startTime:null, _endTime:null, _timer:null, _percent:0, _startRepeatCount:0, play:function (delay, gotoStart) {
if (gotoStart) {
clearTimeout(this._timer);
this._active = false;
this._paused = false;
this._percent = 0;
} else {
if (this._active && !this._paused) {
return this;
}
}
this.fire("handler", ["beforeBegin"]);
this.fire("beforeBegin");
if (delay > 0) {
setTimeout(dojo.lang.hitch(this, function () {
this.play(null, gotoStart);
}), delay);
return this;
}
this._startTime = new Date().valueOf();
if (this._paused) {
this._startTime -= (this.duration * this._percent / 100);
}
this._endTime = this._startTime + this.duration;
this._active = true;
this._paused = false;
var step = this._percent / 100;
var value = this.curve.getValue(step);
if (this._percent == 0) {
if (!this._startRepeatCount) {
this._startRepeatCount = this.repeatCount;
}
this.fire("handler", ["begin", value]);
this.fire("onBegin", [value]);
}
this.fire("handler", ["play", value]);
this.fire("onPlay", [value]);
this._cycle();
return this;
}, pause:function () {
clearTimeout(this._timer);
if (!this._active) {
return this;
}
this._paused = true;
var value = this.curve.getValue(this._percent / 100);
this.fire("handler", ["pause", value]);
this.fire("onPause", [value]);
return this;
}, gotoPercent:function (pct, andPlay) {
clearTimeout(this._timer);
this._active = true;
this._paused = true;
this._percent = pct;
if (andPlay) {
this.play();
}
return this;
}, stop:function (gotoEnd) {
clearTimeout(this._timer);
var step = this._percent / 100;
if (gotoEnd) {
step = 1;
}
var value = this.curve.getValue(step);
this.fire("handler", ["stop", value]);
this.fire("onStop", [value]);
this._active = false;
this._paused = false;
return this;
}, status:function () {
if (this._active) {
return this._paused ? "paused" : "playing";
} else {
return "stopped";
}
return this;
}, _cycle:function () {
clearTimeout(this._timer);
if (this._active) {
var curr = new Date().valueOf();
var step = (curr - this._startTime) / (this._endTime - this._startTime);
if (step >= 1) {
step = 1;
this._percent = 100;
} else {
this._percent = step * 100;
}
if ((this.easing) && (dojo.lang.isFunction(this.easing))) {
step = this.easing(step);
}
var value = this.curve.getValue(step);
this.fire("handler", ["animate", value]);
this.fire("onAnimate", [value]);
if (step < 1) {
this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate);
} else {
this._active = false;
this.fire("handler", ["end"]);
this.fire("onEnd");
if (this.repeatCount > 0) {
this.repeatCount--;
this.play(null, true);
} else {
if (this.repeatCount == -1) {
this.play(null, true);
} else {
if (this._startRepeatCount) {
this.repeatCount = this._startRepeatCount;
this._startRepeatCount = 0;
}
}
}
}
}
return this;
}});
dojo.lfx.Combine = function (animations) {
dojo.lfx.IAnimation.call(this);
this._anims = [];
this._animsEnded = 0;
var anims = arguments;
if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) {
anims = anims[0];
}
dojo.lang.forEach(anims, function (anim) {
this._anims.push(anim);
anim.connect("onEnd", dojo.lang.hitch(this, "_onAnimsEnded"));
}, this);
};
dojo.inherits(dojo.lfx.Combine, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Combine, {_animsEnded:0, play:function (delay, gotoStart) {
if (!this._anims.length) {
return this;
}
this.fire("beforeBegin");
if (delay > 0) {
setTimeout(dojo.lang.hitch(this, function () {
this.play(null, gotoStart);
}), delay);
return this;
}
if (gotoStart || this._anims[0].percent == 0) {
this.fire("onBegin");
}
this.fire("onPlay");
this._animsCall("play", null, gotoStart);
return this;
}, pause:function () {
this.fire("onPause");
this._animsCall("pause");
return this;
}, stop:function (gotoEnd) {
this.fire("onStop");
this._animsCall("stop", gotoEnd);
return this;
}, _onAnimsEnded:function () {
this._animsEnded++;
if (this._animsEnded >= this._anims.length) {
this.fire("onEnd");
}
return this;
}, _animsCall:function (funcName) {
var args = [];
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
}
var _this = this;
dojo.lang.forEach(this._anims, function (anim) {
anim[funcName](args);
}, _this);
return this;
}});
dojo.lfx.Chain = function (animations) {
dojo.lfx.IAnimation.call(this);
this._anims = [];
this._currAnim = -1;
var anims = arguments;
if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) {
anims = anims[0];
}
var _this = this;
dojo.lang.forEach(anims, function (anim, i, anims_arr) {
this._anims.push(anim);
if (i < anims_arr.length - 1) {
anim.connect("onEnd", dojo.lang.hitch(this, "_playNext"));
} else {
anim.connect("onEnd", dojo.lang.hitch(this, function () {
this.fire("onEnd");
}));
}
}, this);
};
dojo.inherits(dojo.lfx.Chain, dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Chain, {_currAnim:-1, play:function (delay, gotoStart) {
if (!this._anims.length) {
return this;
}
if (gotoStart || !this._anims[this._currAnim]) {
this._currAnim = 0;
}
var currentAnimation = this._anims[this._currAnim];
this.fire("beforeBegin");
if (delay > 0) {
setTimeout(dojo.lang.hitch(this, function () {
this.play(null, gotoStart);
}), delay);
return this;
}
if (currentAnimation) {
if (this._currAnim == 0) {
this.fire("handler", ["begin", this._currAnim]);
this.fire("onBegin", [this._currAnim]);
}
this.fire("onPlay", [this._currAnim]);
currentAnimation.play(null, gotoStart);
}
return this;
}, pause:function () {
if (this._anims[this._currAnim]) {
this._anims[this._currAnim].pause();
this.fire("onPause", [this._currAnim]);
}
return this;
}, playPause:function () {
if (this._anims.length == 0) {
return this;
}
if (this._currAnim == -1) {
this._currAnim = 0;
}
var currAnim = this._anims[this._currAnim];
if (currAnim) {
if (!currAnim._active || currAnim._paused) {
this.play();
} else {
this.pause();
}
}
return this;
}, stop:function () {
var currAnim = this._anims[this._currAnim];
if (currAnim) {
currAnim.stop();
this.fire("onStop", [this._currAnim]);
}
return currAnim;
}, _playNext:function () {
if (this._currAnim == -1 || this._anims.length == 0) {
return this;
}
this._currAnim++;
if (this._anims[this._currAnim]) {
this._anims[this._currAnim].play(null, true);
}
return this;
}});
dojo.lfx.combine = function (animations) {
var anims = arguments;
if (dojo.lang.isArray(arguments[0])) {
anims = arguments[0];
}
if (anims.length == 1) {
return anims[0];
}
return new dojo.lfx.Combine(anims);
};
dojo.lfx.chain = function (animations) {
var anims = arguments;
if (dojo.lang.isArray(arguments[0])) {
anims = arguments[0];
}
if (anims.length == 1) {
return anims[0];
}
return new dojo.lfx.Chain(anims);
};
 
/trunk/api/js/dojo/src/lfx/rounded.js
New file
0,0 → 1,442
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.rounded");
dojo.require("dojo.lang.common");
dojo.require("dojo.html.common");
dojo.require("dojo.html.style");
dojo.require("dojo.html.display");
dojo.require("dojo.html.layout");
dojo.lfx.rounded = function (settings) {
var options = {validTags:settings.validTags || ["div"], autoPad:settings.autoPad != null ? settings.autoPad : true, antiAlias:settings.antiAlias != null ? settings.antiAlias : true, radii:{tl:(settings.tl && settings.tl.radius != null) ? settings.tl.radius : 5, tr:(settings.tr && settings.tr.radius != null) ? settings.tr.radius : 5, bl:(settings.bl && settings.bl.radius != null) ? settings.bl.radius : 5, br:(settings.br && settings.br.radius != null) ? settings.br.radius : 5}};
var nodes;
if (typeof (arguments[1]) == "string") {
nodes = dojo.html.getElementsByClass(arguments[1]);
} else {
if (dojo.lang.isArrayLike(arguments[1])) {
nodes = arguments[1];
for (var i = 0; i < nodes.length; i++) {
nodes[i] = dojo.byId(nodes[i]);
}
}
}
if (nodes.length == 0) {
return;
}
for (var i = 0; i < nodes.length; i++) {
dojo.lfx.rounded.applyCorners(options, nodes[i]);
}
};
dojo.lfx.rounded.applyCorners = function (options, node) {
var top = null;
var bottom = null;
var contentNode = null;
var fns = dojo.lfx.rounded._fns;
var width = node.offsetWidth;
var height = node.offsetHeight;
var borderWidth = parseInt(dojo.html.getComputedStyle(node, "border-top-width"));
var borderColor = dojo.html.getComputedStyle(node, "border-top-color");
var color = dojo.html.getComputedStyle(node, "background-color");
var bgImage = dojo.html.getComputedStyle(node, "background-image");
var position = dojo.html.getComputedStyle(node, "position");
var padding = parseInt(dojo.html.getComputedStyle(node, "padding-top"));
var format = {height:height, width:width, borderWidth:borderWidth, color:fns.getRGB(color), padding:padding, borderColor:fns.getRGB(borderColor), borderString:borderWidth + "px" + " solid " + fns.getRGB(borderColor), bgImage:((bgImage != "none") ? bgImage : ""), content:node.innerHTML};
if (!dojo.html.isPositionAbsolute(node)) {
node.style.position = "relative";
}
node.style.padding = "0px";
if (dojo.render.html.ie && width == "auto" && height == "auto") {
node.style.width = "100%";
}
if (options.autoPad && format.padding > 0) {
node.innerHTML = "";
}
var topHeight = Math.max(options.radii.tl, options.radii.tr);
var bottomHeight = Math.max(options.radii.bl, options.radii.br);
if (options.radii.tl || options.radii.tr) {
top = document.createElement("div");
top.style.width = "100%";
top.style.fontSize = "1px";
top.style.overflow = "hidden";
top.style.position = "absolute";
top.style.paddingLeft = format.borderWidth + "px";
top.style.paddingRight = format.borderWidth + "px";
top.style.height = topHeight + "px";
top.style.top = (0 - topHeight) + "px";
top.style.left = (0 - format.borderWidth) + "px";
node.appendChild(top);
}
if (options.radii.bl || options.radii.br) {
bottom = document.createElement("div");
bottom.style.width = "100%";
bottom.style.fontSize = "1px";
bottom.style.overflow = "hidden";
bottom.style.position = "absolute";
bottom.style.paddingLeft = format.borderWidth + "px";
bottom.style.paddingRight = format.borderWidth + "px";
bottom.style.height = bottomHeight + "px";
bottom.style.bottom = (0 - bottomHeight) + "px";
bottom.style.left = (0 - format.borderWidth) + "px";
node.appendChild(bottom);
}
if (top) {
node.style.borderTopWidth = "0px";
}
if (bottom) {
node.style.borderBottomWidth = "0px";
}
var corners = ["tr", "tl", "br", "bl"];
for (var i = 0; i < corners.length; i++) {
var cc = corners[i];
if (options.radii[cc] == 0) {
if ((cc.charAt(0) == "t" && top) || (cc.charAt(0) == "b" && bottom)) {
var corner = document.createElement("div");
corner.style.position = "relative";
corner.style.fontSize = "1px;";
corner.style.overflow = "hidden";
if (format.bgImage == "") {
corner.style.backgroundColor = format.color;
} else {
corner.style.backgroundImage = format.bgImage;
}
switch (cc) {
case "tl":
corner.style.height = topHeight - format.borderWidth + "px";
corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px";
corner.style.borderLeft = format.borderString;
corner.style.borderTop = format.borderString;
corner.style.left = -format.borderWidth + "px";
break;
case "tr":
corner.style.height = topHeight - format.borderWidth + "px";
corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px";
corner.style.borderRight = format.borderString;
corner.style.borderTop = format.borderString;
corner.style.backgroundPosition = "-" + (topHeight - format.borderWidth) + "px 0px";
corner.style.left = format.borderWidth + "px";
break;
case "bl":
corner.style.height = bottomHeight - format.borderWidth + "px";
corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px";
corner.style.borderLeft = format.borderString;
corner.style.borderBottom = format.borderString;
corner.style.left = format.borderWidth + "px";
corner.style.backgroundPosition = "-" + format.borderWidth + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px";
break;
case "br":
corner.style.height = bottomHeight - format.borderWidth + "px";
corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px";
corner.style.borderRight = format.borderString;
corner.style.borderBottom = format.borderString;
corner.style.left = format.borderWidth + "px";
corner.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px";
break;
}
}
} else {
var corner = document.createElement("div");
corner.style.height = options.radii[cc] + "px";
corner.style.width = options.radii[cc] + "px";
corner.style.position = "absolute";
corner.style.fontSize = "1px";
corner.style.overflow = "hidden";
var borderRadius = Math.floor(options.radii[cc] - format.borderWidth);
for (var x = 0, j = options.radii[cc]; x < j; x++) {
var y1 = Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((x + 1), 2))) - 1;
if ((x + 1) >= borderRadius) {
var y1 = -1;
}
var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(x, 2)));
if (x >= borderRadius) {
y2 = -1;
}
var y3 = Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((x + 1), 2))) - 1;
if ((x + 1) >= j) {
y3 = -1;
}
var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(x, 2)));
if (x >= j) {
y4 = -1;
}
if (y1 > -1) {
fns.draw(x, 0, format.color, 100, (y1 + 1), corner, -1, j, topHeight, format);
}
for (var y = (y1 + 1); y < y2; y++) {
if (options.antiAlias) {
if (format.bgImage != "") {
var fract = fns.fraction(x, y, borderRadius) * 100;
if (fract < 30) {
fns.draw(x, y, format.borderColor, 100, 1, corner, 0, options.radii[cc], topHeight, format);
} else {
fns.draw(x, y, format.borderColor, 100, 1, corner, -1, options.radii[cc], topHeight, format);
}
} else {
var clr = fns.blend(format.color, format.borderColor, fns.fraction(x, y, borderRadius));
fns.draw(x, y, clr, 100, 1, corner, 0, options.radii[cc], topHeight, format);
}
}
}
if (options.antiAlias) {
if (y3 >= y2) {
if (y2 == -1) {
y2 = 0;
}
fns.draw(x, y2, format.borderColor, 100, (y3 - y2 + 1), corner, 0, 0, topHeight, format);
} else {
if (y3 >= y1) {
fns.draw(x, (y1 + 1), format.borderColor, 100, (y3 - y1), corner, 0, 0, topHeight, format);
}
}
for (var y = (y3 + 1); y < y4; y++) {
fns.draw(x, y, format.borderColor, (fns.fraction(x, y, j) * 100), 1, corner, (format.borderWidth > 0 ? 0 : -1), options.radii[cc], topHeight, format);
}
} else {
y3 = y1;
}
}
if (cc != "br") {
for (var t = 0, k = corner.childNodes.length; t < k; t++) {
var bar = corner.childNodes[t];
var barTop = parseInt(dojo.html.getComputedStyle(bar, "top"));
var barLeft = parseInt(dojo.html.getComputedStyle(bar, "left"));
var barHeight = parseInt(dojo.html.getComputedStyle(bar, "height"));
if (cc.charAt(1) == "l") {
bar.style.left = (options.radii[cc] - barLeft - 1) + "px";
}
if (cc == "tr") {
bar.style.top = (options.radii[cc] - barHeight - barTop) + "px";
bar.style.backgroundPosition = "-" + Math.abs((format.width - options.radii[cc] + format.borderWidth) + barLeft) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px";
} else {
if (cc == "tl") {
bar.style.top = (options.radii[cc] - barHeight - barTop) + "px";
bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] - barLeft - 1) - format.borderWidth) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px";
} else {
bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] + barLeft) + format.borderWidth) + "px -" + Math.abs((format.height + options.radii[cc] + barTop) - format.borderWidth) + "px";
}
}
}
}
}
if (corner) {
var psn = [];
if (cc.charAt(0) == "t") {
psn.push("top");
} else {
psn.push("bottom");
}
if (cc.charAt(1) == "l") {
psn.push("left");
} else {
psn.push("right");
}
if (corner.style.position == "absolute") {
for (var z = 0; z < psn.length; z++) {
corner.style[psn[z]] = "0px";
}
}
if (psn[0] == "top") {
if (top) {
top.appendChild(corner);
}
} else {
if (bottom) {
bottom.appendChild(corner);
}
}
}
}
var diff = {t:Math.abs(options.radii.tl - options.radii.tr), b:Math.abs(options.radii.bl - options.radii.br)};
for (var z in diff) {
var smaller = (options.radii[z + "l"] < options.radii[z + "r"] ? z + "l" : z + "r");
var filler = document.createElement("div");
filler.style.height = diff[z] + "px";
filler.style.width = options.radii[smaller] + "px";
filler.style.position = "absolute";
filler.style.fontSize = "1px";
filler.style.overflow = "hidden";
filler.style.backgroundColor = format.color;
switch (smaller) {
case "tl":
filler.style.bottom = "0px";
filler.style.left = "0px";
filler.style.borderLeft = format.borderString;
top.appendChild(filler);
break;
case "tr":
filler.style.bottom = "0px";
filler.style.right = "0px";
filler.style.borderRight = format.borderString;
top.appendChild(filler);
break;
case "bl":
filler.style.top = "0px";
filler.style.left = "0px";
filler.style.borderLeft = format.borderString;
bottom.appendChild(filler);
break;
case "br":
filler.style.top = "0px";
filler.style.right = "0px";
filler.style.borderRight = format.borderString;
bottom.appendChild(filler);
break;
}
var fillBar = document.createElement("div");
fillBar.style.position = "relative";
fillBar.style.fontSize = "1px";
fillBar.style.overflow = "hidden";
fillBar.style.backgroundColor = format.color;
fillBar.style.backgroundImage = format.bgImage;
if (z == "t") {
if (top) {
if (options.radii.tl && options.radii.tr) {
fillBar.style.height = (topHeight - format.borderWidth) + "px";
fillBar.style.marginLeft = (options.radii.tl - format.borderWidth) + "px";
fillBar.style.marginRight = (options.radii.tr - format.borderWidth) + "px";
fillBar.style.borderTop = format.borderString;
if (format.bgImage != "") {
fillBar.style.backgroundPosition = "-" + (topHeight + format.borderWidth) + "px 0px";
}
}
top.appendChild(fillBar);
}
} else {
if (bottom) {
if (options.radii.bl && options.radii.br) {
fillBar.style.height = (bottomHeight - format.borderWidth) + "px";
fillBar.style.marginLeft = (options.radii.bl - format.borderWidth) + "px";
fillBar.style.marginRight = (options.radii.br - format.borderWidth) + "px";
fillBar.style.borderBottom = format.borderString;
if (format.bgImage != "") {
fillBar.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (topHeight + format.borderWidth)) + "px";
}
}
bottom.appendChild(fillBar);
}
}
}
if (options.autoPad && format.padding > 0) {
var content = document.createElement("div");
content.style.position = "relative";
content.innerHTML = format.content;
content.className = "autoPadDiv";
if (topHeight < format.padding) {
content.style.paddingTop = Math.abs(topHeight - format.padding) + "px";
}
if (bottomHeight < format.padding) {
content.style.paddingBottom = Math.abs(bottomHeight - format.padding) + "px";
}
content.style.paddingLeft = format.padding + "px";
content.style.paddingRight = format.padding + "px";
node.appendChild(content);
}
};
var count = 0;
dojo.lfx.rounded._fns = {blend:function (clr1, clr2, frac) {
var c1 = {r:parseInt(clr1.substr(1, 2), 16), g:parseInt(clr1.substr(3, 2), 16), b:parseInt(clr1.substr(5, 2), 16)};
var c2 = {r:parseInt(clr2.substr(1, 2), 16), g:parseInt(clr2.substr(3, 2), 16), b:parseInt(clr2.substr(5, 2), 16)};
if (frac > 1 || frac < 0) {
frac = 1;
}
var ret = [Math.min(Math.max(Math.round((c1.r * frac) + (c2.r * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.g * frac) + (c2.g * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.b * frac) + (c2.b * (1 - frac))), 0), 255)];
for (var i = 0; i < ret.length; i++) {
var n = ret[i].toString(16);
if (n.length < 2) {
n = "0" + n;
}
ret[i] = n;
}
return "#" + ret.join("");
}, fraction:function (x, y, r) {
var frac = 0;
var xval = [];
var yval = [];
var point = 0;
var whatsides = "";
var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
if (intersect >= y && intersect < (y + 1)) {
whatsides = "Left";
xval[point] = 0;
yval[point++] = intersect - y;
}
intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
if (intersect >= x && intersect < (x + 1)) {
whatsides += "Top";
xval[point] = intersect - x;
yval[point++] = 1;
}
intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
if (intersect >= y && intersect < (y + 1)) {
whatsides += "Right";
xval[point] = 1;
yval[point++] = intersect - y;
}
intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
if (intersect >= x && intersect < (x + 1)) {
whatsides += "Bottom";
xval[point] = intersect - x;
yval[point] = 1;
}
switch (whatsides) {
case "LeftRight":
return Math.min(yval[0], yval[1]) + ((Math.max(yval[0], yval[1]) - Math.min(yval[0], yval[1])) / 2);
case "TopRight":
return 1 - (((1 - xval[0]) * (1 - yval[1])) / 2);
case "TopBottom":
return Math.min(xval[0], xval[1]) + ((Math.max(xval[0], xval[1]) - Math.min(xval[0], xval[1])) / 2);
case "LeftBottom":
return (yval[0] * xval[1]) / 2;
default:
return 1;
}
}, draw:function (x, y, color, opac, height, corner, image, radius, top, format) {
var px = document.createElement("div");
px.style.height = height + "px";
px.style.width = "1px";
px.style.position = "absolute";
px.style.fontSize = "1px";
px.style.overflow = "hidden";
if (image == -1 && format.bgImage != "") {
px.style.backgroundImage = format.bgImage;
px.style.backgroundPosition = "-" + (format.width - (radius - x) + format.borderWidth) + "px -" + ((format.height + top + y) - format.borderWidth) + "px";
} else {
px.style.backgroundColor = color;
}
if (opac != 100) {
dojo.html.setOpacity(px, (opac / 100));
}
px.style.top = y + "px";
px.style.left = x + "px";
corner.appendChild(px);
}, getRGB:function (clr) {
var ret = "#ffffff";
if (clr != "" && clr != "transparent") {
if (clr.substr(0, 3) == "rgb") {
var t = clr.substring(4, clr.indexOf(")"));
t = t.split(",");
for (var i = 0; i < t.length; i++) {
var n = parseInt(t[i]).toString(16);
if (n.length < 2) {
n = "0" + n;
}
t[i] = n;
}
ret = "#" + t.join("");
} else {
if (clr.length == 4) {
ret = "#" + clr.substring(1, 2) + clr.substring(1, 2) + clr.substring(2, 3) + clr.substring(2, 3) + clr.substring(3, 4) + clr.substring(3, 4);
} else {
ret = clr;
}
}
}
return ret;
}};
 
/trunk/api/js/dojo/src/lfx/toggle.js
New file
0,0 → 1,39
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.toggle");
dojo.require("dojo.lfx.*");
dojo.lfx.toggle.plain = {show:function (node, duration, easing, callback) {
dojo.html.show(node);
if (dojo.lang.isFunction(callback)) {
callback();
}
}, hide:function (node, duration, easing, callback) {
dojo.html.hide(node);
if (dojo.lang.isFunction(callback)) {
callback();
}
}};
dojo.lfx.toggle.fade = {show:function (node, duration, easing, callback) {
dojo.lfx.fadeShow(node, duration, easing, callback).play();
}, hide:function (node, duration, easing, callback) {
dojo.lfx.fadeHide(node, duration, easing, callback).play();
}};
dojo.lfx.toggle.wipe = {show:function (node, duration, easing, callback) {
dojo.lfx.wipeIn(node, duration, easing, callback).play();
}, hide:function (node, duration, easing, callback) {
dojo.lfx.wipeOut(node, duration, easing, callback).play();
}};
dojo.lfx.toggle.explode = {show:function (node, duration, easing, callback, explodeSrc) {
dojo.lfx.explode(explodeSrc || {x:0, y:0, width:0, height:0}, node, duration, easing, callback).play();
}, hide:function (node, duration, easing, callback, explodeSrc) {
dojo.lfx.implode(node, explodeSrc || {x:0, y:0, width:0, height:0}, duration, easing, callback).play();
}};
 
/trunk/api/js/dojo/src/lfx/html.js
New file
0,0 → 1,507
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.html");
dojo.require("dojo.gfx.color");
dojo.require("dojo.lfx.Animation");
dojo.require("dojo.lang.array");
dojo.require("dojo.html.display");
dojo.require("dojo.html.color");
dojo.require("dojo.html.layout");
dojo.lfx.html._byId = function (nodes) {
if (!nodes) {
return [];
}
if (dojo.lang.isArrayLike(nodes)) {
if (!nodes.alreadyChecked) {
var n = [];
dojo.lang.forEach(nodes, function (node) {
n.push(dojo.byId(node));
});
n.alreadyChecked = true;
return n;
} else {
return nodes;
}
} else {
var n = [];
n.push(dojo.byId(nodes));
n.alreadyChecked = true;
return n;
}
};
dojo.lfx.html.propertyAnimation = function (nodes, propertyMap, duration, easing, handlers) {
nodes = dojo.lfx.html._byId(nodes);
var targs = {"propertyMap":propertyMap, "nodes":nodes, "duration":duration, "easing":easing || dojo.lfx.easeDefault};
var setEmUp = function (args) {
if (args.nodes.length == 1) {
var pm = args.propertyMap;
if (!dojo.lang.isArray(args.propertyMap)) {
var parr = [];
for (var pname in pm) {
pm[pname].property = pname;
parr.push(pm[pname]);
}
pm = args.propertyMap = parr;
}
dojo.lang.forEach(pm, function (prop) {
if (dj_undef("start", prop)) {
if (prop.property != "opacity") {
prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property));
} else {
prop.start = dojo.html.getOpacity(args.nodes[0]);
}
}
});
}
};
var coordsAsInts = function (coords) {
var cints = [];
dojo.lang.forEach(coords, function (c) {
cints.push(Math.round(c));
});
return cints;
};
var setStyle = function (n, style) {
n = dojo.byId(n);
if (!n || !n.style) {
return;
}
for (var s in style) {
try {
if (s == "opacity") {
dojo.html.setOpacity(n, style[s]);
} else {
n.style[s] = style[s];
}
}
catch (e) {
dojo.debug(e);
}
}
};
var propLine = function (properties) {
this._properties = properties;
this.diffs = new Array(properties.length);
dojo.lang.forEach(properties, function (prop, i) {
if (dojo.lang.isFunction(prop.start)) {
prop.start = prop.start(prop, i);
}
if (dojo.lang.isFunction(prop.end)) {
prop.end = prop.end(prop, i);
}
if (dojo.lang.isArray(prop.start)) {
this.diffs[i] = null;
} else {
if (prop.start instanceof dojo.gfx.color.Color) {
prop.startRgb = prop.start.toRgb();
prop.endRgb = prop.end.toRgb();
} else {
this.diffs[i] = prop.end - prop.start;
}
}
}, this);
this.getValue = function (n) {
var ret = {};
dojo.lang.forEach(this._properties, function (prop, i) {
var value = null;
if (dojo.lang.isArray(prop.start)) {
} else {
if (prop.start instanceof dojo.gfx.color.Color) {
value = (prop.units || "rgb") + "(";
for (var j = 0; j < prop.startRgb.length; j++) {
value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : "");
}
value += ")";
} else {
value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units || "px" : "");
}
}
ret[dojo.html.toCamelCase(prop.property)] = value;
}, this);
return ret;
};
};
var anim = new dojo.lfx.Animation({beforeBegin:function () {
setEmUp(targs);
anim.curve = new propLine(targs.propertyMap);
}, onAnimate:function (propValues) {
dojo.lang.forEach(targs.nodes, function (node) {
setStyle(node, propValues);
});
}}, targs.duration, null, targs.easing);
if (handlers) {
for (var x in handlers) {
if (dojo.lang.isFunction(handlers[x])) {
anim.connect(x, anim, handlers[x]);
}
}
}
return anim;
};
dojo.lfx.html._makeFadeable = function (nodes) {
var makeFade = function (node) {
if (dojo.render.html.ie) {
if ((node.style.zoom.length == 0) && (dojo.html.getStyle(node, "zoom") == "normal")) {
node.style.zoom = "1";
}
if ((node.style.width.length == 0) && (dojo.html.getStyle(node, "width") == "auto")) {
node.style.width = "auto";
}
}
};
if (dojo.lang.isArrayLike(nodes)) {
dojo.lang.forEach(nodes, makeFade);
} else {
makeFade(nodes);
}
};
dojo.lfx.html.fade = function (nodes, values, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var props = {property:"opacity"};
if (!dj_undef("start", values)) {
props.start = values.start;
} else {
props.start = function () {
return dojo.html.getOpacity(nodes[0]);
};
}
if (!dj_undef("end", values)) {
props.end = values.end;
} else {
dojo.raise("dojo.lfx.html.fade needs an end value");
}
var anim = dojo.lfx.propertyAnimation(nodes, [props], duration, easing);
anim.connect("beforeBegin", function () {
dojo.lfx.html._makeFadeable(nodes);
});
if (callback) {
anim.connect("onEnd", function () {
callback(nodes, anim);
});
}
return anim;
};
dojo.lfx.html.fadeIn = function (nodes, duration, easing, callback) {
return dojo.lfx.html.fade(nodes, {end:1}, duration, easing, callback);
};
dojo.lfx.html.fadeOut = function (nodes, duration, easing, callback) {
return dojo.lfx.html.fade(nodes, {end:0}, duration, easing, callback);
};
dojo.lfx.html.fadeShow = function (nodes, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
dojo.lang.forEach(nodes, function (node) {
dojo.html.setOpacity(node, 0);
});
var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback);
anim.connect("beforeBegin", function () {
if (dojo.lang.isArrayLike(nodes)) {
dojo.lang.forEach(nodes, dojo.html.show);
} else {
dojo.html.show(nodes);
}
});
return anim;
};
dojo.lfx.html.fadeHide = function (nodes, duration, easing, callback) {
var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function () {
if (dojo.lang.isArrayLike(nodes)) {
dojo.lang.forEach(nodes, dojo.html.hide);
} else {
dojo.html.hide(nodes);
}
if (callback) {
callback(nodes, anim);
}
});
return anim;
};
dojo.lfx.html.wipeIn = function (nodes, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function (node) {
var oprop = {};
var origTop, origLeft, origPosition;
with (node.style) {
origTop = top;
origLeft = left;
origPosition = position;
top = "-9999px";
left = "-9999px";
position = "absolute";
display = "";
}
var nodeHeight = dojo.html.getBorderBox(node).height;
with (node.style) {
top = origTop;
left = origLeft;
position = origPosition;
display = "none";
}
var anim = dojo.lfx.propertyAnimation(node, {"height":{start:1, end:function () {
return nodeHeight;
}}}, duration, easing);
anim.connect("beforeBegin", function () {
oprop.overflow = node.style.overflow;
oprop.height = node.style.height;
with (node.style) {
overflow = "hidden";
height = "1px";
}
dojo.html.show(node);
});
anim.connect("onEnd", function () {
with (node.style) {
overflow = oprop.overflow;
height = oprop.height;
}
if (callback) {
callback(node, anim);
}
});
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lfx.html.wipeOut = function (nodes, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function (node) {
var oprop = {};
var anim = dojo.lfx.propertyAnimation(node, {"height":{start:function () {
return dojo.html.getContentBox(node).height;
}, end:1}}, duration, easing, {"beforeBegin":function () {
oprop.overflow = node.style.overflow;
oprop.height = node.style.height;
with (node.style) {
overflow = "hidden";
}
dojo.html.show(node);
}, "onEnd":function () {
dojo.html.hide(node);
with (node.style) {
overflow = oprop.overflow;
height = oprop.height;
}
if (callback) {
callback(node, anim);
}
}});
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lfx.html.slideTo = function (nodes, coords, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
var compute = dojo.html.getComputedStyle;
if (dojo.lang.isArray(coords)) {
dojo.deprecated("dojo.lfx.html.slideTo(node, array)", "use dojo.lfx.html.slideTo(node, {top: value, left: value});", "0.5");
coords = {top:coords[0], left:coords[1]};
}
dojo.lang.forEach(nodes, function (node) {
var top = null;
var left = null;
var init = (function () {
var innerNode = node;
return function () {
var pos = compute(innerNode, "position");
top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0);
left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0);
if (!dojo.lang.inArray(["absolute", "relative"], pos)) {
var ret = dojo.html.abs(innerNode, true);
dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;");
top = ret.y;
left = ret.x;
}
};
})();
init();
var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:(coords.top || 0)}, "left":{start:left, end:(coords.left || 0)}}, duration, easing, {"beforeBegin":init});
if (callback) {
anim.connect("onEnd", function () {
callback(nodes, anim);
});
}
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lfx.html.slideBy = function (nodes, coords, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
var compute = dojo.html.getComputedStyle;
if (dojo.lang.isArray(coords)) {
dojo.deprecated("dojo.lfx.html.slideBy(node, array)", "use dojo.lfx.html.slideBy(node, {top: value, left: value});", "0.5");
coords = {top:coords[0], left:coords[1]};
}
dojo.lang.forEach(nodes, function (node) {
var top = null;
var left = null;
var init = (function () {
var innerNode = node;
return function () {
var pos = compute(innerNode, "position");
top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0);
left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0);
if (!dojo.lang.inArray(["absolute", "relative"], pos)) {
var ret = dojo.html.abs(innerNode, true);
dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;");
top = ret.y;
left = ret.x;
}
};
})();
init();
var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:top + (coords.top || 0)}, "left":{start:left, end:left + (coords.left || 0)}}, duration, easing).connect("beforeBegin", init);
if (callback) {
anim.connect("onEnd", function () {
callback(nodes, anim);
});
}
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lfx.html.explode = function (start, endNode, duration, easing, callback) {
var h = dojo.html;
start = dojo.byId(start);
endNode = dojo.byId(endNode);
var startCoords = h.toCoordinateObject(start, true);
var outline = document.createElement("div");
h.copyStyle(outline, endNode);
if (endNode.explodeClassName) {
outline.className = endNode.explodeClassName;
}
with (outline.style) {
position = "absolute";
display = "none";
var backgroundStyle = h.getStyle(start, "background-color");
backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent";
backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor;
}
dojo.body().appendChild(outline);
with (endNode.style) {
visibility = "hidden";
display = "block";
}
var endCoords = h.toCoordinateObject(endNode, true);
with (endNode.style) {
display = "none";
visibility = "visible";
}
var props = {opacity:{start:0.5, end:1}};
dojo.lang.forEach(["height", "width", "top", "left"], function (type) {
props[type] = {start:startCoords[type], end:endCoords[type]};
});
var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () {
h.setDisplay(outline, "block");
}, "onEnd":function () {
h.setDisplay(endNode, "block");
outline.parentNode.removeChild(outline);
}});
if (callback) {
anim.connect("onEnd", function () {
callback(endNode, anim);
});
}
return anim;
};
dojo.lfx.html.implode = function (startNode, end, duration, easing, callback) {
var h = dojo.html;
startNode = dojo.byId(startNode);
end = dojo.byId(end);
var startCoords = dojo.html.toCoordinateObject(startNode, true);
var endCoords = dojo.html.toCoordinateObject(end, true);
var outline = document.createElement("div");
dojo.html.copyStyle(outline, startNode);
if (startNode.explodeClassName) {
outline.className = startNode.explodeClassName;
}
dojo.html.setOpacity(outline, 0.3);
with (outline.style) {
position = "absolute";
display = "none";
backgroundColor = h.getStyle(startNode, "background-color").toLowerCase();
}
dojo.body().appendChild(outline);
var props = {opacity:{start:1, end:0.5}};
dojo.lang.forEach(["height", "width", "top", "left"], function (type) {
props[type] = {start:startCoords[type], end:endCoords[type]};
});
var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () {
dojo.html.hide(startNode);
dojo.html.show(outline);
}, "onEnd":function () {
outline.parentNode.removeChild(outline);
}});
if (callback) {
anim.connect("onEnd", function () {
callback(startNode, anim);
});
}
return anim;
};
dojo.lfx.html.highlight = function (nodes, startColor, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function (node) {
var color = dojo.html.getBackgroundColor(node);
var bg = dojo.html.getStyle(node, "background-color").toLowerCase();
var bgImage = dojo.html.getStyle(node, "background-image");
var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)");
while (color.length > 3) {
color.pop();
}
var rgb = new dojo.gfx.color.Color(startColor);
var endRgb = new dojo.gfx.color.Color(color);
var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:rgb, end:endRgb}}, duration, easing, {"beforeBegin":function () {
if (bgImage) {
node.style.backgroundImage = "none";
}
node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")";
}, "onEnd":function () {
if (bgImage) {
node.style.backgroundImage = bgImage;
}
if (wasTransparent) {
node.style.backgroundColor = "transparent";
}
if (callback) {
callback(node, anim);
}
}});
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lfx.html.unhighlight = function (nodes, endColor, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function (node) {
var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
var rgb = new dojo.gfx.color.Color(endColor);
var bgImage = dojo.html.getStyle(node, "background-image");
var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:color, end:rgb}}, duration, easing, {"beforeBegin":function () {
if (bgImage) {
node.style.backgroundImage = "none";
}
node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")";
}, "onEnd":function () {
if (callback) {
callback(node, anim);
}
}});
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lang.mixin(dojo.lfx, dojo.lfx.html);
 
/trunk/api/js/dojo/src/lfx/shadow.js
New file
0,0 → 1,73
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.shadow");
dojo.require("dojo.lang.common");
dojo.require("dojo.uri.Uri");
dojo.lfx.shadow = function (node) {
this.shadowPng = dojo.uri.moduleUri("dojo.html", "images/shadow");
this.shadowThickness = 8;
this.shadowOffset = 15;
this.init(node);
};
dojo.extend(dojo.lfx.shadow, {init:function (node) {
this.node = node;
this.pieces = {};
var x1 = -1 * this.shadowThickness;
var y0 = this.shadowOffset;
var y1 = this.shadowOffset + this.shadowThickness;
this._makePiece("tl", "top", y0, "left", x1);
this._makePiece("l", "top", y1, "left", x1, "scale");
this._makePiece("tr", "top", y0, "left", 0);
this._makePiece("r", "top", y1, "left", 0, "scale");
this._makePiece("bl", "top", 0, "left", x1);
this._makePiece("b", "top", 0, "left", 0, "crop");
this._makePiece("br", "top", 0, "left", 0);
}, _makePiece:function (name, vertAttach, vertCoord, horzAttach, horzCoord, sizing) {
var img;
var url = this.shadowPng + name.toUpperCase() + ".png";
if (dojo.render.html.ie55 || dojo.render.html.ie60) {
img = dojo.doc().createElement("div");
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "'" + (sizing ? ", sizingMethod='" + sizing + "'" : "") + ")";
} else {
img = dojo.doc().createElement("img");
img.src = url;
}
img.style.position = "absolute";
img.style[vertAttach] = vertCoord + "px";
img.style[horzAttach] = horzCoord + "px";
img.style.width = this.shadowThickness + "px";
img.style.height = this.shadowThickness + "px";
this.pieces[name] = img;
this.node.appendChild(img);
}, size:function (width, height) {
var sideHeight = height - (this.shadowOffset + this.shadowThickness + 1);
if (sideHeight < 0) {
sideHeight = 0;
}
if (height < 1) {
height = 1;
}
if (width < 1) {
width = 1;
}
with (this.pieces) {
l.style.height = sideHeight + "px";
r.style.height = sideHeight + "px";
b.style.width = (width - 1) + "px";
bl.style.top = (height - 1) + "px";
b.style.top = (height - 1) + "px";
br.style.top = (height - 1) + "px";
tr.style.left = (width - 1) + "px";
r.style.left = (width - 1) + "px";
br.style.left = (width - 1) + "px";
}
}});
 
/trunk/api/js/dojo/src/lfx/extras.js
New file
0,0 → 1,78
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lfx.extras");
dojo.require("dojo.lfx.html");
dojo.require("dojo.lfx.Animation");
dojo.lfx.html.fadeWipeIn = function (nodes, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anim = dojo.lfx.combine(dojo.lfx.fadeIn(nodes, duration, easing), dojo.lfx.wipeIn(nodes, duration, easing));
if (callback) {
anim.connect("onEnd", function () {
callback(nodes, anim);
});
}
return anim;
};
dojo.lfx.html.fadeWipeOut = function (nodes, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anim = dojo.lfx.combine(dojo.lfx.fadeOut(nodes, duration, easing), dojo.lfx.wipeOut(nodes, duration, easing));
if (callback) {
anim.connect("onEnd", function () {
callback(nodes, anim);
});
}
return anim;
};
dojo.lfx.html.scale = function (nodes, percentage, scaleContent, fromCenter, duration, easing, callback) {
nodes = dojo.lfx.html._byId(nodes);
var anims = [];
dojo.lang.forEach(nodes, function (node) {
var outer = dojo.html.getMarginBox(node);
var actualPct = percentage / 100;
var props = [{property:"width", start:outer.width, end:outer.width * actualPct}, {property:"height", start:outer.height, end:outer.height * actualPct}];
if (scaleContent) {
var fontSize = dojo.html.getStyle(node, "font-size");
var fontSizeType = null;
if (!fontSize) {
fontSize = parseFloat("100%");
fontSizeType = "%";
} else {
dojo.lang.some(["em", "px", "%"], function (item, index, arr) {
if (fontSize.indexOf(item) > 0) {
fontSize = parseFloat(fontSize);
fontSizeType = item;
return true;
}
});
}
props.push({property:"font-size", start:fontSize, end:fontSize * actualPct, units:fontSizeType});
}
if (fromCenter) {
var positioning = dojo.html.getStyle(node, "position");
var originalTop = node.offsetTop;
var originalLeft = node.offsetLeft;
var endTop = ((outer.height * actualPct) - outer.height) / 2;
var endLeft = ((outer.width * actualPct) - outer.width) / 2;
props.push({property:"top", start:originalTop, end:(positioning == "absolute" ? originalTop - endTop : (-1 * endTop))});
props.push({property:"left", start:originalLeft, end:(positioning == "absolute" ? originalLeft - endLeft : (-1 * endLeft))});
}
var anim = dojo.lfx.propertyAnimation(node, props, duration, easing);
if (callback) {
anim.connect("onEnd", function () {
callback(node, anim);
});
}
anims.push(anim);
});
return dojo.lfx.combine(anims);
};
dojo.lang.mixin(dojo.lfx, dojo.lfx.html);
 
/trunk/api/js/dojo/src/lfx/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]});
dojo.provide("dojo.lfx.*");
 
/trunk/api/js/dojo/src/ns.js
New file
0,0 → 1,98
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.ns");
dojo.ns = {namespaces:{}, failed:{}, loading:{}, loaded:{}, register:function (name, module, resolver, noOverride) {
if (!noOverride || !this.namespaces[name]) {
this.namespaces[name] = new dojo.ns.Ns(name, module, resolver);
}
}, allow:function (name) {
if (this.failed[name]) {
return false;
}
if ((djConfig.excludeNamespace) && (dojo.lang.inArray(djConfig.excludeNamespace, name))) {
return false;
}
return ((name == this.dojo) || (!djConfig.includeNamespace) || (dojo.lang.inArray(djConfig.includeNamespace, name)));
}, get:function (name) {
return this.namespaces[name];
}, require:function (name) {
var ns = this.namespaces[name];
if ((ns) && (this.loaded[name])) {
return ns;
}
if (!this.allow(name)) {
return false;
}
if (this.loading[name]) {
dojo.debug("dojo.namespace.require: re-entrant request to load namespace \"" + name + "\" must fail.");
return false;
}
var req = dojo.require;
this.loading[name] = true;
try {
if (name == "dojo") {
req("dojo.namespaces.dojo");
} else {
if (!dojo.hostenv.moduleHasPrefix(name)) {
dojo.registerModulePath(name, "../" + name);
}
req([name, "manifest"].join("."), false, true);
}
if (!this.namespaces[name]) {
this.failed[name] = true;
}
}
finally {
this.loading[name] = false;
}
return this.namespaces[name];
}};
dojo.ns.Ns = function (name, module, resolver) {
this.name = name;
this.module = module;
this.resolver = resolver;
this._loaded = [];
this._failed = [];
};
dojo.ns.Ns.prototype.resolve = function (name, domain, omitModuleCheck) {
if (!this.resolver || djConfig["skipAutoRequire"]) {
return false;
}
var fullName = this.resolver(name, domain);
if ((fullName) && (!this._loaded[fullName]) && (!this._failed[fullName])) {
var req = dojo.require;
req(fullName, false, true);
if (dojo.hostenv.findModule(fullName, false)) {
this._loaded[fullName] = true;
} else {
if (!omitModuleCheck) {
dojo.raise("dojo.ns.Ns.resolve: module '" + fullName + "' not found after loading via namespace '" + this.name + "'");
}
this._failed[fullName] = true;
}
}
return Boolean(this._loaded[fullName]);
};
dojo.registerNamespace = function (name, module, resolver) {
dojo.ns.register.apply(dojo.ns, arguments);
};
dojo.registerNamespaceResolver = function (name, resolver) {
var n = dojo.ns.namespaces[name];
if (n) {
n.resolver = resolver;
}
};
dojo.registerNamespaceManifest = function (module, path, name, widgetModule, resolver) {
dojo.registerModulePath(name, path);
dojo.registerNamespace(name, widgetModule, resolver);
};
dojo.registerNamespace("dojo", "dojo.widget");
 
/trunk/api/js/dojo/src/event.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.event");
dojo.require("dojo.event.*");
dojo.deprecated("dojo.event", "replaced by dojo.event.*", "0.5");
 
/trunk/api/js/dojo/src/cal/textDirectory.js
New file
0,0 → 1,55
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.cal.textDirectory");
dojo.require("dojo.string");
dojo.cal.textDirectory.Property = function (line) {
var left = dojo.string.trim(line.substring(0, line.indexOf(":")));
var right = dojo.string.trim(line.substr(line.indexOf(":") + 1));
var parameters = dojo.string.splitEscaped(left, ";");
this.name = parameters[0];
parameters.splice(0, 1);
this.params = [];
var arr;
for (var i = 0; i < parameters.length; i++) {
arr = parameters[i].split("=");
var key = dojo.string.trim(arr[0].toUpperCase());
if (arr.length == 1) {
this.params.push([key]);
continue;
}
var values = dojo.string.splitEscaped(arr[1], ",");
for (var j = 0; j < values.length; j++) {
if (dojo.string.trim(values[j]) != "") {
this.params.push([key, dojo.string.trim(values[j])]);
}
}
}
if (this.name.indexOf(".") > 0) {
arr = this.name.split(".");
this.group = arr[0];
this.name = arr[1];
}
this.value = right;
};
dojo.cal.textDirectory.tokenise = function (text) {
var nText = dojo.string.normalizeNewlines(text, "\n").replace(/\n[ \t]/g, "").replace(/\x00/g, "");
var lines = nText.split("\n");
var properties = [];
for (var i = 0; i < lines.length; i++) {
if (dojo.string.trim(lines[i]) == "") {
continue;
}
var prop = new dojo.cal.textDirectory.Property(lines[i]);
properties.push(prop);
}
return properties;
};
 
/trunk/api/js/dojo/src/cal/iCalendar.js
New file
0,0 → 1,565
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.cal.iCalendar");
dojo.require("dojo.lang.common");
dojo.require("dojo.cal.textDirectory");
dojo.require("dojo.date.common");
dojo.require("dojo.date.serialize");
dojo.cal.iCalendar.fromText = function (text) {
var properties = dojo.cal.textDirectory.tokenise(text);
var calendars = [];
for (var i = 0, begun = false; i < properties.length; i++) {
var prop = properties[i];
if (!begun) {
if (prop.name == "BEGIN" && prop.value == "VCALENDAR") {
begun = true;
var calbody = [];
}
} else {
if (prop.name == "END" && prop.value == "VCALENDAR") {
calendars.push(new dojo.cal.iCalendar.VCalendar(calbody));
begun = false;
} else {
calbody.push(prop);
}
}
}
return calendars;
};
dojo.cal.iCalendar.Component = function (body) {
if (!this.name) {
this.name = "COMPONENT";
}
this.properties = [];
this.components = [];
if (body) {
for (var i = 0, context = ""; i < body.length; i++) {
if (context == "") {
if (body[i].name == "BEGIN") {
context = body[i].value;
var childprops = [];
} else {
this.addProperty(new dojo.cal.iCalendar.Property(body[i]));
}
} else {
if (body[i].name == "END" && body[i].value == context) {
if (context == "VEVENT") {
this.addComponent(new dojo.cal.iCalendar.VEvent(childprops));
} else {
if (context == "VTIMEZONE") {
this.addComponent(new dojo.cal.iCalendar.VTimeZone(childprops));
} else {
if (context == "VTODO") {
this.addComponent(new dojo.cal.iCalendar.VTodo(childprops));
} else {
if (context == "VJOURNAL") {
this.addComponent(new dojo.cal.iCalendar.VJournal(childprops));
} else {
if (context == "VFREEBUSY") {
this.addComponent(new dojo.cal.iCalendar.VFreeBusy(childprops));
} else {
if (context == "STANDARD") {
this.addComponent(new dojo.cal.iCalendar.Standard(childprops));
} else {
if (context == "DAYLIGHT") {
this.addComponent(new dojo.cal.iCalendar.Daylight(childprops));
} else {
if (context == "VALARM") {
this.addComponent(new dojo.cal.iCalendar.VAlarm(childprops));
} else {
dojo.unimplemented("dojo.cal.iCalendar." + context);
}
}
}
}
}
}
}
}
context = "";
} else {
childprops.push(body[i]);
}
}
}
if (this._ValidProperties) {
this.postCreate();
}
}
};
dojo.extend(dojo.cal.iCalendar.Component, {addProperty:function (prop) {
this.properties.push(prop);
this[prop.name.toLowerCase()] = prop;
}, addComponent:function (prop) {
this.components.push(prop);
}, postCreate:function () {
for (var x = 0; x < this._ValidProperties.length; x++) {
var evtProperty = this._ValidProperties[x];
var found = false;
for (var y = 0; y < this.properties.length; y++) {
var prop = this.properties[y];
var propName = prop.name.toLowerCase();
if (dojo.lang.isArray(evtProperty)) {
var alreadySet = false;
for (var z = 0; z < evtProperty.length; z++) {
var evtPropertyName = evtProperty[z].name.toLowerCase();
if ((this[evtPropertyName]) && (evtPropertyName != propName)) {
alreadySet = true;
}
}
if (!alreadySet) {
this[propName] = prop;
}
} else {
if (propName == evtProperty.name.toLowerCase()) {
found = true;
if (evtProperty.occurance == 1) {
this[propName] = prop;
} else {
found = true;
if (!dojo.lang.isArray(this[propName])) {
this[propName] = [];
}
this[propName].push(prop);
}
}
}
}
if (evtProperty.required && !found) {
dojo.debug("iCalendar - " + this.name + ": Required Property not found: " + evtProperty.name);
}
}
if (dojo.lang.isArray(this.rrule)) {
for (var x = 0; x < this.rrule.length; x++) {
var rule = this.rrule[x].value;
this.rrule[x].cache = function () {
};
var temp = rule.split(";");
for (var y = 0; y < temp.length; y++) {
var pair = temp[y].split("=");
var key = pair[0].toLowerCase();
var val = pair[1];
if ((key == "freq") || (key == "interval") || (key == "until")) {
this.rrule[x][key] = val;
} else {
var valArray = val.split(",");
this.rrule[x][key] = valArray;
}
}
}
this.recurring = true;
}
}, toString:function () {
return "[iCalendar.Component; " + this.name + ", " + this.properties.length + " properties, " + this.components.length + " components]";
}});
dojo.cal.iCalendar.Property = function (prop) {
this.name = prop.name;
this.group = prop.group;
this.params = prop.params;
this.value = prop.value;
};
dojo.extend(dojo.cal.iCalendar.Property, {toString:function () {
return "[iCalenday.Property; " + this.name + ": " + this.value + "]";
}});
var _P = function (n, oc, req) {
return {name:n, required:(req) ? true : false, occurance:(oc == "*" || !oc) ? -1 : oc};
};
dojo.cal.iCalendar.VCalendar = function (calbody) {
this.name = "VCALENDAR";
this.recurring = [];
this.nonRecurringEvents = function () {
};
dojo.cal.iCalendar.Component.call(this, calbody);
};
dojo.inherits(dojo.cal.iCalendar.VCalendar, dojo.cal.iCalendar.Component);
dojo.extend(dojo.cal.iCalendar.VCalendar, {addComponent:function (prop) {
this.components.push(prop);
if (prop.name.toLowerCase() == "vevent") {
if (prop.rrule) {
this.recurring.push(prop);
} else {
var startDate = prop.getDate();
var month = startDate.getMonth() + 1;
var dateString = month + "-" + startDate.getDate() + "-" + startDate.getFullYear();
if (!dojo.lang.isArray(this[dateString])) {
this.nonRecurringEvents[dateString] = [];
}
this.nonRecurringEvents[dateString].push(prop);
}
}
}, preComputeRecurringEvents:function (until) {
var calculatedEvents = function () {
};
for (var x = 0; x < this.recurring.length; x++) {
var dates = this.recurring[x].getDates(until);
for (var y = 0; y < dates.length; y++) {
var month = dates[y].getMonth() + 1;
var dateStr = month + "-" + dates[y].getDate() + "-" + dates[y].getFullYear();
if (!dojo.lang.isArray(calculatedEvents[dateStr])) {
calculatedEvents[dateStr] = [];
}
if (!dojo.lang.inArray(calculatedEvents[dateStr], this.recurring[x])) {
calculatedEvents[dateStr].push(this.recurring[x]);
}
}
}
this.recurringEvents = calculatedEvents;
}, getEvents:function (date) {
var events = [];
var recur = [];
var nonRecur = [];
var month = date.getMonth() + 1;
var dateStr = month + "-" + date.getDate() + "-" + date.getFullYear();
if (dojo.lang.isArray(this.nonRecurringEvents[dateStr])) {
nonRecur = this.nonRecurringEvents[dateStr];
dojo.debug("Number of nonRecurring Events: " + nonRecur.length);
}
if (dojo.lang.isArray(this.recurringEvents[dateStr])) {
recur = this.recurringEvents[dateStr];
}
events = recur.concat(nonRecur);
if (events.length > 0) {
return events;
}
return null;
}});
var StandardProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")];
dojo.cal.iCalendar.Standard = function (body) {
this.name = "STANDARD";
this._ValidProperties = StandardProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.Standard, dojo.cal.iCalendar.Component);
var DaylightProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")];
dojo.cal.iCalendar.Daylight = function (body) {
this.name = "DAYLIGHT";
this._ValidProperties = DaylightProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.Daylight, dojo.cal.iCalendar.Component);
var VEventProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("transp", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("dtend", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")];
dojo.cal.iCalendar.VEvent = function (body) {
this._ValidProperties = VEventProperties;
this.name = "VEVENT";
dojo.cal.iCalendar.Component.call(this, body);
this.recurring = false;
this.startDate = dojo.date.fromIso8601(this.dtstart.value);
};
dojo.inherits(dojo.cal.iCalendar.VEvent, dojo.cal.iCalendar.Component);
dojo.extend(dojo.cal.iCalendar.VEvent, {getDates:function (until) {
var dtstart = this.getDate();
var recurranceSet = [];
var weekdays = ["su", "mo", "tu", "we", "th", "fr", "sa"];
var order = {"daily":1, "weekly":2, "monthly":3, "yearly":4, "byday":1, "bymonthday":1, "byweekno":2, "bymonth":3, "byyearday":4};
for (var x = 0; x < this.rrule.length; x++) {
var rrule = this.rrule[x];
var freq = rrule.freq.toLowerCase();
var interval = 1;
if (rrule.interval > interval) {
interval = rrule.interval;
}
var set = [];
var freqInt = order[freq];
if (rrule.until) {
var tmpUntil = dojo.date.fromIso8601(rrule.until);
} else {
var tmpUntil = until;
}
if (tmpUntil > until) {
tmpUntil = until;
}
if (dtstart < tmpUntil) {
var expandingRules = function () {
};
var cullingRules = function () {
};
expandingRules.length = 0;
cullingRules.length = 0;
switch (freq) {
case "yearly":
var nextDate = new Date(dtstart);
set.push(nextDate);
while (nextDate < tmpUntil) {
nextDate.setYear(nextDate.getFullYear() + interval);
tmpDate = new Date(nextDate);
if (tmpDate < tmpUntil) {
set.push(tmpDate);
}
}
break;
case "monthly":
nextDate = new Date(dtstart);
set.push(nextDate);
while (nextDate < tmpUntil) {
nextDate.setMonth(nextDate.getMonth() + interval);
var tmpDate = new Date(nextDate);
if (tmpDate < tmpUntil) {
set.push(tmpDate);
}
}
break;
case "weekly":
nextDate = new Date(dtstart);
set.push(nextDate);
while (nextDate < tmpUntil) {
nextDate.setDate(nextDate.getDate() + (7 * interval));
var tmpDate = new Date(nextDate);
if (tmpDate < tmpUntil) {
set.push(tmpDate);
}
}
break;
case "daily":
nextDate = new Date(dtstart);
set.push(nextDate);
while (nextDate < tmpUntil) {
nextDate.setDate(nextDate.getDate() + interval);
var tmpDate = new Date(nextDate);
if (tmpDate < tmpUntil) {
set.push(tmpDate);
}
}
break;
}
if ((rrule["bymonth"]) && (order["bymonth"] < freqInt)) {
for (var z = 0; z < rrule["bymonth"].length; z++) {
if (z == 0) {
for (var zz = 0; zz < set.length; zz++) {
set[zz].setMonth(rrule["bymonth"][z] - 1);
}
} else {
var subset = [];
for (var zz = 0; zz < set.length; zz++) {
var newDate = new Date(set[zz]);
newDate.setMonth(rrule[z]);
subset.push(newDate);
}
tmp = set.concat(subset);
set = tmp;
}
}
}
if (rrule["byweekno"] && !rrule["bymonth"]) {
dojo.debug("TODO: no support for byweekno yet");
}
if (rrule["byyearday"] && !rrule["bymonth"] && !rrule["byweekno"]) {
if (rrule["byyearday"].length > 1) {
var regex = "([+-]?)([0-9]{1,3})";
for (var z = 1; x < rrule["byyearday"].length; z++) {
var regexResult = rrule["byyearday"][z].match(regex);
if (z == 1) {
for (var zz = 0; zz < set.length; zz++) {
if (regexResult[1] == "-") {
dojo.date.setDayOfYear(set[zz], 366 - regexResult[2]);
} else {
dojo.date.setDayOfYear(set[zz], regexResult[2]);
}
}
} else {
var subset = [];
for (var zz = 0; zz < set.length; zz++) {
var newDate = new Date(set[zz]);
if (regexResult[1] == "-") {
dojo.date.setDayOfYear(newDate, 366 - regexResult[2]);
} else {
dojo.date.setDayOfYear(newDate, regexResult[2]);
}
subset.push(newDate);
}
tmp = set.concat(subset);
set = tmp;
}
}
}
}
if (rrule["bymonthday"] && (order["bymonthday"] < freqInt)) {
if (rrule["bymonthday"].length > 0) {
var regex = "([+-]?)([0-9]{1,3})";
for (var z = 0; z < rrule["bymonthday"].length; z++) {
var regexResult = rrule["bymonthday"][z].match(regex);
if (z == 0) {
for (var zz = 0; zz < set.length; zz++) {
if (regexResult[1] == "-") {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
set[zz].setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
}
} else {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
set[zz].setDate(regexResult[2]);
}
}
}
} else {
var subset = [];
for (var zz = 0; zz < set.length; zz++) {
var newDate = new Date(set[zz]);
if (regexResult[1] == "-") {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
}
} else {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
newDate.setDate(regexResult[2]);
}
}
subset.push(newDate);
}
tmp = set.concat(subset);
set = tmp;
}
}
}
}
if (rrule["byday"] && (order["byday"] < freqInt)) {
if (rrule["bymonth"]) {
if (rrule["byday"].length > 0) {
var regex = "([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})";
for (var z = 0; z < rrule["byday"].length; z++) {
var regexResult = rrule["byday"][z].match(regex);
var occurance = regexResult[2];
var day = regexResult[3].toLowerCase();
if (z == 0) {
for (var zz = 0; zz < set.length; zz++) {
if (regexResult[1] == "-") {
var numDaysFound = 0;
var lastDayOfMonth = dojo.date.getDaysInMonth(set[zz]);
var daysToSubtract = 1;
set[zz].setDate(lastDayOfMonth);
if (weekdays[set[zz].getDay()] == day) {
numDaysFound++;
daysToSubtract = 7;
}
daysToSubtract = 1;
while (numDaysFound < occurance) {
set[zz].setDate(set[zz].getDate() - daysToSubtract);
if (weekdays[set[zz].getDay()] == day) {
numDaysFound++;
daysToSubtract = 7;
}
}
} else {
if (occurance) {
var numDaysFound = 0;
set[zz].setDate(1);
var daysToAdd = 1;
if (weekdays[set[zz].getDay()] == day) {
numDaysFound++;
daysToAdd = 7;
}
while (numDaysFound < occurance) {
set[zz].setDate(set[zz].getDate() + daysToAdd);
if (weekdays[set[zz].getDay()] == day) {
numDaysFound++;
daysToAdd = 7;
}
}
} else {
var numDaysFound = 0;
var subset = [];
lastDayOfMonth = new Date(set[zz]);
var daysInMonth = dojo.date.getDaysInMonth(set[zz]);
lastDayOfMonth.setDate(daysInMonth);
set[zz].setDate(1);
if (weekdays[set[zz].getDay()] == day) {
numDaysFound++;
}
var tmpDate = new Date(set[zz]);
daysToAdd = 1;
while (tmpDate.getDate() < lastDayOfMonth) {
if (weekdays[tmpDate.getDay()] == day) {
numDaysFound++;
if (numDaysFound == 1) {
set[zz] = tmpDate;
} else {
subset.push(tmpDate);
tmpDate = new Date(tmpDate);
daysToAdd = 7;
tmpDate.setDate(tmpDate.getDate() + daysToAdd);
}
} else {
tmpDate.setDate(tmpDate.getDate() + daysToAdd);
}
}
var t = set.concat(subset);
set = t;
}
}
}
} else {
var subset = [];
for (var zz = 0; zz < set.length; zz++) {
var newDate = new Date(set[zz]);
if (regexResult[1] == "-") {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
}
} else {
if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
newDate.setDate(regexResult[2]);
}
}
subset.push(newDate);
}
tmp = set.concat(subset);
set = tmp;
}
}
}
} else {
dojo.debug("TODO: byday within a yearly rule without a bymonth");
}
}
dojo.debug("TODO: Process BYrules for units larger than frequency");
var tmp = recurranceSet.concat(set);
recurranceSet = tmp;
}
}
recurranceSet.push(dtstart);
return recurranceSet;
}, getDate:function () {
return dojo.date.fromIso8601(this.dtstart.value);
}});
var VTimeZoneProperties = [_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)];
dojo.cal.iCalendar.VTimeZone = function (body) {
this.name = "VTIMEZONE";
this._ValidProperties = VTimeZoneProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component);
var VTodoProperties = [_P("class", 1), _P("completed", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("percent", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("due", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")];
dojo.cal.iCalendar.VTodo = function (body) {
this.name = "VTODO";
this._ValidProperties = VTodoProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component);
var VJournalProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("last-mod", 1), _P("organizer", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("related"), _P("rstatus"), _P("rdate"), _P("rrule")];
dojo.cal.iCalendar.VJournal = function (body) {
this.name = "VJOURNAL";
this._ValidProperties = VJournalProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component);
var VFreeBusyProperties = [_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"), _P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1), _P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")];
dojo.cal.iCalendar.VFreeBusy = function (body) {
this.name = "VFREEBUSY";
this._ValidProperties = VFreeBusyProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component);
var VAlarmProperties = [[_P("action", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)]], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), _P("summary", 1, true), _P("attendee", "*", true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("attach", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("description", 1)]];
dojo.cal.iCalendar.VAlarm = function (body) {
this.name = "VALARM";
this._ValidProperties = VAlarmProperties;
dojo.cal.iCalendar.Component.call(this, body);
};
dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component);
 
/trunk/api/js/dojo/src/debug.js
New file
0,0 → 1,83
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.debug");
dojo.debug = function () {
if (!djConfig.isDebug) {
return;
}
var args = arguments;
if (dj_undef("println", dojo.hostenv)) {
dojo.raise("dojo.debug not available (yet?)");
}
var isJUM = dj_global["jum"] && !dj_global["jum"].isBrowser;
var s = [(isJUM ? "" : "DEBUG: ")];
for (var i = 0; i < args.length; ++i) {
if (!false && args[i] && args[i] instanceof Error) {
var msg = "[" + args[i].name + ": " + dojo.errorToString(args[i]) + (args[i].fileName ? ", file: " + args[i].fileName : "") + (args[i].lineNumber ? ", line: " + args[i].lineNumber : "") + "]";
} else {
try {
var msg = String(args[i]);
}
catch (e) {
if (dojo.render.html.ie) {
var msg = "[ActiveXObject]";
} else {
var msg = "[unknown]";
}
}
}
s.push(msg);
}
dojo.hostenv.println(s.join(" "));
};
dojo.debugShallow = function (obj) {
if (!djConfig.isDebug) {
return;
}
dojo.debug("------------------------------------------------------------");
dojo.debug("Object: " + obj);
var props = [];
for (var prop in obj) {
try {
props.push(prop + ": " + obj[prop]);
}
catch (E) {
props.push(prop + ": ERROR - " + E.message);
}
}
props.sort();
for (var i = 0; i < props.length; i++) {
dojo.debug(props[i]);
}
dojo.debug("------------------------------------------------------------");
};
dojo.debugDeep = function (obj) {
if (!djConfig.isDebug) {
return;
}
if (!dojo.uri || !dojo.uri.dojoUri) {
return dojo.debug("You'll need to load dojo.uri.* for deep debugging - sorry!");
}
if (!window.open) {
return dojo.debug("Deep debugging is only supported in host environments with window.open");
}
var idx = dojo.debugDeep.debugVars.length;
dojo.debugDeep.debugVars.push(obj);
var url = (djConfig["dojoDebugDeepHtmlUrl"] || new dojo.uri.Uri(location, dojo.uri.moduleUri("dojo.debug", "deep.html")).toString()) + "?var=" + idx;
var win = window.open(url, "_blank", "width=600, height=400, resizable=yes, scrollbars=yes, status=yes");
try {
win.debugVar = obj;
}
catch (e) {
}
};
dojo.debugDeep.debugVars = [];
 
/trunk/api/js/dojo/src/validate.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate");
dojo.require("dojo.validate.common");
 
/trunk/api/js/dojo/src/storage/java/DojoFileStorageProvider.java
New file
0,0 → 1,54
/**
This is a simple class that can load, save, and remove
files from the native file system. It is needed by Safari and Opera
for the dojo.storage.browser.FileStorageProvider, since both of
these platforms have no native way to talk to the file system
for file:// URLs. Safari supports LiveConnect, but only for talking
to an applet, not for generic scripting by JavaScript, so we must
have an applet.
 
@author Brad Neuberg, bkn3@columbia.edu
*/
 
import java.io.*;
import java.util.*;
 
public class DojoFileStorageProvider{
public String load(String filePath)
throws IOException, FileNotFoundException{
StringBuffer results = new StringBuffer();
BufferedReader reader = new BufferedReader(
new FileReader(filePath));
String line = null;
while((line = reader.readLine()) != null){
results.append(line);
}
 
reader.close();
 
return results.toString();
}
 
public void save(String filePath, String content)
throws IOException, FileNotFoundException{
PrintWriter writer = new PrintWriter(
new BufferedWriter(
new FileWriter(filePath, false)));
writer.print(content);
 
writer.close();
}
 
public void remove(String filePath)
throws IOException, FileNotFoundException{
File f = new File(filePath);
 
if(f.exists() == false || f.isDirectory()){
return;
}
 
if(f.exists() && f.isFile()){
f.delete();
}
}
}
/trunk/api/js/dojo/src/storage/java/DojoFileStorageProvider.class
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/storage/java/DojoFileStorageProvider.class
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/storage/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]});
dojo.provide("dojo.storage.*");
 
/trunk/api/js/dojo/src/storage/storage_dialog.fla
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/storage/storage_dialog.fla
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/storage/Storage.as
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/storage/Storage.as
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/storage/browser.js
New file
0,0 → 1,548
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.storage.browser");
dojo.require("dojo.storage");
dojo.require("dojo.flash");
dojo.require("dojo.json");
dojo.require("dojo.uri.*");
dojo.storage.browser.FileStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage);
dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys";
dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj";
dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () {
if (djConfig["disableFileStorage"] == true) {
return;
}
this._loadKeyIndex();
this.initialized = true;
dojo.storage.manager.loaded();
}, isAvailable:function () {
this._available = false;
var protocol = window.location.protocol;
if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) {
this._available = this._isAvailableXPCOM();
if (this._available == false) {
this._available = this._isAvailableActiveX();
}
}
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
try {
this._save(key, value);
resultsHandler.call(null, dojo.storage.SUCCESS, key);
}
catch (e) {
this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
}
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var results = this._load(key);
return results;
}, getKeys:function () {
return this._keyIndex;
}, hasKey:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._loadKeyIndex();
var exists = false;
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
exists = true;
}
}
return exists;
}, clear:function () {
this._loadKeyIndex();
var keyIndex = new Array();
for (var i = 0; i < this._keyIndex.length; i++) {
keyIndex[keyIndex.length] = new String(this._keyIndex[i]);
}
for (var i = 0; i < keyIndex.length; i++) {
this.remove(keyIndex[i]);
}
}, remove:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._loadKeyIndex();
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
this._keyIndex.splice(i, 1);
break;
}
}
this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
var fullPath = this._getPagePath() + key + ".txt";
if (this._isAvailableXPCOM()) {
this._removeXPCOM(fullPath);
} else {
if (this._isAvailableActiveX()) {
this._removeActiveX(fullPath);
}
}
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return false;
}, showSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, hideSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, getType:function () {
return "dojo.storage.browser.FileStorageProvider";
}, _save:function (key, value, updateKeyIndex) {
if (typeof updateKeyIndex == "undefined") {
updateKeyIndex = true;
}
if (dojo.lang.isString(value) == false) {
value = dojo.json.serialize(value);
value = "/* JavaScript */\n" + value + "\n\n";
}
var fullPath = this._getPagePath() + key + ".txt";
if (this._isAvailableXPCOM()) {
this._saveFileXPCOM(fullPath, value);
} else {
if (this._isAvailableActiveX()) {
this._saveFileActiveX(fullPath, value);
}
}
if (updateKeyIndex) {
this._updateKeyIndex(key);
}
}, _load:function (key) {
var fullPath = this._getPagePath() + key + ".txt";
var results = null;
if (this._isAvailableXPCOM()) {
results = this._loadFileXPCOM(fullPath);
} else {
if (this._isAvailableActiveX()) {
results = this._loadFileActiveX(fullPath);
} else {
if (this._isAvailableJava()) {
results = this._loadFileJava(fullPath);
}
}
}
if (results == null) {
return null;
}
if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) {
results = dojo.json.evalJson(results);
}
return results;
}, _updateKeyIndex:function (key) {
this._loadKeyIndex();
var alreadyAdded = false;
for (var i = 0; i < this._keyIndex.length; i++) {
if (this._keyIndex[i] == key) {
alreadyAdded = true;
break;
}
}
if (alreadyAdded == false) {
this._keyIndex[this._keyIndex.length] = key;
}
this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
}, _loadKeyIndex:function () {
var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME);
if (indexContents == null) {
this._keyIndex = new Array();
} else {
this._keyIndex = indexContents;
}
}, _saveFileXPCOM:function (filename, value) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
ouputStream.init(f, 32 | 4 | 8, 256 + 128, null);
ouputStream.write(value, value.length);
ouputStream.close();
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg);
}
}, _loadFileXPCOM:function (filename) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
if (f.exists() == false) {
return null;
}
var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inp.init(f, 1, 4, null);
var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
inputStream.init(inp);
var results = inputStream.read(inputStream.available());
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg);
}
return null;
}, _saveFileActiveX:function (filename, value) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var f = fileSystem.OpenTextFile(filename, 2, true);
f.Write(value);
f.Close();
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg);
}
}, _loadFileActiveX:function (filename) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
if (fileSystem.FileExists(filename) == false) {
return null;
}
var f = fileSystem.OpenTextFile(filename, 1);
var results = f.ReadAll();
f.Close();
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg);
}
}, _saveFileJava:function (filename, value) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
applet.save(filename, value);
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg);
}
}, _loadFileJava:function (filename) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
var results = applet.load(filename);
return results;
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg);
}
}, _isAvailableActiveX:function () {
try {
if (window.ActiveXObject) {
var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject");
return true;
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _isAvailableXPCOM:function () {
try {
if (window.Components) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
return true;
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _isAvailableJava:function () {
try {
if (dojo.render.html.safari == true || dojo.render.html.opera == true()) {
if (navigator.javaEnabled() == true) {
return true;
}
}
}
catch (e) {
dojo.debug(e);
}
return false;
}, _getPagePath:function () {
var path = window.location.pathname;
if (/\.html?$/i.test(path)) {
path = path.replace(/(?:\/|\\)?[^\.\/\\]*\.html?$/, "");
}
if (/^\/?[a-z]+\:/i.test(path)) {
path = path.replace(/^\/?/, "");
path = path.replace(/\//g, "\\");
} else {
if (/^[\/\\]{2,3}[^\/]/.test(path)) {
path = path.replace(/^[\/\\]{2,3}/, "");
path = path.replace(/\//g, "\\");
path = "\\\\" + path;
}
}
if (/\/$/.test(path) == false && /\\$/.test(path) == false) {
if (/\//.test(path)) {
path += "/";
} else {
path += "\\";
}
}
path = unescape(path);
return path;
}, _removeXPCOM:function (filename) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
f.initWithPath(filename);
if (f.exists() == false || f.isDirectory()) {
return;
}
if (f.isFile()) {
f.remove(false);
}
}
catch (e) {
dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
}
}, _removeActiveX:function (filename) {
try {
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
fileSystem.DeleteFile(filename);
}
catch (e) {
dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
}
}, _removeJava:function (filename) {
try {
var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
applet.remove(filename);
}
catch (e) {
var msg = e.toString();
if (e.name && e.message) {
msg = e.name + ": " + e.message;
}
dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): " + msg);
}
}, _writeApplet:function () {
var archive = dojo.uri.moduleUri("dojo", "../DojoFileStorageProvider.jar").toString();
var tag = "<applet " + "id='" + dojo.storage.browser.FileStorageProvider._APPLET_ID + "' " + "style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' " + "code='DojoFileStorageProvider.class' " + "archive='" + archive + "' " + "width='1' " + "height='1' " + ">" + "</applet>";
document.writeln(tag);
}});
dojo.storage.browser.WhatWGStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.WhatWGStorageProvider, dojo.storage);
dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider, {namespace:"default", initialized:false, _domain:null, _available:null, _statusHandler:null, initialize:function () {
if (djConfig["disableWhatWGStorage"] == true) {
return;
}
this._domain = location.hostname;
this.initialized = true;
dojo.storage.manager.loaded();
}, isAvailable:function () {
try {
var myStorage = globalStorage[location.hostname];
}
catch (e) {
this._available = false;
return this._available;
}
this._available = true;
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
if (dojo.lang.isString(value)) {
value = "string:" + value;
} else {
value = dojo.json.serialize(value);
}
window.addEventListener("storage", function (evt) {
resultsHandler.call(null, dojo.storage.SUCCESS, key);
}, false);
try {
var myStorage = globalStorage[this._domain];
myStorage.setItem(key, value);
}
catch (e) {
this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
}
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var myStorage = globalStorage[this._domain];
var results = myStorage.getItem(key);
if (results == null) {
return null;
}
results = results.value;
if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
results = results.substring("string:".length);
} else {
results = dojo.json.evalJson(results);
}
return results;
}, getKeys:function () {
var myStorage = globalStorage[this._domain];
var keysArray = new Array();
for (i = 0; i < myStorage.length; i++) {
keysArray[i] = myStorage.key(i);
}
return keysArray;
}, clear:function () {
var myStorage = globalStorage[this._domain];
var keys = new Array();
for (var i = 0; i < myStorage.length; i++) {
keys[keys.length] = myStorage.key(i);
}
for (var i = 0; i < keys.length; i++) {
myStorage.removeItem(keys[i]);
}
}, remove:function (key) {
var myStorage = globalStorage[this._domain];
myStorage.removeItem(key);
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return false;
}, showSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, hideSettingsUI:function () {
dojo.raise(this.getType() + " does not support a storage settings user-interface");
}, getType:function () {
return "dojo.storage.browser.WhatWGProvider";
}});
dojo.storage.browser.FlashStorageProvider = function () {
};
dojo.inherits(dojo.storage.browser.FlashStorageProvider, dojo.storage);
dojo.lang.extend(dojo.storage.browser.FlashStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, initialize:function () {
if (djConfig["disableFlashStorage"] == true) {
return;
}
var loadedListener = function () {
dojo.storage._flashLoaded();
};
dojo.flash.addLoadedListener(loadedListener);
var swfloc6 = dojo.uri.moduleUri("dojo", "../Storage_version6.swf").toString();
var swfloc8 = dojo.uri.moduleUri("dojo", "../Storage_version8.swf").toString();
dojo.flash.setSwf({flash6:swfloc6, flash8:swfloc8, visible:false});
}, isAvailable:function () {
if (djConfig["disableFlashStorage"] == true) {
this._available = false;
} else {
this._available = true;
}
return this._available;
}, put:function (key, value, resultsHandler) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
this._statusHandler = resultsHandler;
if (dojo.lang.isString(value)) {
value = "string:" + value;
} else {
value = dojo.json.serialize(value);
}
dojo.flash.comm.put(key, value, this.namespace);
}, get:function (key) {
if (this.isValidKey(key) == false) {
dojo.raise("Invalid key given: " + key);
}
var results = dojo.flash.comm.get(key, this.namespace);
if (results == "") {
return null;
}
if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
results = results.substring("string:".length);
} else {
results = dojo.json.evalJson(results);
}
return results;
}, getKeys:function () {
var results = dojo.flash.comm.getKeys(this.namespace);
if (results == "") {
return [];
}
return results.split(",");
}, clear:function () {
dojo.flash.comm.clear(this.namespace);
}, remove:function (key) {
dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove");
}, isPermanent:function () {
return true;
}, getMaximumSize:function () {
return dojo.storage.SIZE_NO_LIMIT;
}, hasSettingsUI:function () {
return true;
}, showSettingsUI:function () {
dojo.flash.comm.showSettings();
dojo.flash.obj.setVisible(true);
dojo.flash.obj.center();
}, hideSettingsUI:function () {
dojo.flash.obj.setVisible(false);
if (dojo.storage.onHideSettingsUI != null && !dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)) {
dojo.storage.onHideSettingsUI.call(null);
}
}, getType:function () {
return "dojo.storage.browser.FlashStorageProvider";
}, _flashLoaded:function () {
this._initialized = true;
dojo.storage.manager.loaded();
}, _onStatus:function (statusResult, key) {
var ds = dojo.storage;
var dfo = dojo.flash.obj;
if (statusResult == ds.PENDING) {
dfo.center();
dfo.setVisible(true);
} else {
dfo.setVisible(false);
}
if ((!dj_undef("_statusHandler", ds)) && (ds._statusHandler != null)) {
ds._statusHandler.call(null, statusResult, key);
}
}});
dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider", new dojo.storage.browser.FileStorageProvider());
dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider", new dojo.storage.browser.WhatWGStorageProvider());
dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider", new dojo.storage.browser.FlashStorageProvider());
dojo.storage.manager.initialize();
 
/trunk/api/js/dojo/src/hostenv_browser.js
New file
0,0 → 1,413
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
if (typeof window != "undefined") {
(function () {
if (djConfig.allowQueryConfig) {
var baseUrl = document.location.toString();
var params = baseUrl.split("?", 2);
if (params.length > 1) {
var paramStr = params[1];
var pairs = paramStr.split("&");
for (var x in pairs) {
var sp = pairs[x].split("=");
if ((sp[0].length > 9) && (sp[0].substr(0, 9) == "djConfig.")) {
var opt = sp[0].substr(9);
try {
djConfig[opt] = eval(sp[1]);
}
catch (e) {
djConfig[opt] = sp[1];
}
}
}
}
}
if (((djConfig["baseScriptUri"] == "") || (djConfig["baseRelativePath"] == "")) && (document && document.getElementsByTagName)) {
var scripts = document.getElementsByTagName("script");
var rePkg = /(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
for (var i = 0; i < scripts.length; i++) {
var src = scripts[i].getAttribute("src");
if (!src) {
continue;
}
var m = src.match(rePkg);
if (m) {
var root = src.substring(0, m.index);
if (src.indexOf("bootstrap1") > -1) {
root += "../";
}
if (!this["djConfig"]) {
djConfig = {};
}
if (djConfig["baseScriptUri"] == "") {
djConfig["baseScriptUri"] = root;
}
if (djConfig["baseRelativePath"] == "") {
djConfig["baseRelativePath"] = root;
}
break;
}
}
}
var dr = dojo.render;
var drh = dojo.render.html;
var drs = dojo.render.svg;
var dua = (drh.UA = navigator.userAgent);
var dav = (drh.AV = navigator.appVersion);
var t = true;
var f = false;
drh.capable = t;
drh.support.builtin = t;
dr.ver = parseFloat(drh.AV);
dr.os.mac = dav.indexOf("Macintosh") >= 0;
dr.os.win = dav.indexOf("Windows") >= 0;
dr.os.linux = dav.indexOf("X11") >= 0;
drh.opera = dua.indexOf("Opera") >= 0;
drh.khtml = (dav.indexOf("Konqueror") >= 0) || (dav.indexOf("Safari") >= 0);
drh.safari = dav.indexOf("Safari") >= 0;
var geckoPos = dua.indexOf("Gecko");
drh.mozilla = drh.moz = (geckoPos >= 0) && (!drh.khtml);
if (drh.mozilla) {
drh.geckoVersion = dua.substring(geckoPos + 6, geckoPos + 14);
}
drh.ie = (document.all) && (!drh.opera);
drh.ie50 = drh.ie && dav.indexOf("MSIE 5.0") >= 0;
drh.ie55 = drh.ie && dav.indexOf("MSIE 5.5") >= 0;
drh.ie60 = drh.ie && dav.indexOf("MSIE 6.0") >= 0;
drh.ie70 = drh.ie && dav.indexOf("MSIE 7.0") >= 0;
var cm = document["compatMode"];
drh.quirks = (cm == "BackCompat") || (cm == "QuirksMode") || drh.ie55 || drh.ie50;
dojo.locale = dojo.locale || (drh.ie ? navigator.userLanguage : navigator.language).toLowerCase();
dr.vml.capable = drh.ie;
drs.capable = f;
drs.support.plugin = f;
drs.support.builtin = f;
var tdoc = window["document"];
var tdi = tdoc["implementation"];
if ((tdi) && (tdi["hasFeature"]) && (tdi.hasFeature("org.w3c.dom.svg", "1.0"))) {
drs.capable = t;
drs.support.builtin = t;
drs.support.plugin = f;
}
if (drh.safari) {
var tmp = dua.split("AppleWebKit/")[1];
var ver = parseFloat(tmp.split(" ")[0]);
if (ver >= 420) {
drs.capable = t;
drs.support.builtin = t;
drs.support.plugin = f;
}
} else {
}
})();
dojo.hostenv.startPackage("dojo.hostenv");
dojo.render.name = dojo.hostenv.name_ = "browser";
dojo.hostenv.searchIds = [];
dojo.hostenv._XMLHTTP_PROGIDS = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0"];
dojo.hostenv.getXmlhttpObject = function () {
var http = null;
var last_e = null;
try {
http = new XMLHttpRequest();
}
catch (e) {
}
if (!http) {
for (var i = 0; i < 3; ++i) {
var progid = dojo.hostenv._XMLHTTP_PROGIDS[i];
try {
http = new ActiveXObject(progid);
}
catch (e) {
last_e = e;
}
if (http) {
dojo.hostenv._XMLHTTP_PROGIDS = [progid];
break;
}
}
}
if (!http) {
return dojo.raise("XMLHTTP not available", last_e);
}
return http;
};
dojo.hostenv._blockAsync = false;
dojo.hostenv.getText = function (uri, async_cb, fail_ok) {
if (!async_cb) {
this._blockAsync = true;
}
var http = this.getXmlhttpObject();
function isDocumentOk(http) {
var stat = http["status"];
return Boolean((!stat) || ((200 <= stat) && (300 > stat)) || (stat == 304));
}
if (async_cb) {
var _this = this, timer = null, gbl = dojo.global();
var xhr = dojo.evalObjPath("dojo.io.XMLHTTPTransport");
http.onreadystatechange = function () {
if (timer) {
gbl.clearTimeout(timer);
timer = null;
}
if (_this._blockAsync || (xhr && xhr._blockAsync)) {
timer = gbl.setTimeout(function () {
http.onreadystatechange.apply(this);
}, 10);
} else {
if (4 == http.readyState) {
if (isDocumentOk(http)) {
async_cb(http.responseText);
}
}
}
};
}
http.open("GET", uri, async_cb ? true : false);
try {
http.send(null);
if (async_cb) {
return null;
}
if (!isDocumentOk(http)) {
var err = Error("Unable to load " + uri + " status:" + http.status);
err.status = http.status;
err.responseText = http.responseText;
throw err;
}
}
catch (e) {
this._blockAsync = false;
if ((fail_ok) && (!async_cb)) {
return null;
} else {
throw e;
}
}
this._blockAsync = false;
return http.responseText;
};
dojo.hostenv.defaultDebugContainerId = "dojoDebug";
dojo.hostenv._println_buffer = [];
dojo.hostenv._println_safe = false;
dojo.hostenv.println = function (line) {
if (!dojo.hostenv._println_safe) {
dojo.hostenv._println_buffer.push(line);
} else {
try {
var console = document.getElementById(djConfig.debugContainerId ? djConfig.debugContainerId : dojo.hostenv.defaultDebugContainerId);
if (!console) {
console = dojo.body();
}
var div = document.createElement("div");
div.appendChild(document.createTextNode(line));
console.appendChild(div);
}
catch (e) {
try {
document.write("<div>" + line + "</div>");
}
catch (e2) {
window.status = line;
}
}
}
};
dojo.addOnLoad(function () {
dojo.hostenv._println_safe = true;
while (dojo.hostenv._println_buffer.length > 0) {
dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
}
});
function dj_addNodeEvtHdlr(node, evtName, fp) {
var oldHandler = node["on" + evtName] || function () {
};
node["on" + evtName] = function () {
fp.apply(node, arguments);
oldHandler.apply(node, arguments);
};
return true;
}
function dj_load_init(e) {
var type = (e && e.type) ? e.type.toLowerCase() : "load";
if (arguments.callee.initialized || (type != "domcontentloaded" && type != "load")) {
return;
}
arguments.callee.initialized = true;
if (typeof (_timer) != "undefined") {
clearInterval(_timer);
delete _timer;
}
var initFunc = function () {
if (dojo.render.html.ie) {
dojo.hostenv.makeWidgets();
}
};
if (dojo.hostenv.inFlightCount == 0) {
initFunc();
dojo.hostenv.modulesLoaded();
} else {
dojo.hostenv.modulesLoadedListeners.unshift(initFunc);
}
}
if (document.addEventListener) {
if (dojo.render.html.opera || (dojo.render.html.moz && (djConfig["enableMozDomContentLoaded"] === true))) {
document.addEventListener("DOMContentLoaded", dj_load_init, null);
}
window.addEventListener("load", dj_load_init, null);
}
if (dojo.render.html.ie && dojo.render.os.win) {
document.attachEvent("onreadystatechange", function (e) {
if (document.readyState == "complete") {
dj_load_init();
}
});
}
if (/(WebKit|khtml)/i.test(navigator.userAgent)) {
var _timer = setInterval(function () {
if (/loaded|complete/.test(document.readyState)) {
dj_load_init();
}
}, 10);
}
if (dojo.render.html.ie) {
dj_addNodeEvtHdlr(window, "beforeunload", function () {
dojo.hostenv._unloading = true;
window.setTimeout(function () {
dojo.hostenv._unloading = false;
}, 0);
});
}
dj_addNodeEvtHdlr(window, "unload", function () {
dojo.hostenv.unloaded();
if ((!dojo.render.html.ie) || (dojo.render.html.ie && dojo.hostenv._unloading)) {
dojo.hostenv.unloaded();
}
});
dojo.hostenv.makeWidgets = function () {
var sids = [];
if (djConfig.searchIds && djConfig.searchIds.length > 0) {
sids = sids.concat(djConfig.searchIds);
}
if (dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) {
sids = sids.concat(dojo.hostenv.searchIds);
}
if ((djConfig.parseWidgets) || (sids.length > 0)) {
if (dojo.evalObjPath("dojo.widget.Parse")) {
var parser = new dojo.xml.Parse();
if (sids.length > 0) {
for (var x = 0; x < sids.length; x++) {
var tmpNode = document.getElementById(sids[x]);
if (!tmpNode) {
continue;
}
var frag = parser.parseElement(tmpNode, null, true);
dojo.widget.getParser().createComponents(frag);
}
} else {
if (djConfig.parseWidgets) {
var frag = parser.parseElement(dojo.body(), null, true);
dojo.widget.getParser().createComponents(frag);
}
}
}
}
};
dojo.addOnLoad(function () {
if (!dojo.render.html.ie) {
dojo.hostenv.makeWidgets();
}
});
try {
if (dojo.render.html.ie) {
document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)");
}
}
catch (e) {
}
dojo.hostenv.writeIncludes = function () {
};
if (!dj_undef("document", this)) {
dj_currentDocument = this.document;
}
dojo.doc = function () {
return dj_currentDocument;
};
dojo.body = function () {
return dojo.doc().body || dojo.doc().getElementsByTagName("body")[0];
};
dojo.byId = function (id, doc) {
if ((id) && ((typeof id == "string") || (id instanceof String))) {
if (!doc) {
doc = dj_currentDocument;
}
var ele = doc.getElementById(id);
if (ele && (ele.id != id) && doc.all) {
ele = null;
eles = doc.all[id];
if (eles) {
if (eles.length) {
for (var i = 0; i < eles.length; i++) {
if (eles[i].id == id) {
ele = eles[i];
break;
}
}
} else {
ele = eles;
}
}
}
return ele;
}
return id;
};
dojo.setContext = function (globalObject, globalDocument) {
dj_currentContext = globalObject;
dj_currentDocument = globalDocument;
};
dojo._fireCallback = function (callback, context, cbArguments) {
if ((context) && ((typeof callback == "string") || (callback instanceof String))) {
callback = context[callback];
}
return (context ? callback.apply(context, cbArguments || []) : callback());
};
dojo.withGlobal = function (globalObject, callback, thisObject, cbArguments) {
var rval;
var oldGlob = dj_currentContext;
var oldDoc = dj_currentDocument;
try {
dojo.setContext(globalObject, globalObject.document);
rval = dojo._fireCallback(callback, thisObject, cbArguments);
}
finally {
dojo.setContext(oldGlob, oldDoc);
}
return rval;
};
dojo.withDoc = function (documentObject, callback, thisObject, cbArguments) {
var rval;
var oldDoc = dj_currentDocument;
try {
dj_currentDocument = documentObject;
rval = dojo._fireCallback(callback, thisObject, cbArguments);
}
finally {
dj_currentDocument = oldDoc;
}
return rval;
};
}
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && !djConfig["useXDomain"], "dojo.browser_debug");
dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd");
 
/trunk/api/js/dojo/src/string/Builder.js
New file
0,0 → 1,102
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.string.Builder");
dojo.require("dojo.string");
dojo.require("dojo.lang.common");
dojo.string.Builder = function (str) {
this.arrConcat = (dojo.render.html.capable && dojo.render.html["ie"]);
var a = [];
var b = "";
var length = this.length = b.length;
if (this.arrConcat) {
if (b.length > 0) {
a.push(b);
}
b = "";
}
this.toString = this.valueOf = function () {
return (this.arrConcat) ? a.join("") : b;
};
this.append = function () {
for (var x = 0; x < arguments.length; x++) {
var s = arguments[x];
if (dojo.lang.isArrayLike(s)) {
this.append.apply(this, s);
} else {
if (this.arrConcat) {
a.push(s);
} else {
b += s;
}
length += s.length;
this.length = length;
}
}
return this;
};
this.clear = function () {
a = [];
b = "";
length = this.length = 0;
return this;
};
this.remove = function (f, l) {
var s = "";
if (this.arrConcat) {
b = a.join("");
}
a = [];
if (f > 0) {
s = b.substring(0, (f - 1));
}
b = s + b.substring(f + l);
length = this.length = b.length;
if (this.arrConcat) {
a.push(b);
b = "";
}
return this;
};
this.replace = function (o, n) {
if (this.arrConcat) {
b = a.join("");
}
a = [];
b = b.replace(o, n);
length = this.length = b.length;
if (this.arrConcat) {
a.push(b);
b = "";
}
return this;
};
this.insert = function (idx, s) {
if (this.arrConcat) {
b = a.join("");
}
a = [];
if (idx == 0) {
b = s + b;
} else {
var t = b.split("");
t.splice(idx, 0, s);
b = t.join("");
}
length = this.length = b.length;
if (this.arrConcat) {
a.push(b);
b = "";
}
return this;
};
this.append.apply(this, arguments);
};
 
/trunk/api/js/dojo/src/string/extras.js
New file
0,0 → 1,176
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.string.extras");
dojo.require("dojo.string.common");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.array");
dojo.string.substituteParams = function (template, hash) {
var map = (typeof hash == "object") ? hash : dojo.lang.toArray(arguments, 1);
return template.replace(/\%\{(\w+)\}/g, function (match, key) {
if (typeof (map[key]) != "undefined" && map[key] != null) {
return map[key];
}
dojo.raise("Substitution not found: " + key);
});
};
dojo.string.capitalize = function (str) {
if (!dojo.lang.isString(str)) {
return "";
}
if (arguments.length == 0) {
str = this;
}
var words = str.split(" ");
for (var i = 0; i < words.length; i++) {
words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
}
return words.join(" ");
};
dojo.string.isBlank = function (str) {
if (!dojo.lang.isString(str)) {
return true;
}
return (dojo.string.trim(str).length == 0);
};
dojo.string.encodeAscii = function (str) {
if (!dojo.lang.isString(str)) {
return str;
}
var ret = "";
var value = escape(str);
var match, re = /%u([0-9A-F]{4})/i;
while ((match = value.match(re))) {
var num = Number("0x" + match[1]);
var newVal = escape("&#" + num + ";");
ret += value.substring(0, match.index) + newVal;
value = value.substring(match.index + match[0].length);
}
ret += value.replace(/\+/g, "%2B");
return ret;
};
dojo.string.escape = function (type, str) {
var args = dojo.lang.toArray(arguments, 1);
switch (type.toLowerCase()) {
case "xml":
case "html":
case "xhtml":
return dojo.string.escapeXml.apply(this, args);
case "sql":
return dojo.string.escapeSql.apply(this, args);
case "regexp":
case "regex":
return dojo.string.escapeRegExp.apply(this, args);
case "javascript":
case "jscript":
case "js":
return dojo.string.escapeJavaScript.apply(this, args);
case "ascii":
return dojo.string.encodeAscii.apply(this, args);
default:
return str;
}
};
dojo.string.escapeXml = function (str, noSingleQuotes) {
str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
if (!noSingleQuotes) {
str = str.replace(/'/gm, "&#39;");
}
return str;
};
dojo.string.escapeSql = function (str) {
return str.replace(/'/gm, "''");
};
dojo.string.escapeRegExp = function (str) {
return str.replace(/\\/gm, "\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm, "\\$1");
};
dojo.string.escapeJavaScript = function (str) {
return str.replace(/(["'\f\b\n\t\r])/gm, "\\$1");
};
dojo.string.escapeString = function (str) {
return ("\"" + str.replace(/(["\\])/g, "\\$1") + "\"").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r");
};
dojo.string.summary = function (str, len) {
if (!len || str.length <= len) {
return str;
}
return str.substring(0, len).replace(/\.+$/, "") + "...";
};
dojo.string.endsWith = function (str, end, ignoreCase) {
if (ignoreCase) {
str = str.toLowerCase();
end = end.toLowerCase();
}
if ((str.length - end.length) < 0) {
return false;
}
return str.lastIndexOf(end) == str.length - end.length;
};
dojo.string.endsWithAny = function (str) {
for (var i = 1; i < arguments.length; i++) {
if (dojo.string.endsWith(str, arguments[i])) {
return true;
}
}
return false;
};
dojo.string.startsWith = function (str, start, ignoreCase) {
if (ignoreCase) {
str = str.toLowerCase();
start = start.toLowerCase();
}
return str.indexOf(start) == 0;
};
dojo.string.startsWithAny = function (str) {
for (var i = 1; i < arguments.length; i++) {
if (dojo.string.startsWith(str, arguments[i])) {
return true;
}
}
return false;
};
dojo.string.has = function (str) {
for (var i = 1; i < arguments.length; i++) {
if (str.indexOf(arguments[i]) > -1) {
return true;
}
}
return false;
};
dojo.string.normalizeNewlines = function (text, newlineChar) {
if (newlineChar == "\n") {
text = text.replace(/\r\n/g, "\n");
text = text.replace(/\r/g, "\n");
} else {
if (newlineChar == "\r") {
text = text.replace(/\r\n/g, "\r");
text = text.replace(/\n/g, "\r");
} else {
text = text.replace(/([^\r])\n/g, "$1\r\n").replace(/\r([^\n])/g, "\r\n$1");
}
}
return text;
};
dojo.string.splitEscaped = function (str, charac) {
var components = [];
for (var i = 0, prevcomma = 0; i < str.length; i++) {
if (str.charAt(i) == "\\") {
i++;
continue;
}
if (str.charAt(i) == charac) {
components.push(str.substring(prevcomma, i));
prevcomma = i + 1;
}
}
components.push(str.substr(prevcomma));
return components;
};
 
/trunk/api/js/dojo/src/string/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.string", "dojo.string.common", "dojo.string.extras", "dojo.string.Builder"]});
dojo.provide("dojo.string.*");
 
/trunk/api/js/dojo/src/string/common.js
New file
0,0 → 1,61
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.string.common");
dojo.string.trim = function (str, wh) {
if (!str.replace) {
return str;
}
if (!str.length) {
return str;
}
var re = (wh > 0) ? (/^\s+/) : (wh < 0) ? (/\s+$/) : (/^\s+|\s+$/g);
return str.replace(re, "");
};
dojo.string.trimStart = function (str) {
return dojo.string.trim(str, 1);
};
dojo.string.trimEnd = function (str) {
return dojo.string.trim(str, -1);
};
dojo.string.repeat = function (str, count, separator) {
var out = "";
for (var i = 0; i < count; i++) {
out += str;
if (separator && i < count - 1) {
out += separator;
}
}
return out;
};
dojo.string.pad = function (str, len, c, dir) {
var out = String(str);
if (!c) {
c = "0";
}
if (!dir) {
dir = 1;
}
while (out.length < len) {
if (dir > 0) {
out = c + out;
} else {
out += c;
}
}
return out;
};
dojo.string.padLeft = function (str, len, c) {
return dojo.string.pad(str, len, c, 1);
};
dojo.string.padRight = function (str, len, c) {
return dojo.string.pad(str, len, c, -1);
};
 
/trunk/api/js/dojo/src/uuid/TimeBasedGenerator.js
New file
0,0 → 1,243
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.TimeBasedGenerator");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.type");
dojo.require("dojo.lang.assert");
dojo.uuid.TimeBasedGenerator = new function () {
this.GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
var _uuidPseudoNodeString = null;
var _uuidClockSeqString = null;
var _dateValueOfPreviousUuid = null;
var _nextIntraMillisecondIncrement = 0;
var _cachedMillisecondsBetween1582and1970 = null;
var _cachedHundredNanosecondIntervalsPerMillisecond = null;
var _uniformNode = null;
var HEX_RADIX = 16;
function _carry(arrayA) {
arrayA[2] += arrayA[3] >>> 16;
arrayA[3] &= 65535;
arrayA[1] += arrayA[2] >>> 16;
arrayA[2] &= 65535;
arrayA[0] += arrayA[1] >>> 16;
arrayA[1] &= 65535;
dojo.lang.assert((arrayA[0] >>> 16) === 0);
}
function _get64bitArrayFromFloat(x) {
var result = new Array(0, 0, 0, 0);
result[3] = x % 65536;
x -= result[3];
x /= 65536;
result[2] = x % 65536;
x -= result[2];
x /= 65536;
result[1] = x % 65536;
x -= result[1];
x /= 65536;
result[0] = x;
return result;
}
function _addTwo64bitArrays(arrayA, arrayB) {
dojo.lang.assertType(arrayA, Array);
dojo.lang.assertType(arrayB, Array);
dojo.lang.assert(arrayA.length == 4);
dojo.lang.assert(arrayB.length == 4);
var result = new Array(0, 0, 0, 0);
result[3] = arrayA[3] + arrayB[3];
result[2] = arrayA[2] + arrayB[2];
result[1] = arrayA[1] + arrayB[1];
result[0] = arrayA[0] + arrayB[0];
_carry(result);
return result;
}
function _multiplyTwo64bitArrays(arrayA, arrayB) {
dojo.lang.assertType(arrayA, Array);
dojo.lang.assertType(arrayB, Array);
dojo.lang.assert(arrayA.length == 4);
dojo.lang.assert(arrayB.length == 4);
var overflow = false;
if (arrayA[0] * arrayB[0] !== 0) {
overflow = true;
}
if (arrayA[0] * arrayB[1] !== 0) {
overflow = true;
}
if (arrayA[0] * arrayB[2] !== 0) {
overflow = true;
}
if (arrayA[1] * arrayB[0] !== 0) {
overflow = true;
}
if (arrayA[1] * arrayB[1] !== 0) {
overflow = true;
}
if (arrayA[2] * arrayB[0] !== 0) {
overflow = true;
}
dojo.lang.assert(!overflow);
var result = new Array(0, 0, 0, 0);
result[0] += arrayA[0] * arrayB[3];
_carry(result);
result[0] += arrayA[1] * arrayB[2];
_carry(result);
result[0] += arrayA[2] * arrayB[1];
_carry(result);
result[0] += arrayA[3] * arrayB[0];
_carry(result);
result[1] += arrayA[1] * arrayB[3];
_carry(result);
result[1] += arrayA[2] * arrayB[2];
_carry(result);
result[1] += arrayA[3] * arrayB[1];
_carry(result);
result[2] += arrayA[2] * arrayB[3];
_carry(result);
result[2] += arrayA[3] * arrayB[2];
_carry(result);
result[3] += arrayA[3] * arrayB[3];
_carry(result);
return result;
}
function _padWithLeadingZeros(string, desiredLength) {
while (string.length < desiredLength) {
string = "0" + string;
}
return string;
}
function _generateRandomEightCharacterHexString() {
var random32bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 32));
var eightCharacterString = random32bitNumber.toString(HEX_RADIX);
while (eightCharacterString.length < 8) {
eightCharacterString = "0" + eightCharacterString;
}
return eightCharacterString;
}
function _generateUuidString(node) {
dojo.lang.assertType(node, String, {optional:true});
if (node) {
dojo.lang.assert(node.length == 12);
} else {
if (_uniformNode) {
node = _uniformNode;
} else {
if (!_uuidPseudoNodeString) {
var pseudoNodeIndicatorBit = 32768;
var random15bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 15));
var leftmost4HexCharacters = (pseudoNodeIndicatorBit | random15bitNumber).toString(HEX_RADIX);
_uuidPseudoNodeString = leftmost4HexCharacters + _generateRandomEightCharacterHexString();
}
node = _uuidPseudoNodeString;
}
}
if (!_uuidClockSeqString) {
var variantCodeForDCEUuids = 32768;
var random14bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 14));
_uuidClockSeqString = (variantCodeForDCEUuids | random14bitNumber).toString(HEX_RADIX);
}
var now = new Date();
var millisecondsSince1970 = now.valueOf();
var nowArray = _get64bitArrayFromFloat(millisecondsSince1970);
if (!_cachedMillisecondsBetween1582and1970) {
var arraySecondsPerHour = _get64bitArrayFromFloat(60 * 60);
var arrayHoursBetween1582and1970 = _get64bitArrayFromFloat(dojo.uuid.TimeBasedGenerator.GREGORIAN_CHANGE_OFFSET_IN_HOURS);
var arraySecondsBetween1582and1970 = _multiplyTwo64bitArrays(arrayHoursBetween1582and1970, arraySecondsPerHour);
var arrayMillisecondsPerSecond = _get64bitArrayFromFloat(1000);
_cachedMillisecondsBetween1582and1970 = _multiplyTwo64bitArrays(arraySecondsBetween1582and1970, arrayMillisecondsPerSecond);
_cachedHundredNanosecondIntervalsPerMillisecond = _get64bitArrayFromFloat(10000);
}
var arrayMillisecondsSince1970 = nowArray;
var arrayMillisecondsSince1582 = _addTwo64bitArrays(_cachedMillisecondsBetween1582and1970, arrayMillisecondsSince1970);
var arrayHundredNanosecondIntervalsSince1582 = _multiplyTwo64bitArrays(arrayMillisecondsSince1582, _cachedHundredNanosecondIntervalsPerMillisecond);
if (now.valueOf() == _dateValueOfPreviousUuid) {
arrayHundredNanosecondIntervalsSince1582[3] += _nextIntraMillisecondIncrement;
_carry(arrayHundredNanosecondIntervalsSince1582);
_nextIntraMillisecondIncrement += 1;
if (_nextIntraMillisecondIncrement == 10000) {
while (now.valueOf() == _dateValueOfPreviousUuid) {
now = new Date();
}
}
} else {
_dateValueOfPreviousUuid = now.valueOf();
_nextIntraMillisecondIncrement = 1;
}
var hexTimeLowLeftHalf = arrayHundredNanosecondIntervalsSince1582[2].toString(HEX_RADIX);
var hexTimeLowRightHalf = arrayHundredNanosecondIntervalsSince1582[3].toString(HEX_RADIX);
var hexTimeLow = _padWithLeadingZeros(hexTimeLowLeftHalf, 4) + _padWithLeadingZeros(hexTimeLowRightHalf, 4);
var hexTimeMid = arrayHundredNanosecondIntervalsSince1582[1].toString(HEX_RADIX);
hexTimeMid = _padWithLeadingZeros(hexTimeMid, 4);
var hexTimeHigh = arrayHundredNanosecondIntervalsSince1582[0].toString(HEX_RADIX);
hexTimeHigh = _padWithLeadingZeros(hexTimeHigh, 3);
var hyphen = "-";
var versionCodeForTimeBasedUuids = "1";
var resultUuid = hexTimeLow + hyphen + hexTimeMid + hyphen + versionCodeForTimeBasedUuids + hexTimeHigh + hyphen + _uuidClockSeqString + hyphen + node;
resultUuid = resultUuid.toLowerCase();
return resultUuid;
}
this.setNode = function (node) {
dojo.lang.assert((node === null) || (node.length == 12));
_uniformNode = node;
};
this.getNode = function () {
return _uniformNode;
};
this.generate = function (input) {
var nodeString = null;
var returnType = null;
if (input) {
if (dojo.lang.isObject(input) && !dojo.lang.isBuiltIn(input)) {
var namedParameters = input;
dojo.lang.assertValidKeywords(namedParameters, ["node", "hardwareNode", "pseudoNode", "returnType"]);
var node = namedParameters["node"];
var hardwareNode = namedParameters["hardwareNode"];
var pseudoNode = namedParameters["pseudoNode"];
nodeString = (node || pseudoNode || hardwareNode);
if (nodeString) {
var firstCharacter = nodeString.charAt(0);
var firstDigit = parseInt(firstCharacter, HEX_RADIX);
if (hardwareNode) {
dojo.lang.assert((firstDigit >= 0) && (firstDigit <= 7));
}
if (pseudoNode) {
dojo.lang.assert((firstDigit >= 8) && (firstDigit <= 15));
}
}
returnType = namedParameters["returnType"];
dojo.lang.assertType(returnType, Function, {optional:true});
} else {
if (dojo.lang.isString(input)) {
nodeString = input;
returnType = null;
} else {
if (dojo.lang.isFunction(input)) {
nodeString = null;
returnType = input;
}
}
}
if (nodeString) {
dojo.lang.assert(nodeString.length == 12);
var integer = parseInt(nodeString, HEX_RADIX);
dojo.lang.assert(isFinite(integer));
}
dojo.lang.assertType(returnType, Function, {optional:true});
}
var uuidString = _generateUuidString(nodeString);
var returnValue;
if (returnType && (returnType != String)) {
returnValue = new returnType(uuidString);
} else {
returnValue = uuidString;
}
return returnValue;
};
}();
 
/trunk/api/js/dojo/src/uuid/LightweightGenerator.js
New file
0,0 → 1,40
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.LightweightGenerator");
dojo.uuid.LightweightGenerator = new function () {
var HEX_RADIX = 16;
function _generateRandomEightCharacterHexString() {
var random32bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 32));
var eightCharacterHexString = random32bitNumber.toString(HEX_RADIX);
while (eightCharacterHexString.length < 8) {
eightCharacterHexString = "0" + eightCharacterHexString;
}
return eightCharacterHexString;
}
this.generate = function (returnType) {
var hyphen = "-";
var versionCodeForRandomlyGeneratedUuids = "4";
var variantCodeForDCEUuids = "8";
var a = _generateRandomEightCharacterHexString();
var b = _generateRandomEightCharacterHexString();
b = b.substring(0, 4) + hyphen + versionCodeForRandomlyGeneratedUuids + b.substring(5, 8);
var c = _generateRandomEightCharacterHexString();
c = variantCodeForDCEUuids + c.substring(1, 4) + hyphen + c.substring(4, 8);
var d = _generateRandomEightCharacterHexString();
var returnValue = a + hyphen + b + hyphen + c + d;
returnValue = returnValue.toLowerCase();
if (returnType && (returnType != String)) {
returnValue = new returnType(returnValue);
}
return returnValue;
};
}();
 
/trunk/api/js/dojo/src/uuid/NameBasedGenerator.js
New file
0,0 → 1,22
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.NameBasedGenerator");
dojo.uuid.NameBasedGenerator = new function () {
this.generate = function (returnType) {
dojo.unimplemented("dojo.uuid.NameBasedGenerator.generate");
var returnValue = "00000000-0000-0000-0000-000000000000";
if (returnType && (returnType != String)) {
returnValue = new returnType(returnValue);
}
return returnValue;
};
}();
 
/trunk/api/js/dojo/src/uuid/Uuid.js
New file
0,0 → 1,213
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.Uuid");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.assert");
dojo.uuid.Uuid = function (input) {
this._uuidString = dojo.uuid.Uuid.NIL_UUID;
if (input) {
if (dojo.lang.isString(input)) {
this._uuidString = input.toLowerCase();
dojo.lang.assert(this.isValid());
} else {
if (dojo.lang.isObject(input) && input.generate) {
var generator = input;
this._uuidString = generator.generate();
dojo.lang.assert(this.isValid());
} else {
dojo.lang.assert(false, "The dojo.uuid.Uuid() constructor must be initializated with a UUID string.");
}
}
} else {
var ourGenerator = dojo.uuid.Uuid.getGenerator();
if (ourGenerator) {
this._uuidString = ourGenerator.generate();
dojo.lang.assert(this.isValid());
}
}
};
dojo.uuid.Uuid.NIL_UUID = "00000000-0000-0000-0000-000000000000";
dojo.uuid.Uuid.Version = {UNKNOWN:0, TIME_BASED:1, DCE_SECURITY:2, NAME_BASED_MD5:3, RANDOM:4, NAME_BASED_SHA1:5};
dojo.uuid.Uuid.Variant = {NCS:"0", DCE:"10", MICROSOFT:"110", UNKNOWN:"111"};
dojo.uuid.Uuid.HEX_RADIX = 16;
dojo.uuid.Uuid.compare = function (uuidOne, uuidTwo) {
var uuidStringOne = uuidOne.toString();
var uuidStringTwo = uuidTwo.toString();
if (uuidStringOne > uuidStringTwo) {
return 1;
}
if (uuidStringOne < uuidStringTwo) {
return -1;
}
return 0;
};
dojo.uuid.Uuid.setGenerator = function (generator) {
dojo.lang.assert(!generator || (dojo.lang.isObject(generator) && generator.generate));
dojo.uuid.Uuid._ourGenerator = generator;
};
dojo.uuid.Uuid.getGenerator = function () {
return dojo.uuid.Uuid._ourGenerator;
};
dojo.uuid.Uuid.prototype.toString = function (format) {
if (format) {
switch (format) {
case "{}":
return "{" + this._uuidString + "}";
break;
case "()":
return "(" + this._uuidString + ")";
break;
case "\"\"":
return "\"" + this._uuidString + "\"";
break;
case "''":
return "'" + this._uuidString + "'";
break;
case "urn":
return "urn:uuid:" + this._uuidString;
break;
case "!-":
return this._uuidString.split("-").join("");
break;
default:
dojo.lang.assert(false, "The toString() method of dojo.uuid.Uuid was passed a bogus format.");
}
} else {
return this._uuidString;
}
};
dojo.uuid.Uuid.prototype.compare = function (otherUuid) {
return dojo.uuid.Uuid.compare(this, otherUuid);
};
dojo.uuid.Uuid.prototype.isEqual = function (otherUuid) {
return (this.compare(otherUuid) == 0);
};
dojo.uuid.Uuid.prototype.isValid = function () {
try {
dojo.lang.assertType(this._uuidString, String);
dojo.lang.assert(this._uuidString.length == 36);
dojo.lang.assert(this._uuidString == this._uuidString.toLowerCase());
var arrayOfParts = this._uuidString.split("-");
dojo.lang.assert(arrayOfParts.length == 5);
dojo.lang.assert(arrayOfParts[0].length == 8);
dojo.lang.assert(arrayOfParts[1].length == 4);
dojo.lang.assert(arrayOfParts[2].length == 4);
dojo.lang.assert(arrayOfParts[3].length == 4);
dojo.lang.assert(arrayOfParts[4].length == 12);
for (var i in arrayOfParts) {
var part = arrayOfParts[i];
var integer = parseInt(part, dojo.uuid.Uuid.HEX_RADIX);
dojo.lang.assert(isFinite(integer));
}
return true;
}
catch (e) {
return false;
}
};
dojo.uuid.Uuid.prototype.getVariant = function () {
var variantCharacter = this._uuidString.charAt(19);
var variantNumber = parseInt(variantCharacter, dojo.uuid.Uuid.HEX_RADIX);
dojo.lang.assert((variantNumber >= 0) && (variantNumber <= 16));
if (!dojo.uuid.Uuid._ourVariantLookupTable) {
var Variant = dojo.uuid.Uuid.Variant;
var lookupTable = [];
lookupTable[0] = Variant.NCS;
lookupTable[1] = Variant.NCS;
lookupTable[2] = Variant.NCS;
lookupTable[3] = Variant.NCS;
lookupTable[4] = Variant.NCS;
lookupTable[5] = Variant.NCS;
lookupTable[6] = Variant.NCS;
lookupTable[7] = Variant.NCS;
lookupTable[8] = Variant.DCE;
lookupTable[9] = Variant.DCE;
lookupTable[10] = Variant.DCE;
lookupTable[11] = Variant.DCE;
lookupTable[12] = Variant.MICROSOFT;
lookupTable[13] = Variant.MICROSOFT;
lookupTable[14] = Variant.UNKNOWN;
lookupTable[15] = Variant.UNKNOWN;
dojo.uuid.Uuid._ourVariantLookupTable = lookupTable;
}
return dojo.uuid.Uuid._ourVariantLookupTable[variantNumber];
};
dojo.uuid.Uuid.prototype.getVersion = function () {
if (!this._versionNumber) {
var errorMessage = "Called getVersion() on a dojo.uuid.Uuid that was not a DCE Variant UUID.";
dojo.lang.assert(this.getVariant() == dojo.uuid.Uuid.Variant.DCE, errorMessage);
var versionCharacter = this._uuidString.charAt(14);
this._versionNumber = parseInt(versionCharacter, dojo.uuid.Uuid.HEX_RADIX);
}
return this._versionNumber;
};
dojo.uuid.Uuid.prototype.getNode = function () {
if (!this._nodeString) {
var errorMessage = "Called getNode() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
var arrayOfStrings = this._uuidString.split("-");
this._nodeString = arrayOfStrings[4];
}
return this._nodeString;
};
dojo.uuid.Uuid.prototype.getTimestamp = function (returnType) {
var errorMessage = "Called getTimestamp() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
if (!returnType) {
returnType = null;
}
switch (returnType) {
case "string":
case String:
return this.getTimestamp(Date).toUTCString();
break;
case "hex":
if (!this._timestampAsHexString) {
var arrayOfStrings = this._uuidString.split("-");
var hexTimeLow = arrayOfStrings[0];
var hexTimeMid = arrayOfStrings[1];
var hexTimeHigh = arrayOfStrings[2];
hexTimeHigh = hexTimeHigh.slice(1);
this._timestampAsHexString = hexTimeHigh + hexTimeMid + hexTimeLow;
dojo.lang.assert(this._timestampAsHexString.length == 15);
}
return this._timestampAsHexString;
break;
case null:
case "date":
case Date:
if (!this._timestampAsDate) {
var GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
var arrayOfParts = this._uuidString.split("-");
var timeLow = parseInt(arrayOfParts[0], dojo.uuid.Uuid.HEX_RADIX);
var timeMid = parseInt(arrayOfParts[1], dojo.uuid.Uuid.HEX_RADIX);
var timeHigh = parseInt(arrayOfParts[2], dojo.uuid.Uuid.HEX_RADIX);
var hundredNanosecondIntervalsSince1582 = timeHigh & 4095;
hundredNanosecondIntervalsSince1582 <<= 16;
hundredNanosecondIntervalsSince1582 += timeMid;
hundredNanosecondIntervalsSince1582 *= 4294967296;
hundredNanosecondIntervalsSince1582 += timeLow;
var millisecondsSince1582 = hundredNanosecondIntervalsSince1582 / 10000;
var secondsPerHour = 60 * 60;
var hoursBetween1582and1970 = GREGORIAN_CHANGE_OFFSET_IN_HOURS;
var secondsBetween1582and1970 = hoursBetween1582and1970 * secondsPerHour;
var millisecondsBetween1582and1970 = secondsBetween1582and1970 * 1000;
var millisecondsSince1970 = millisecondsSince1582 - millisecondsBetween1582and1970;
this._timestampAsDate = new Date(millisecondsSince1970);
}
return this._timestampAsDate;
break;
default:
dojo.lang.assert(false, "The getTimestamp() method dojo.uuid.Uuid was passed a bogus returnType: " + returnType);
break;
}
};
 
/trunk/api/js/dojo/src/uuid/RandomGenerator.js
New file
0,0 → 1,22
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.RandomGenerator");
dojo.uuid.RandomGenerator = new function () {
this.generate = function (returnType) {
dojo.unimplemented("dojo.uuid.RandomGenerator.generate");
var returnValue = "00000000-0000-0000-0000-000000000000";
if (returnType && (returnType != String)) {
returnValue = new returnType(returnValue);
}
return returnValue;
};
}();
 
/trunk/api/js/dojo/src/uuid/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.uuid.Uuid", "dojo.uuid.LightweightGenerator", "dojo.uuid.RandomGenerator", "dojo.uuid.TimeBasedGenerator", "dojo.uuid.NameBasedGenerator", "dojo.uuid.NilGenerator"]});
dojo.provide("dojo.uuid.*");
 
/trunk/api/js/dojo/src/uuid/NilGenerator.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uuid.NilGenerator");
dojo.uuid.NilGenerator = new function () {
this.generate = function (returnType) {
var returnValue = "00000000-0000-0000-0000-000000000000";
if (returnType && (returnType != String)) {
returnValue = new returnType(returnValue);
}
return returnValue;
};
}();
 
/trunk/api/js/dojo/src/storage.js
New file
0,0 → 1,125
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.storage");
dojo.require("dojo.lang.*");
dojo.require("dojo.event.*");
dojo.storage = new function () {
};
dojo.declare("dojo.storage", null, {SUCCESS:"success", FAILED:"failed", PENDING:"pending", SIZE_NOT_AVAILABLE:"Size not available", SIZE_NO_LIMIT:"No size limit", namespace:"default", onHideSettingsUI:null, initialize:function () {
dojo.unimplemented("dojo.storage.initialize");
}, isAvailable:function () {
dojo.unimplemented("dojo.storage.isAvailable");
}, put:function (key, value, resultsHandler) {
dojo.unimplemented("dojo.storage.put");
}, get:function (key) {
dojo.unimplemented("dojo.storage.get");
}, hasKey:function (key) {
return (this.get(key) != null);
}, getKeys:function () {
dojo.unimplemented("dojo.storage.getKeys");
}, clear:function () {
dojo.unimplemented("dojo.storage.clear");
}, remove:function (key) {
dojo.unimplemented("dojo.storage.remove");
}, isPermanent:function () {
dojo.unimplemented("dojo.storage.isPermanent");
}, getMaximumSize:function () {
dojo.unimplemented("dojo.storage.getMaximumSize");
}, hasSettingsUI:function () {
return false;
}, showSettingsUI:function () {
dojo.unimplemented("dojo.storage.showSettingsUI");
}, hideSettingsUI:function () {
dojo.unimplemented("dojo.storage.hideSettingsUI");
}, getType:function () {
dojo.unimplemented("dojo.storage.getType");
}, isValidKey:function (keyName) {
if ((keyName == null) || (typeof keyName == "undefined")) {
return false;
}
return /^[0-9A-Za-z_]*$/.test(keyName);
}});
dojo.storage.manager = new function () {
this.currentProvider = null;
this.available = false;
this._initialized = false;
this._providers = [];
this.namespace = "default";
this.initialize = function () {
this.autodetect();
};
this.register = function (name, instance) {
this._providers[this._providers.length] = instance;
this._providers[name] = instance;
};
this.setProvider = function (storageClass) {
};
this.autodetect = function () {
if (this._initialized == true) {
return;
}
var providerToUse = null;
for (var i = 0; i < this._providers.length; i++) {
providerToUse = this._providers[i];
if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == false && providerToUse.getType() == djConfig["forceStorageProvider"]) {
providerToUse.isAvailable();
break;
} else {
if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == true && providerToUse.isAvailable()) {
break;
}
}
}
if (providerToUse == null) {
this._initialized = true;
this.available = false;
this.currentProvider = null;
dojo.raise("No storage provider found for this platform");
}
this.currentProvider = providerToUse;
for (var i in providerToUse) {
dojo.storage[i] = providerToUse[i];
}
dojo.storage.manager = this;
dojo.storage.initialize();
this._initialized = true;
this.available = true;
};
this.isAvailable = function () {
return this.available;
};
this.isInitialized = function () {
if (this.currentProvider.getType() == "dojo.storage.browser.FlashStorageProvider" && dojo.flash.ready == false) {
return false;
} else {
return this._initialized;
}
};
this.supportsProvider = function (storageClass) {
try {
var provider = eval("new " + storageClass + "()");
var results = provider.isAvailable();
if (results == null || typeof results == "undefined") {
return false;
}
return results;
}
catch (exception) {
return false;
}
};
this.getProvider = function () {
return this.currentProvider;
};
this.loaded = function () {
};
};
 
/trunk/api/js/dojo/src/hostenv_svg.js
New file
0,0 → 1,245
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
if (typeof window == "undefined") {
dojo.raise("attempt to use adobe svg hostenv when no window object");
}
dojo.debug = function () {
if (!djConfig.isDebug) {
return;
}
var args = arguments;
var isJUM = dj_global["jum"];
var s = isJUM ? "" : "DEBUG: ";
for (var i = 0; i < args.length; ++i) {
s += args[i];
}
if (isJUM) {
jum.debug(s);
} else {
dojo.hostenv.println(s);
}
};
dojo.render.name = navigator.appName;
dojo.render.ver = parseFloat(navigator.appVersion, 10);
switch (navigator.platform) {
case "MacOS":
dojo.render.os.osx = true;
break;
case "Linux":
dojo.render.os.linux = true;
break;
case "Windows":
dojo.render.os.win = true;
break;
default:
dojo.render.os.linux = true;
break;
}
dojo.render.svg.capable = true;
dojo.render.svg.support.builtin = true;
dojo.render.svg.moz = ((navigator.userAgent.indexOf("Gecko") >= 0) && (!((navigator.appVersion.indexOf("Konqueror") >= 0) || (navigator.appVersion.indexOf("Safari") >= 0))));
dojo.render.svg.adobe = (window.parseXML != null);
dojo.hostenv.startPackage("dojo.hostenv");
dojo.hostenv.println = function (s) {
try {
var ti = document.createElement("text");
ti.setAttribute("x", "50");
ti.setAttribute("y", (25 + 15 * document.getElementsByTagName("text").length));
ti.appendChild(document.createTextNode(s));
document.documentElement.appendChild(ti);
}
catch (e) {
}
};
dojo.hostenv.name_ = "svg";
dojo.hostenv.setModulePrefix = function (module, prefix) {
};
dojo.hostenv.getModulePrefix = function (module) {
};
dojo.hostenv.getTextStack = [];
dojo.hostenv.loadUriStack = [];
dojo.hostenv.loadedUris = [];
dojo.hostenv.modules_ = {};
dojo.hostenv.modulesLoadedFired = false;
dojo.hostenv.modulesLoadedListeners = [];
dojo.hostenv.getText = function (uri, cb, data) {
if (!cb) {
var cb = function (result) {
window.alert(result);
};
}
if (!data) {
window.getUrl(uri, cb);
} else {
window.postUrl(uri, data, cb);
}
};
dojo.hostenv.getLibaryScriptUri = function () {
};
dojo.hostenv.loadUri = function (uri) {
};
dojo.hostenv.loadUriAndCheck = function (uri, module) {
};
dojo.hostenv.loadModule = function (moduleName) {
var a = moduleName.split(".");
var currentObj = window;
var s = [];
for (var i = 0; i < a.length; i++) {
if (a[i] == "*") {
continue;
}
s.push(a[i]);
if (!currentObj[a[i]]) {
dojo.raise("dojo.require('" + moduleName + "'): module does not exist.");
} else {
currentObj = currentObj[a[i]];
}
}
return;
};
dojo.hostenv.startPackage = function (moduleName) {
var a = moduleName.split(".");
var currentObj = window;
var s = [];
for (var i = 0; i < a.length; i++) {
if (a[i] == "*") {
continue;
}
s.push(a[i]);
if (!currentObj[a[i]]) {
currentObj[a[i]] = {};
}
currentObj = currentObj[a[i]];
}
return;
};
if (window.parseXML) {
window.XMLSerialzer = function () {
function nodeToString(n, a) {
function fixText(s) {
return String(s).replace(/\&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;");
}
function fixAttribute(s) {
return fixText(s).replace(/\"/g, "&quot;");
}
switch (n.nodeType) {
case 1:
var name = n.nodeName;
a.push("<" + name);
for (var i = 0; i < n.attributes.length; i++) {
if (n.attributes.item(i).specified) {
a.push(" " + n.attributes.item(i).nodeName.toLowerCase() + "=\"" + fixAttribute(n.attributes.item(i).nodeValue) + "\"");
}
}
if (n.canHaveChildren || n.hasChildNodes()) {
a.push(">");
for (var i = 0; i < n.childNodes.length; i++) {
nodeToString(n.childNodes.item(i), a);
}
a.push("</" + name + ">\n");
} else {
a.push(" />\n");
}
break;
case 3:
a.push(fixText(n.nodeValue));
break;
case 4:
a.push("<![CDA" + "TA[\n" + n.nodeValue + "\n]" + "]>");
break;
case 7:
a.push(n.nodeValue);
if (/(^<\?xml)|(^<\!DOCTYPE)/.test(n.nodeValue)) {
a.push("\n");
}
break;
case 8:
a.push("<!-- " + n.nodeValue + " -->\n");
break;
case 9:
case 11:
for (var i = 0; i < n.childNodes.length; i++) {
nodeToString(n.childNodes.item(i), a);
}
break;
default:
a.push("<!--\nNot Supported:\n\n" + "nodeType: " + n.nodeType + "\nnodeName: " + n.nodeName + "\n-->");
}
}
this.serializeToString = function (node) {
var a = [];
nodeToString(node, a);
return a.join("");
};
};
window.DOMParser = function () {
this.parseFromString = function (s) {
return parseXML(s, window.document);
};
};
window.XMLHttpRequest = function () {
var uri = null;
var method = "POST";
var isAsync = true;
var cb = function (d) {
this.responseText = d.content;
try {
this.responseXML = parseXML(this.responseText, window.document);
}
catch (e) {
}
this.status = "200";
this.statusText = "OK";
if (!d.success) {
this.status = "500";
this.statusText = "Internal Server Error";
}
this.onload();
this.onreadystatechange();
};
this.onload = function () {
};
this.readyState = 4;
this.onreadystatechange = function () {
};
this.status = 0;
this.statusText = "";
this.responseBody = null;
this.responseStream = null;
this.responseXML = null;
this.responseText = null;
this.abort = function () {
return;
};
this.getAllResponseHeaders = function () {
return [];
};
this.getResponseHeader = function (n) {
return null;
};
this.setRequestHeader = function (nm, val) {
};
this.open = function (meth, url, async) {
method = meth;
uri = url;
};
this.send = function (data) {
var d = data || null;
if (method == "GET") {
getURL(uri, cb);
} else {
postURL(uri, data, cb);
}
};
};
}
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
/trunk/api/js/dojo/src/loader.js
New file
0,0 → 1,446
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
(function () {
var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) {
this.modulePrefixes_[module] = {name:module, value:prefix};
}, moduleHasPrefix:function (module) {
var mp = this.modulePrefixes_;
return Boolean(mp[module] && mp[module].value);
}, getModulePrefix:function (module) {
if (this.moduleHasPrefix(module)) {
return this.modulePrefixes_[module].value;
}
return module;
}, getTextStack:[], loadUriStack:[], loadedUris:[], post_load_:false, modulesLoadedListeners:[], unloadListeners:[], loadNotifying:false};
for (var param in _addHostEnv) {
dojo.hostenv[param] = _addHostEnv[param];
}
})();
dojo.hostenv.loadPath = function (relpath, module, cb) {
var uri;
if (relpath.charAt(0) == "/" || relpath.match(/^\w+:/)) {
uri = relpath;
} else {
uri = this.getBaseScriptUri() + relpath;
}
if (djConfig.cacheBust && dojo.render.html.capable) {
uri += "?" + String(djConfig.cacheBust).replace(/\W+/g, "");
}
try {
return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb);
}
catch (e) {
dojo.debug(e);
return false;
}
};
dojo.hostenv.loadUri = function (uri, cb) {
if (this.loadedUris[uri]) {
return true;
}
var contents = this.getText(uri, null, true);
if (!contents) {
return false;
}
this.loadedUris[uri] = true;
if (cb) {
contents = "(" + contents + ")";
}
var value = dj_eval(contents);
if (cb) {
cb(value);
}
return true;
};
dojo.hostenv.loadUriAndCheck = function (uri, moduleName, cb) {
var ok = true;
try {
ok = this.loadUri(uri, cb);
}
catch (e) {
dojo.debug("failed loading ", uri, " with error: ", e);
}
return Boolean(ok && this.findModule(moduleName, false));
};
dojo.loaded = function () {
};
dojo.unloaded = function () {
};
dojo.hostenv.loaded = function () {
this.loadNotifying = true;
this.post_load_ = true;
var mll = this.modulesLoadedListeners;
for (var x = 0; x < mll.length; x++) {
mll[x]();
}
this.modulesLoadedListeners = [];
this.loadNotifying = false;
dojo.loaded();
};
dojo.hostenv.unloaded = function () {
var mll = this.unloadListeners;
while (mll.length) {
(mll.pop())();
}
dojo.unloaded();
};
dojo.addOnLoad = function (obj, functionName) {
var dh = dojo.hostenv;
if (arguments.length == 1) {
dh.modulesLoadedListeners.push(obj);
} else {
if (arguments.length > 1) {
dh.modulesLoadedListeners.push(function () {
obj[functionName]();
});
}
}
if (dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying) {
dh.callLoaded();
}
};
dojo.addOnUnload = function (obj, functionName) {
var dh = dojo.hostenv;
if (arguments.length == 1) {
dh.unloadListeners.push(obj);
} else {
if (arguments.length > 1) {
dh.unloadListeners.push(function () {
obj[functionName]();
});
}
}
};
dojo.hostenv.modulesLoaded = function () {
if (this.post_load_) {
return;
}
if (this.loadUriStack.length == 0 && this.getTextStack.length == 0) {
if (this.inFlightCount > 0) {
dojo.debug("files still in flight!");
return;
}
dojo.hostenv.callLoaded();
}
};
dojo.hostenv.callLoaded = function () {
if (typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)) {
setTimeout("dojo.hostenv.loaded();", 0);
} else {
dojo.hostenv.loaded();
}
};
dojo.hostenv.getModuleSymbols = function (modulename) {
var syms = modulename.split(".");
for (var i = syms.length; i > 0; i--) {
var parentModule = syms.slice(0, i).join(".");
if ((i == 1) && !this.moduleHasPrefix(parentModule)) {
syms[0] = "../" + syms[0];
} else {
var parentModulePath = this.getModulePrefix(parentModule);
if (parentModulePath != parentModule) {
syms.splice(0, i, parentModulePath);
break;
}
}
}
return syms;
};
dojo.hostenv._global_omit_module_check = false;
dojo.hostenv.loadModule = function (moduleName, exactOnly, omitModuleCheck) {
if (!moduleName) {
return;
}
omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
var module = this.findModule(moduleName, false);
if (module) {
return module;
}
if (dj_undef(moduleName, this.loading_modules_)) {
this.addedToLoadingCount.push(moduleName);
}
this.loading_modules_[moduleName] = 1;
var relpath = moduleName.replace(/\./g, "/") + ".js";
var nsyms = moduleName.split(".");
var syms = this.getModuleSymbols(moduleName);
var startedRelative = ((syms[0].charAt(0) != "/") && !syms[0].match(/^\w+:/));
var last = syms[syms.length - 1];
var ok;
if (last == "*") {
moduleName = nsyms.slice(0, -1).join(".");
while (syms.length) {
syms.pop();
syms.push(this.pkgFileName);
relpath = syms.join("/") + ".js";
if (startedRelative && relpath.charAt(0) == "/") {
relpath = relpath.slice(1);
}
ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
if (ok) {
break;
}
syms.pop();
}
} else {
relpath = syms.join("/") + ".js";
moduleName = nsyms.join(".");
var modArg = !omitModuleCheck ? moduleName : null;
ok = this.loadPath(relpath, modArg);
if (!ok && !exactOnly) {
syms.pop();
while (syms.length) {
relpath = syms.join("/") + ".js";
ok = this.loadPath(relpath, modArg);
if (ok) {
break;
}
syms.pop();
relpath = syms.join("/") + "/" + this.pkgFileName + ".js";
if (startedRelative && relpath.charAt(0) == "/") {
relpath = relpath.slice(1);
}
ok = this.loadPath(relpath, modArg);
if (ok) {
break;
}
}
}
if (!ok && !omitModuleCheck) {
dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
}
}
if (!omitModuleCheck && !this["isXDomain"]) {
module = this.findModule(moduleName, false);
if (!module) {
dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
}
}
return module;
};
dojo.hostenv.startPackage = function (packageName) {
var fullPkgName = String(packageName);
var strippedPkgName = fullPkgName;
var syms = packageName.split(/\./);
if (syms[syms.length - 1] == "*") {
syms.pop();
strippedPkgName = syms.join(".");
}
var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
this.loaded_modules_[fullPkgName] = evaledPkg;
this.loaded_modules_[strippedPkgName] = evaledPkg;
return evaledPkg;
};
dojo.hostenv.findModule = function (moduleName, mustExist) {
var lmn = String(moduleName);
if (this.loaded_modules_[lmn]) {
return this.loaded_modules_[lmn];
}
if (mustExist) {
dojo.raise("no loaded module named '" + moduleName + "'");
}
return null;
};
dojo.kwCompoundRequire = function (modMap) {
var common = modMap["common"] || [];
var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
for (var x = 0; x < result.length; x++) {
var curr = result[x];
if (curr.constructor == Array) {
dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
} else {
dojo.hostenv.loadModule(curr);
}
}
};
dojo.require = function (resourceName) {
dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
};
dojo.requireIf = function (condition, resourceName) {
var arg0 = arguments[0];
if ((arg0 === true) || (arg0 == "common") || (arg0 && dojo.render[arg0].capable)) {
var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
dojo.require.apply(dojo, args);
}
};
dojo.requireAfterIf = dojo.requireIf;
dojo.provide = function (resourceName) {
return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
};
dojo.registerModulePath = function (module, prefix) {
return dojo.hostenv.setModulePrefix(module, prefix);
};
if (djConfig["modulePaths"]) {
for (var param in djConfig["modulePaths"]) {
dojo.registerModulePath(param, djConfig["modulePaths"][param]);
}
}
dojo.setModulePrefix = function (module, prefix) {
dojo.deprecated("dojo.setModulePrefix(\"" + module + "\", \"" + prefix + "\")", "replaced by dojo.registerModulePath", "0.5");
return dojo.registerModulePath(module, prefix);
};
dojo.exists = function (obj, name) {
var p = name.split(".");
for (var i = 0; i < p.length; i++) {
if (!obj[p[i]]) {
return false;
}
obj = obj[p[i]];
}
return true;
};
dojo.hostenv.normalizeLocale = function (locale) {
var result = locale ? locale.toLowerCase() : dojo.locale;
if (result == "root") {
result = "ROOT";
}
return result;
};
dojo.hostenv.searchLocalePath = function (locale, down, searchFunc) {
locale = dojo.hostenv.normalizeLocale(locale);
var elements = locale.split("-");
var searchlist = [];
for (var i = elements.length; i > 0; i--) {
searchlist.push(elements.slice(0, i).join("-"));
}
searchlist.push(false);
if (down) {
searchlist.reverse();
}
for (var j = searchlist.length - 1; j >= 0; j--) {
var loc = searchlist[j] || "ROOT";
var stop = searchFunc(loc);
if (stop) {
break;
}
}
};
dojo.hostenv.localesGenerated;
dojo.hostenv.registerNlsPrefix = function () {
dojo.registerModulePath("nls", "nls");
};
dojo.hostenv.preloadLocalizations = function () {
if (dojo.hostenv.localesGenerated) {
dojo.hostenv.registerNlsPrefix();
function preload(locale) {
locale = dojo.hostenv.normalizeLocale(locale);
dojo.hostenv.searchLocalePath(locale, true, function (loc) {
for (var i = 0; i < dojo.hostenv.localesGenerated.length; i++) {
if (dojo.hostenv.localesGenerated[i] == loc) {
dojo["require"]("nls.dojo_" + loc);
return true;
}
}
return false;
});
}
preload();
var extra = djConfig.extraLocale || [];
for (var i = 0; i < extra.length; i++) {
preload(extra[i]);
}
}
dojo.hostenv.preloadLocalizations = function () {
};
};
dojo.requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
dojo.hostenv.preloadLocalizations();
var targetLocale = dojo.hostenv.normalizeLocale(locale);
var bundlePackage = [moduleName, "nls", bundleName].join(".");
var bestLocale = "";
if (availableFlatLocales) {
var flatLocales = availableFlatLocales.split(",");
for (var i = 0; i < flatLocales.length; i++) {
if (targetLocale.indexOf(flatLocales[i]) == 0) {
if (flatLocales[i].length > bestLocale.length) {
bestLocale = flatLocales[i];
}
}
}
if (!bestLocale) {
bestLocale = "ROOT";
}
}
var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
var bundle = dojo.hostenv.findModule(bundlePackage);
var localizedBundle = null;
if (bundle) {
if (djConfig.localizationComplete && bundle._built) {
return;
}
var jsLoc = tempLocale.replace("-", "_");
var translationPackage = bundlePackage + "." + jsLoc;
localizedBundle = dojo.hostenv.findModule(translationPackage);
}
if (!localizedBundle) {
bundle = dojo.hostenv.startPackage(bundlePackage);
var syms = dojo.hostenv.getModuleSymbols(moduleName);
var modpath = syms.concat("nls").join("/");
var parent;
dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
var jsLoc = loc.replace("-", "_");
var translationPackage = bundlePackage + "." + jsLoc;
var loaded = false;
if (!dojo.hostenv.findModule(translationPackage)) {
dojo.hostenv.startPackage(translationPackage);
var module = [modpath];
if (loc != "ROOT") {
module.push(loc);
}
module.push(bundleName);
var filespec = module.join("/") + ".js";
loaded = dojo.hostenv.loadPath(filespec, null, function (hash) {
var clazz = function () {
};
clazz.prototype = parent;
bundle[jsLoc] = new clazz();
for (var j in hash) {
bundle[jsLoc][j] = hash[j];
}
});
} else {
loaded = true;
}
if (loaded && bundle[jsLoc]) {
parent = bundle[jsLoc];
} else {
bundle[jsLoc] = parent;
}
if (availableFlatLocales) {
return true;
}
});
}
if (availableFlatLocales && targetLocale != bestLocale) {
bundle[targetLocale.replace("-", "_")] = bundle[bestLocale.replace("-", "_")];
}
};
(function () {
var extra = djConfig.extraLocale;
if (extra) {
if (!extra instanceof Array) {
extra = [extra];
}
var req = dojo.requireLocalization;
dojo.requireLocalization = function (m, b, locale, availableFlatLocales) {
req(m, b, locale, availableFlatLocales);
if (locale) {
return;
}
for (var i = 0; i < extra.length; i++) {
req(m, b, extra[i], availableFlatLocales);
}
};
}
})();
 
/trunk/api/js/dojo/src/event/browser.js
New file
0,0 → 1,489
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.event.browser");
dojo.require("dojo.event.common");
dojo._ie_clobber = new function () {
this.clobberNodes = [];
function nukeProp(node, prop) {
try {
node[prop] = null;
}
catch (e) {
}
try {
delete node[prop];
}
catch (e) {
}
try {
node.removeAttribute(prop);
}
catch (e) {
}
}
this.clobber = function (nodeRef) {
var na;
var tna;
if (nodeRef) {
tna = nodeRef.all || nodeRef.getElementsByTagName("*");
na = [nodeRef];
for (var x = 0; x < tna.length; x++) {
if (tna[x]["__doClobber__"]) {
na.push(tna[x]);
}
}
} else {
try {
window.onload = null;
}
catch (e) {
}
na = (this.clobberNodes.length) ? this.clobberNodes : document.all;
}
tna = null;
var basis = {};
for (var i = na.length - 1; i >= 0; i = i - 1) {
var el = na[i];
try {
if (el && el["__clobberAttrs__"]) {
for (var j = 0; j < el.__clobberAttrs__.length; j++) {
nukeProp(el, el.__clobberAttrs__[j]);
}
nukeProp(el, "__clobberAttrs__");
nukeProp(el, "__doClobber__");
}
}
catch (e) {
}
}
na = null;
};
};
if (dojo.render.html.ie) {
dojo.addOnUnload(function () {
dojo._ie_clobber.clobber();
try {
if ((dojo["widget"]) && (dojo.widget["manager"])) {
dojo.widget.manager.destroyAll();
}
}
catch (e) {
}
if (dojo.widget) {
for (var name in dojo.widget._templateCache) {
if (dojo.widget._templateCache[name].node) {
dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
dojo.widget._templateCache[name].node = null;
delete dojo.widget._templateCache[name].node;
}
}
}
try {
window.onload = null;
}
catch (e) {
}
try {
window.onunload = null;
}
catch (e) {
}
dojo._ie_clobber.clobberNodes = [];
});
}
dojo.event.browser = new function () {
var clobberIdx = 0;
this.normalizedEventName = function (eventName) {
switch (eventName) {
case "CheckboxStateChange":
case "DOMAttrModified":
case "DOMMenuItemActive":
case "DOMMenuItemInactive":
case "DOMMouseScroll":
case "DOMNodeInserted":
case "DOMNodeRemoved":
case "RadioStateChange":
return eventName;
break;
default:
var lcn = eventName.toLowerCase();
return (lcn.indexOf("on") == 0) ? lcn.substr(2) : lcn;
break;
}
};
this.clean = function (node) {
if (dojo.render.html.ie) {
dojo._ie_clobber.clobber(node);
}
};
this.addClobberNode = function (node) {
if (!dojo.render.html.ie) {
return;
}
if (!node["__doClobber__"]) {
node.__doClobber__ = true;
dojo._ie_clobber.clobberNodes.push(node);
node.__clobberAttrs__ = [];
}
};
this.addClobberNodeAttrs = function (node, props) {
if (!dojo.render.html.ie) {
return;
}
this.addClobberNode(node);
for (var x = 0; x < props.length; x++) {
node.__clobberAttrs__.push(props[x]);
}
};
this.removeListener = function (node, evtName, fp, capture) {
if (!capture) {
var capture = false;
}
evtName = dojo.event.browser.normalizedEventName(evtName);
if (evtName == "key") {
if (dojo.render.html.ie) {
this.removeListener(node, "onkeydown", fp, capture);
}
evtName = "keypress";
}
if (node.removeEventListener) {
node.removeEventListener(evtName, fp, capture);
}
};
this.addListener = function (node, evtName, fp, capture, dontFix) {
if (!node) {
return;
}
if (!capture) {
var capture = false;
}
evtName = dojo.event.browser.normalizedEventName(evtName);
if (evtName == "key") {
if (dojo.render.html.ie) {
this.addListener(node, "onkeydown", fp, capture, dontFix);
}
evtName = "keypress";
}
if (!dontFix) {
var newfp = function (evt) {
if (!evt) {
evt = window.event;
}
var ret = fp(dojo.event.browser.fixEvent(evt, this));
if (capture) {
dojo.event.browser.stopEvent(evt);
}
return ret;
};
} else {
newfp = fp;
}
if (node.addEventListener) {
node.addEventListener(evtName, newfp, capture);
return newfp;
} else {
evtName = "on" + evtName;
if (typeof node[evtName] == "function") {
var oldEvt = node[evtName];
node[evtName] = function (e) {
oldEvt(e);
return newfp(e);
};
} else {
node[evtName] = newfp;
}
if (dojo.render.html.ie) {
this.addClobberNodeAttrs(node, [evtName]);
}
return newfp;
}
};
this.isEvent = function (obj) {
return (typeof obj != "undefined") && (obj) && (typeof Event != "undefined") && (obj.eventPhase);
};
this.currentEvent = null;
this.callListener = function (listener, curTarget) {
if (typeof listener != "function") {
dojo.raise("listener not a function: " + listener);
}
dojo.event.browser.currentEvent.currentTarget = curTarget;
return listener.call(curTarget, dojo.event.browser.currentEvent);
};
this._stopPropagation = function () {
dojo.event.browser.currentEvent.cancelBubble = true;
};
this._preventDefault = function () {
dojo.event.browser.currentEvent.returnValue = false;
};
this.keys = {KEY_BACKSPACE:8, KEY_TAB:9, KEY_CLEAR:12, KEY_ENTER:13, KEY_SHIFT:16, KEY_CTRL:17, KEY_ALT:18, KEY_PAUSE:19, KEY_CAPS_LOCK:20, KEY_ESCAPE:27, KEY_SPACE:32, KEY_PAGE_UP:33, KEY_PAGE_DOWN:34, KEY_END:35, KEY_HOME:36, KEY_LEFT_ARROW:37, KEY_UP_ARROW:38, KEY_RIGHT_ARROW:39, KEY_DOWN_ARROW:40, KEY_INSERT:45, KEY_DELETE:46, KEY_HELP:47, KEY_LEFT_WINDOW:91, KEY_RIGHT_WINDOW:92, KEY_SELECT:93, KEY_NUMPAD_0:96, KEY_NUMPAD_1:97, KEY_NUMPAD_2:98, KEY_NUMPAD_3:99, KEY_NUMPAD_4:100, KEY_NUMPAD_5:101, KEY_NUMPAD_6:102, KEY_NUMPAD_7:103, KEY_NUMPAD_8:104, KEY_NUMPAD_9:105, KEY_NUMPAD_MULTIPLY:106, KEY_NUMPAD_PLUS:107, KEY_NUMPAD_ENTER:108, KEY_NUMPAD_MINUS:109, KEY_NUMPAD_PERIOD:110, KEY_NUMPAD_DIVIDE:111, KEY_F1:112, KEY_F2:113, KEY_F3:114, KEY_F4:115, KEY_F5:116, KEY_F6:117, KEY_F7:118, KEY_F8:119, KEY_F9:120, KEY_F10:121, KEY_F11:122, KEY_F12:123, KEY_F13:124, KEY_F14:125, KEY_F15:126, KEY_NUM_LOCK:144, KEY_SCROLL_LOCK:145};
this.revKeys = [];
for (var key in this.keys) {
this.revKeys[this.keys[key]] = key;
}
this.fixEvent = function (evt, sender) {
if (!evt) {
if (window["event"]) {
evt = window.event;
}
}
if ((evt["type"]) && (evt["type"].indexOf("key") == 0)) {
evt.keys = this.revKeys;
for (var key in this.keys) {
evt[key] = this.keys[key];
}
if (evt["type"] == "keydown" && dojo.render.html.ie) {
switch (evt.keyCode) {
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_LEFT_WINDOW:
case evt.KEY_RIGHT_WINDOW:
case evt.KEY_SELECT:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
case evt.KEY_NUMPAD_0:
case evt.KEY_NUMPAD_1:
case evt.KEY_NUMPAD_2:
case evt.KEY_NUMPAD_3:
case evt.KEY_NUMPAD_4:
case evt.KEY_NUMPAD_5:
case evt.KEY_NUMPAD_6:
case evt.KEY_NUMPAD_7:
case evt.KEY_NUMPAD_8:
case evt.KEY_NUMPAD_9:
case evt.KEY_NUMPAD_PERIOD:
break;
case evt.KEY_NUMPAD_MULTIPLY:
case evt.KEY_NUMPAD_PLUS:
case evt.KEY_NUMPAD_ENTER:
case evt.KEY_NUMPAD_MINUS:
case evt.KEY_NUMPAD_DIVIDE:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
case evt.KEY_PAGE_UP:
case evt.KEY_PAGE_DOWN:
case evt.KEY_END:
case evt.KEY_HOME:
case evt.KEY_LEFT_ARROW:
case evt.KEY_UP_ARROW:
case evt.KEY_RIGHT_ARROW:
case evt.KEY_DOWN_ARROW:
case evt.KEY_INSERT:
case evt.KEY_DELETE:
case evt.KEY_F1:
case evt.KEY_F2:
case evt.KEY_F3:
case evt.KEY_F4:
case evt.KEY_F5:
case evt.KEY_F6:
case evt.KEY_F7:
case evt.KEY_F8:
case evt.KEY_F9:
case evt.KEY_F10:
case evt.KEY_F11:
case evt.KEY_F12:
case evt.KEY_F12:
case evt.KEY_F13:
case evt.KEY_F14:
case evt.KEY_F15:
case evt.KEY_CLEAR:
case evt.KEY_HELP:
evt.key = evt.keyCode;
break;
default:
if (evt.ctrlKey || evt.altKey) {
var unifiedCharCode = evt.keyCode;
if (unifiedCharCode >= 65 && unifiedCharCode <= 90 && evt.shiftKey == false) {
unifiedCharCode += 32;
}
if (unifiedCharCode >= 1 && unifiedCharCode <= 26 && evt.ctrlKey) {
unifiedCharCode += 96;
}
evt.key = String.fromCharCode(unifiedCharCode);
}
}
} else {
if (evt["type"] == "keypress") {
if (dojo.render.html.opera) {
if (evt.which == 0) {
evt.key = evt.keyCode;
} else {
if (evt.which > 0) {
switch (evt.which) {
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
evt.key = evt.which;
break;
default:
var unifiedCharCode = evt.which;
if ((evt.ctrlKey || evt.altKey || evt.metaKey) && (evt.which >= 65 && evt.which <= 90 && evt.shiftKey == false)) {
unifiedCharCode += 32;
}
evt.key = String.fromCharCode(unifiedCharCode);
}
}
}
} else {
if (dojo.render.html.ie) {
if (!evt.ctrlKey && !evt.altKey && evt.keyCode >= evt.KEY_SPACE) {
evt.key = String.fromCharCode(evt.keyCode);
}
} else {
if (dojo.render.html.safari) {
switch (evt.keyCode) {
case 25:
evt.key = evt.KEY_TAB;
evt.shift = true;
break;
case 63232:
evt.key = evt.KEY_UP_ARROW;
break;
case 63233:
evt.key = evt.KEY_DOWN_ARROW;
break;
case 63234:
evt.key = evt.KEY_LEFT_ARROW;
break;
case 63235:
evt.key = evt.KEY_RIGHT_ARROW;
break;
case 63236:
evt.key = evt.KEY_F1;
break;
case 63237:
evt.key = evt.KEY_F2;
break;
case 63238:
evt.key = evt.KEY_F3;
break;
case 63239:
evt.key = evt.KEY_F4;
break;
case 63240:
evt.key = evt.KEY_F5;
break;
case 63241:
evt.key = evt.KEY_F6;
break;
case 63242:
evt.key = evt.KEY_F7;
break;
case 63243:
evt.key = evt.KEY_F8;
break;
case 63244:
evt.key = evt.KEY_F9;
break;
case 63245:
evt.key = evt.KEY_F10;
break;
case 63246:
evt.key = evt.KEY_F11;
break;
case 63247:
evt.key = evt.KEY_F12;
break;
case 63250:
evt.key = evt.KEY_PAUSE;
break;
case 63272:
evt.key = evt.KEY_DELETE;
break;
case 63273:
evt.key = evt.KEY_HOME;
break;
case 63275:
evt.key = evt.KEY_END;
break;
case 63276:
evt.key = evt.KEY_PAGE_UP;
break;
case 63277:
evt.key = evt.KEY_PAGE_DOWN;
break;
case 63302:
evt.key = evt.KEY_INSERT;
break;
case 63248:
case 63249:
case 63289:
break;
default:
evt.key = evt.charCode >= evt.KEY_SPACE ? String.fromCharCode(evt.charCode) : evt.keyCode;
}
} else {
evt.key = evt.charCode > 0 ? String.fromCharCode(evt.charCode) : evt.keyCode;
}
}
}
}
}
}
if (dojo.render.html.ie) {
if (!evt.target) {
evt.target = evt.srcElement;
}
if (!evt.currentTarget) {
evt.currentTarget = (sender ? sender : evt.srcElement);
}
if (!evt.layerX) {
evt.layerX = evt.offsetX;
}
if (!evt.layerY) {
evt.layerY = evt.offsetY;
}
var doc = (evt.srcElement && evt.srcElement.ownerDocument) ? evt.srcElement.ownerDocument : document;
var docBody = ((dojo.render.html.ie55) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
if (!evt.pageX) {
evt.pageX = evt.clientX + (docBody.scrollLeft || 0);
}
if (!evt.pageY) {
evt.pageY = evt.clientY + (docBody.scrollTop || 0);
}
if (evt.type == "mouseover") {
evt.relatedTarget = evt.fromElement;
}
if (evt.type == "mouseout") {
evt.relatedTarget = evt.toElement;
}
this.currentEvent = evt;
evt.callListener = this.callListener;
evt.stopPropagation = this._stopPropagation;
evt.preventDefault = this._preventDefault;
}
return evt;
};
this.stopEvent = function (evt) {
if (window.event) {
evt.cancelBubble = true;
evt.returnValue = false;
} else {
evt.preventDefault();
evt.stopPropagation();
}
};
};
 
/trunk/api/js/dojo/src/event/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.event.common", "dojo.event.topic"], browser:["dojo.event.browser"], dashboard:["dojo.event.browser"]});
dojo.provide("dojo.event.*");
 
/trunk/api/js/dojo/src/event/common.js
New file
0,0 → 1,551
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.event.common");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.extras");
dojo.require("dojo.lang.func");
dojo.event = new function () {
this._canTimeout = dojo.lang.isFunction(dj_global["setTimeout"]) || dojo.lang.isAlien(dj_global["setTimeout"]);
function interpolateArgs(args, searchForNames) {
var dl = dojo.lang;
var ao = {srcObj:dj_global, srcFunc:null, adviceObj:dj_global, adviceFunc:null, aroundObj:null, aroundFunc:null, adviceType:(args.length > 2) ? args[0] : "after", precedence:"last", once:false, delay:null, rate:0, adviceMsg:false, maxCalls:-1};
switch (args.length) {
case 0:
return;
case 1:
return;
case 2:
ao.srcFunc = args[0];
ao.adviceFunc = args[1];
break;
case 3:
if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isString(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
} else {
if ((dl.isString(args[1])) && (dl.isString(args[2]))) {
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
} else {
if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isFunction(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
var tmpName = dl.nameAnonFunc(args[2], ao.adviceObj, searchForNames);
ao.adviceFunc = tmpName;
} else {
if ((dl.isFunction(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2]))) {
ao.adviceType = "after";
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[0], ao.srcObj, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[1];
ao.adviceFunc = args[2];
}
}
}
}
break;
case 4:
if ((dl.isObject(args[0])) && (dl.isObject(args[2]))) {
ao.adviceType = "after";
ao.srcObj = args[0];
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isString(args[1])) && (dl.isObject(args[2]))) {
ao.adviceType = args[0];
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isFunction(args[1])) && (dl.isObject(args[2]))) {
ao.adviceType = args[0];
ao.srcObj = dj_global;
var tmpName = dl.nameAnonFunc(args[1], dj_global, searchForNames);
ao.srcFunc = tmpName;
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
if ((dl.isString(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2])) && (dl.isFunction(args[3]))) {
ao.srcObj = args[1];
ao.srcFunc = args[2];
var tmpName = dl.nameAnonFunc(args[3], dj_global, searchForNames);
ao.adviceObj = dj_global;
ao.adviceFunc = tmpName;
} else {
if (dl.isObject(args[1])) {
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = dj_global;
ao.adviceFunc = args[3];
} else {
if (dl.isObject(args[2])) {
ao.srcObj = dj_global;
ao.srcFunc = args[1];
ao.adviceObj = args[2];
ao.adviceFunc = args[3];
} else {
ao.srcObj = ao.adviceObj = ao.aroundObj = dj_global;
ao.srcFunc = args[1];
ao.adviceFunc = args[2];
ao.aroundFunc = args[3];
}
}
}
}
}
}
break;
case 6:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3];
ao.adviceFunc = args[4];
ao.aroundFunc = args[5];
ao.aroundObj = dj_global;
break;
default:
ao.srcObj = args[1];
ao.srcFunc = args[2];
ao.adviceObj = args[3];
ao.adviceFunc = args[4];
ao.aroundObj = args[5];
ao.aroundFunc = args[6];
ao.once = args[7];
ao.delay = args[8];
ao.rate = args[9];
ao.adviceMsg = args[10];
ao.maxCalls = (!isNaN(parseInt(args[11]))) ? args[11] : -1;
break;
}
if (dl.isFunction(ao.aroundFunc)) {
var tmpName = dl.nameAnonFunc(ao.aroundFunc, ao.aroundObj, searchForNames);
ao.aroundFunc = tmpName;
}
if (dl.isFunction(ao.srcFunc)) {
ao.srcFunc = dl.getNameInObj(ao.srcObj, ao.srcFunc);
}
if (dl.isFunction(ao.adviceFunc)) {
ao.adviceFunc = dl.getNameInObj(ao.adviceObj, ao.adviceFunc);
}
if ((ao.aroundObj) && (dl.isFunction(ao.aroundFunc))) {
ao.aroundFunc = dl.getNameInObj(ao.aroundObj, ao.aroundFunc);
}
if (!ao.srcObj) {
dojo.raise("bad srcObj for srcFunc: " + ao.srcFunc);
}
if (!ao.adviceObj) {
dojo.raise("bad adviceObj for adviceFunc: " + ao.adviceFunc);
}
if (!ao.adviceFunc) {
dojo.debug("bad adviceFunc for srcFunc: " + ao.srcFunc);
dojo.debugShallow(ao);
}
return ao;
}
this.connect = function () {
if (arguments.length == 1) {
var ao = arguments[0];
} else {
var ao = interpolateArgs(arguments, true);
}
if (dojo.lang.isArray(ao.srcObj) && ao.srcObj != "") {
var tmpAO = {};
for (var x in ao) {
tmpAO[x] = ao[x];
}
var mjps = [];
dojo.lang.forEach(ao.srcObj, function (src) {
if ((dojo.render.html.capable) && (dojo.lang.isString(src))) {
src = dojo.byId(src);
}
tmpAO.srcObj = src;
mjps.push(dojo.event.connect.call(dojo.event, tmpAO));
});
return mjps;
}
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc);
if (ao.adviceFunc) {
var mjp2 = dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj, ao.adviceFunc);
}
mjp.kwAddAdvice(ao);
return mjp;
};
this.log = function (a1, a2) {
var kwArgs;
if ((arguments.length == 1) && (typeof a1 == "object")) {
kwArgs = a1;
} else {
kwArgs = {srcObj:a1, srcFunc:a2};
}
kwArgs.adviceFunc = function () {
var argsStr = [];
for (var x = 0; x < arguments.length; x++) {
argsStr.push(arguments[x]);
}
dojo.debug("(" + kwArgs.srcObj + ")." + kwArgs.srcFunc, ":", argsStr.join(", "));
};
this.kwConnect(kwArgs);
};
this.connectBefore = function () {
var args = ["before"];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return this.connect.apply(this, args);
};
this.connectAround = function () {
var args = ["around"];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return this.connect.apply(this, args);
};
this.connectOnce = function () {
var ao = interpolateArgs(arguments, true);
ao.once = true;
return this.connect(ao);
};
this.connectRunOnce = function () {
var ao = interpolateArgs(arguments, true);
ao.maxCalls = 1;
return this.connect(ao);
};
this._kwConnectImpl = function (kwArgs, disconnect) {
var fn = (disconnect) ? "disconnect" : "connect";
if (typeof kwArgs["srcFunc"] == "function") {
kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.srcFunc, kwArgs.srcObj, true);
kwArgs.srcFunc = tmpName;
}
if (typeof kwArgs["adviceFunc"] == "function") {
kwArgs.adviceObj = kwArgs["adviceObj"] || dj_global;
var tmpName = dojo.lang.nameAnonFunc(kwArgs.adviceFunc, kwArgs.adviceObj, true);
kwArgs.adviceFunc = tmpName;
}
kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
kwArgs.adviceObj = kwArgs["adviceObj"] || kwArgs["targetObj"] || dj_global;
kwArgs.adviceFunc = kwArgs["adviceFunc"] || kwArgs["targetFunc"];
return dojo.event[fn](kwArgs);
};
this.kwConnect = function (kwArgs) {
return this._kwConnectImpl(kwArgs, false);
};
this.disconnect = function () {
if (arguments.length == 1) {
var ao = arguments[0];
} else {
var ao = interpolateArgs(arguments, true);
}
if (!ao.adviceFunc) {
return;
}
if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
if (dojo.render.html.ie) {
ao.srcFunc = "onkeydown";
this.disconnect(ao);
}
ao.srcFunc = "onkeypress";
}
if (!ao.srcObj[ao.srcFunc]) {
return null;
}
var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc, true);
mjp.removeAdvice(ao.adviceObj, ao.adviceFunc, ao.adviceType, ao.once);
return mjp;
};
this.kwDisconnect = function (kwArgs) {
return this._kwConnectImpl(kwArgs, true);
};
};
dojo.event.MethodInvocation = function (join_point, obj, args) {
this.jp_ = join_point;
this.object = obj;
this.args = [];
for (var x = 0; x < args.length; x++) {
this.args[x] = args[x];
}
this.around_index = -1;
};
dojo.event.MethodInvocation.prototype.proceed = function () {
this.around_index++;
if (this.around_index >= this.jp_.around.length) {
return this.jp_.object[this.jp_.methodname].apply(this.jp_.object, this.args);
} else {
var ti = this.jp_.around[this.around_index];
var mobj = ti[0] || dj_global;
var meth = ti[1];
return mobj[meth].call(mobj, this);
}
};
dojo.event.MethodJoinPoint = function (obj, funcName) {
this.object = obj || dj_global;
this.methodname = funcName;
this.methodfunc = this.object[funcName];
this.squelch = false;
};
dojo.event.MethodJoinPoint.getForMethod = function (obj, funcName) {
if (!obj) {
obj = dj_global;
}
var ofn = obj[funcName];
if (!ofn) {
ofn = obj[funcName] = function () {
};
if (!obj[funcName]) {
dojo.raise("Cannot set do-nothing method on that object " + funcName);
}
} else {
if ((typeof ofn != "function") && (!dojo.lang.isFunction(ofn)) && (!dojo.lang.isAlien(ofn))) {
return null;
}
}
var jpname = funcName + "$joinpoint";
var jpfuncname = funcName + "$joinpoint$method";
var joinpoint = obj[jpname];
if (!joinpoint) {
var isNode = false;
if (dojo.event["browser"]) {
if ((obj["attachEvent"]) || (obj["nodeType"]) || (obj["addEventListener"])) {
isNode = true;
dojo.event.browser.addClobberNodeAttrs(obj, [jpname, jpfuncname, funcName]);
}
}
var origArity = ofn.length;
obj[jpfuncname] = ofn;
joinpoint = obj[jpname] = new dojo.event.MethodJoinPoint(obj, jpfuncname);
if (!isNode) {
obj[funcName] = function () {
return joinpoint.run.apply(joinpoint, arguments);
};
} else {
obj[funcName] = function () {
var args = [];
if (!arguments.length) {
var evt = null;
try {
if (obj.ownerDocument) {
evt = obj.ownerDocument.parentWindow.event;
} else {
if (obj.documentElement) {
evt = obj.documentElement.ownerDocument.parentWindow.event;
} else {
if (obj.event) {
evt = obj.event;
} else {
evt = window.event;
}
}
}
}
catch (e) {
evt = window.event;
}
if (evt) {
args.push(dojo.event.browser.fixEvent(evt, this));
}
} else {
for (var x = 0; x < arguments.length; x++) {
if ((x == 0) && (dojo.event.browser.isEvent(arguments[x]))) {
args.push(dojo.event.browser.fixEvent(arguments[x], this));
} else {
args.push(arguments[x]);
}
}
}
return joinpoint.run.apply(joinpoint, args);
};
}
obj[funcName].__preJoinArity = origArity;
}
return joinpoint;
};
dojo.lang.extend(dojo.event.MethodJoinPoint, {squelch:false, unintercept:function () {
this.object[this.methodname] = this.methodfunc;
this.before = [];
this.after = [];
this.around = [];
}, disconnect:dojo.lang.forward("unintercept"), run:function () {
var obj = this.object || dj_global;
var args = arguments;
var aargs = [];
for (var x = 0; x < args.length; x++) {
aargs[x] = args[x];
}
var unrollAdvice = function (marr) {
if (!marr) {
dojo.debug("Null argument to unrollAdvice()");
return;
}
var callObj = marr[0] || dj_global;
var callFunc = marr[1];
if (!callObj[callFunc]) {
dojo.raise("function \"" + callFunc + "\" does not exist on \"" + callObj + "\"");
}
var aroundObj = marr[2] || dj_global;
var aroundFunc = marr[3];
var msg = marr[6];
var maxCount = marr[7];
if (maxCount > -1) {
if (maxCount == 0) {
return;
}
marr[7]--;
}
var undef;
var to = {args:[], jp_:this, object:obj, proceed:function () {
return callObj[callFunc].apply(callObj, to.args);
}};
to.args = aargs;
var delay = parseInt(marr[4]);
var hasDelay = ((!isNaN(delay)) && (marr[4] !== null) && (typeof marr[4] != "undefined"));
if (marr[5]) {
var rate = parseInt(marr[5]);
var cur = new Date();
var timerSet = false;
if ((marr["last"]) && ((cur - marr.last) <= rate)) {
if (dojo.event._canTimeout) {
if (marr["delayTimer"]) {
clearTimeout(marr.delayTimer);
}
var tod = parseInt(rate * 2);
var mcpy = dojo.lang.shallowCopy(marr);
marr.delayTimer = setTimeout(function () {
mcpy[5] = 0;
unrollAdvice(mcpy);
}, tod);
}
return;
} else {
marr.last = cur;
}
}
if (aroundFunc) {
aroundObj[aroundFunc].call(aroundObj, to);
} else {
if ((hasDelay) && ((dojo.render.html) || (dojo.render.svg))) {
dj_global["setTimeout"](function () {
if (msg) {
callObj[callFunc].call(callObj, to);
} else {
callObj[callFunc].apply(callObj, args);
}
}, delay);
} else {
if (msg) {
callObj[callFunc].call(callObj, to);
} else {
callObj[callFunc].apply(callObj, args);
}
}
}
};
var unRollSquelch = function () {
if (this.squelch) {
try {
return unrollAdvice.apply(this, arguments);
}
catch (e) {
dojo.debug(e);
}
} else {
return unrollAdvice.apply(this, arguments);
}
};
if ((this["before"]) && (this.before.length > 0)) {
dojo.lang.forEach(this.before.concat(new Array()), unRollSquelch);
}
var result;
try {
if ((this["around"]) && (this.around.length > 0)) {
var mi = new dojo.event.MethodInvocation(this, obj, args);
result = mi.proceed();
} else {
if (this.methodfunc) {
result = this.object[this.methodname].apply(this.object, args);
}
}
}
catch (e) {
if (!this.squelch) {
dojo.debug(e, "when calling", this.methodname, "on", this.object, "with arguments", args);
dojo.raise(e);
}
}
if ((this["after"]) && (this.after.length > 0)) {
dojo.lang.forEach(this.after.concat(new Array()), unRollSquelch);
}
return (this.methodfunc) ? result : null;
}, getArr:function (kind) {
var type = "after";
if ((typeof kind == "string") && (kind.indexOf("before") != -1)) {
type = "before";
} else {
if (kind == "around") {
type = "around";
}
}
if (!this[type]) {
this[type] = [];
}
return this[type];
}, kwAddAdvice:function (args) {
this.addAdvice(args["adviceObj"], args["adviceFunc"], args["aroundObj"], args["aroundFunc"], args["adviceType"], args["precedence"], args["once"], args["delay"], args["rate"], args["adviceMsg"], args["maxCalls"]);
}, addAdvice:function (thisAdviceObj, thisAdvice, thisAroundObj, thisAround, adviceType, precedence, once, delay, rate, asMessage, maxCalls) {
var arr = this.getArr(adviceType);
if (!arr) {
dojo.raise("bad this: " + this);
}
var ao = [thisAdviceObj, thisAdvice, thisAroundObj, thisAround, delay, rate, asMessage, maxCalls];
if (once) {
if (this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr) >= 0) {
return;
}
}
if (precedence == "first") {
arr.unshift(ao);
} else {
arr.push(ao);
}
}, hasAdvice:function (thisAdviceObj, thisAdvice, adviceType, arr) {
if (!arr) {
arr = this.getArr(adviceType);
}
var ind = -1;
for (var x = 0; x < arr.length; x++) {
var aao = (typeof thisAdvice == "object") ? (new String(thisAdvice)).toString() : thisAdvice;
var a1o = (typeof arr[x][1] == "object") ? (new String(arr[x][1])).toString() : arr[x][1];
if ((arr[x][0] == thisAdviceObj) && (a1o == aao)) {
ind = x;
}
}
return ind;
}, removeAdvice:function (thisAdviceObj, thisAdvice, adviceType, once) {
var arr = this.getArr(adviceType);
var ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
if (ind == -1) {
return false;
}
while (ind != -1) {
arr.splice(ind, 1);
if (once) {
break;
}
ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
}
return true;
}});
 
/trunk/api/js/dojo/src/event/topic.js
New file
0,0 → 1,77
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.event.common");
dojo.provide("dojo.event.topic");
dojo.event.topic = new function () {
this.topics = {};
this.getTopic = function (topic) {
if (!this.topics[topic]) {
this.topics[topic] = new this.TopicImpl(topic);
}
return this.topics[topic];
};
this.registerPublisher = function (topic, obj, funcName) {
var topic = this.getTopic(topic);
topic.registerPublisher(obj, funcName);
};
this.subscribe = function (topic, obj, funcName) {
var topic = this.getTopic(topic);
topic.subscribe(obj, funcName);
};
this.unsubscribe = function (topic, obj, funcName) {
var topic = this.getTopic(topic);
topic.unsubscribe(obj, funcName);
};
this.destroy = function (topic) {
this.getTopic(topic).destroy();
delete this.topics[topic];
};
this.publishApply = function (topic, args) {
var topic = this.getTopic(topic);
topic.sendMessage.apply(topic, args);
};
this.publish = function (topic, message) {
var topic = this.getTopic(topic);
var args = [];
for (var x = 1; x < arguments.length; x++) {
args.push(arguments[x]);
}
topic.sendMessage.apply(topic, args);
};
};
dojo.event.topic.TopicImpl = function (topicName) {
this.topicName = topicName;
this.subscribe = function (listenerObject, listenerMethod) {
var tf = listenerMethod || listenerObject;
var to = (!listenerMethod) ? dj_global : listenerObject;
return dojo.event.kwConnect({srcObj:this, srcFunc:"sendMessage", adviceObj:to, adviceFunc:tf});
};
this.unsubscribe = function (listenerObject, listenerMethod) {
var tf = (!listenerMethod) ? listenerObject : listenerMethod;
var to = (!listenerMethod) ? null : listenerObject;
return dojo.event.kwDisconnect({srcObj:this, srcFunc:"sendMessage", adviceObj:to, adviceFunc:tf});
};
this._getJoinPoint = function () {
return dojo.event.MethodJoinPoint.getForMethod(this, "sendMessage");
};
this.setSquelch = function (shouldSquelch) {
this._getJoinPoint().squelch = shouldSquelch;
};
this.destroy = function () {
this._getJoinPoint().disconnect();
};
this.registerPublisher = function (publisherObject, publisherMethod) {
dojo.event.connect(publisherObject, publisherMethod, this, "sendMessage");
};
this.sendMessage = function (message) {
};
};
 
/trunk/api/js/dojo/src/widget/TreeDisableWrapExtension.js
New file
0,0 → 1,35
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeDisableWrapExtension");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeExtension");
dojo.widget.defineWidget("dojo.widget.TreeDisableWrapExtension", dojo.widget.TreeExtension, {templateCssString:"\n/* CSS for TreeDisableWrapExtension */\n\n.TreeDisableWrap {\n\twhite-space: nowrap;\n}\n.TreeIEDisableWrap {\n\twidth: expression( 5 + firstChild.offsetWidth );\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDisableWrap.css"), listenTree:function (tree) {
var wrappingDiv = document.createElement("div");
var clazz = tree.classPrefix + "DisableWrap";
if (dojo.render.html.ie) {
clazz = clazz + " " + tree.classPrefix + "IEDisableWrap";
}
dojo.html.setClass(wrappingDiv, clazz);
var table = document.createElement("table");
wrappingDiv.appendChild(table);
var tbody = document.createElement("tbody");
table.appendChild(tbody);
var tr = document.createElement("tr");
tbody.appendChild(tr);
var td = document.createElement("td");
tr.appendChild(td);
if (tree.domNode.parentNode) {
tree.domNode.parentNode.replaceChild(wrappingDiv, tree.domNode);
}
td.appendChild(tree.domNode);
tree.domNode = wrappingDiv;
}});
 
/trunk/api/js/dojo/src/widget/Parse.js
New file
0,0 → 1,225
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Parse");
dojo.require("dojo.widget.Manager");
dojo.require("dojo.dom");
dojo.widget.Parse = function (fragment) {
this.propertySetsList = [];
this.fragment = fragment;
this.createComponents = function (frag, parentComp) {
var comps = [];
var built = false;
try {
if (frag && frag.tagName && (frag != frag.nodeRef)) {
var djTags = dojo.widget.tags;
var tna = String(frag.tagName).split(";");
for (var x = 0; x < tna.length; x++) {
var ltn = tna[x].replace(/^\s+|\s+$/g, "").toLowerCase();
frag.tagName = ltn;
var ret;
if (djTags[ltn]) {
built = true;
ret = djTags[ltn](frag, this, parentComp, frag.index);
comps.push(ret);
} else {
if (ltn.indexOf(":") == -1) {
ltn = "dojo:" + ltn;
}
ret = dojo.widget.buildWidgetFromParseTree(ltn, frag, this, parentComp, frag.index);
if (ret) {
built = true;
comps.push(ret);
}
}
}
}
}
catch (e) {
dojo.debug("dojo.widget.Parse: error:", e);
}
if (!built) {
comps = comps.concat(this.createSubComponents(frag, parentComp));
}
return comps;
};
this.createSubComponents = function (fragment, parentComp) {
var frag, comps = [];
for (var item in fragment) {
frag = fragment[item];
if (frag && typeof frag == "object" && (frag != fragment.nodeRef) && (frag != fragment.tagName) && (!dojo.dom.isNode(frag))) {
comps = comps.concat(this.createComponents(frag, parentComp));
}
}
return comps;
};
this.parsePropertySets = function (fragment) {
return [];
};
this.parseProperties = function (fragment) {
var properties = {};
for (var item in fragment) {
if ((fragment[item] == fragment.tagName) || (fragment[item] == fragment.nodeRef)) {
} else {
var frag = fragment[item];
if (frag.tagName && dojo.widget.tags[frag.tagName.toLowerCase()]) {
} else {
if (frag[0] && frag[0].value != "" && frag[0].value != null) {
try {
if (item.toLowerCase() == "dataprovider") {
var _this = this;
this.getDataProvider(_this, frag[0].value);
properties.dataProvider = this.dataProvider;
}
properties[item] = frag[0].value;
var nestedProperties = this.parseProperties(frag);
for (var property in nestedProperties) {
properties[property] = nestedProperties[property];
}
}
catch (e) {
dojo.debug(e);
}
}
}
switch (item.toLowerCase()) {
case "checked":
case "disabled":
if (typeof properties[item] != "boolean") {
properties[item] = true;
}
break;
}
}
}
return properties;
};
this.getDataProvider = function (objRef, dataUrl) {
dojo.io.bind({url:dataUrl, load:function (type, evaldObj) {
if (type == "load") {
objRef.dataProvider = evaldObj;
}
}, mimetype:"text/javascript", sync:true});
};
this.getPropertySetById = function (propertySetId) {
for (var x = 0; x < this.propertySetsList.length; x++) {
if (propertySetId == this.propertySetsList[x]["id"][0].value) {
return this.propertySetsList[x];
}
}
return "";
};
this.getPropertySetsByType = function (componentType) {
var propertySets = [];
for (var x = 0; x < this.propertySetsList.length; x++) {
var cpl = this.propertySetsList[x];
var cpcc = cpl.componentClass || cpl.componentType || null;
var propertySetId = this.propertySetsList[x]["id"][0].value;
if (cpcc && (propertySetId == cpcc[0].value)) {
propertySets.push(cpl);
}
}
return propertySets;
};
this.getPropertySets = function (fragment) {
var ppl = "dojo:propertyproviderlist";
var propertySets = [];
var tagname = fragment.tagName;
if (fragment[ppl]) {
var propertyProviderIds = fragment[ppl].value.split(" ");
for (var propertySetId in propertyProviderIds) {
if ((propertySetId.indexOf("..") == -1) && (propertySetId.indexOf("://") == -1)) {
var propertySet = this.getPropertySetById(propertySetId);
if (propertySet != "") {
propertySets.push(propertySet);
}
} else {
}
}
}
return this.getPropertySetsByType(tagname).concat(propertySets);
};
this.createComponentFromScript = function (nodeRef, componentName, properties, ns) {
properties.fastMixIn = true;
var ltn = (ns || "dojo") + ":" + componentName.toLowerCase();
if (dojo.widget.tags[ltn]) {
return [dojo.widget.tags[ltn](properties, this, null, null, properties)];
}
return [dojo.widget.buildWidgetFromParseTree(ltn, properties, this, null, null, properties)];
};
};
dojo.widget._parser_collection = {"dojo":new dojo.widget.Parse()};
dojo.widget.getParser = function (name) {
if (!name) {
name = "dojo";
}
if (!this._parser_collection[name]) {
this._parser_collection[name] = new dojo.widget.Parse();
}
return this._parser_collection[name];
};
dojo.widget.createWidget = function (name, props, refNode, position) {
var isNode = false;
var isNameStr = (typeof name == "string");
if (isNameStr) {
var pos = name.indexOf(":");
var ns = (pos > -1) ? name.substring(0, pos) : "dojo";
if (pos > -1) {
name = name.substring(pos + 1);
}
var lowerCaseName = name.toLowerCase();
var namespacedName = ns + ":" + lowerCaseName;
isNode = (dojo.byId(name) && !dojo.widget.tags[namespacedName]);
}
if ((arguments.length == 1) && (isNode || !isNameStr)) {
var xp = new dojo.xml.Parse();
var tn = isNode ? dojo.byId(name) : name;
return dojo.widget.getParser().createComponents(xp.parseElement(tn, null, true))[0];
}
function fromScript(placeKeeperNode, name, props, ns) {
props[namespacedName] = {dojotype:[{value:lowerCaseName}], nodeRef:placeKeeperNode, fastMixIn:true};
props.ns = ns;
return dojo.widget.getParser().createComponentFromScript(placeKeeperNode, name, props, ns);
}
props = props || {};
var notRef = false;
var tn = null;
var h = dojo.render.html.capable;
if (h) {
tn = document.createElement("span");
}
if (!refNode) {
notRef = true;
refNode = tn;
if (h) {
dojo.body().appendChild(refNode);
}
} else {
if (position) {
dojo.dom.insertAtPosition(tn, refNode, position);
} else {
tn = refNode;
}
}
var widgetArray = fromScript(tn, name.toLowerCase(), props, ns);
if ((!widgetArray) || (!widgetArray[0]) || (typeof widgetArray[0].widgetType == "undefined")) {
throw new Error("createWidget: Creation of \"" + name + "\" widget failed.");
}
try {
if (notRef && widgetArray[0].domNode.parentNode) {
widgetArray[0].domNode.parentNode.removeChild(widgetArray[0].domNode);
}
}
catch (e) {
dojo.debug(e);
}
return widgetArray[0];
};
 
/trunk/api/js/dojo/src/widget/RadioGroup.js
New file
0,0 → 1,120
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.RadioGroup");
dojo.require("dojo.lang.common");
dojo.require("dojo.event.browser");
dojo.require("dojo.html.selection");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {
this.selectedItem = null;
this.items = [];
this.selected = [];
this.groupCssClass = "radioGroup";
this.selectedCssClass = "selected";
this.itemContentCssClass = "itemContent";
}, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {
this._parseStructure();
dojo.html.addClass(this.domNode, this.groupCssClass);
this._setupChildren();
dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));
if (this.selectedItem) {
this._selectItem(this.selectedItem);
}
}, _parseStructure:function () {
if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {
dojo.raise("RadioGroup: Expected ul or ol content.");
return;
}
this.items = [];
var nl = this.domNode.getElementsByTagName("li");
for (var i = 0; i < nl.length; i++) {
if (nl[i].parentNode == this.domNode) {
this.items.push(nl[i]);
}
}
}, add:function (node) {
if (node.parentNode != this.domNode) {
this.domNode.appendChild(node);
}
this.items.push(node);
this._setup(node);
}, remove:function (node) {
var idx = -1;
for (var i = 0; i < this.items.length; i++) {
if (this.items[i] == node) {
idx = i;
break;
}
}
if (idx < 0) {
return;
}
this.items.splice(idx, 1);
node.parentNode.removeChild(node);
}, clear:function () {
for (var i = 0; i < this.items.length; i++) {
this.domNode.removeChild(this.items[i]);
}
this.items = [];
}, clearSelections:function () {
for (var i = 0; i < this.items.length; i++) {
dojo.html.removeClass(this.items[i], this.selectedCssClass);
}
this.selectedItem = null;
}, _setup:function (node) {
var span = document.createElement("span");
dojo.html.disableSelection(span);
dojo.html.addClass(span, this.itemContentCssClass);
dojo.dom.moveChildren(node, span);
node.appendChild(span);
if (this.selected.length > 0) {
var uid = dojo.html.getAttribute(node, "id");
if (uid && uid == this.selected) {
this.selectedItem = node;
}
}
dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));
if (dojo.html.hasAttribute(node, "onitemselect")) {
var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);
dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));
}
}, _setupChildren:function () {
for (var i = 0; i < this.items.length; i++) {
this._setup(this.items[i]);
}
}, _selectItem:function (node, event, nofire) {
if (this.selectedItem) {
dojo.html.removeClass(this.selectedItem, this.selectedCssClass);
}
this.selectedItem = node;
dojo.html.addClass(this.selectedItem, this.selectedCssClass);
if (!dj_undef("currentTarget", event)) {
return;
}
if (!nofire) {
if (dojo.render.html.ie) {
this.selectedItem.fireEvent("onclick");
} else {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, false);
this.selectedItem.dispatchEvent(e);
}
}
}, getValue:function () {
return this.selectedItem;
}, onSelect:function (e) {
}, onItemSelect:function (e) {
if (!dj_undef("currentTarget", e)) {
this._selectItem(e.currentTarget, e);
}
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/CreateLinkDialog.js
New file
0,0 → 1,61
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.CreateLinkDialog");
dojo.widget.defineWidget("dojo.widget.Editor2CreateLinkDialog", dojo.widget.Editor2DialogContent, {templateString:"<table>\n<tr><td>URL</td><td> <input type=\"text\" dojoAttachPoint=\"link_href\" name=\"dojo_createLink_href\"/></td></tr>\n<tr><td>Target </td><td><select dojoAttachPoint=\"link_target\">\n\t<option value=\"\">Self</option>\n\t<option value=\"_blank\">New Window</option>\n\t<option value=\"_top\">Top Window</option>\n\t</select></td></tr>\n<tr><td>Class </td><td><input type=\"text\" dojoAttachPoint=\"link_class\" /></td></tr>\n<tr><td colspan=\"2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["href", "target", "class"], loadContent:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
curInst.saveSelection();
this.linkNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["a"]);
var linkAttributes = {};
this.extraAttribText = "";
if (this.linkNode) {
var attrs = this.linkNode.attributes;
for (var i = 0; i < attrs.length; i++) {
if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
linkAttributes[attrs[i].name] = attrs[i].value;
} else {
if (attrs[i].specified == undefined || attrs[i].specified) {
this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
}
}
}
} else {
var html = dojo.withGlobal(curInst.window, "getSelectedText", dojo.html.selection);
if (html == null || html.length == 0) {
alert("Please select some text to create a link.");
return false;
}
}
for (var i = 0; i < this.editableAttributes.length; ++i) {
name = this.editableAttributes[i];
this["link_" + name].value = (linkAttributes[name] == undefined) ? "" : linkAttributes[name];
}
return true;
}, ok:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
curInst.restoreSelection();
if (!this.linkNode) {
var html = dojo.withGlobal(curInst.window, "getSelectedHtml", dojo.html.selection);
} else {
var html = this.linkNode.innerHTML;
dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.linkNode]);
}
var attstr = "";
for (var i = 0; i < this.editableAttributes.length; ++i) {
name = this.editableAttributes[i];
var value = this["link_" + name].value;
if (value.length > 0) {
attstr += name + "=\"" + value + "\" ";
}
}
curInst.execCommand("inserthtml", "<a " + attstr + this.extraAttribText + ">" + html + "</a>");
this.cancel();
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/AlwaysShowToolbar.js
New file
0,0 → 1,116
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
if (editor.toolbarAlwaysVisible) {
var p = new dojo.widget.Editor2Plugin.AlwaysShowToolbar(editor);
}
});
dojo.declare("dojo.widget.Editor2Plugin.AlwaysShowToolbar", null, function (editor) {
this.editor = editor;
this.editor.registerLoadedPlugin(this);
this.setup();
}, {_scrollSetUp:false, _fixEnabled:false, _scrollThreshold:false, _handleScroll:true, setup:function () {
var tdn = this.editor.toolbarWidget;
if (!tdn.tbBgIframe) {
tdn.tbBgIframe = new dojo.html.BackgroundIframe(tdn.domNode);
tdn.tbBgIframe.onResized();
}
this.scrollInterval = setInterval(dojo.lang.hitch(this, "globalOnScrollHandler"), 100);
dojo.event.connect("before", this.editor.toolbarWidget, "destroy", this, "destroy");
}, globalOnScrollHandler:function () {
var isIE = dojo.render.html.ie;
if (!this._handleScroll) {
return;
}
var dh = dojo.html;
var tdn = this.editor.toolbarWidget.domNode;
var db = dojo.body();
if (!this._scrollSetUp) {
this._scrollSetUp = true;
var editorWidth = dh.getMarginBox(this.editor.domNode).width;
this._scrollThreshold = dh.abs(tdn, true).y;
if ((isIE) && (db) && (dh.getStyle(db, "background-image") == "none")) {
with (db.style) {
backgroundImage = "url(" + dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif") + ")";
backgroundAttachment = "fixed";
}
}
}
var scrollPos = (window["pageYOffset"]) ? window["pageYOffset"] : (document["documentElement"] || document["body"]).scrollTop;
if (scrollPos > this._scrollThreshold) {
if (!this._fixEnabled) {
var tdnbox = dojo.html.getMarginBox(tdn);
this.editor.editorObject.style.marginTop = tdnbox.height + "px";
if (isIE) {
tdn.style.left = dojo.html.abs(tdn, dojo.html.boxSizing.MARGIN_BOX).x;
if (tdn.previousSibling) {
this._IEOriginalPos = ["after", tdn.previousSibling];
} else {
if (tdn.nextSibling) {
this._IEOriginalPos = ["before", tdn.nextSibling];
} else {
this._IEOriginalPos = ["", tdn.parentNode];
}
}
dojo.body().appendChild(tdn);
dojo.html.addClass(tdn, "IEFixedToolbar");
} else {
with (tdn.style) {
position = "fixed";
top = "0px";
}
}
tdn.style.width = tdnbox.width + "px";
tdn.style.zIndex = 1000;
this._fixEnabled = true;
}
if (!dojo.render.html.safari) {
var eHeight = (this.height) ? parseInt(this.editor.height) : this.editor._lastHeight;
if (scrollPos > (this._scrollThreshold + eHeight)) {
tdn.style.display = "none";
} else {
tdn.style.display = "";
}
}
} else {
if (this._fixEnabled) {
(this.editor.object || this.editor.iframe).style.marginTop = null;
with (tdn.style) {
position = "";
top = "";
zIndex = "";
display = "";
}
if (isIE) {
tdn.style.left = "";
dojo.html.removeClass(tdn, "IEFixedToolbar");
if (this._IEOriginalPos) {
dojo.html.insertAtPosition(tdn, this._IEOriginalPos[1], this._IEOriginalPos[0]);
this._IEOriginalPos = null;
} else {
dojo.html.insertBefore(tdn, this.editor.object || this.editor.iframe);
}
}
tdn.style.width = "";
this._fixEnabled = false;
}
}
}, destroy:function () {
this._IEOriginalPos = null;
this._handleScroll = false;
clearInterval(this.scrollInterval);
this.editor.unregisterLoadedPlugin(this);
if (dojo.render.html.ie) {
dojo.html.removeClass(this.editor.toolbarWidget.domNode, "IEFixedToolbar");
}
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/ToolbarDndSupport.js
New file
0,0 → 1,44
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.ToolbarDndSupport");
dojo.require("dojo.dnd.*");
dojo.event.topic.subscribe("dojo.widget.Editor2::preLoadingToolbar", function (editor) {
dojo.dnd.dragManager.nestedTargets = true;
var p = new dojo.widget.Editor2Plugin.ToolbarDndSupport(editor);
});
dojo.declare("dojo.widget.Editor2Plugin.ToolbarDndSupport", null, {lookForClass:"dojoEditorToolbarDnd TB_ToolbarSet TB_Toolbar", initializer:function (editor) {
this.editor = editor;
dojo.event.connect(this.editor, "toolbarLoaded", this, "setup");
this.editor.registerLoadedPlugin(this);
}, setup:function () {
dojo.event.disconnect(this.editor, "toolbarLoaded", this, "setup");
var tbw = this.editor.toolbarWidget;
dojo.event.connect("before", tbw, "destroy", this, "destroy");
var nodes = dojo.html.getElementsByClass(this.lookForClass, tbw.domNode, null, dojo.html.classMatchType.ContainsAny);
if (!nodes) {
dojo.debug("dojo.widget.Editor2Plugin.ToolbarDndSupport: No dom node with class in " + this.lookForClass);
return;
}
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var droptarget = node.getAttribute("dojoETDropTarget");
if (droptarget) {
(new dojo.dnd.HtmlDropTarget(node, [droptarget + tbw.widgetId])).vertical = true;
}
var dragsource = node.getAttribute("dojoETDragSource");
if (dragsource) {
new dojo.dnd.HtmlDragSource(node, dragsource + tbw.widgetId);
}
}
}, destroy:function () {
this.editor.unregisterLoadedPlugin(this);
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/InsertImageDialog.js
New file
0,0 → 1,53
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.InsertImageDialog");
dojo.widget.defineWidget("dojo.widget.Editor2InsertImageDialog", dojo.widget.Editor2DialogContent, {templateString:"<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\" width=\"100%\" height=\"100%\">\n\t<tr>\n\t\t<td>\n\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"100%\">\n\t\t\t\t\t\t<span>URL</span>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style=\"display: none\" nowrap=\"nowrap\" rowspan=\"2\">\n\t\t\t\t\t\t<!--input id=\"btnBrowse\" onclick=\"BrowseServer();\" type=\"button\" value=\"Browse Server\"/-->\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign=\"top\">\n\t\t\t\t\t\t<input dojoAttachPoint=\"image_src\" style=\"width: 100%\" type=\"text\" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<span>Alternative Text</span><br />\n\t\t\t<input dojoAttachPoint=\"image_alt\" style=\"width: 100%\" type=\"text\" /><br />\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table><tr><td>\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Width</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_width\" /></td>\n\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnLockSizes\" class=\"BtnLocked\" onmouseover=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );\" title=\"Lock Sizes\"\n\t\t\t\t\t\t\t\t\t\tonclick=\"SwitchLock(this);\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnResetSize\" class=\"BtnReset\" onmouseover=\"this.className='BtnReset BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className='BtnReset';\" title=\"Reset Size\" onclick=\"ResetSizes();\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Height</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_height\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td><td>\n\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >HSpace</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_hspace\"/></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >VSpace</span>&nbsp;</td>\n\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_vspace\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td></tr>\n\t\t\t\t\t<tr><td colspan=\"2\">\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Border</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" value=\"\" dojoAttachPoint=\"image_border\" /></td>\n\t\t\t\t\t\t\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >Align</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<select dojoAttachPoint=\"image_align\">\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"\" selected=\"selected\"></option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absBottom\">Abs Bottom</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absMiddle\">Abs Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"baseline\">Baseline</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"bottom\">Bottom</option>\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"middle\">Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"textTop\">Text Top</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"top\">Top</option>\n\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr></table>\n\t\t</td>\n\t</tr>\n\t<tr><td>\n\t\t<table><tr>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["src", "alt", "width", "height", "hspace", "vspace", "border", "align"], loadContent:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
this.imageNode = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
if (!this.imageNode) {
this.imageNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["img"]);
}
var imageAttributes = {};
this.extraAttribText = "";
if (this.imageNode) {
var attrs = this.imageNode.attributes;
for (var i = 0; i < attrs.length; i++) {
if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
imageAttributes[attrs[i].name] = attrs[i].value;
} else {
this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
}
}
}
for (var i = 0; i < this.editableAttributes.length; ++i) {
name = this.editableAttributes[i];
this["image_" + name].value = (imageAttributes[name] == undefined) ? "" : imageAttributes[name];
}
return true;
}, ok:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var insertcmd = curInst.getCommand("inserthtml");
var option = 0;
var attstr = "";
for (var i = 0; i < this.editableAttributes.length; ++i) {
name = this.editableAttributes[i];
var value = this["image_" + name].value;
if (value.length > 0) {
attstr += name + "=\"" + value + "\" ";
}
}
if (this.imageNode) {
dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.imageNode]);
}
insertcmd.execute("<img " + attstr + this.extraAttribText + "/>");
this.cancel();
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.widget.Editor2", "dojo.widget.Editor2Toolbar"]});
dojo.provide("dojo.widget.Editor2Plugin.*");
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/TableOperation.js
New file
0,0 → 1,118
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.TableOperation");
dojo.require("dojo.widget.Editor2");
dojo.event.topic.subscribe("dojo.widget.RichText::init", function (editor) {
if (dojo.render.html.ie) {
editor.contentDomPreFilters.push(dojo.widget.Editor2Plugin.TableOperation.showIETableBorder);
editor.contentDomPostFilters.push(dojo.widget.Editor2Plugin.TableOperation.removeIEFakeClass);
}
editor.getCommand("toggletableborder");
});
dojo.lang.declare("dojo.widget.Editor2Plugin.deleteTableCommand", dojo.widget.Editor2Command, {execute:function () {
var table = dojo.withGlobal(this._editor.window, "getAncestorElement", dojo.html.selection, ["table"]);
if (table) {
dojo.withGlobal(this._editor.window, "selectElement", dojo.html.selection, [table]);
this._editor.execCommand("inserthtml", " ");
}
}, getState:function () {
if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {
this._updateTime = this._editor._lastStateTimestamp;
var table = dojo.withGlobal(this._editor.window, "hasAncestorElement", dojo.html.selection, ["table"]);
this._state = table ? dojo.widget.Editor2Manager.commandState.Enabled : dojo.widget.Editor2Manager.commandState.Disabled;
}
return this._state;
}, getText:function () {
return "Delete Table";
}});
dojo.lang.declare("dojo.widget.Editor2Plugin.toggleTableBorderCommand", dojo.widget.Editor2Command, function () {
this._showTableBorder = false;
dojo.event.connect(this._editor, "editorOnLoad", this, "execute");
}, {execute:function () {
if (this._showTableBorder) {
this._showTableBorder = false;
if (dojo.render.html.moz) {
this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
} else {
if (dojo.render.html.ie) {
this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
}
}
} else {
this._showTableBorder = true;
if (dojo.render.html.moz) {
this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
} else {
if (dojo.render.html.ie) {
this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
}
}
}
}, getText:function () {
return "Toggle Table Border";
}, getState:function () {
return this._showTableBorder ? dojo.widget.Editor2Manager.commandState.Latched : dojo.widget.Editor2Manager.commandState.Enabled;
}});
dojo.widget.Editor2Plugin.TableOperation = {getCommand:function (editor, name) {
switch (name.toLowerCase()) {
case "toggletableborder":
return new dojo.widget.Editor2Plugin.toggleTableBorderCommand(editor, name);
case "inserttable":
return new dojo.widget.Editor2DialogCommand(editor, "inserttable", {contentFile:"dojo.widget.Editor2Plugin.InsertTableDialog", contentClass:"Editor2InsertTableDialog", title:"Insert/Edit Table", width:"450px", height:"250px"});
case "deletetable":
return new dojo.widget.Editor2Plugin.deleteTableCommand(editor, name);
}
}, getToolbarItem:function (name) {
var name = name.toLowerCase();
var item;
switch (name) {
case "inserttable":
case "toggletableborder":
item = new dojo.widget.Editor2ToolbarButton(name);
}
return item;
}, getContextMenuGroup:function (name, contextmenuplugin) {
return new dojo.widget.Editor2Plugin.TableContextMenuGroup(contextmenuplugin);
}, showIETableBorder:function (dom) {
var tables = dom.getElementsByTagName("table");
dojo.lang.forEach(tables, function (t) {
dojo.html.addClass(t, "dojoShowIETableBorders");
});
return dom;
}, removeIEFakeClass:function (dom) {
var tables = dom.getElementsByTagName("table");
dojo.lang.forEach(tables, function (t) {
dojo.html.removeClass(t, "dojoShowIETableBorders");
});
return dom;
}};
dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getCommand);
dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getToolbarItem);
if (dojo.widget.Editor2Plugin.ContextMenuManager) {
dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup("Table", dojo.widget.Editor2Plugin.TableOperation.getContextMenuGroup);
dojo.declare("dojo.widget.Editor2Plugin.TableContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Delete Table", command:"deletetable"}));
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Table Property", command:"inserttable", iconClass:"TB_Button_Icon TB_Button_Table"}));
}, checkVisibility:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var table = dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"]);
if (dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"])) {
this.items[0].show();
this.items[1].show();
return true;
} else {
this.items[0].hide();
this.items[1].hide();
return false;
}
}});
}
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/ContextMenu.js
New file
0,0 → 1,201
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.ContextMenu");
dojo.require("dojo.widget.Menu2");
dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
dojo.widget.Editor2Plugin.ContextMenuManager.getContextMenu(editor);
});
dojo.widget.Editor2Plugin.ContextMenuManager = {menuGroups:["Generic", "Link", "Anchor", "Image", "List", "Table"], _contextMenuGroupSets:{}, _registeredGroups:{}, _menus:{}, registerGroup:function (name, handler) {
if (this._registeredGroups[name]) {
alert("dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup: menu group " + name + "is already registered. Ignored.");
return;
}
this._registeredGroups[name] = handler;
}, removeGroup:function (name) {
delete this._registeredGroups[name];
}, getGroup:function (name, contextmenuplugin) {
if (this._registeredGroups[name]) {
var item = this._registeredGroups[name](name, contextmenuplugin);
if (item) {
return item;
}
}
switch (name) {
case "Generic":
case "Link":
case "Image":
return new dojo.widget.Editor2Plugin[name + "ContextMenuGroup"](contextmenuplugin);
case "Anchor":
case "List":
}
}, registerGroupSet:function (name, set) {
this._contextMenuGroupSets[name] = set;
}, removeGroupSet:function (name) {
var set = this._contextMenuGroupSets[name];
delete this._contextMenuGroupSets[name];
return set;
}, getContextMenu:function (editor) {
var set = editor.contextMenuGroupSet || "defaultDojoEditor2MenuGroupSet";
if (this._menus[set]) {
this._menus[set].bindEditor(editor);
return this._menus[set];
}
var gs = (editor.contextMenuGroupSet && this._contextMenuGroupSets[editor.contextMenuGroupSet]) || this.menuGroups;
var menu = new dojo.widget.Editor2Plugin.ContextMenu(editor, gs);
this._menus[set] = menu;
return menu;
}};
dojo.declare("dojo.widget.Editor2Plugin.ContextMenu", null, function (editor, gs) {
this.groups = [];
this.separators = [];
this.editor = editor;
this.editor.registerLoadedPlugin(this);
this.contextMenu = dojo.widget.createWidget("PopupMenu2", {});
dojo.body().appendChild(this.contextMenu.domNode);
this.bindEditor(this.editor);
dojo.event.connect(this.contextMenu, "aboutToShow", this, "aboutToShow");
dojo.event.connect(this.editor, "destroy", this, "destroy");
this.setup(gs);
}, {bindEditor:function (editor) {
this.contextMenu.bindDomNode(editor.document.body);
}, setup:function (gs) {
for (var i in gs) {
var g = dojo.widget.Editor2Plugin.ContextMenuManager.getGroup(gs[i], this);
if (g) {
this.groups.push(g);
}
}
}, aboutToShow:function () {
var first = true;
for (var i in this.groups) {
if (i > 0 && this.separators.length != this.groups.length - 1) {
this.separators.push(dojo.widget.createWidget("MenuSeparator2", {}));
this.contextMenu.addChild(this.separators[this.separators.length - 1]);
}
if (this.groups[i].refresh()) {
if (i > 0) {
if (first) {
this.separators[i - 1].hide();
} else {
this.separators[i - 1].show();
}
}
if (first) {
first = false;
}
} else {
if (i > 0) {
this.separators[i - 1].hide();
}
}
}
}, destroy:function () {
this.editor.unregisterLoadedPlugin(this);
delete this.groups;
delete this.separators;
this.contextMenu.destroy();
delete this.contextMenu;
}});
dojo.widget.defineWidget("dojo.widget.Editor2ContextMenuItem", dojo.widget.MenuItem2, {command:"", buildRendering:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
this.caption = curInst.getCommand(this.command).getText();
dojo.widget.Editor2ContextMenuItem.superclass.buildRendering.apply(this, arguments);
}, onClick:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this.command);
if (_command) {
_command.execute();
}
}
}, refresh:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this.command);
if (_command) {
if (_command.getState() == dojo.widget.Editor2Manager.commandState.Disabled) {
this.disable();
return false;
} else {
this.enable();
return true;
}
}
}
}, hide:function () {
this.domNode.style.display = "none";
}, show:function () {
this.domNode.style.display = "";
}});
dojo.declare("dojo.widget.Editor2Plugin.SimpleContextMenuGroup", null, function (contextmenuplugin) {
this.contextMenu = contextmenuplugin.contextMenu;
this.items = [];
dojo.event.connect(contextmenuplugin, "destroy", this, "destroy");
}, {refresh:function () {
if (!this.items.length) {
this.createItems();
for (var i in this.items) {
this.contextMenu.addChild(this.items[i]);
}
}
return this.checkVisibility();
}, destroy:function () {
this.contextmenu = null;
delete this.items;
delete this.contextMenu;
}, createItems:function () {
}, checkVisibility:function () {
var show = false;
for (var i in this.items) {
show = show || this.items[i].refresh();
}
var action = show ? "show" : "hide";
for (var i in this.items) {
this.items[i][action]();
}
return show;
}});
dojo.declare("dojo.widget.Editor2Plugin.GenericContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"cut", iconClass:"dojoE2TBIcon dojoE2TBIcon_Cut"}));
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"copy", iconClass:"dojoE2TBIcon dojoE2TBIcon_Copy"}));
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"paste", iconClass:"dojoE2TBIcon dojoE2TBIcon_Paste"}));
}});
dojo.declare("dojo.widget.Editor2Plugin.LinkContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"createlink", iconClass:"dojoE2TBIcon dojoE2TBIcon_Link"}));
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"unlink", iconClass:"dojoE2TBIcon dojoE2TBIcon_UnLink"}));
}, checkVisibility:function () {
var show = this.items[1].refresh();
if (show) {
this.items[0].refresh();
for (var i in this.items) {
this.items[i].show();
}
} else {
for (var i in this.items) {
this.items[i].hide();
}
}
return show;
}});
dojo.declare("dojo.widget.Editor2Plugin.ImageContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"insertimage", iconClass:"dojoE2TBIcon dojoE2TBIcon_Image"}));
}, checkVisibility:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var img = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
if (img && img.tagName.toLowerCase() == "img") {
this.items[0].show();
return true;
} else {
this.items[0].hide();
return false;
}
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/SimpleSignalCommands.js
New file
0,0 → 1,50
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.SimpleSignalCommands");
dojo.require("dojo.widget.Editor2");
dojo.declare("dojo.widget.Editor2Plugin.SimpleSignalCommand", dojo.widget.Editor2Command, function (editor, name) {
if (dojo.widget.Editor2.prototype[name] == undefined) {
dojo.widget.Editor2.prototype[name] = function () {
};
}
}, {execute:function () {
this._editor[this._name]();
}});
if (dojo.widget.Editor2Plugin["SimpleSignalCommands"]) {
dojo.widget.Editor2Plugin["_SimpleSignalCommands"] = dojo.widget.Editor2Plugin["SimpleSignalCommands"];
}
dojo.widget.Editor2Plugin.SimpleSignalCommands = {signals:["save", "insertImage"], Handler:function (name) {
if (name.toLowerCase() == "save") {
return new dojo.widget.Editor2ToolbarButton("Save");
} else {
if (name.toLowerCase() == "insertimage") {
return new dojo.widget.Editor2ToolbarButton("InsertImage");
}
}
}, getCommand:function (editor, name) {
var signal;
dojo.lang.every(this.signals, function (s) {
if (s.toLowerCase() == name.toLowerCase()) {
signal = s;
return false;
}
return true;
});
if (signal) {
return new dojo.widget.Editor2Plugin.SimpleSignalCommand(editor, signal);
}
}};
if (dojo.widget.Editor2Plugin["_SimpleSignalCommands"]) {
dojo.lang.mixin(dojo.widget.Editor2Plugin.SimpleSignalCommands, dojo.widget.Editor2Plugin["_SimpleSignalCommands"]);
}
dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.SimpleSignalCommands, "getCommand");
dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.SimpleSignalCommands.Handler);
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/FindReplace.js
New file
0,0 → 1,59
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.FindReplace");
dojo.require("dojo.widget.Editor2");
dojo.declare("dojo.widget.Editor2Plugin.FindCommand", dojo.widget.Editor2DialogCommand, {SearchOption:{CaseSensitive:4, SearchBackwards:64, WholeWord:2, WrapSearch:128}, find:function (text, option) {
this._editor.focus();
if (window.find) {
this._editor.window.find(text, option & this.SearchOption.CaseSensitive ? true : false, option & this.SearchOption.SearchBackwards ? true : false, option & this.SearchOption.WrapSearch ? true : false, option & this.SearchOption.WholeWord ? true : false);
} else {
if (dojo.body().createTextRange) {
var range = this._editor.document.body.createTextRange();
var found = range.findText(text, (option & this.SearchOption.SearchBackwards) ? 1 : -1, option);
if (found) {
range.scrollIntoView();
range.select();
} else {
alert("Can not find " + text + " in the document");
}
} else {
alert("No idea how to search in this browser. Please submit patch if you know.");
}
}
}, getText:function () {
return "Find";
}});
dojo.widget.Editor2Plugin.FindReplace = {getCommand:function (editor, name) {
var name = name.toLowerCase();
var command;
if (name == "find") {
command = new dojo.widget.Editor2Plugin.FindCommand(editor, "find", {contentFile:"dojo.widget.Editor2Plugin.FindReplaceDialog", contentClass:"Editor2FindDialog", title:"Find", width:"350px", height:"150px", modal:false});
} else {
if (name == "replace") {
command = new dojo.widget.Editor2DialogCommand(editor, "replace", {contentFile:"dojo.widget.Editor2Plugin.FindReplaceDialog", contentClass:"Editor2ReplaceDialog", href:dojo.uri.cache.set(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/Dialog/replace.html"), "<table style=\"white-space: nowrap;\">\n<tr><td>Find: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td>Replace with: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td colspan='2'><table><tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_casesens\" id=\"dojo_replace_option_casesens\" />\n\t\t<label for=\"dojo_replace_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_backwards\" id=\"dojo_replace_option_backwards\" />\n\t\t<label for=\"dojo_replace_option_backwards\">Search Backwards</label></td></tr></table></td></tr>\n<tr><td colspan=2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n"), title:"Replace", width:"350px", height:"200px", modal:false});
}
}
return command;
}, getToolbarItem:function (name) {
var name = name.toLowerCase();
var item;
if (name == "replace") {
item = new dojo.widget.Editor2ToolbarButton("Replace");
} else {
if (name == "find") {
item = new dojo.widget.Editor2ToolbarButton("Find");
}
}
return item;
}};
dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.FindReplace.getCommand);
dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.FindReplace.getToolbarItem);
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/FindReplaceDialog.js
New file
0,0 → 1,32
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.FindReplaceDialog");
dojo.widget.defineWidget("dojo.widget.Editor2FindDialog", dojo.widget.Editor2DialogContent, {templateString:"<table style=\"white-space: nowrap;\">\n<tr><td colspan='2'>Find: <input type=\"text\" dojoAttachPoint=\"find_text\" /></td></tr>\n<tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_casesens\" />\n\t\t<label for=\"find_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_backwards\" />\n\t\t<label for=\"find_option_backwards\">Search Backwards</label></td></tr>\n<tr><td style=\"display: none;\"><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_wholeword\" />\n\t\t<label for=\"find_option_wholeword\">Whole Word</label></td>\n<tr><td colspan=\"1\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:find'>Find</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", find:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var findcmd = curInst.getCommand("find");
var option = 0;
if (this["find_option_casesens"].checked) {
option |= findcmd.SearchOption.CaseSensitive;
}
if (this["find_option_backwards"].checked) {
option |= findcmd.SearchOption.SearchBackwards;
}
if (this["find_option_wholeword"].checked) {
option |= findcmd.SearchOption.WholeWord;
}
findcmd.find(this["find_text"].value, option);
}});
dojo.widget.defineWidget("dojo.widget.Editor2ReplaceDialog", dojo.widget.Editor2DialogContent, {templateString:"<table style=\"white-space: nowrap;\">\n<tr><td>Find: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td>Replace with: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td colspan='2'><table><tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_casesens\" id=\"dojo_replace_option_casesens\" />\n\t\t<label for=\"dojo_replace_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_backwards\" id=\"dojo_replace_option_backwards\" />\n\t\t<label for=\"dojo_replace_option_backwards\">Search Backwards</label></td></tr></table></td></tr>\n<tr><td colspan=2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", replace:function () {
alert("not implemented yet");
}, replaceAll:function () {
alert("not implemented yet");
}});
 
/trunk/api/js/dojo/src/widget/Editor2Plugin/InsertTableDialog.js
New file
0,0 → 1,129
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Plugin.InsertTableDialog");
dojo.widget.defineWidget("dojo.widget.Editor2InsertTableDialog", dojo.widget.Editor2DialogContent, {templateString:"<div>\n<table cellSpacing=\"1\" cellPadding=\"1\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td><span>Rows</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_rows\" type=\"text\" maxLength=\"3\" size=\"2\" value=\"3\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Columns</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cols\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"2\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Border size</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_border\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Alignment</span>:</td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_align\">\n\t\t\t\t\t\t\t<option value=\"\" selected>&lt;Not set&gt;</option>\n\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t<option value=\"center\">Center</option>\n\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t<td align=\"right\" valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Width</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_width\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_widthtype\">\n\t\t\t\t\t\t\t<option value=\"percent\" selected>percent</option>\n\t\t\t\t\t\t\t<option value=\"pixels\">pixels</option>\n\t\t\t\t\t\t</select></td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Height</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_height\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<span>pixels</span></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell spacing</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellspacing\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell padding</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellpadding\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n<table cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td nowrap><span>Caption</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_caption\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n\t<tr>\n\t\t<td nowrap><span>Summary</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_summary\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n</table>\n<table><tr>\n<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>Ok</button></td>\n<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n</tr></table>\n</div>\n", editableAttributes:["summary", "height", "cellspacing", "cellpadding", "border", "align"], loadContent:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
curInst.saveSelection();
this.tableNode = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
if (!this.tableNode || this.tableNode.tagName.toLowerCase() != "table") {
this.tableNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["table"]);
}
var tableAttributes = {};
this.extraAttribText = "";
if (this.tableNode) {
this["table_rows"].value = this.tableNode.rows.length;
this["table_rows"].disabled = true;
this["table_cols"].value = this.tableNode.rows[0].cells.length;
this["table_cols"].disabled = true;
if (this.tableNode.caption) {
this["table_caption"].value = this.tableNode.caption.innerHTML;
} else {
this["table_caption"].value = "";
}
var width = this.tableNode.style.width || this.tableNode.width;
if (width) {
this["table_width"].value = parseInt(width);
if (width.indexOf("%") > -1) {
this["table_widthtype"].value = "percent";
} else {
this["table_widthtype"].value = "pixels";
}
} else {
this["table_width"].value = "100";
}
var height = this.tableNode.style.height || this.tableNode.height;
if (height) {
this["table_height"].value = parseInt(width);
} else {
this["table_height"].value = "";
}
var attrs = this.tableNode.attributes;
for (var i = 0; i < attrs.length; i++) {
if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
tableAttributes[attrs[i].name] = attrs[i].value;
} else {
this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
}
}
} else {
this["table_rows"].value = 3;
this["table_rows"].disabled = false;
this["table_cols"].value = 2;
this["table_cols"].disabled = false;
this["table_width"].value = 100;
this["table_widthtype"].value = "percent";
this["table_height"].value = "";
}
for (var i = 0; i < this.editableAttributes.length; ++i) {
name = this.editableAttributes[i];
this["table_" + name].value = (tableAttributes[name] == undefined) ? "" : tableAttributes[name];
if (name == "height" && tableAttributes[name] != undefined) {
this["table_" + name].value = tableAttributes[name];
}
}
return true;
}, ok:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var args = {};
args["rows"] = this["table_rows"].value;
args["cols"] = this["table_cols"].value;
args["caption"] = this["table_caption"].value;
args["tableattrs"] = "";
if (this["table_widthtype"].value == "percent") {
args["tableattrs"] += "width=\"" + this["table_width"].value + "%\" ";
} else {
args["tableattrs"] += "width=\"" + this["table_width"].value + "px\" ";
}
for (var i = 0; i < this.editableAttributes.length; ++i) {
var name = this.editableAttributes[i];
var value = this["table_" + name].value;
if (value.length > 0) {
args["tableattrs"] += name + "=\"" + value + "\" ";
}
}
if (!args["tableattrs"]) {
args["tableattrs"] = "";
}
if (dojo.render.html.ie && !this["table_border"].value) {
args["tableattrs"] += "class=\"dojoShowIETableBorders\" ";
}
var html = "<table " + args["tableattrs"] + ">";
if (args["caption"]) {
html += "<caption>" + args["caption"] + "</caption>";
}
var outertbody = "<tbody>";
if (this.tableNode) {
var tbody = this.tableNode.getElementsByTagName("tbody")[0];
outertbody = tbody.outerHTML;
if (!outertbody) {
var cnode = tbody.cloneNode(true);
var tmpnode = tbody.ownerDocument.createElement("div");
tmpnode.appendChild(cnode);
outertbody = tmpnode.innerHTML;
}
dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.tableNode]);
} else {
var cols = "<tr>";
for (var i = 0; i < +args.cols; i++) {
cols += "<td></td>";
}
cols += "</tr>";
for (var i = 0; i < args.rows; i++) {
outertbody += cols;
}
outertbody += "</tbody>";
}
html += outertbody + "</table>";
curInst.restoreSelection();
curInst.execCommand("inserthtml", html);
this.cancel();
}});
 
/trunk/api/js/dojo/src/widget/ContentPane.js
New file
0,0 → 1,439
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ContentPane");
dojo.require("dojo.widget.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.string");
dojo.require("dojo.string.extras");
dojo.require("dojo.html.style");
dojo.widget.defineWidget("dojo.widget.ContentPane", dojo.widget.HtmlWidget, function () {
this._styleNodes = [];
this._onLoadStack = [];
this._onUnloadStack = [];
this._callOnUnload = false;
this._ioBindObj;
this.scriptScope;
this.bindArgs = {};
}, {isContainer:true, adjustPaths:true, href:"", extractContent:true, parseContent:true, cacheContent:true, preload:false, refreshOnShow:false, handler:"", executeScripts:false, scriptSeparation:true, loadingMessage:"Loading...", isLoaded:false, postCreate:function (args, frag, parentComp) {
if (this.handler !== "") {
this.setHandler(this.handler);
}
if (this.isShowing() || this.preload) {
this.loadContents();
}
}, show:function () {
if (this.refreshOnShow) {
this.refresh();
} else {
this.loadContents();
}
dojo.widget.ContentPane.superclass.show.call(this);
}, refresh:function () {
this.isLoaded = false;
this.loadContents();
}, loadContents:function () {
if (this.isLoaded) {
return;
}
if (dojo.lang.isFunction(this.handler)) {
this._runHandler();
} else {
if (this.href != "") {
this._downloadExternalContent(this.href, this.cacheContent && !this.refreshOnShow);
}
}
}, setUrl:function (url) {
this.href = url;
this.isLoaded = false;
if (this.preload || this.isShowing()) {
this.loadContents();
}
}, abort:function () {
var bind = this._ioBindObj;
if (!bind || !bind.abort) {
return;
}
bind.abort();
delete this._ioBindObj;
}, _downloadExternalContent:function (url, useCache) {
this.abort();
this._handleDefaults(this.loadingMessage, "onDownloadStart");
var self = this;
this._ioBindObj = dojo.io.bind(this._cacheSetting({url:url, mimetype:"text/html", handler:function (type, data, xhr) {
delete self._ioBindObj;
if (type == "load") {
self.onDownloadEnd.call(self, url, data);
} else {
var e = {responseText:xhr.responseText, status:xhr.status, statusText:xhr.statusText, responseHeaders:xhr.getAllResponseHeaders(), text:"Error loading '" + url + "' (" + xhr.status + " " + xhr.statusText + ")"};
self._handleDefaults.call(self, e, "onDownloadError");
self.onLoad();
}
}}, useCache));
}, _cacheSetting:function (bindObj, useCache) {
for (var x in this.bindArgs) {
if (dojo.lang.isUndefined(bindObj[x])) {
bindObj[x] = this.bindArgs[x];
}
}
if (dojo.lang.isUndefined(bindObj.useCache)) {
bindObj.useCache = useCache;
}
if (dojo.lang.isUndefined(bindObj.preventCache)) {
bindObj.preventCache = !useCache;
}
if (dojo.lang.isUndefined(bindObj.mimetype)) {
bindObj.mimetype = "text/html";
}
return bindObj;
}, onLoad:function (e) {
this._runStack("_onLoadStack");
this.isLoaded = true;
}, onUnLoad:function (e) {
dojo.deprecated(this.widgetType + ".onUnLoad, use .onUnload (lowercased load)", 0.5);
}, onUnload:function (e) {
this._runStack("_onUnloadStack");
delete this.scriptScope;
if (this.onUnLoad !== dojo.widget.ContentPane.prototype.onUnLoad) {
this.onUnLoad.apply(this, arguments);
}
}, _runStack:function (stName) {
var st = this[stName];
var err = "";
var scope = this.scriptScope || window;
for (var i = 0; i < st.length; i++) {
try {
st[i].call(scope);
}
catch (e) {
err += "\n" + st[i] + " failed: " + e.description;
}
}
this[stName] = [];
if (err.length) {
var name = (stName == "_onLoadStack") ? "addOnLoad" : "addOnUnLoad";
this._handleDefaults(name + " failure\n " + err, "onExecError", "debug");
}
}, addOnLoad:function (obj, func) {
this._pushOnStack(this._onLoadStack, obj, func);
}, addOnUnload:function (obj, func) {
this._pushOnStack(this._onUnloadStack, obj, func);
}, addOnUnLoad:function () {
dojo.deprecated(this.widgetType + ".addOnUnLoad, use addOnUnload instead. (lowercased Load)", 0.5);
this.addOnUnload.apply(this, arguments);
}, _pushOnStack:function (stack, obj, func) {
if (typeof func == "undefined") {
stack.push(obj);
} else {
stack.push(function () {
obj[func]();
});
}
}, destroy:function () {
this.onUnload();
dojo.widget.ContentPane.superclass.destroy.call(this);
}, onExecError:function (e) {
}, onContentError:function (e) {
}, onDownloadError:function (e) {
}, onDownloadStart:function (e) {
}, onDownloadEnd:function (url, data) {
data = this.splitAndFixPaths(data, url);
this.setContent(data);
}, _handleDefaults:function (e, handler, messType) {
if (!handler) {
handler = "onContentError";
}
if (dojo.lang.isString(e)) {
e = {text:e};
}
if (!e.text) {
e.text = e.toString();
}
e.toString = function () {
return this.text;
};
if (typeof e.returnValue != "boolean") {
e.returnValue = true;
}
if (typeof e.preventDefault != "function") {
e.preventDefault = function () {
this.returnValue = false;
};
}
this[handler](e);
if (e.returnValue) {
switch (messType) {
case true:
case "alert":
alert(e.toString());
break;
case "debug":
dojo.debug(e.toString());
break;
default:
if (this._callOnUnload) {
this.onUnload();
}
this._callOnUnload = false;
if (arguments.callee._loopStop) {
dojo.debug(e.toString());
} else {
arguments.callee._loopStop = true;
this._setContent(e.toString());
}
}
}
arguments.callee._loopStop = false;
}, splitAndFixPaths:function (s, url) {
var titles = [], scripts = [], tmp = [];
var match = [], requires = [], attr = [], styles = [];
var str = "", path = "", fix = "", tagFix = "", tag = "", origPath = "";
if (!url) {
url = "./";
}
if (s) {
var regex = /<title[^>]*>([\s\S]*?)<\/title>/i;
while (match = regex.exec(s)) {
titles.push(match[1]);
s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
}
if (this.adjustPaths) {
var regexFindTag = /<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
var regexFindAttr = /\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
var regexProtocols = /^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
while (tag = regexFindTag.exec(s)) {
str += s.substring(0, tag.index);
s = s.substring((tag.index + tag[0].length), s.length);
tag = tag[0];
tagFix = "";
while (attr = regexFindAttr.exec(tag)) {
path = "";
origPath = attr[3];
switch (attr[1].toLowerCase()) {
case "src":
case "href":
if (regexProtocols.exec(origPath)) {
path = origPath;
} else {
path = (new dojo.uri.Uri(url, origPath).toString());
}
break;
case "style":
path = dojo.html.fixPathsInCssText(origPath, url);
break;
default:
path = origPath;
}
fix = " " + attr[1] + "=" + attr[2] + path + attr[2];
tagFix += tag.substring(0, attr.index) + fix;
tag = tag.substring((attr.index + attr[0].length), tag.length);
}
str += tagFix + tag;
}
s = str + s;
}
regex = /(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
while (match = regex.exec(s)) {
if (match[1] && match[1].toLowerCase() == "style") {
styles.push(dojo.html.fixPathsInCssText(match[2], url));
} else {
if (attr = match[3].match(/href=(['"]?)([^'">]*)\1/i)) {
styles.push({path:attr[2]});
}
}
s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
}
var regex = /<script([^>]*)>([\s\S]*?)<\/script>/i;
var regexSrc = /src=(['"]?)([^"']*)\1/i;
var regexDojoJs = /.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
var regexInvalid = /(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
var regexRequires = /dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix|registerModulePath)|defineNamespace)\((['"]).*?\1\)\s*;?/;
while (match = regex.exec(s)) {
if (this.executeScripts && match[1]) {
if (attr = regexSrc.exec(match[1])) {
if (regexDojoJs.exec(attr[2])) {
dojo.debug("Security note! inhibit:" + attr[2] + " from being loaded again.");
} else {
scripts.push({path:attr[2]});
}
}
}
if (match[2]) {
var sc = match[2].replace(regexInvalid, "");
if (!sc) {
continue;
}
while (tmp = regexRequires.exec(sc)) {
requires.push(tmp[0]);
sc = sc.substring(0, tmp.index) + sc.substr(tmp.index + tmp[0].length);
}
if (this.executeScripts) {
scripts.push(sc);
}
}
s = s.substr(0, match.index) + s.substr(match.index + match[0].length);
}
if (this.extractContent) {
match = s.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
if (match) {
s = match[1];
}
}
if (this.executeScripts && this.scriptSeparation) {
var regex = /(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*?\S=)((['"])[^>]*scriptScope[^>]*>)/;
var regexAttr = /([\s'";:\(])scriptScope(.*)/;
str = "";
while (tag = regex.exec(s)) {
tmp = ((tag[3] == "'") ? "\"" : "'");
fix = "";
str += s.substring(0, tag.index) + tag[1];
while (attr = regexAttr.exec(tag[2])) {
tag[2] = tag[2].substring(0, attr.index) + attr[1] + "dojo.widget.byId(" + tmp + this.widgetId + tmp + ").scriptScope" + attr[2];
}
str += tag[2];
s = s.substr(tag.index + tag[0].length);
}
s = str + s;
}
}
return {"xml":s, "styles":styles, "titles":titles, "requires":requires, "scripts":scripts, "url":url};
}, _setContent:function (cont) {
this.destroyChildren();
for (var i = 0; i < this._styleNodes.length; i++) {
if (this._styleNodes[i] && this._styleNodes[i].parentNode) {
this._styleNodes[i].parentNode.removeChild(this._styleNodes[i]);
}
}
this._styleNodes = [];
try {
var node = this.containerNode || this.domNode;
while (node.firstChild) {
dojo.html.destroyNode(node.firstChild);
}
if (typeof cont != "string") {
node.appendChild(cont);
} else {
node.innerHTML = cont;
}
}
catch (e) {
e.text = "Couldn't load content:" + e.description;
this._handleDefaults(e, "onContentError");
}
}, setContent:function (data) {
this.abort();
if (this._callOnUnload) {
this.onUnload();
}
this._callOnUnload = true;
if (!data || dojo.html.isNode(data)) {
this._setContent(data);
this.onResized();
this.onLoad();
} else {
if (typeof data.xml != "string") {
this.href = "";
data = this.splitAndFixPaths(data);
}
this._setContent(data.xml);
for (var i = 0; i < data.styles.length; i++) {
if (data.styles[i].path) {
this._styleNodes.push(dojo.html.insertCssFile(data.styles[i].path, dojo.doc(), false, true));
} else {
this._styleNodes.push(dojo.html.insertCssText(data.styles[i]));
}
}
if (this.parseContent) {
for (var i = 0; i < data.requires.length; i++) {
try {
eval(data.requires[i]);
}
catch (e) {
e.text = "ContentPane: error in package loading calls, " + (e.description || e);
this._handleDefaults(e, "onContentError", "debug");
}
}
}
var _self = this;
function asyncParse() {
if (_self.executeScripts) {
_self._executeScripts(data.scripts);
}
if (_self.parseContent) {
var node = _self.containerNode || _self.domNode;
var parser = new dojo.xml.Parse();
var frag = parser.parseElement(node, null, true);
dojo.widget.getParser().createSubComponents(frag, _self);
}
_self.onResized();
_self.onLoad();
}
if (dojo.hostenv.isXDomain && data.requires.length) {
dojo.addOnLoad(asyncParse);
} else {
asyncParse();
}
}
}, setHandler:function (handler) {
var fcn = dojo.lang.isFunction(handler) ? handler : window[handler];
if (!dojo.lang.isFunction(fcn)) {
this._handleDefaults("Unable to set handler, '" + handler + "' not a function.", "onExecError", true);
return;
}
this.handler = function () {
return fcn.apply(this, arguments);
};
}, _runHandler:function () {
var ret = true;
if (dojo.lang.isFunction(this.handler)) {
this.handler(this, this.domNode);
ret = false;
}
this.onLoad();
return ret;
}, _executeScripts:function (scripts) {
var self = this;
var tmp = "", code = "";
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].path) {
dojo.io.bind(this._cacheSetting({"url":scripts[i].path, "load":function (type, scriptStr) {
dojo.lang.hitch(self, tmp = ";" + scriptStr);
}, "error":function (type, error) {
error.text = type + " downloading remote script";
self._handleDefaults.call(self, error, "onExecError", "debug");
}, "mimetype":"text/plain", "sync":true}, this.cacheContent));
code += tmp;
} else {
code += scripts[i];
}
}
try {
if (this.scriptSeparation) {
delete this.scriptScope;
this.scriptScope = new (new Function("_container_", code + "; return this;"))(self);
} else {
var djg = dojo.global();
if (djg.execScript) {
djg.execScript(code);
} else {
var djd = dojo.doc();
var sc = djd.createElement("script");
sc.appendChild(djd.createTextNode(code));
(this.containerNode || this.domNode).appendChild(sc);
}
}
}
catch (e) {
e.text = "Error running scripts from content:\n" + e.description;
this._handleDefaults(e, "onExecError", "debug");
}
}});
 
/trunk/api/js/dojo/src/widget/Spinner.js
New file
0,0 → 1,524
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Spinner");
dojo.require("dojo.io.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.html.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.string");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.IntegerTextbox");
dojo.require("dojo.widget.RealNumberTextbox");
dojo.require("dojo.widget.DateTextbox");
dojo.require("dojo.experimental");
dojo.declare("dojo.widget.Spinner", null, {_typamaticTimer:null, _typamaticFunction:null, _currentTimeout:this.defaultTimeout, _eventCount:0, defaultTimeout:500, timeoutChangeRate:0.9, templateString:"<span _=\"weird end tag formatting is to prevent whitespace from becoming &nbsp;\"\n\tstyle='float:${this.htmlfloat};'\n\t><table cellpadding=0 cellspacing=0 class=\"dojoSpinner\">\n\t\t<tr>\n\t\t\t<td\n\t\t\t\t><input\n\t\t\t\t\tdojoAttachPoint='textbox' type='${this.type}'\n\t\t\t\t\tdojoAttachEvent='onblur;onfocus;onkey:_handleKeyEvents;onKeyUp:_onSpinnerKeyUp;onresize:_resize'\n\t\t\t\t\tid='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'\n\t\t\t\t\tvalue='${this.value}' class='${this.className}' autocomplete=\"off\"\n\t\t\t></td>\n\t\t\t<td\n\t\t\t\t><img dojoAttachPoint=\"upArrowNode\"\n\t\t\t\t\tdojoAttachEvent=\"onDblClick: _upArrowDoubleClicked; onMouseDown: _upArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;\"\n\t\t\t\t\tsrc=\"${this.incrementSrc}\" style=\"width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;\"\n\t\t\t\t><img dojoAttachPoint=\"downArrowNode\"\n\t\t\t\t\tdojoAttachEvent=\"onDblClick: _downArrowDoubleClicked; onMouseDown: _downArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;\"\n\t\t\t\t\tsrc=\"${this.decrementSrc}\" style=\"width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;\"\n\t\t\t></td>\n\t\t</tr>\n\t</table\n\t><span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span\n\t><span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span\n\t><span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span\n></span>\n", templateCssString:"/* inline the table holding the <input> and buttons (method varies by browser) */\n.ie .dojoSpinner, .safari .dojoSpinner {\n\tdisplay: inline;\n}\n\n.moz .dojoSpinner {\n\tdisplay: -moz-inline-box;\n}\n\n.opera .dojoSpinner {\n\tdisplay: inline-table;\n}\n\n/* generic stuff for the table */\n.dojoSpinner td {\n\tpadding:0px;\n\tmargin:0px;\n\tvertical-align: middle;\n}\ntable.dojoSpinner {\n\tborder:0px;\n\tborder-spacing:0px;\n\tline-height:0px;\n\tpadding:0px;\n\tmargin: 0px;\n\tvertical-align: middle;\n}\n\n/* the buttons */\n.dojoSpinner img {\n\tdisplay: block;\n\tborder-width:0px 1px 1px 0px;\n\tborder-style:outset;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Spinner.css"), incrementSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/spinnerIncrement.gif"), decrementSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/spinnerDecrement.gif"), _handleKeyEvents:function (evt) {
if (!evt.key) {
return;
}
if (!evt.ctrlKey && !evt.altKey) {
switch (evt.key) {
case evt.KEY_DOWN_ARROW:
dojo.event.browser.stopEvent(evt);
this._downArrowPressed(evt);
return;
case evt.KEY_UP_ARROW:
dojo.event.browser.stopEvent(evt);
this._upArrowPressed(evt);
return;
}
}
this._eventCount++;
}, _onSpinnerKeyUp:function (evt) {
this._arrowReleased(evt);
this.onkeyup(evt);
}, _resize:function () {
var inputSize = dojo.html.getBorderBox(this.textbox);
this.buttonSize = {width:inputSize.height / 2, height:inputSize.height / 2};
if (this.upArrowNode) {
dojo.html.setMarginBox(this.upArrowNode, this.buttonSize);
dojo.html.setMarginBox(this.downArrowNode, this.buttonSize);
}
}, _pressButton:function (node) {
node.style.borderWidth = "1px 0px 0px 1px";
node.style.borderStyle = "inset";
}, _releaseButton:function (node) {
node.style.borderWidth = "0px 1px 1px 0px";
node.style.borderStyle = "outset";
}, _arrowPressed:function (evt, direction) {
var nodePressed = (direction == -1) ? this.downArrowNode : this.upArrowNode;
var nodeReleased = (direction == +1) ? this.downArrowNode : this.upArrowNode;
if (typeof evt != "number") {
if (this._typamaticTimer != null) {
if (this._typamaticNode == nodePressed) {
return;
}
dojo.lang.clearTimeout(this._typamaticTimer);
}
this._releaseButton(nodeReleased);
this._eventCount++;
this._typamaticTimer = null;
this._currentTimeout = this.defaultTimeout;
} else {
if (evt != this._eventCount) {
this._releaseButton(nodePressed);
return;
}
}
this._pressButton(nodePressed);
this._setCursorX(this.adjustValue(direction, this._getCursorX()));
this._typamaticNode = nodePressed;
this._typamaticTimer = dojo.lang.setTimeout(this, "_arrowPressed", this._currentTimeout, this._eventCount, direction);
this._currentTimeout = Math.round(this._currentTimeout * this.timeoutChangeRate);
}, _downArrowPressed:function (evt) {
return this._arrowPressed(evt, -1);
}, _downArrowDoubleClicked:function (evt) {
var rc = this._downArrowPressed(evt);
dojo.lang.setTimeout(this, "_arrowReleased", 50, null);
return rc;
}, _upArrowPressed:function (evt) {
return this._arrowPressed(evt, +1);
}, _upArrowDoubleClicked:function (evt) {
var rc = this._upArrowPressed(evt);
dojo.lang.setTimeout(this, "_arrowReleased", 50, null);
return rc;
}, _arrowReleased:function (evt) {
this.textbox.focus();
if (evt != null && typeof evt == "object" && evt.keyCode && evt.keyCode != null) {
var keyCode = evt.keyCode;
var k = dojo.event.browser.keys;
switch (keyCode) {
case k.KEY_DOWN_ARROW:
case k.KEY_UP_ARROW:
dojo.event.browser.stopEvent(evt);
break;
}
}
this._releaseButton(this.upArrowNode);
this._releaseButton(this.downArrowNode);
this._eventCount++;
if (this._typamaticTimer != null) {
dojo.lang.clearTimeout(this._typamaticTimer);
}
this._typamaticTimer = null;
this._currentTimeout = this.defaultTimeout;
}, _mouseWheeled:function (evt) {
var scrollAmount = 0;
if (typeof evt.wheelDelta == "number") {
scrollAmount = evt.wheelDelta;
} else {
if (typeof evt.detail == "number") {
scrollAmount = -evt.detail;
}
}
if (scrollAmount > 0) {
this._upArrowPressed(evt);
this._arrowReleased(evt);
} else {
if (scrollAmount < 0) {
this._downArrowPressed(evt);
this._arrowReleased(evt);
}
}
}, _discardEvent:function (evt) {
dojo.event.browser.stopEvent(evt);
}, _getCursorX:function () {
var x = -1;
try {
this.textbox.focus();
if (typeof this.textbox.selectionEnd == "number") {
x = this.textbox.selectionEnd;
} else {
if (document.selection && document.selection.createRange) {
var range = document.selection.createRange().duplicate();
if (range.parentElement() == this.textbox) {
range.moveStart("textedit", -1);
x = range.text.length;
}
}
}
}
catch (e) {
}
return x;
}, _setCursorX:function (x) {
try {
this.textbox.focus();
if (!x) {
x = 0;
}
if (typeof this.textbox.selectionEnd == "number") {
this.textbox.selectionEnd = x;
} else {
if (this.textbox.createTextRange) {
var range = this.textbox.createTextRange();
range.collapse(true);
range.moveEnd("character", x);
range.moveStart("character", x);
range.select();
}
}
}
catch (e) {
}
}, _spinnerPostMixInProperties:function (args, frag) {
var inputNode = this.getFragNodeRef(frag);
var inputSize = dojo.html.getBorderBox(inputNode);
this.buttonSize = {width:inputSize.height / 2 - 1, height:inputSize.height / 2 - 1};
}, _spinnerPostCreate:function (args, frag) {
if (this.textbox.addEventListener) {
this.textbox.addEventListener("DOMMouseScroll", dojo.lang.hitch(this, "_mouseWheeled"), false);
} else {
dojo.event.connect(this.textbox, "onmousewheel", this, "_mouseWheeled");
}
}});
dojo.widget.defineWidget("dojo.widget.IntegerSpinner", [dojo.widget.IntegerTextbox, dojo.widget.Spinner], {delta:"1", postMixInProperties:function (args, frag) {
dojo.widget.IntegerSpinner.superclass.postMixInProperties.apply(this, arguments);
this._spinnerPostMixInProperties(args, frag);
}, postCreate:function (args, frag) {
dojo.widget.IntegerSpinner.superclass.postCreate.apply(this, arguments);
this._spinnerPostCreate(args, frag);
}, adjustValue:function (direction, x) {
var val = this.getValue().replace(/[^\-+\d]/g, "");
if (val.length == 0) {
return;
}
var num = Math.min(Math.max((parseInt(val) + (parseInt(this.delta) * direction)), (this.flags.min ? this.flags.min : -Infinity)), (this.flags.max ? this.flags.max : +Infinity));
val = num.toString();
if (num >= 0) {
val = ((this.flags.signed == true) ? "+" : " ") + val;
}
if (this.flags.separator.length > 0) {
for (var i = val.length - 3; i > 1; i -= 3) {
val = val.substr(0, i) + this.flags.separator + val.substr(i);
}
}
if (val.substr(0, 1) == " ") {
val = val.substr(1);
}
this.setValue(val);
return val.length;
}});
dojo.widget.defineWidget("dojo.widget.RealNumberSpinner", [dojo.widget.RealNumberTextbox, dojo.widget.Spinner], function () {
dojo.experimental("dojo.widget.RealNumberSpinner");
}, {delta:"1e1", postMixInProperties:function (args, frag) {
dojo.widget.RealNumberSpinner.superclass.postMixInProperties.apply(this, arguments);
this._spinnerPostMixInProperties(args, frag);
}, postCreate:function (args, frag) {
dojo.widget.RealNumberSpinner.superclass.postCreate.apply(this, arguments);
this._spinnerPostCreate(args, frag);
}, adjustValue:function (direction, x) {
var val = this.getValue().replace(/[^\-+\.eE\d]/g, "");
if (!val.length) {
return;
}
var num = parseFloat(val);
if (isNaN(num)) {
return;
}
var delta = this.delta.split(/[eE]/);
if (!delta.length) {
delta = [1, 1];
} else {
delta[0] = parseFloat(delta[0].replace(/[^\-+\.\d]/g, ""));
if (isNaN(delta[0])) {
delta[0] = 1;
}
if (delta.length > 1) {
delta[1] = parseInt(delta[1]);
}
if (isNaN(delta[1])) {
delta[1] = 1;
}
}
val = this.getValue().split(/[eE]/);
if (!val.length) {
return;
}
var numBase = parseFloat(val[0].replace(/[^\-+\.\d]/g, ""));
if (val.length == 1) {
var numExp = 0;
} else {
var numExp = parseInt(val[1].replace(/[^\-+\d]/g, ""));
}
if (x <= val[0].length) {
x = 0;
numBase += delta[0] * direction;
} else {
x = Number.MAX_VALUE;
numExp += delta[1] * direction;
if (this.flags.eSigned == false && numExp < 0) {
numExp = 0;
}
}
num = Math.min(Math.max((numBase * Math.pow(10, numExp)), (this.flags.min ? this.flags.min : -Infinity)), (this.flags.max ? this.flags.max : +Infinity));
if ((this.flags.exponent == true || (this.flags.exponent != false && x != 0)) && num.toExponential) {
if (isNaN(this.flags.places) || this.flags.places == Infinity) {
val = num.toExponential();
} else {
val = num.toExponential(this.flags.places);
}
} else {
if (num.toFixed && num.toPrecision) {
if (isNaN(this.flags.places) || this.flags.places == Infinity) {
val = num.toPrecision((1 / 3).toString().length - 1);
} else {
val = num.toFixed(this.flags.places);
}
} else {
val = num.toString();
}
}
if (num >= 0) {
if (this.flags.signed == true) {
val = "+" + val;
}
}
val = val.split(/[eE]/);
if (this.flags.separator.length > 0) {
if (num >= 0 && val[0].substr(0, 1) != "+") {
val[0] = " " + val[0];
}
var i = val[0].lastIndexOf(".");
if (i >= 0) {
i -= 3;
} else {
i = val[0].length - 3;
}
for (; i > 1; i -= 3) {
val[0] = val[0].substr(0, i) + this.flags.separator + val[0].substr(i);
}
if (val[0].substr(0, 1) == " ") {
val[0] = val[0].substr(1);
}
}
if (val.length > 1) {
if ((this.flags.eSigned == true) && (val[1].substr(0, 1) != "+")) {
val[1] = "+" + val[1];
} else {
if ((!this.flags.eSigned) && (val[1].substr(0, 1) == "+")) {
val[1] = val[1].substr(1);
} else {
if ((!this.flags.eSigned) && (val[1].substr(0, 1) == "-") && (num.toFixed && num.toPrecision)) {
if (isNaN(this.flags.places)) {
val[0] = num.toPrecision((1 / 3).toString().length - 1);
} else {
val[0] = num.toFixed(this.flags.places).toString();
}
val[1] = "0";
}
}
}
val[0] += "e" + val[1];
}
this.setValue(val[0]);
if (x > val[0].length) {
x = val[0].length;
}
return x;
}});
dojo.widget.defineWidget("dojo.widget.TimeSpinner", [dojo.widget.TimeTextbox, dojo.widget.Spinner], function () {
dojo.experimental("dojo.widget.TimeSpinner");
}, {postMixInProperties:function (args, frag) {
dojo.widget.TimeSpinner.superclass.postMixInProperties.apply(this, arguments);
this._spinnerPostMixInProperties(args, frag);
}, postCreate:function (args, frag) {
dojo.widget.TimeSpinner.superclass.postCreate.apply(this, arguments);
this._spinnerPostCreate(args, frag);
}, adjustValue:function (direction, x) {
var val = this.getValue();
var format = (this.flags.format && this.flags.format.search(/[Hhmst]/) >= 0) ? this.flags.format : "hh:mm:ss t";
if (direction == 0 || !val.length || !this.isValid()) {
return;
}
if (!this.flags.amSymbol) {
this.flags.amSymbol = "AM";
}
if (!this.flags.pmSymbol) {
this.flags.pmSymbol = "PM";
}
var re = dojo.regexp.time(this.flags);
var qualifiers = format.replace(/H/g, "h").replace(/[^hmst]/g, "").replace(/([hmst])\1/g, "$1");
var hourPos = qualifiers.indexOf("h") + 1;
var minPos = qualifiers.indexOf("m") + 1;
var secPos = qualifiers.indexOf("s") + 1;
var ampmPos = qualifiers.indexOf("t") + 1;
var cursorFormat = format;
var ampm = "";
if (ampmPos > 0) {
ampm = val.replace(new RegExp(re), "$" + ampmPos);
cursorFormat = cursorFormat.replace(/t+/, ampm.replace(/./g, "t"));
}
var hour = 0;
var deltaHour = 1;
if (hourPos > 0) {
hour = val.replace(new RegExp(re), "$" + hourPos);
if (dojo.lang.isString(this.delta)) {
deltaHour = this.delta.replace(new RegExp(re), "$" + hourPos);
}
if (isNaN(deltaHour)) {
deltaHour = 1;
} else {
deltaHour = parseInt(deltaHour);
}
if (hour.length == 2) {
cursorFormat = cursorFormat.replace(/([Hh])+/, "$1$1");
} else {
cursorFormat = cursorFormat.replace(/([Hh])+/, "$1");
}
if (isNaN(hour)) {
hour = 0;
} else {
hour = parseInt(hour.replace(/^0(\d)/, "$1"));
}
}
var min = 0;
var deltaMin = 1;
if (minPos > 0) {
min = val.replace(new RegExp(re), "$" + minPos);
if (dojo.lang.isString(this.delta)) {
deltaMin = this.delta.replace(new RegExp(re), "$" + minPos);
}
if (isNaN(deltaMin)) {
deltaMin = 1;
} else {
deltaMin = parseInt(deltaMin);
}
cursorFormat = cursorFormat.replace(/m+/, min.replace(/./g, "m"));
if (isNaN(min)) {
min = 0;
} else {
min = parseInt(min.replace(/^0(\d)/, "$1"));
}
}
var sec = 0;
var deltaSec = 1;
if (secPos > 0) {
sec = val.replace(new RegExp(re), "$" + secPos);
if (dojo.lang.isString(this.delta)) {
deltaSec = this.delta.replace(new RegExp(re), "$" + secPos);
}
if (isNaN(deltaSec)) {
deltaSec = 1;
} else {
deltaSec = parseInt(deltaSec);
}
cursorFormat = cursorFormat.replace(/s+/, sec.replace(/./g, "s"));
if (isNaN(sec)) {
sec = 0;
} else {
sec = parseInt(sec.replace(/^0(\d)/, "$1"));
}
}
if (isNaN(x) || x >= cursorFormat.length) {
x = cursorFormat.length - 1;
}
var cursorToken = cursorFormat.charAt(x);
switch (cursorToken) {
case "t":
if (ampm == this.flags.amSymbol) {
ampm = this.flags.pmSymbol;
} else {
if (ampm == this.flags.pmSymbol) {
ampm = this.flags.amSymbol;
}
}
break;
default:
if (hour >= 1 && hour < 12 && ampm == this.flags.pmSymbol) {
hour += 12;
}
if (hour == 12 && ampm == this.flags.amSymbol) {
hour = 0;
}
switch (cursorToken) {
case "s":
sec += deltaSec * direction;
while (sec < 0) {
min--;
sec += 60;
}
while (sec >= 60) {
min++;
sec -= 60;
}
case "m":
if (cursorToken == "m") {
min += deltaMin * direction;
}
while (min < 0) {
hour--;
min += 60;
}
while (min >= 60) {
hour++;
min -= 60;
}
case "h":
case "H":
if (cursorToken == "h" || cursorToken == "H") {
hour += deltaHour * direction;
}
while (hour < 0) {
hour += 24;
}
while (hour >= 24) {
hour -= 24;
}
break;
default:
return;
}
if (hour >= 12) {
ampm = this.flags.pmSymbol;
if (format.indexOf("h") >= 0 && hour >= 13) {
hour -= 12;
}
} else {
ampm = this.flags.amSymbol;
if (format.indexOf("h") >= 0 && hour == 0) {
hour = 12;
}
}
}
cursorFormat = format;
if (hour >= 0 && hour < 10 && format.search(/[hH]{2}/) >= 0) {
hour = "0" + hour.toString();
}
if (hour >= 10 && cursorFormat.search(/[hH]{2}/) < 0) {
cursorFormat = cursorFormat.replace(/(h|H)/, "$1$1");
}
if (min >= 0 && min < 10 && cursorFormat.search(/mm/) >= 0) {
min = "0" + min.toString();
}
if (min >= 10 && cursorFormat.search(/mm/) < 0) {
cursorFormat = cursorFormat.replace(/m/, "$1$1");
}
if (sec >= 0 && sec < 10 && cursorFormat.search(/ss/) >= 0) {
sec = "0" + sec.toString();
}
if (sec >= 10 && cursorFormat.search(/ss/) < 0) {
cursorFormat = cursorFormat.replace(/s/, "$1$1");
}
x = cursorFormat.indexOf(cursorToken);
if (x == -1) {
x = format.length;
}
format = format.replace(/[hH]+/, hour);
format = format.replace(/m+/, min);
format = format.replace(/s+/, sec);
format = format.replace(/t/, ampm);
this.setValue(format);
if (x > format.length) {
x = format.length;
}
return x;
}});
 
/trunk/api/js/dojo/src/widget/ResizableTextarea.js
New file
0,0 → 1,33
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ResizableTextarea");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.LayoutContainer");
dojo.require("dojo.widget.ResizeHandle");
dojo.widget.defineWidget("dojo.widget.ResizableTextarea", dojo.widget.HtmlWidget, {templateString:"<div>\n\t<div style=\"border: 2px solid black; width: 90%; height: 200px;\"\n\t\tdojoAttachPoint=\"rootLayoutNode\">\n\t\t<div dojoAttachPoint=\"textAreaContainerNode\" \n\t\t\tstyle=\"border: 0px; margin: 0px; overflow: hidden;\">\n\t\t</div>\n\t\t<div dojoAttachPoint=\"statusBarContainerNode\" class=\"statusBar\">\n\t\t\t<div dojoAttachPoint=\"statusLabelNode\" \n\t\t\t\tclass=\"statusPanel\"\n\t\t\t\tstyle=\"padding-right: 0px; z-index: 1;\">drag to resize</div>\n\t\t\t<div dojoAttachPoint=\"resizeHandleNode\"></div>\n\t\t</div>\n\t</div>\n</div>\n", templateCssString:"div.statusBar {\n\tbackground-color: ThreeDFace;\n\theight: 28px;\n\tpadding: 1px;\n\toverflow: hidden;\n\tfont-size: 12px;\n}\n\ndiv.statusPanel {\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n\tmargin: 1px;\n\tpadding: 2px 6px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ResizableTextarea.css"), fillInTemplate:function (args, frag) {
this.textAreaNode = this.getFragNodeRef(frag).cloneNode(true);
dojo.body().appendChild(this.domNode);
this.rootLayout = dojo.widget.createWidget("LayoutContainer", {minHeight:50, minWidth:100}, this.rootLayoutNode);
this.textAreaContainer = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"client"}, this.textAreaContainerNode);
this.rootLayout.addChild(this.textAreaContainer);
this.textAreaContainer.domNode.appendChild(this.textAreaNode);
with (this.textAreaNode.style) {
width = "100%";
height = "100%";
}
this.statusBar = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"bottom", minHeight:28}, this.statusBarContainerNode);
this.rootLayout.addChild(this.statusBar);
this.statusLabel = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"client", minWidth:50}, this.statusLabelNode);
this.statusBar.addChild(this.statusLabel);
this.resizeHandle = dojo.widget.createWidget("ResizeHandle", {targetElmId:this.rootLayout.widgetId}, this.resizeHandleNode);
this.statusBar.addChild(this.resizeHandle);
}});
 
/trunk/api/js/dojo/src/widget/TreeBasicControllerV3.js
New file
0,0 → 1,459
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeBasicControllerV3");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeCommon");
dojo.require("dojo.widget.TreeNodeV3");
dojo.require("dojo.widget.TreeV3");
dojo.widget.defineWidget("dojo.widget.TreeBasicControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
this.listenedTrees = {};
}, {listenTreeEvents:["afterSetFolder", "afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
return elem instanceof dojo.widget.Widget;
}, editor:null, initialize:function (args) {
if (args.editor) {
this.editor = dojo.widget.byId(args.editor);
this.editor.controller = this;
}
}, getInfo:function (elem) {
return elem.getInfo();
}, onBeforeTreeDestroy:function (message) {
this.unlistenTree(message.source);
}, onAfterSetFolder:function (message) {
if (message.source.expandLevel > 0) {
this.expandToLevel(message.source, message.source.expandLevel);
}
if (message.source.loadLevel > 0) {
this.loadToLevel(message.source, message.source.loadLevel);
}
}, _focusNextVisible:function (nodeWidget) {
if (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {
returnWidget = nodeWidget.children[0];
} else {
while (nodeWidget.isTreeNode && nodeWidget.isLastChild()) {
nodeWidget = nodeWidget.parent;
}
if (nodeWidget.isTreeNode) {
var returnWidget = nodeWidget.parent.children[nodeWidget.getParentIndex() + 1];
}
}
if (returnWidget && returnWidget.isTreeNode) {
this._focusLabel(returnWidget);
return returnWidget;
}
}, _focusPreviousVisible:function (nodeWidget) {
var returnWidget = nodeWidget;
if (!nodeWidget.isFirstChild()) {
var previousSibling = nodeWidget.parent.children[nodeWidget.getParentIndex() - 1];
nodeWidget = previousSibling;
while (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {
returnWidget = nodeWidget;
nodeWidget = nodeWidget.children[nodeWidget.children.length - 1];
}
} else {
nodeWidget = nodeWidget.parent;
}
if (nodeWidget && nodeWidget.isTreeNode) {
returnWidget = nodeWidget;
}
if (returnWidget && returnWidget.isTreeNode) {
this._focusLabel(returnWidget);
return returnWidget;
}
}, _focusZoomIn:function (nodeWidget) {
var returnWidget = nodeWidget;
if (nodeWidget.isFolder && !nodeWidget.isExpanded) {
this.expand(nodeWidget);
} else {
if (nodeWidget.children.length > 0) {
nodeWidget = nodeWidget.children[0];
}
}
if (nodeWidget && nodeWidget.isTreeNode) {
returnWidget = nodeWidget;
}
if (returnWidget && returnWidget.isTreeNode) {
this._focusLabel(returnWidget);
return returnWidget;
}
}, _focusZoomOut:function (node) {
var returnWidget = node;
if (node.isFolder && node.isExpanded) {
this.collapse(node);
} else {
node = node.parent;
}
if (node && node.isTreeNode) {
returnWidget = node;
}
if (returnWidget && returnWidget.isTreeNode) {
this._focusLabel(returnWidget);
return returnWidget;
}
}, onFocusNode:function (e) {
var node = this.domElement2TreeNode(e.target);
if (node) {
node.viewFocus();
dojo.event.browser.stopEvent(e);
}
}, onBlurNode:function (e) {
var node = this.domElement2TreeNode(e.target);
if (!node) {
return;
}
var labelNode = node.labelNode;
labelNode.setAttribute("tabIndex", "-1");
node.viewUnfocus();
dojo.event.browser.stopEvent(e);
node.tree.domNode.setAttribute("tabIndex", "0");
}, _focusLabel:function (node) {
var lastFocused = node.tree.lastFocused;
var labelNode;
if (lastFocused && lastFocused.labelNode) {
labelNode = lastFocused.labelNode;
dojo.event.disconnect(labelNode, "onblur", this, "onBlurNode");
labelNode.setAttribute("tabIndex", "-1");
dojo.html.removeClass(labelNode, "TreeLabelFocused");
}
labelNode = node.labelNode;
labelNode.setAttribute("tabIndex", "0");
node.tree.lastFocused = node;
dojo.html.addClass(labelNode, "TreeLabelFocused");
dojo.event.connectOnce(labelNode, "onblur", this, "onBlurNode");
dojo.event.connectOnce(labelNode, "onfocus", this, "onFocusNode");
labelNode.focus();
}, onKey:function (e) {
if (!e.key || e.ctrkKey || e.altKey) {
return;
}
var nodeWidget = this.domElement2TreeNode(e.target);
if (!nodeWidget) {
return;
}
var treeWidget = nodeWidget.tree;
if (treeWidget.lastFocused && treeWidget.lastFocused.labelNode) {
nodeWidget = treeWidget.lastFocused;
}
switch (e.key) {
case e.KEY_TAB:
if (e.shiftKey) {
treeWidget.domNode.setAttribute("tabIndex", "-1");
}
break;
case e.KEY_RIGHT_ARROW:
this._focusZoomIn(nodeWidget);
dojo.event.browser.stopEvent(e);
break;
case e.KEY_LEFT_ARROW:
this._focusZoomOut(nodeWidget);
dojo.event.browser.stopEvent(e);
break;
case e.KEY_UP_ARROW:
this._focusPreviousVisible(nodeWidget);
dojo.event.browser.stopEvent(e);
break;
case e.KEY_DOWN_ARROW:
this._focusNextVisible(nodeWidget);
dojo.event.browser.stopEvent(e);
break;
}
}, onFocusTree:function (e) {
if (!e.currentTarget) {
return;
}
try {
var treeWidget = this.getWidgetByNode(e.currentTarget);
if (!treeWidget || !treeWidget.isTree) {
return;
}
var nodeWidget = this.getWidgetByNode(treeWidget.domNode.firstChild);
if (nodeWidget && nodeWidget.isTreeNode) {
if (treeWidget.lastFocused && treeWidget.lastFocused.isTreeNode) {
nodeWidget = treeWidget.lastFocused;
}
this._focusLabel(nodeWidget);
}
}
catch (e) {
}
}, onAfterTreeCreate:function (message) {
var tree = message.source;
dojo.event.browser.addListener(tree.domNode, "onKey", dojo.lang.hitch(this, this.onKey));
dojo.event.browser.addListener(tree.domNode, "onmousedown", dojo.lang.hitch(this, this.onTreeMouseDown));
dojo.event.browser.addListener(tree.domNode, "onclick", dojo.lang.hitch(this, this.onTreeClick));
dojo.event.browser.addListener(tree.domNode, "onfocus", dojo.lang.hitch(this, this.onFocusTree));
tree.domNode.setAttribute("tabIndex", "0");
if (tree.expandLevel) {
this.expandToLevel(tree, tree.expandLevel);
}
if (tree.loadLevel) {
this.loadToLevel(tree, tree.loadLevel);
}
}, onTreeMouseDown:function (e) {
}, onTreeClick:function (e) {
var domElement = e.target;
var node = this.domElement2TreeNode(domElement);
if (!node || !node.isTreeNode) {
return;
}
var checkExpandClick = function (el) {
return el === node.expandNode;
};
if (this.checkPathCondition(domElement, checkExpandClick)) {
this.processExpandClick(node);
}
this._focusLabel(node);
}, processExpandClick:function (node) {
if (node.isExpanded) {
this.collapse(node);
} else {
this.expand(node);
}
}, batchExpandTimeout:20, expandAll:function (nodeOrTree) {
return this.expandToLevel(nodeOrTree, Number.POSITIVE_INFINITY);
}, collapseAll:function (nodeOrTree) {
var _this = this;
var filter = function (elem) {
return (elem instanceof dojo.widget.Widget) && elem.isFolder && elem.isExpanded;
};
if (nodeOrTree.isTreeNode) {
this.processDescendants(nodeOrTree, filter, this.collapse);
} else {
if (nodeOrTree.isTree) {
dojo.lang.forEach(nodeOrTree.children, function (c) {
_this.processDescendants(c, filter, _this.collapse);
});
}
}
}, expandToNode:function (node, withSelected) {
n = withSelected ? node : node.parent;
s = [];
while (!n.isExpanded) {
s.push(n);
n = n.parent;
}
dojo.lang.forEach(s, function (n) {
n.expand();
});
}, expandToLevel:function (nodeOrTree, level) {
dojo.require("dojo.widget.TreeTimeoutIterator");
var _this = this;
var filterFunc = function (elem) {
var res = elem.isFolder || elem.children && elem.children.length;
return res;
};
var callFunc = function (node, iterator) {
_this.expand(node, true);
iterator.forward();
};
var iterator = new dojo.widget.TreeTimeoutIterator(nodeOrTree, callFunc, this);
iterator.setFilter(filterFunc);
iterator.timeout = this.batchExpandTimeout;
iterator.setMaxLevel(nodeOrTree.isTreeNode ? level - 1 : level);
return iterator.start(nodeOrTree.isTreeNode);
}, getWidgetByNode:function (node) {
var widgetId;
var newNode = node;
while (!(widgetId = newNode.widgetId)) {
newNode = newNode.parentNode;
if (newNode == null) {
break;
}
}
if (widgetId) {
return dojo.widget.byId(widgetId);
} else {
if (node == null) {
return null;
} else {
return dojo.widget.manager.byNode(node);
}
}
}, expand:function (node) {
if (node.isFolder) {
node.expand();
}
}, collapse:function (node) {
if (node.isFolder) {
node.collapse();
}
}, canEditLabel:function (node) {
if (node.actionIsDisabledNow(node.actions.EDIT)) {
return false;
}
return true;
}, editLabelStart:function (node) {
if (!this.canEditLabel(node)) {
return false;
}
if (!this.editor.isClosed()) {
this.editLabelFinish(this.editor.saveOnBlur);
}
this.doEditLabelStart(node);
}, editLabelFinish:function (save) {
this.doEditLabelFinish(save);
}, doEditLabelStart:function (node) {
if (!this.editor) {
dojo.raise(this.widgetType + ": no editor specified");
}
this.editor.open(node);
}, doEditLabelFinish:function (save, server_data) {
if (!this.editor) {
dojo.raise(this.widgetType + ": no editor specified");
}
var node = this.editor.node;
var editorTitle = this.editor.getContents();
this.editor.close(save);
if (save) {
var data = {title:editorTitle};
if (server_data) {
dojo.lang.mixin(data, server_data);
}
if (node.isPhantom) {
var parent = node.parent;
var index = node.getParentIndex();
node.destroy();
dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);
} else {
var title = server_data && server_data.title ? server_data.title : editorTitle;
node.setTitle(title);
}
} else {
if (node.isPhantom) {
node.destroy();
}
}
}, makeDefaultNode:function (parent, index) {
var data = {title:parent.tree.defaultChildTitle};
return dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);
}, runStages:function (check, prepare, make, finalize, expose, args) {
if (check && !check.apply(this, args)) {
return false;
}
if (prepare && !prepare.apply(this, args)) {
return false;
}
var result = make.apply(this, args);
if (finalize) {
finalize.apply(this, args);
}
if (!result) {
return result;
}
if (expose) {
expose.apply(this, args);
}
return result;
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {createAndEdit:function (parent, index) {
var data = {title:parent.tree.defaultChildTitle};
if (!this.canCreateChild(parent, index, data)) {
return false;
}
var child = this.doCreateChild(parent, index, data);
if (!child) {
return false;
}
this.exposeCreateChild(parent, index, data);
child.isPhantom = true;
if (!this.editor.isClosed()) {
this.editLabelFinish(this.editor.saveOnBlur);
}
this.doEditLabelStart(child);
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canClone:function (child, newParent, index, deep) {
return true;
}, clone:function (child, newParent, index, deep) {
return this.runStages(this.canClone, this.prepareClone, this.doClone, this.finalizeClone, this.exposeClone, arguments);
}, exposeClone:function (child, newParent) {
if (newParent.isTreeNode) {
this.expand(newParent);
}
}, doClone:function (child, newParent, index, deep) {
var cloned = child.clone(deep);
newParent.addChild(cloned, index);
return cloned;
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDetach:function (child) {
if (child.actionIsDisabledNow(child.actions.DETACH)) {
return false;
}
return true;
}, detach:function (node) {
return this.runStages(this.canDetach, this.prepareDetach, this.doDetach, this.finalizeDetach, this.exposeDetach, arguments);
}, doDetach:function (node, callObj, callFunc) {
node.detach();
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDestroyChild:function (child) {
if (child.parent && !this.canDetach(child)) {
return false;
}
return true;
}, destroyChild:function (node) {
return this.runStages(this.canDestroyChild, this.prepareDestroyChild, this.doDestroyChild, this.finalizeDestroyChild, this.exposeDestroyChild, arguments);
}, doDestroyChild:function (node) {
node.destroy();
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canMoveNotANode:function (child, parent) {
if (child.treeCanMove) {
return child.treeCanMove(parent);
}
return true;
}, canMove:function (child, newParent) {
if (!child.isTreeNode) {
return this.canMoveNotANode(child, newParent);
}
if (child.actionIsDisabledNow(child.actions.MOVE)) {
return false;
}
if (child.parent !== newParent && newParent.actionIsDisabledNow(newParent.actions.ADDCHILD)) {
return false;
}
var node = newParent;
while (node.isTreeNode) {
if (node === child) {
return false;
}
node = node.parent;
}
return true;
}, move:function (child, newParent, index) {
return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);
}, doMove:function (child, newParent, index) {
child.tree.move(child, newParent, index);
return true;
}, exposeMove:function (child, newParent) {
if (newParent.isTreeNode) {
this.expand(newParent);
}
}});
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canCreateChild:function (parent, index, data) {
if (parent.actionIsDisabledNow(parent.actions.ADDCHILD)) {
return false;
}
return true;
}, createChild:function (parent, index, data) {
if (!data) {
data = {title:parent.tree.defaultChildTitle};
}
return this.runStages(this.canCreateChild, this.prepareCreateChild, this.doCreateChild, this.finalizeCreateChild, this.exposeCreateChild, [parent, index, data]);
}, prepareCreateChild:function () {
return true;
}, finalizeCreateChild:function () {
}, doCreateChild:function (parent, index, data) {
var newChild = parent.tree.createNode(data);
parent.addChild(newChild, index);
return newChild;
}, exposeCreateChild:function (parent) {
return this.expand(parent);
}});
 
/trunk/api/js/dojo/src/widget/LayoutContainer.js
New file
0,0 → 1,32
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.LayoutContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.html.layout");
dojo.widget.defineWidget("dojo.widget.LayoutContainer", dojo.widget.HtmlWidget, {isContainer:true, layoutChildPriority:"top-bottom", postCreate:function () {
dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
}, addChild:function (child, overrideContainerNode, pos, ref, insertIndex) {
dojo.widget.LayoutContainer.superclass.addChild.call(this, child, overrideContainerNode, pos, ref, insertIndex);
dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
}, removeChild:function (pane) {
dojo.widget.LayoutContainer.superclass.removeChild.call(this, pane);
dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
}, onResized:function () {
dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
}, show:function () {
this.domNode.style.display = "";
this.checkSize();
this.domNode.style.display = "none";
this.domNode.style.visibility = "";
dojo.widget.LayoutContainer.superclass.show.call(this);
}});
dojo.lang.extend(dojo.widget.Widget, {layoutAlign:"none"});
 
/trunk/api/js/dojo/src/widget/Menu2.js
New file
0,0 → 1,453
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Menu2");
dojo.require("dojo.widget.PopupContainer");
dojo.declare("dojo.widget.MenuBase", null, function () {
this.eventNames = {open:""};
}, {isContainer:true, isMenu:true, eventNaming:"default", templateCssString:"\n.dojoPopupMenu2 {\n\tposition: absolute;\n\tborder: 1px solid #7298d0;\n\tbackground:#85aeec url(images/soriaMenuBg.gif) repeat-x bottom left !important;\n\tpadding: 1px;\n\tmargin-top: 1px;\n\tmargin-bottom: 1px;\n}\n\n.dojoMenuItem2{\n\twhite-space: nowrap;\n\tfont: menu;\n\tmargin: 0;\n}\n\n.dojoMenuItem2Hover {\n\tbackground-color: #D2E4FD;\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n.dojoMenuItem2Icon {\n\tposition: relative;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\twidth: 16px;\n\theight: 16px;\n\tpadding-right: 3px;\n}\n\n.dojoMenuItem2Label {\n\tposition: relative;\n\tvertical-align: middle;\n}\n\n/* main label text */\n.dojoMenuItem2Label {\n\tposition: relative;\n\tvertical-align: middle;\n}\n\n.dojoMenuItem2Accel {\n\tposition: relative;\n\tvertical-align: middle;\n\tpadding-left: 3px;\n}\n\n.dojoMenuItem2Disabled .dojoMenuItem2Label,\n.dojoMenuItem2Disabled .dojoMenuItem2Accel {\n\tcolor: #607a9e;\n}\n\n.dojoMenuItem2Submenu {\n\tposition: relative;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-image: url(images/submenu_off.gif);\n\twidth: 5px;\n\theight: 9px;\n\tpadding-left: 3px;\n}\n.dojoMenuItem2Hover .dojoMenuItem2Submenu {\n\tbackground-image: url(images/submenu_on.gif);\n}\n\n.dojoMenuItem2Disabled .dojoMenuItem2Submenu {\n\tbackground-image: url(images/submenu_disabled.gif);\n}\n\n.dojoMenuSeparator2 {\n\tfont-size: 1px;\n\tmargin: 0;\n}\n\n.dojoMenuSeparator2Top {\n\theight: 50%;\n\tborder-bottom: 1px solid #7a98c4;\n\tmargin: 0px 2px;\n\tfont-size: 1px;\n}\n\n.dojoMenuSeparator2Bottom {\n\theight: 50%;\n\tborder-top: 1px solid #c9deff;\n\tmargin: 0px 2px;\n\tfont-size: 1px;\n}\n\n.dojoMenuBar2 {\n\tbackground:#85aeec url(images/soriaBarBg.gif) repeat-x top left;\n\t/*border-bottom:1px solid #6b9fec;*/\n\tpadding: 1px;\n}\n\n.dojoMenuBar2 .dojoMenuItem2 {\n\twhite-space: nowrap;\n\tfont: menu;\n\tmargin: 0;\n\tposition: relative;\n\tvertical-align: middle;\n\tz-index: 1;\n\tpadding: 3px 8px;\n\tdisplay: inline;/* needed in khtml to display correctly */\n\tdisplay: -moz-inline-box;/* needed in firefox */\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n.dojoMenuBar2 .dojoMenuItem2Hover {\n\tbackground-color:#d2e4fd;\n}\n\n.dojoMenuBar2 .dojoMenuItem2Disabled span {\n\tcolor: #4f6582;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Menu2.css"), submenuDelay:500, initialize:function (args, frag) {
if (this.eventNaming == "default") {
for (var eventName in this.eventNames) {
this.eventNames[eventName] = this.widgetId + "/" + eventName;
}
}
}, _moveToNext:function (evt) {
this._highlightOption(1);
return true;
}, _moveToPrevious:function (evt) {
this._highlightOption(-1);
return true;
}, _moveToParentMenu:function (evt) {
if (this._highlighted_option && this.parentMenu) {
if (evt._menu2UpKeyProcessed) {
return true;
} else {
this._highlighted_option.onUnhover();
this.closeSubmenu();
evt._menu2UpKeyProcessed = true;
}
}
return false;
}, _moveToChildMenu:function (evt) {
if (this._highlighted_option && this._highlighted_option.submenuId) {
this._highlighted_option._onClick(true);
return true;
}
return false;
}, _selectCurrentItem:function (evt) {
if (this._highlighted_option) {
this._highlighted_option._onClick();
return true;
}
return false;
}, processKey:function (evt) {
if (evt.ctrlKey || evt.altKey || !evt.key) {
return false;
}
var rval = false;
switch (evt.key) {
case evt.KEY_DOWN_ARROW:
rval = this._moveToNext(evt);
break;
case evt.KEY_UP_ARROW:
rval = this._moveToPrevious(evt);
break;
case evt.KEY_RIGHT_ARROW:
rval = this._moveToChildMenu(evt);
break;
case evt.KEY_LEFT_ARROW:
rval = this._moveToParentMenu(evt);
break;
case " ":
case evt.KEY_ENTER:
if (rval = this._selectCurrentItem(evt)) {
break;
}
case evt.KEY_ESCAPE:
case evt.KEY_TAB:
this.close(true);
rval = true;
break;
}
return rval;
}, _findValidItem:function (dir, curItem) {
if (curItem) {
curItem = dir > 0 ? curItem.getNextSibling() : curItem.getPreviousSibling();
}
for (var i = 0; i < this.children.length; ++i) {
if (!curItem) {
curItem = dir > 0 ? this.children[0] : this.children[this.children.length - 1];
}
if (curItem.onHover && curItem.isShowing()) {
return curItem;
}
curItem = dir > 0 ? curItem.getNextSibling() : curItem.getPreviousSibling();
}
}, _highlightOption:function (dir) {
var item;
if ((!this._highlighted_option)) {
item = this._findValidItem(dir);
} else {
item = this._findValidItem(dir, this._highlighted_option);
}
if (item) {
if (this._highlighted_option) {
this._highlighted_option.onUnhover();
}
item.onHover();
dojo.html.scrollIntoView(item.domNode);
try {
var node = dojo.html.getElementsByClass("dojoMenuItem2Label", item.domNode)[0];
node.focus();
}
catch (e) {
}
}
}, onItemClick:function (item) {
}, closeSubmenu:function (force) {
if (this.currentSubmenu == null) {
return;
}
this.currentSubmenu.close(force);
this.currentSubmenu = null;
this.currentSubmenuTrigger.is_open = false;
this.currentSubmenuTrigger._closedSubmenu(force);
this.currentSubmenuTrigger = null;
}});
dojo.widget.defineWidget("dojo.widget.PopupMenu2", [dojo.widget.HtmlWidget, dojo.widget.PopupContainerBase, dojo.widget.MenuBase], function () {
this.targetNodeIds = [];
}, {templateString:"<table class=\"dojoPopupMenu2\" border=0 cellspacing=0 cellpadding=0 style=\"display: none; position: absolute;\">" + "<tbody dojoAttachPoint=\"containerNode\"></tbody>" + "</table>", submenuOverlap:5, contextMenuForWindow:false, parentMenu:null, postCreate:function () {
if (this.contextMenuForWindow) {
var doc = dojo.body();
this.bindDomNode(doc);
} else {
if (this.targetNodeIds.length > 0) {
dojo.lang.forEach(this.targetNodeIds, this.bindDomNode, this);
}
}
this._subscribeSubitemsOnOpen();
}, _subscribeSubitemsOnOpen:function () {
var subItems = this.getChildrenOfType(dojo.widget.MenuItem2);
for (var i = 0; i < subItems.length; i++) {
dojo.event.topic.subscribe(this.eventNames.open, subItems[i], "menuOpen");
}
}, getTopOpenEvent:function () {
var menu = this;
while (menu.parentMenu) {
menu = menu.parentMenu;
}
return menu.openEvent;
}, bindDomNode:function (node) {
node = dojo.byId(node);
var win = dojo.html.getElementWindow(node);
if (dojo.html.isTag(node, "iframe") == "iframe") {
win = dojo.html.iframeContentWindow(node);
node = dojo.withGlobal(win, dojo.body);
}
dojo.widget.Menu2.OperaAndKonqFixer.fixNode(node);
dojo.event.kwConnect({srcObj:node, srcFunc:"oncontextmenu", targetObj:this, targetFunc:"onOpen", once:true});
if (dojo.render.html.moz && win.document.designMode.toLowerCase() == "on") {
dojo.event.browser.addListener(node, "contextmenu", dojo.lang.hitch(this, "onOpen"));
}
dojo.widget.PopupManager.registerWin(win);
}, unBindDomNode:function (nodeName) {
var node = dojo.byId(nodeName);
dojo.event.kwDisconnect({srcObj:node, srcFunc:"oncontextmenu", targetObj:this, targetFunc:"onOpen", once:true});
dojo.widget.Menu2.OperaAndKonqFixer.cleanNode(node);
}, _openAsSubmenu:function (parent, explodeSrc, orient) {
if (this.isShowingNow) {
return;
}
this.parentMenu = parent;
this.open(explodeSrc, parent, explodeSrc, orient);
}, close:function (force) {
if (this.animationInProgress) {
dojo.widget.PopupContainerBase.prototype.close.call(this, force);
return;
}
if (this._highlighted_option) {
this._highlighted_option.onUnhover();
}
dojo.widget.PopupContainerBase.prototype.close.call(this, force);
this.parentMenu = null;
}, closeAll:function (force) {
if (this.parentMenu) {
this.parentMenu.closeAll(force);
} else {
this.close(force);
}
}, _openSubmenu:function (submenu, from_item) {
submenu._openAsSubmenu(this, from_item.arrow, {"TR":"TL", "TL":"TR"});
this.currentSubmenu = submenu;
this.currentSubmenuTrigger = from_item;
this.currentSubmenuTrigger.is_open = true;
}, focus:function () {
if (this.currentSubmenuTrigger) {
if (this.currentSubmenuTrigger.caption) {
try {
this.currentSubmenuTrigger.caption.focus();
}
catch (e) {
}
} else {
try {
this.currentSubmenuTrigger.domNode.focus();
}
catch (e) {
}
}
}
}, onOpen:function (e) {
this.openEvent = e;
if (e["target"]) {
this.openedForWindow = dojo.html.getElementWindow(e.target);
} else {
this.openedForWindow = null;
}
var x = e.pageX, y = e.pageY;
var win = dojo.html.getElementWindow(e.target);
var iframe = win._frameElement || win.frameElement;
if (iframe) {
var cood = dojo.html.abs(iframe, true);
x += cood.x - dojo.withGlobal(win, dojo.html.getScroll).left;
y += cood.y - dojo.withGlobal(win, dojo.html.getScroll).top;
}
this.open(x, y, null, [x, y]);
dojo.event.browser.stopEvent(e);
}});
dojo.widget.defineWidget("dojo.widget.MenuItem2", dojo.widget.HtmlWidget, function () {
this.eventNames = {engage:""};
}, {templateString:"<tr class=\"dojoMenuItem2\" dojoAttachEvent=\"onMouseOver: onHover; onMouseOut: onUnhover; onClick: _onClick; onKey:onKey;\">" + "<td><div class=\"${this.iconClass}\" style=\"${this.iconStyle}\"></div></td>" + "<td tabIndex=\"-1\" class=\"dojoMenuItem2Label\" dojoAttachPoint=\"caption\">${this.caption}</td>" + "<td class=\"dojoMenuItem2Accel\">${this.accelKey}</td>" + "<td><div class=\"dojoMenuItem2Submenu\" style=\"display:${this.arrowDisplay};\" dojoAttachPoint=\"arrow\"></div></td>" + "</tr>", is_hovering:false, hover_timer:null, is_open:false, topPosition:0, caption:"Untitled", accelKey:"", iconSrc:"", disabledClass:"dojoMenuItem2Disabled", iconClass:"dojoMenuItem2Icon", submenuId:"", eventNaming:"default", highlightClass:"dojoMenuItem2Hover", postMixInProperties:function () {
this.iconStyle = "";
if (this.iconSrc) {
if ((this.iconSrc.toLowerCase().substring(this.iconSrc.length - 4) == ".png") && (dojo.render.html.ie55 || dojo.render.html.ie60)) {
this.iconStyle = "filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.iconSrc + "', sizingMethod='image')";
} else {
this.iconStyle = "background-image: url(" + this.iconSrc + ")";
}
}
this.arrowDisplay = this.submenuId ? "block" : "none";
dojo.widget.MenuItem2.superclass.postMixInProperties.apply(this, arguments);
}, fillInTemplate:function () {
dojo.html.disableSelection(this.domNode);
if (this.disabled) {
this.setDisabled(true);
}
if (this.eventNaming == "default") {
for (var eventName in this.eventNames) {
this.eventNames[eventName] = this.widgetId + "/" + eventName;
}
}
}, onHover:function () {
this.onUnhover();
if (this.is_hovering) {
return;
}
if (this.is_open) {
return;
}
if (this.parent._highlighted_option) {
this.parent._highlighted_option.onUnhover();
}
this.parent.closeSubmenu();
this.parent._highlighted_option = this;
dojo.widget.PopupManager.setFocusedMenu(this.parent);
this._highlightItem();
if (this.is_hovering) {
this._stopSubmenuTimer();
}
this.is_hovering = true;
this._startSubmenuTimer();
}, onUnhover:function () {
if (!this.is_open) {
this._unhighlightItem();
}
this.is_hovering = false;
this.parent._highlighted_option = null;
if (this.parent.parentMenu) {
dojo.widget.PopupManager.setFocusedMenu(this.parent.parentMenu);
}
this._stopSubmenuTimer();
}, _onClick:function (focus) {
var displayingSubMenu = false;
if (this.disabled) {
return false;
}
if (this.submenuId) {
if (!this.is_open) {
this._stopSubmenuTimer();
this._openSubmenu();
}
displayingSubMenu = true;
} else {
this.onUnhover();
this.parent.closeAll(true);
}
this.onClick();
dojo.event.topic.publish(this.eventNames.engage, this);
if (displayingSubMenu && focus) {
dojo.widget.getWidgetById(this.submenuId)._highlightOption(1);
}
return;
}, onClick:function () {
this.parent.onItemClick(this);
}, _highlightItem:function () {
dojo.html.addClass(this.domNode, this.highlightClass);
}, _unhighlightItem:function () {
dojo.html.removeClass(this.domNode, this.highlightClass);
}, _startSubmenuTimer:function () {
this._stopSubmenuTimer();
if (this.disabled) {
return;
}
var self = this;
var closure = function () {
return function () {
self._openSubmenu();
};
}();
this.hover_timer = dojo.lang.setTimeout(closure, this.parent.submenuDelay);
}, _stopSubmenuTimer:function () {
if (this.hover_timer) {
dojo.lang.clearTimeout(this.hover_timer);
this.hover_timer = null;
}
}, _openSubmenu:function () {
if (this.disabled) {
return;
}
this.parent.closeSubmenu();
var submenu = dojo.widget.getWidgetById(this.submenuId);
if (submenu) {
this.parent._openSubmenu(submenu, this);
}
}, _closedSubmenu:function () {
this.onUnhover();
}, setDisabled:function (value) {
this.disabled = value;
if (this.disabled) {
dojo.html.addClass(this.domNode, this.disabledClass);
} else {
dojo.html.removeClass(this.domNode, this.disabledClass);
}
}, enable:function () {
this.setDisabled(false);
}, disable:function () {
this.setDisabled(true);
}, menuOpen:function (message) {
}});
dojo.widget.defineWidget("dojo.widget.MenuSeparator2", dojo.widget.HtmlWidget, {templateString:"<tr class=\"dojoMenuSeparator2\"><td colspan=4>" + "<div class=\"dojoMenuSeparator2Top\"></div>" + "<div class=\"dojoMenuSeparator2Bottom\"></div>" + "</td></tr>", postCreate:function () {
dojo.html.disableSelection(this.domNode);
}});
dojo.widget.defineWidget("dojo.widget.MenuBar2", [dojo.widget.HtmlWidget, dojo.widget.MenuBase], {menuOverlap:2, templateString:"<div class=\"dojoMenuBar2\" dojoAttachPoint=\"containerNode\" tabIndex=\"0\"></div>", close:function (force) {
if (this._highlighted_option) {
this._highlighted_option.onUnhover();
}
this.closeSubmenu(force);
}, closeAll:function (force) {
this.close(force);
}, processKey:function (evt) {
if (evt.ctrlKey || evt.altKey) {
return false;
}
var rval = false;
switch (evt.key) {
case evt.KEY_DOWN_ARROW:
rval = this._moveToChildMenu(evt);
break;
case evt.KEY_UP_ARROW:
rval = this._moveToParentMenu(evt);
break;
case evt.KEY_RIGHT_ARROW:
rval = this._moveToNext(evt);
break;
case evt.KEY_LEFT_ARROW:
rval = this._moveToPrevious(evt);
break;
default:
rval = dojo.widget.MenuBar2.superclass.processKey.apply(this, arguments);
break;
}
return rval;
}, postCreate:function () {
dojo.widget.MenuBar2.superclass.postCreate.apply(this, arguments);
this.isShowingNow = true;
}, _openSubmenu:function (submenu, from_item) {
submenu._openAsSubmenu(this, from_item.domNode, {"BL":"TL", "TL":"BL"});
this.currentSubmenu = submenu;
this.currentSubmenuTrigger = from_item;
this.currentSubmenuTrigger.is_open = true;
}});
dojo.widget.defineWidget("dojo.widget.MenuBarItem2", dojo.widget.MenuItem2, {templateString:"<span class=\"dojoMenuItem2\" dojoAttachEvent=\"onMouseOver: onHover; onMouseOut: onUnhover; onClick: _onClick;\">${this.caption}</span>"});
dojo.widget.Menu2.OperaAndKonqFixer = new function () {
var implement = true;
var delfunc = false;
if (!dojo.lang.isFunction(dojo.doc().oncontextmenu)) {
dojo.doc().oncontextmenu = function () {
implement = false;
delfunc = true;
};
}
if (dojo.doc().createEvent) {
try {
var e = dojo.doc().createEvent("MouseEvents");
e.initMouseEvent("contextmenu", 1, 1, dojo.global(), 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, null);
dojo.doc().dispatchEvent(e);
}
catch (e) {
}
} else {
implement = false;
}
if (delfunc) {
delete dojo.doc().oncontextmenu;
}
this.fixNode = function (node) {
if (implement) {
if (!dojo.lang.isFunction(node.oncontextmenu)) {
node.oncontextmenu = function (e) {
};
}
if (dojo.render.html.opera) {
node._menufixer_opera = function (e) {
if (e.ctrlKey) {
this.oncontextmenu(e);
}
};
dojo.event.connect(node, "onclick", node, "_menufixer_opera");
} else {
node._menufixer_konq = function (e) {
if (e.button == 2) {
e.preventDefault();
this.oncontextmenu(e);
}
};
dojo.event.connect(node, "onmousedown", node, "_menufixer_konq");
}
}
};
this.cleanNode = function (node) {
if (implement) {
if (node._menufixer_opera) {
dojo.event.disconnect(node, "onclick", node, "_menufixer_opera");
delete node._menufixer_opera;
} else {
if (node._menufixer_konq) {
dojo.event.disconnect(node, "onmousedown", node, "_menufixer_konq");
delete node._menufixer_konq;
}
}
if (node.oncontextmenu) {
delete node.oncontextmenu;
}
}
};
};
 
/trunk/api/js/dojo/src/widget/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.xml.Parse", "dojo.widget.Widget", "dojo.widget.Parse", "dojo.widget.Manager"], browser:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], dashboard:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], svg:["dojo.widget.SvgWidget"], rhino:["dojo.widget.SwtWidget"]});
dojo.provide("dojo.widget.*");
 
/trunk/api/js/dojo/src/widget/AnimatedPng.js
New file
0,0 → 1,45
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.AnimatedPng");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.AnimatedPng", dojo.widget.HtmlWidget, {isContainer:false, width:0, height:0, aniSrc:"", interval:100, _blankSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), templateString:"<img class=\"dojoAnimatedPng\" />", postCreate:function () {
this.cellWidth = this.width;
this.cellHeight = this.height;
var img = new Image();
var self = this;
img.onload = function () {
self._initAni(img.width, img.height);
};
img.src = this.aniSrc;
}, _initAni:function (w, h) {
this.domNode.src = this._blankSrc;
this.domNode.width = this.cellWidth;
this.domNode.height = this.cellHeight;
this.domNode.style.backgroundImage = "url(" + this.aniSrc + ")";
this.domNode.style.backgroundRepeat = "no-repeat";
this.aniCols = Math.floor(w / this.cellWidth);
this.aniRows = Math.floor(h / this.cellHeight);
this.aniCells = this.aniCols * this.aniRows;
this.aniFrame = 0;
window.setInterval(dojo.lang.hitch(this, "_tick"), this.interval);
}, _tick:function () {
this.aniFrame++;
if (this.aniFrame == this.aniCells) {
this.aniFrame = 0;
}
var col = this.aniFrame % this.aniCols;
var row = Math.floor(this.aniFrame / this.aniCols);
var bx = -1 * col * this.cellWidth;
var by = -1 * row * this.cellHeight;
this.domNode.style.backgroundPosition = bx + "px " + by + "px";
}});
 
/trunk/api/js/dojo/src/widget/DropdownDatePicker.js
New file
0,0 → 1,108
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DropdownDatePicker");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.DropdownContainer");
dojo.require("dojo.widget.DatePicker");
dojo.require("dojo.event.*");
dojo.require("dojo.html.*");
dojo.require("dojo.date.format");
dojo.require("dojo.date.serialize");
dojo.require("dojo.string.common");
dojo.require("dojo.i18n.common");
dojo.requireLocalization("dojo.widget", "DropdownDatePicker", null, "ROOT");
dojo.widget.defineWidget("dojo.widget.DropdownDatePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/dateIcon.gif"), formatLength:"short", displayFormat:"", saveFormat:"", value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, postMixInProperties:function (localProperties, frag) {
dojo.widget.DropdownDatePicker.superclass.postMixInProperties.apply(this, arguments);
var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownDatePicker", this.lang);
this.iconAlt = messages.selectDate;
if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
this.value = new Date();
}
if (this.value && isNaN(this.value)) {
var orig = this.value;
this.value = dojo.date.fromRfc3339(this.value);
if (!this.value) {
this.value = new Date(orig);
dojo.deprecated("dojo.widget.DropdownDatePicker", "date attributes must be passed in Rfc3339 format", "0.5");
}
}
if (this.value && !isNaN(this.value)) {
this.value = new Date(this.value);
}
}, fillInTemplate:function (args, frag) {
dojo.widget.DropdownDatePicker.superclass.fillInTemplate.call(this, args, frag);
var dpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:this.value, startDate:this.startDate, endDate:this.endDate, displayWeeks:this.displayWeeks, weekStartsOn:this.weekStartsOn, adjustWeeks:this.adjustWeeks, staticDisplay:this.staticDisplay};
this.datePicker = dojo.widget.createWidget("DatePicker", dpArgs, this.containerNode, "child");
dojo.event.connect(this.datePicker, "onValueChanged", this, "_updateText");
dojo.event.connect(this.inputNode, "onChange", this, "_updateText");
if (this.value) {
this._updateText();
}
this.containerNode.explodeClassName = "calendarBodyContainer";
this.valueNode.name = this.name;
}, getValue:function () {
return this.valueNode.value;
}, getDate:function () {
return this.datePicker.value;
}, setValue:function (rfcDate) {
this.setDate(rfcDate);
}, setDate:function (dateObj) {
this.datePicker.setDate(dateObj);
this._syncValueNode();
}, _updateText:function () {
this.inputNode.value = this.datePicker.value ? dojo.date.format(this.datePicker.value, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang}) : "";
if (this.value < this.datePicker.startDate || this.value > this.datePicker.endDate) {
this.inputNode.value = "";
}
this._syncValueNode();
this.onValueChanged(this.getDate());
this.hideContainer();
}, onValueChanged:function (dateObj) {
}, onInputChange:function () {
var input = dojo.string.trim(this.inputNode.value);
if (input) {
var inputDate = dojo.date.parse(input, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang});
if (!this.datePicker._isDisabledDate(inputDate)) {
this.setDate(inputDate);
}
} else {
if (input == "") {
this.datePicker.setDate("");
}
this.valueNode.value = input;
}
if (input) {
this._updateText();
}
}, _syncValueNode:function () {
var date = this.datePicker.value;
var value = "";
switch (this.saveFormat.toLowerCase()) {
case "rfc":
case "iso":
case "":
value = dojo.date.toRfc3339(date, "dateOnly");
break;
case "posix":
case "unix":
value = Number(date);
break;
default:
if (date) {
value = dojo.date.format(date, {datePattern:this.saveFormat, selector:"dateOnly", locale:this.lang});
}
}
this.valueNode.value = value;
}, destroy:function (finalize) {
this.datePicker.destroy(finalize);
dojo.widget.DropdownDatePicker.superclass.destroy.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/TreeContextMenu.js
New file
0,0 → 1,108
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeContextMenu");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.Menu2");
dojo.widget.defineWidget("dojo.widget.TreeContextMenu", dojo.widget.PopupMenu2, function () {
this.listenedTrees = [];
}, {open:function (x, y, parentMenu, explodeSrc) {
var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);
dojo.event.topic.publish(this.eventNames.open, {menu:this});
return result;
}, listenTree:function (tree) {
var nodes = tree.getDescendants();
for (var i = 0; i < nodes.length; i++) {
if (!nodes[i].isTreeNode) {
continue;
}
this.bindDomNode(nodes[i].labelNode);
}
var _this = this;
dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");
dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");
dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
this.listenedTrees.push(tree);
}, unlistenTree:function (tree) {
dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");
dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");
dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
for (var i = 0; i < this.listenedTrees.length; i++) {
if (this.listenedTrees[i] === tree) {
this.listenedTrees.splice(i, 1);
break;
}
}
}, onTreeDestroy:function (message) {
this.unlistenTree(message.source);
}, bindTreeNode:function (node) {
var _this = this;
dojo.lang.forEach(node.getDescendants(), function (e) {
_this.bindDomNode(e.labelNode);
});
}, unBindTreeNode:function (node) {
var _this = this;
dojo.lang.forEach(node.getDescendants(), function (e) {
_this.unBindDomNode(e.labelNode);
});
}, onCreateDOMNode:function (message) {
this.bindTreeNode(message.source);
}, onMoveFrom:function (message) {
if (!dojo.lang.inArray(this.listenedTrees, message.newTree)) {
this.unBindTreeNode(message.child);
}
}, onMoveTo:function (message) {
if (dojo.lang.inArray(this.listenedTrees, message.newTree)) {
this.bindTreeNode(message.child);
}
}, onRemoveNode:function (message) {
this.unBindTreeNode(message.child);
}, onAddChild:function (message) {
if (message.domNodeInitialized) {
this.bindTreeNode(message.child);
}
}});
dojo.widget.defineWidget("dojo.widget.TreeMenuItem", dojo.widget.MenuItem2, {treeActions:"", initialize:function (args, frag) {
this.treeActions = this.treeActions.split(",");
for (var i = 0; i < this.treeActions.length; i++) {
this.treeActions[i] = this.treeActions[i].toUpperCase();
}
}, getTreeNode:function () {
var menu = this;
while (!(menu instanceof dojo.widget.TreeContextMenu)) {
menu = menu.parent;
}
var source = menu.getTopOpenEvent().target;
while (!source.getAttribute("treeNode") && source.tagName != "body") {
source = source.parentNode;
}
if (source.tagName == "body") {
dojo.raise("treeNode not detected");
}
var treeNode = dojo.widget.manager.getWidgetById(source.getAttribute("treeNode"));
return treeNode;
}, menuOpen:function (message) {
var treeNode = this.getTreeNode();
this.setDisabled(false);
var _this = this;
dojo.lang.forEach(_this.treeActions, function (action) {
_this.setDisabled(treeNode.actionIsDisabled(action));
});
}, toString:function () {
return "[" + this.widgetType + " node " + this.getTreeNode() + "]";
}});
 
/trunk/api/js/dojo/src/widget/validate.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.validate");
dojo.deprecated("dojo.widget.validate", "use one of the specific widgets in dojo.widget.<name>Textbox instead", "0.5");
 
/trunk/api/js/dojo/src/widget/Editor2Toolbar.js
New file
0,0 → 1,494
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2Toolbar");
dojo.require("dojo.lang.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.display");
dojo.require("dojo.widget.RichText");
dojo.require("dojo.widget.PopupContainer");
dojo.require("dojo.widget.ColorPalette");
dojo.lang.declare("dojo.widget.HandlerManager", null, function () {
this._registeredHandlers = [];
}, {registerHandler:function (obj, func) {
if (arguments.length == 2) {
this._registeredHandlers.push(function () {
return obj[func].apply(obj, arguments);
});
} else {
this._registeredHandlers.push(obj);
}
}, removeHandler:function (func) {
for (var i = 0; i < this._registeredHandlers.length; i++) {
if (func === this._registeredHandlers[i]) {
delete this._registeredHandlers[i];
return;
}
}
dojo.debug("HandlerManager handler " + func + " is not registered, can not remove.");
}, destroy:function () {
for (var i = 0; i < this._registeredHandlers.length; i++) {
delete this._registeredHandlers[i];
}
}});
dojo.widget.Editor2ToolbarItemManager = new dojo.widget.HandlerManager;
dojo.lang.mixin(dojo.widget.Editor2ToolbarItemManager, {getToolbarItem:function (name) {
var item;
name = name.toLowerCase();
for (var i = 0; i < this._registeredHandlers.length; i++) {
item = this._registeredHandlers[i](name);
if (item) {
return item;
}
}
switch (name) {
case "bold":
case "copy":
case "cut":
case "delete":
case "indent":
case "inserthorizontalrule":
case "insertorderedlist":
case "insertunorderedlist":
case "italic":
case "justifycenter":
case "justifyfull":
case "justifyleft":
case "justifyright":
case "outdent":
case "paste":
case "redo":
case "removeformat":
case "selectall":
case "strikethrough":
case "subscript":
case "superscript":
case "underline":
case "undo":
case "unlink":
case "createlink":
case "insertimage":
case "htmltoggle":
item = new dojo.widget.Editor2ToolbarButton(name);
break;
case "forecolor":
case "hilitecolor":
item = new dojo.widget.Editor2ToolbarColorPaletteButton(name);
break;
case "plainformatblock":
item = new dojo.widget.Editor2ToolbarFormatBlockPlainSelect("formatblock");
break;
case "formatblock":
item = new dojo.widget.Editor2ToolbarFormatBlockSelect("formatblock");
break;
case "fontsize":
item = new dojo.widget.Editor2ToolbarFontSizeSelect("fontsize");
break;
case "fontname":
item = new dojo.widget.Editor2ToolbarFontNameSelect("fontname");
break;
case "inserttable":
case "insertcell":
case "insertcol":
case "insertrow":
case "deletecells":
case "deletecols":
case "deleterows":
case "mergecells":
case "splitcell":
dojo.debug(name + " is implemented in dojo.widget.Editor2Plugin.TableOperation, please require it first.");
break;
case "inserthtml":
case "blockdirltr":
case "blockdirrtl":
case "dirltr":
case "dirrtl":
case "inlinedirltr":
case "inlinedirrtl":
dojo.debug("Not yet implemented toolbar item: " + name);
break;
default:
dojo.debug("dojo.widget.Editor2ToolbarItemManager.getToolbarItem: Unknown toolbar item: " + name);
}
return item;
}});
dojo.addOnUnload(dojo.widget.Editor2ToolbarItemManager, "destroy");
dojo.declare("dojo.widget.Editor2ToolbarButton", null, function (name) {
this._name = name;
}, {create:function (node, toolbar, nohover) {
this._domNode = node;
var cmd = toolbar.parent.getCommand(this._name);
if (cmd) {
this._domNode.title = cmd.getText();
}
this.disableSelection(this._domNode);
this._parentToolbar = toolbar;
dojo.event.connect(this._domNode, "onclick", this, "onClick");
if (!nohover) {
dojo.event.connect(this._domNode, "onmouseover", this, "onMouseOver");
dojo.event.connect(this._domNode, "onmouseout", this, "onMouseOut");
}
}, disableSelection:function (rootnode) {
dojo.html.disableSelection(rootnode);
var nodes = rootnode.all || rootnode.getElementsByTagName("*");
for (var x = 0; x < nodes.length; x++) {
dojo.html.disableSelection(nodes[x]);
}
}, onMouseOver:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command && _command.getState() != dojo.widget.Editor2Manager.commandState.Disabled) {
this.highlightToolbarItem();
}
}
}, onMouseOut:function () {
this.unhighlightToolbarItem();
}, destroy:function () {
this._domNode = null;
this._parentToolbar = null;
}, onClick:function (e) {
if (this._domNode && !this._domNode.disabled && this._parentToolbar.checkAvailability()) {
e.preventDefault();
e.stopPropagation();
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
_command.execute();
}
}
}
}, refreshState:function () {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
var em = dojo.widget.Editor2Manager;
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
var state = _command.getState();
if (state != this._lastState) {
switch (state) {
case em.commandState.Latched:
this.latchToolbarItem();
break;
case em.commandState.Enabled:
this.enableToolbarItem();
break;
case em.commandState.Disabled:
default:
this.disableToolbarItem();
}
this._lastState = state;
}
}
}
return em.commandState.Enabled;
}, latchToolbarItem:function () {
this._domNode.disabled = false;
this.removeToolbarItemStyle(this._domNode);
dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarLatchedItemStyle);
}, enableToolbarItem:function () {
this._domNode.disabled = false;
this.removeToolbarItemStyle(this._domNode);
dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);
}, disableToolbarItem:function () {
this._domNode.disabled = true;
this.removeToolbarItemStyle(this._domNode);
dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);
}, highlightToolbarItem:function () {
dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);
}, unhighlightToolbarItem:function () {
dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);
}, removeToolbarItemStyle:function () {
dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);
dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarLatchedItemStyle);
dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);
this.unhighlightToolbarItem();
}});
dojo.declare("dojo.widget.Editor2ToolbarDropDownButton", dojo.widget.Editor2ToolbarButton, {onClick:function () {
if (this._domNode && !this._domNode.disabled && this._parentToolbar.checkAvailability()) {
if (!this._dropdown) {
this._dropdown = dojo.widget.createWidget("PopupContainer", {});
this._domNode.appendChild(this._dropdown.domNode);
}
if (this._dropdown.isShowingNow) {
this._dropdown.close();
} else {
this.onDropDownShown();
this._dropdown.open(this._domNode, null, this._domNode);
}
}
}, destroy:function () {
this.onDropDownDestroy();
if (this._dropdown) {
this._dropdown.destroy();
}
dojo.widget.Editor2ToolbarDropDownButton.superclass.destroy.call(this);
}, onDropDownShown:function () {
}, onDropDownDestroy:function () {
}});
dojo.declare("dojo.widget.Editor2ToolbarColorPaletteButton", dojo.widget.Editor2ToolbarDropDownButton, {onDropDownShown:function () {
if (!this._colorpalette) {
this._colorpalette = dojo.widget.createWidget("ColorPalette", {});
this._dropdown.addChild(this._colorpalette);
this.disableSelection(this._dropdown.domNode);
this.disableSelection(this._colorpalette.domNode);
dojo.event.connect(this._colorpalette, "onColorSelect", this, "setColor");
dojo.event.connect(this._dropdown, "open", this, "latchToolbarItem");
dojo.event.connect(this._dropdown, "close", this, "enableToolbarItem");
}
}, setColor:function (color) {
this._dropdown.close();
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
_command.execute(color);
}
}
}});
dojo.declare("dojo.widget.Editor2ToolbarFormatBlockPlainSelect", dojo.widget.Editor2ToolbarButton, {create:function (node, toolbar) {
this._domNode = node;
this._parentToolbar = toolbar;
this._domNode = node;
this.disableSelection(this._domNode);
dojo.event.connect(this._domNode, "onchange", this, "onChange");
}, destroy:function () {
this._domNode = null;
}, onChange:function () {
if (this._parentToolbar.checkAvailability()) {
var sv = this._domNode.value.toLowerCase();
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
_command.execute(sv);
}
}
}
}, refreshState:function () {
if (this._domNode) {
dojo.widget.Editor2ToolbarFormatBlockPlainSelect.superclass.refreshState.call(this);
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
var format = _command.getValue();
if (!format) {
format = "";
}
dojo.lang.forEach(this._domNode.options, function (item) {
if (item.value.toLowerCase() == format.toLowerCase()) {
item.selected = true;
}
});
}
}
}
}});
dojo.declare("dojo.widget.Editor2ToolbarComboItem", dojo.widget.Editor2ToolbarDropDownButton, {href:null, create:function (node, toolbar) {
dojo.widget.Editor2ToolbarComboItem.superclass.create.apply(this, arguments);
if (!this._contentPane) {
dojo.require("dojo.widget.ContentPane");
this._contentPane = dojo.widget.createWidget("ContentPane", {preload:"true"});
this._contentPane.addOnLoad(this, "setup");
this._contentPane.setUrl(this.href);
}
}, onMouseOver:function (e) {
if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);
}
}, onMouseOut:function (e) {
dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);
}, onDropDownShown:function () {
if (!this._dropdown.__addedContentPage) {
this._dropdown.addChild(this._contentPane);
this._dropdown.__addedContentPage = true;
}
}, setup:function () {
}, onChange:function (e) {
if (this._parentToolbar.checkAvailability()) {
var name = e.currentTarget.getAttribute("dropDownItemName");
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
_command.execute(name);
}
}
}
this._dropdown.close();
}, onMouseOverItem:function (e) {
dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);
}, onMouseOutItem:function (e) {
dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);
}});
dojo.declare("dojo.widget.Editor2ToolbarFormatBlockSelect", dojo.widget.Editor2ToolbarComboItem, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FormatBlock.html"), setup:function () {
dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");
this._blockNames = {};
this._blockDisplayNames = {};
for (var x = 0; x < nodes.length; x++) {
var node = nodes[x];
dojo.html.disableSelection(node);
var name = node.getAttribute("dropDownItemName");
if (name) {
this._blockNames[name] = node;
var childrennodes = node.getElementsByTagName(name);
this._blockDisplayNames[name] = childrennodes[childrennodes.length - 1].innerHTML;
}
}
for (var name in this._blockNames) {
dojo.event.connect(this._blockNames[name], "onclick", this, "onChange");
dojo.event.connect(this._blockNames[name], "onmouseover", this, "onMouseOverItem");
dojo.event.connect(this._blockNames[name], "onmouseout", this, "onMouseOutItem");
}
}, onDropDownDestroy:function () {
if (this._blockNames) {
for (var name in this._blockNames) {
delete this._blockNames[name];
delete this._blockDisplayNames[name];
}
}
}, refreshState:function () {
dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
var format = _command.getValue();
if (format == this._lastSelectedFormat && this._blockDisplayNames) {
return this._lastState;
}
this._lastSelectedFormat = format;
var label = this._domNode.getElementsByTagName("label")[0];
var isSet = false;
if (this._blockDisplayNames) {
for (var name in this._blockDisplayNames) {
if (name == format) {
label.innerHTML = this._blockDisplayNames[name];
isSet = true;
break;
}
}
if (!isSet) {
label.innerHTML = "&nbsp;";
}
}
}
}
}
return this._lastState;
}});
dojo.declare("dojo.widget.Editor2ToolbarFontSizeSelect", dojo.widget.Editor2ToolbarComboItem, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FontSize.html"), setup:function () {
dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");
this._fontsizes = {};
this._fontSizeDisplayNames = {};
for (var x = 0; x < nodes.length; x++) {
var node = nodes[x];
dojo.html.disableSelection(node);
var name = node.getAttribute("dropDownItemName");
if (name) {
this._fontsizes[name] = node;
this._fontSizeDisplayNames[name] = node.getElementsByTagName("font")[0].innerHTML;
}
}
for (var name in this._fontsizes) {
dojo.event.connect(this._fontsizes[name], "onclick", this, "onChange");
dojo.event.connect(this._fontsizes[name], "onmouseover", this, "onMouseOverItem");
dojo.event.connect(this._fontsizes[name], "onmouseout", this, "onMouseOutItem");
}
}, onDropDownDestroy:function () {
if (this._fontsizes) {
for (var name in this._fontsizes) {
delete this._fontsizes[name];
delete this._fontSizeDisplayNames[name];
}
}
}, refreshState:function () {
dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (curInst) {
var _command = curInst.getCommand(this._name);
if (_command) {
var size = _command.getValue();
if (size == this._lastSelectedSize && this._fontSizeDisplayNames) {
return this._lastState;
}
this._lastSelectedSize = size;
var label = this._domNode.getElementsByTagName("label")[0];
var isSet = false;
if (this._fontSizeDisplayNames) {
for (var name in this._fontSizeDisplayNames) {
if (name == size) {
label.innerHTML = this._fontSizeDisplayNames[name];
isSet = true;
break;
}
}
if (!isSet) {
label.innerHTML = "&nbsp;";
}
}
}
}
}
return this._lastState;
}});
dojo.declare("dojo.widget.Editor2ToolbarFontNameSelect", dojo.widget.Editor2ToolbarFontSizeSelect, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FontName.html")});
dojo.widget.defineWidget("dojo.widget.Editor2Toolbar", dojo.widget.HtmlWidget, function () {
dojo.event.connect(this, "fillInTemplate", dojo.lang.hitch(this, function () {
if (dojo.render.html.ie) {
this.domNode.style.zoom = 1;
}
}));
}, {templateString:"<div dojoAttachPoint=\"domNode\" class=\"EditorToolbarDomNode\" unselectable=\"on\">\n\t<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">\n\t\t<!--\n\t\t\tour toolbar should look something like:\n\n\t\t\t+=======+=======+=======+=============================================+\n\t\t\t| w w | style | copy | bo | it | un | le | ce | ri |\n\t\t\t| w w w | style |=======|==============|==============|\n\t\t\t| w w | style | paste | undo | redo | change style |\n\t\t\t+=======+=======+=======+=============================================+\n\t\t-->\n\t\t<tbody>\n\t\t\t<tr valign=\"top\">\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"wikiWordButton\"\n\t\t\t\t\t\tdojoOnClick=\"wikiWordClick; buttonClick;\">\n\t\t\t\t\t\t<span style=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tW\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"styleDropdownButton\"\n\t\t\t\t\t\tdojoOnClick=\"styleDropdownClick; buttonClick;\">\n\t\t\t\t\t\t<span unselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tS\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"StyleDropdownContainer\" style=\"display: none;\"\n\t\t\t\t\t\tdojoAttachPoint=\"styleDropdownContainer\">\n\t\t\t\t\t\t<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"\n\t\t\t\t\t\t\theight=\"100%\" width=\"100%\">\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<div style=\"height: 245px; overflow: auto;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"normalTextClick\">normal</div>\n\t\t\t\t\t\t\t\t\t\t<h1 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h1TextClick\">Heading 1</h1>\n\t\t\t\t\t\t\t\t\t\t<h2 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h2TextClick\">Heading 2</h2>\n\t\t\t\t\t\t\t\t\t\t<h3 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h3TextClick\">Heading 3</h3>\n\t\t\t\t\t\t\t\t\t\t<h4 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h4TextClick\">Heading 4</h4>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<!--\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyleft\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifycenter\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyright\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyfull\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t-->\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tthud\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- copy -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"copyButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"copyClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon copy\" \n\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span> copy\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"boldButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"boldClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon bold\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"italicButton\"\n\t\t\t\t\t\tdojoOnClick=\"italicClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon italic\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"underlineButton\"\n\t\t\t\t\t\tdojoOnClick=\"underlineClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon underline\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"leftButton\"\n\t\t\t\t\t\tdojoOnClick=\"leftClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyleft\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"fullButton\"\n\t\t\t\t\t\tdojoOnClick=\"fullClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyfull\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"rightButton\"\n\t\t\t\t\t\tdojoOnClick=\"rightClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyright\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- paste -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"pasteButton\"\n\t\t\t\t\t\tdojoOnClick=\"pasteClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon paste\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> paste\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"undoButton\"\n\t\t\t\t\t\tdojoOnClick=\"undoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon undo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> undo\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"redoButton\"\n\t\t\t\t\t\tdojoOnClick=\"redoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon redo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> redo\n\t\t\t\t\t</span>\n\t\t\t\t</td>\t\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".StyleDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 250px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.ColorDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 150px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.EditorToolbarDomNode {\n\tbackground-image: url(buttons/bg-fade.png);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px -50px;\n}\n\n.EditorToolbarSmallBg {\n\tbackground-image: url(images/toolbar-bg.gif);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px 0px;\n}\n\n/*\nbody {\n\tbackground:url(images/blank.gif) fixed;\n}*/\n\n.IEFixedToolbar {\n\tposition:absolute;\n\t/* top:0; */\n\ttop: expression(eval((document.documentElement||document.body).scrollTop));\n}\n\ndiv.bigIcon {\n\twidth: 40px;\n\theight: 40px; \n\t/* background-color: white; */\n\t/* border: 1px solid #a6a7a3; */\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n}\n\n.iconContainer {\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n\tfont-size: 13px;\n\tfloat: left;\n\theight: 18px;\n\tdisplay: block;\n\t/* background-color: white; */\n\tcursor: pointer;\n\tpadding: 1px 4px 1px 1px; /* almost the same as a transparent border */\n\tborder: 0px;\n}\n\n.dojoE2TBIcon {\n\tdisplay: block;\n\ttext-align: center;\n\tmin-width: 18px;\n\twidth: 18px;\n\theight: 18px;\n\t/* background-color: #a6a7a3; */\n\tbackground-repeat: no-repeat;\n\tbackground-image: url(buttons/aggregate.gif);\n}\n\n\n.dojoE2TBIcon[class~=dojoE2TBIcon] {\n}\n\n.ToolbarButtonLatched {\n border: #316ac5 1px solid; !important;\n padding: 0px 3px 0px 0px; !important; /* make room for border */\n background-color: #c1d2ee;\n}\n\n.ToolbarButtonHighlighted {\n border: #316ac5 1px solid; !important;\n padding: 0px 3px 0px 0px; !important; /* make room for border */\n background-color: #dff1ff;\n}\n\n.ToolbarButtonDisabled{\n filter: gray() alpha(opacity=30); /* IE */\n opacity: 0.30; /* Safari, Opera and Mozilla */\n}\n\n.headingContainer {\n\twidth: 150px;\n\theight: 30px;\n\tmargin: 0px;\n\t/* padding-left: 5px; */\n\toverflow: hidden;\n\tline-height: 25px;\n\tborder-bottom: 1px solid black;\n\tborder-top: 1px solid white;\n}\n\n.EditorToolbarDomNode select {\n\tfont-size: 14px;\n}\n \n.dojoE2TBIcon_Sep { width: 5px; min-width: 5px; max-width: 5px; background-position: 0px 0px}\n.dojoE2TBIcon_Backcolor { background-position: -18px 0px}\n.dojoE2TBIcon_Bold { background-position: -36px 0px}\n.dojoE2TBIcon_Cancel { background-position: -54px 0px}\n.dojoE2TBIcon_Copy { background-position: -72px 0px}\n.dojoE2TBIcon_Link { background-position: -90px 0px}\n.dojoE2TBIcon_Cut { background-position: -108px 0px}\n.dojoE2TBIcon_Delete { background-position: -126px 0px}\n.dojoE2TBIcon_TextColor { background-position: -144px 0px}\n.dojoE2TBIcon_BackgroundColor { background-position: -162px 0px}\n.dojoE2TBIcon_Indent { background-position: -180px 0px}\n.dojoE2TBIcon_HorizontalLine { background-position: -198px 0px}\n.dojoE2TBIcon_Image { background-position: -216px 0px}\n.dojoE2TBIcon_NumberedList { background-position: -234px 0px}\n.dojoE2TBIcon_Table { background-position: -252px 0px}\n.dojoE2TBIcon_BulletedList { background-position: -270px 0px}\n.dojoE2TBIcon_Italic { background-position: -288px 0px}\n.dojoE2TBIcon_CenterJustify { background-position: -306px 0px}\n.dojoE2TBIcon_BlockJustify { background-position: -324px 0px}\n.dojoE2TBIcon_LeftJustify { background-position: -342px 0px}\n.dojoE2TBIcon_RightJustify { background-position: -360px 0px}\n.dojoE2TBIcon_left_to_right { background-position: -378px 0px}\n.dojoE2TBIcon_list_bullet_indent { background-position: -396px 0px}\n.dojoE2TBIcon_list_bullet_outdent { background-position: -414px 0px}\n.dojoE2TBIcon_list_num_indent { background-position: -432px 0px}\n.dojoE2TBIcon_list_num_outdent { background-position: -450px 0px}\n.dojoE2TBIcon_Outdent { background-position: -468px 0px}\n.dojoE2TBIcon_Paste { background-position: -486px 0px}\n.dojoE2TBIcon_Redo { background-position: -504px 0px}\ndojoE2TBIcon_RemoveFormat { background-position: -522px 0px}\n.dojoE2TBIcon_right_to_left { background-position: -540px 0px}\n.dojoE2TBIcon_Save { background-position: -558px 0px}\n.dojoE2TBIcon_Space { background-position: -576px 0px}\n.dojoE2TBIcon_StrikeThrough { background-position: -594px 0px}\n.dojoE2TBIcon_Subscript { background-position: -612px 0px}\n.dojoE2TBIcon_Superscript { background-position: -630px 0px}\n.dojoE2TBIcon_Underline { background-position: -648px 0px}\n.dojoE2TBIcon_Undo { background-position: -666px 0px}\n.dojoE2TBIcon_WikiWord { background-position: -684px 0px}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/EditorToolbar.css"), ToolbarLatchedItemStyle:"ToolbarButtonLatched", ToolbarEnabledItemStyle:"ToolbarButtonEnabled", ToolbarDisabledItemStyle:"ToolbarButtonDisabled", ToolbarHighlightedItemStyle:"ToolbarButtonHighlighted", ToolbarHighlightedSelectStyle:"ToolbarSelectHighlighted", ToolbarHighlightedSelectItemStyle:"ToolbarSelectHighlightedItem", postCreate:function () {
var nodes = dojo.html.getElementsByClass("dojoEditorToolbarItem", this.domNode);
this.items = {};
for (var x = 0; x < nodes.length; x++) {
var node = nodes[x];
var itemname = node.getAttribute("dojoETItemName");
if (itemname) {
var item = dojo.widget.Editor2ToolbarItemManager.getToolbarItem(itemname);
if (item) {
item.create(node, this);
this.items[itemname.toLowerCase()] = item;
} else {
node.style.display = "none";
}
}
}
}, update:function () {
for (var cmd in this.items) {
this.items[cmd].refreshState();
}
}, shareGroup:"", checkAvailability:function () {
if (!this.shareGroup) {
this.parent.focus();
return true;
}
var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
if (this.shareGroup == curInst.toolbarGroup) {
return true;
}
return false;
}, destroy:function () {
for (var it in this.items) {
this.items[it].destroy();
delete this.items[it];
}
dojo.widget.Editor2Toolbar.superclass.destroy.call(this);
}});
 
/trunk/api/js/dojo/src/widget/FilteringTable.js
New file
0,0 → 1,708
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.FilteringTable");
dojo.require("dojo.date.format");
dojo.require("dojo.math");
dojo.require("dojo.collections.Store");
dojo.require("dojo.html.*");
dojo.require("dojo.html.util");
dojo.require("dojo.html.style");
dojo.require("dojo.html.selection");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.FilteringTable", dojo.widget.HtmlWidget, function () {
this.store = new dojo.collections.Store();
this.valueField = "Id";
this.multiple = false;
this.maxSelect = 0;
this.maxSortable = 1;
this.minRows = 0;
this.defaultDateFormat = "%D";
this.isInitialized = false;
this.alternateRows = false;
this.columns = [];
this.sortInformation = [{index:0, direction:0}];
this.headClass = "";
this.tbodyClass = "";
this.headerClass = "";
this.headerUpClass = "selectedUp";
this.headerDownClass = "selectedDown";
this.rowClass = "";
this.rowAlternateClass = "alt";
this.rowSelectedClass = "selected";
this.columnSelected = "sorted-column";
}, {isContainer:false, templatePath:null, templateCssPath:null, getTypeFromString:function (s) {
var parts = s.split("."), i = 0, obj = dj_global;
do {
obj = obj[parts[i++]];
} while (i < parts.length && obj);
return (obj != dj_global) ? obj : null;
}, getByRow:function (row) {
return this.store.getByKey(dojo.html.getAttribute(row, "value"));
}, getDataByRow:function (row) {
return this.store.getDataByKey(dojo.html.getAttribute(row, "value"));
}, getRow:function (obj) {
var rows = this.domNode.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
if (this.store.getDataByKey(dojo.html.getAttribute(rows[i], "value")) == obj) {
return rows[i];
}
}
return null;
}, getColumnIndex:function (fieldPath) {
for (var i = 0; i < this.columns.length; i++) {
if (this.columns[i].getField() == fieldPath) {
return i;
}
}
return -1;
}, getSelectedData:function () {
var data = this.store.get();
var a = [];
for (var i = 0; i < data.length; i++) {
if (data[i].isSelected) {
a.push(data[i].src);
}
}
if (this.multiple) {
return a;
} else {
return a[0];
}
}, isSelected:function (obj) {
var data = this.store.get();
for (var i = 0; i < data.length; i++) {
if (data[i].src == obj) {
return true;
}
}
return false;
}, isValueSelected:function (val) {
var v = this.store.getByKey(val);
if (v) {
return v.isSelected;
}
return false;
}, isIndexSelected:function (idx) {
var v = this.store.getByIndex(idx);
if (v) {
return v.isSelected;
}
return false;
}, isRowSelected:function (row) {
var v = this.getByRow(row);
if (v) {
return v.isSelected;
}
return false;
}, reset:function () {
this.store.clearData();
this.columns = [];
this.sortInformation = [{index:0, direction:0}];
this.resetSelections();
this.isInitialized = false;
this.onReset();
}, resetSelections:function () {
this.store.forEach(function (element) {
element.isSelected = false;
});
}, onReset:function () {
}, select:function (obj) {
var data = this.store.get();
for (var i = 0; i < data.length; i++) {
if (data[i].src == obj) {
data[i].isSelected = true;
break;
}
}
this.onDataSelect(obj);
}, selectByValue:function (val) {
this.select(this.store.getDataByKey(val));
}, selectByIndex:function (idx) {
this.select(this.store.getDataByIndex(idx));
}, selectByRow:function (row) {
this.select(this.getDataByRow(row));
}, selectAll:function () {
this.store.forEach(function (element) {
element.isSelected = true;
});
}, onDataSelect:function (obj) {
}, toggleSelection:function (obj) {
var data = this.store.get();
for (var i = 0; i < data.length; i++) {
if (data[i].src == obj) {
data[i].isSelected = !data[i].isSelected;
break;
}
}
this.onDataToggle(obj);
}, toggleSelectionByValue:function (val) {
this.toggleSelection(this.store.getDataByKey(val));
}, toggleSelectionByIndex:function (idx) {
this.toggleSelection(this.store.getDataByIndex(idx));
}, toggleSelectionByRow:function (row) {
this.toggleSelection(this.getDataByRow(row));
}, toggleAll:function () {
this.store.forEach(function (element) {
element.isSelected = !element.isSelected;
});
}, onDataToggle:function (obj) {
}, _meta:{field:null, format:null, filterer:null, noSort:false, sortType:"String", dataType:String, sortFunction:null, filterFunction:null, label:null, align:"left", valign:"middle", getField:function () {
return this.field || this.label;
}, getType:function () {
return this.dataType;
}}, createMetaData:function (obj) {
for (var p in this._meta) {
if (!obj[p]) {
obj[p] = this._meta[p];
}
}
if (!obj.label) {
obj.label = obj.field;
}
if (!obj.filterFunction) {
obj.filterFunction = this._defaultFilter;
}
return obj;
}, parseMetadata:function (head) {
this.columns = [];
this.sortInformation = [];
var row = head.getElementsByTagName("tr")[0];
var cells = row.getElementsByTagName("td");
if (cells.length == 0) {
cells = row.getElementsByTagName("th");
}
for (var i = 0; i < cells.length; i++) {
var o = this.createMetaData({});
if (dojo.html.hasAttribute(cells[i], "align")) {
o.align = dojo.html.getAttribute(cells[i], "align");
}
if (dojo.html.hasAttribute(cells[i], "valign")) {
o.valign = dojo.html.getAttribute(cells[i], "valign");
}
if (dojo.html.hasAttribute(cells[i], "nosort")) {
o.noSort = (dojo.html.getAttribute(cells[i], "nosort") == "true");
}
if (dojo.html.hasAttribute(cells[i], "sortusing")) {
var trans = dojo.html.getAttribute(cells[i], "sortusing");
var f = this.getTypeFromString(trans);
if (f != null && f != window && typeof (f) == "function") {
o.sortFunction = f;
}
}
o.label = dojo.html.renderedTextContent(cells[i]);
if (dojo.html.hasAttribute(cells[i], "field")) {
o.field = dojo.html.getAttribute(cells[i], "field");
} else {
if (o.label.length > 0) {
o.field = o.label;
} else {
o.field = "field" + i;
}
}
if (dojo.html.hasAttribute(cells[i], "format")) {
o.format = dojo.html.getAttribute(cells[i], "format");
}
if (dojo.html.hasAttribute(cells[i], "dataType")) {
var sortType = dojo.html.getAttribute(cells[i], "dataType");
if (sortType.toLowerCase() == "html" || sortType.toLowerCase() == "markup") {
o.sortType = "__markup__";
} else {
var type = this.getTypeFromString(sortType);
if (type) {
o.sortType = sortType;
o.dataType = type;
}
}
}
if (dojo.html.hasAttribute(cells[i], "filterusing")) {
var trans = dojo.html.getAttribute(cells[i], "filterusing");
var f = this.getTypeFromString(trans);
if (f != null && f != window && typeof (f) == "function") {
o.filterFunction = f;
}
}
this.columns.push(o);
if (dojo.html.hasAttribute(cells[i], "sort")) {
var info = {index:i, direction:0};
var dir = dojo.html.getAttribute(cells[i], "sort");
if (!isNaN(parseInt(dir))) {
dir = parseInt(dir);
info.direction = (dir != 0) ? 1 : 0;
} else {
info.direction = (dir.toLowerCase() == "desc") ? 1 : 0;
}
this.sortInformation.push(info);
}
}
if (this.sortInformation.length == 0) {
this.sortInformation.push({index:0, direction:0});
} else {
if (this.sortInformation.length > this.maxSortable) {
this.sortInformation.length = this.maxSortable;
}
}
}, parseData:function (body) {
if (body.rows.length == 0 && this.columns.length == 0) {
return;
}
var self = this;
this["__selected__"] = [];
var arr = this.store.getFromHtml(this.columns, body, function (obj, row) {
if (typeof (obj[self.valueField]) == "undefined" || obj[self.valueField] == null) {
obj[self.valueField] = dojo.html.getAttribute(row, "value");
}
if (dojo.html.getAttribute(row, "selected") == "true") {
self["__selected__"].push(obj);
}
});
this.store.setData(arr, true);
this.render();
for (var i = 0; i < this["__selected__"].length; i++) {
this.select(this["__selected__"][i]);
}
this.renderSelections();
delete this["__selected__"];
this.isInitialized = true;
}, onSelect:function (e) {
var row = dojo.html.getParentByType(e.target, "tr");
if (dojo.html.hasAttribute(row, "emptyRow")) {
return;
}
var body = dojo.html.getParentByType(row, "tbody");
if (this.multiple) {
if (e.shiftKey) {
var startRow;
var rows = body.rows;
for (var i = 0; i < rows.length; i++) {
if (rows[i] == row) {
break;
}
if (this.isRowSelected(rows[i])) {
startRow = rows[i];
}
}
if (!startRow) {
startRow = row;
for (; i < rows.length; i++) {
if (this.isRowSelected(rows[i])) {
row = rows[i];
break;
}
}
}
this.resetSelections();
if (startRow == row) {
this.toggleSelectionByRow(row);
} else {
var doSelect = false;
for (var i = 0; i < rows.length; i++) {
if (rows[i] == startRow) {
doSelect = true;
}
if (doSelect) {
this.selectByRow(rows[i]);
}
if (rows[i] == row) {
doSelect = false;
}
}
}
} else {
this.toggleSelectionByRow(row);
}
} else {
this.resetSelections();
this.toggleSelectionByRow(row);
}
this.renderSelections();
}, onSort:function (e) {
var oldIndex = this.sortIndex;
var oldDirection = this.sortDirection;
var source = e.target;
var row = dojo.html.getParentByType(source, "tr");
var cellTag = "td";
if (row.getElementsByTagName(cellTag).length == 0) {
cellTag = "th";
}
var headers = row.getElementsByTagName(cellTag);
var header = dojo.html.getParentByType(source, cellTag);
for (var i = 0; i < headers.length; i++) {
dojo.html.setClass(headers[i], this.headerClass);
if (headers[i] == header) {
if (this.sortInformation[0].index != i) {
this.sortInformation.unshift({index:i, direction:0});
} else {
this.sortInformation[0] = {index:i, direction:(~this.sortInformation[0].direction) & 1};
}
}
}
this.sortInformation.length = Math.min(this.sortInformation.length, this.maxSortable);
for (var i = 0; i < this.sortInformation.length; i++) {
var idx = this.sortInformation[i].index;
var dir = (~this.sortInformation[i].direction) & 1;
dojo.html.setClass(headers[idx], dir == 0 ? this.headerDownClass : this.headerUpClass);
}
this.render();
}, onFilter:function () {
}, _defaultFilter:function (obj) {
return true;
}, setFilter:function (field, fn) {
for (var i = 0; i < this.columns.length; i++) {
if (this.columns[i].getField() == field) {
this.columns[i].filterFunction = fn;
break;
}
}
this.applyFilters();
}, setFilterByIndex:function (idx, fn) {
this.columns[idx].filterFunction = fn;
this.applyFilters();
}, clearFilter:function (field) {
for (var i = 0; i < this.columns.length; i++) {
if (this.columns[i].getField() == field) {
this.columns[i].filterFunction = this._defaultFilter;
break;
}
}
this.applyFilters();
}, clearFilterByIndex:function (idx) {
this.columns[idx].filterFunction = this._defaultFilter;
this.applyFilters();
}, clearFilters:function () {
for (var i = 0; i < this.columns.length; i++) {
this.columns[i].filterFunction = this._defaultFilter;
}
var rows = this.domNode.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
rows[i].style.display = "";
if (this.alternateRows) {
dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);
}
}
this.onFilter();
}, applyFilters:function () {
var alt = 0;
var rows = this.domNode.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
var b = true;
var row = rows[i];
for (var j = 0; j < this.columns.length; j++) {
var value = this.store.getField(this.getDataByRow(row), this.columns[j].getField());
if (this.columns[j].getType() == Date && value != null && !value.getYear) {
value = new Date(value);
}
if (!this.columns[j].filterFunction(value)) {
b = false;
break;
}
}
row.style.display = (b ? "" : "none");
if (b && this.alternateRows) {
dojo.html[((alt++ % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);
}
}
this.onFilter();
}, createSorter:function (info) {
var self = this;
var sortFunctions = [];
function createSortFunction(fieldIndex, dir) {
var meta = self.columns[fieldIndex];
var field = meta.getField();
return function (rowA, rowB) {
if (dojo.html.hasAttribute(rowA, "emptyRow")) {
return 1;
}
if (dojo.html.hasAttribute(rowB, "emptyRow")) {
return -1;
}
var a = self.store.getField(self.getDataByRow(rowA), field);
var b = self.store.getField(self.getDataByRow(rowB), field);
var ret = 0;
if (a > b) {
ret = 1;
}
if (a < b) {
ret = -1;
}
return dir * ret;
};
}
var current = 0;
var max = Math.min(info.length, this.maxSortable, this.columns.length);
while (current < max) {
var direction = (info[current].direction == 0) ? 1 : -1;
sortFunctions.push(createSortFunction(info[current].index, direction));
current++;
}
return function (rowA, rowB) {
var idx = 0;
while (idx < sortFunctions.length) {
var ret = sortFunctions[idx++](rowA, rowB);
if (ret != 0) {
return ret;
}
}
return 0;
};
}, createRow:function (obj) {
var row = document.createElement("tr");
dojo.html.disableSelection(row);
if (obj.key != null) {
row.setAttribute("value", obj.key);
}
for (var j = 0; j < this.columns.length; j++) {
var cell = document.createElement("td");
cell.setAttribute("align", this.columns[j].align);
cell.setAttribute("valign", this.columns[j].valign);
dojo.html.disableSelection(cell);
var val = this.store.getField(obj.src, this.columns[j].getField());
if (typeof (val) == "undefined") {
val = "";
}
this.fillCell(cell, this.columns[j], val);
row.appendChild(cell);
}
return row;
}, fillCell:function (cell, meta, val) {
if (meta.sortType == "__markup__") {
cell.innerHTML = val;
} else {
if (meta.getType() == Date) {
val = new Date(val);
if (!isNaN(val)) {
var format = this.defaultDateFormat;
if (meta.format) {
format = meta.format;
}
cell.innerHTML = dojo.date.strftime(val, format);
} else {
cell.innerHTML = val;
}
} else {
if ("Number number int Integer float Float".indexOf(meta.getType()) > -1) {
if (val.length == 0) {
val = "0";
}
var n = parseFloat(val, 10) + "";
if (n.indexOf(".") > -1) {
n = dojo.math.round(parseFloat(val, 10), 2);
}
cell.innerHTML = n;
} else {
cell.innerHTML = val;
}
}
}
}, prefill:function () {
this.isInitialized = false;
var body = this.domNode.tBodies[0];
while (body.childNodes.length > 0) {
body.removeChild(body.childNodes[0]);
}
if (this.minRows > 0) {
for (var i = 0; i < this.minRows; i++) {
var row = document.createElement("tr");
if (this.alternateRows) {
dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);
}
row.setAttribute("emptyRow", "true");
for (var j = 0; j < this.columns.length; j++) {
var cell = document.createElement("td");
cell.innerHTML = "&nbsp;";
row.appendChild(cell);
}
body.appendChild(row);
}
}
}, init:function () {
this.isInitialized = false;
var head = this.domNode.getElementsByTagName("thead")[0];
if (head.getElementsByTagName("tr").length == 0) {
var row = document.createElement("tr");
for (var i = 0; i < this.columns.length; i++) {
var cell = document.createElement("td");
cell.setAttribute("align", this.columns[i].align);
cell.setAttribute("valign", this.columns[i].valign);
dojo.html.disableSelection(cell);
cell.innerHTML = this.columns[i].label;
row.appendChild(cell);
if (!this.columns[i].noSort) {
dojo.event.connect(cell, "onclick", this, "onSort");
}
}
dojo.html.prependChild(row, head);
}
if (this.store.get().length == 0) {
return false;
}
var idx = this.domNode.tBodies[0].rows.length;
if (!idx || idx == 0 || this.domNode.tBodies[0].rows[0].getAttribute("emptyRow") == "true") {
idx = 0;
var body = this.domNode.tBodies[0];
while (body.childNodes.length > 0) {
body.removeChild(body.childNodes[0]);
}
var data = this.store.get();
for (var i = 0; i < data.length; i++) {
var row = this.createRow(data[i]);
body.appendChild(row);
idx++;
}
}
if (this.minRows > 0 && idx < this.minRows) {
idx = this.minRows - idx;
for (var i = 0; i < idx; i++) {
row = document.createElement("tr");
row.setAttribute("emptyRow", "true");
for (var j = 0; j < this.columns.length; j++) {
cell = document.createElement("td");
cell.innerHTML = "&nbsp;";
row.appendChild(cell);
}
body.appendChild(row);
}
}
var row = this.domNode.getElementsByTagName("thead")[0].rows[0];
var cellTag = "td";
if (row.getElementsByTagName(cellTag).length == 0) {
cellTag = "th";
}
var headers = row.getElementsByTagName(cellTag);
for (var i = 0; i < headers.length; i++) {
dojo.html.setClass(headers[i], this.headerClass);
}
for (var i = 0; i < this.sortInformation.length; i++) {
var idx = this.sortInformation[i].index;
var dir = (~this.sortInformation[i].direction) & 1;
dojo.html.setClass(headers[idx], dir == 0 ? this.headerDownClass : this.headerUpClass);
}
this.isInitialized = true;
return this.isInitialized;
}, render:function () {
if (!this.isInitialized) {
var b = this.init();
if (!b) {
this.prefill();
return;
}
}
var rows = [];
var body = this.domNode.tBodies[0];
var emptyRowIdx = -1;
for (var i = 0; i < body.rows.length; i++) {
rows.push(body.rows[i]);
}
var sortFunction = this.createSorter(this.sortInformation);
if (sortFunction) {
rows.sort(sortFunction);
}
for (var i = 0; i < rows.length; i++) {
if (this.alternateRows) {
dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);
}
dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);
body.appendChild(rows[i]);
}
}, renderSelections:function () {
var body = this.domNode.tBodies[0];
for (var i = 0; i < body.rows.length; i++) {
dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);
}
}, initialize:function () {
var self = this;
dojo.event.connect(this.store, "onSetData", function () {
self.store.forEach(function (element) {
element.isSelected = false;
});
self.isInitialized = false;
var body = self.domNode.tBodies[0];
if (body) {
while (body.childNodes.length > 0) {
body.removeChild(body.childNodes[0]);
}
}
self.render();
});
dojo.event.connect(this.store, "onClearData", function () {
self.isInitialized = false;
self.render();
});
dojo.event.connect(this.store, "onAddData", function (addedObject) {
var row = self.createRow(addedObject);
self.domNode.tBodies[0].appendChild(row);
self.render();
});
dojo.event.connect(this.store, "onAddDataRange", function (arr) {
for (var i = 0; i < arr.length; i++) {
arr[i].isSelected = false;
var row = self.createRow(arr[i]);
self.domNode.tBodies[0].appendChild(row);
}
self.render();
});
dojo.event.connect(this.store, "onRemoveData", function (removedObject) {
var rows = self.domNode.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
if (self.getDataByRow(rows[i]) == removedObject.src) {
rows[i].parentNode.removeChild(rows[i]);
break;
}
}
self.render();
});
dojo.event.connect(this.store, "onUpdateField", function (obj, fieldPath, val) {
var row = self.getRow(obj);
var idx = self.getColumnIndex(fieldPath);
if (row && row.cells[idx] && self.columns[idx]) {
self.fillCell(row.cells[idx], self.columns[idx], val);
}
});
}, postCreate:function () {
this.store.keyField = this.valueField;
if (this.domNode) {
if (this.domNode.nodeName.toLowerCase() != "table") {
}
if (this.domNode.getElementsByTagName("thead")[0]) {
var head = this.domNode.getElementsByTagName("thead")[0];
if (this.headClass.length > 0) {
head.className = this.headClass;
}
dojo.html.disableSelection(this.domNode);
this.parseMetadata(head);
var header = "td";
if (head.getElementsByTagName(header).length == 0) {
header = "th";
}
var headers = head.getElementsByTagName(header);
for (var i = 0; i < headers.length; i++) {
if (!this.columns[i].noSort) {
dojo.event.connect(headers[i], "onclick", this, "onSort");
}
}
} else {
this.domNode.appendChild(document.createElement("thead"));
}
if (this.domNode.tBodies.length < 1) {
var body = document.createElement("tbody");
this.domNode.appendChild(body);
} else {
var body = this.domNode.tBodies[0];
}
if (this.tbodyClass.length > 0) {
body.className = this.tbodyClass;
}
dojo.event.connect(body, "onclick", this, "onSelect");
this.parseData(body);
}
}});
 
/trunk/api/js/dojo/src/widget/Textbox.js
New file
0,0 → 1,50
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Textbox");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Manager");
dojo.require("dojo.widget.Parse");
dojo.require("dojo.xml.Parse");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.common");
dojo.require("dojo.i18n.common");
dojo.requireLocalization("dojo.widget", "validate", null, "fr,ja,zh-cn,ROOT");
dojo.widget.defineWidget("dojo.widget.Textbox", dojo.widget.HtmlWidget, {className:"", name:"", value:"", type:"", trim:false, uppercase:false, lowercase:false, ucFirst:false, digit:false, htmlfloat:"none", templateString:"<span style='float:${this.htmlfloat};'>\n\t<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'\n\t\tid='${this.widgetId}' name='${this.name}'\n\t\tclass='${this.className}' type='${this.type}' >\n</span>\n", textbox:null, fillInTemplate:function () {
this.textbox.value = this.value;
}, filter:function () {
if (this.trim) {
this.textbox.value = this.textbox.value.replace(/(^\s*|\s*$)/g, "");
}
if (this.uppercase) {
this.textbox.value = this.textbox.value.toUpperCase();
}
if (this.lowercase) {
this.textbox.value = this.textbox.value.toLowerCase();
}
if (this.ucFirst) {
this.textbox.value = this.textbox.value.replace(/\b\w+\b/g, function (word) {
return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
});
}
if (this.digit) {
this.textbox.value = this.textbox.value.replace(/\D/g, "");
}
}, onfocus:function () {
}, onblur:function () {
this.filter();
}, mixInProperties:function (localProperties, frag) {
dojo.widget.Textbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties["class"]) {
this.className = localProperties["class"];
}
}});
 
/trunk/api/js/dojo/src/widget/SplitContainer.js
New file
0,0 → 1,323
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.SplitContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.html.style");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.selection");
dojo.require("dojo.io.cookie");
dojo.widget.defineWidget("dojo.widget.SplitContainer", dojo.widget.HtmlWidget, function () {
this.sizers = [];
}, {isContainer:true, templateCssString:".dojoSplitContainer{\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: block;\n}\n\n.dojoSplitPane{\n\tposition: absolute;\n}\n\n.dojoSplitContainerSizerH,\n.dojoSplitContainerSizerV {\n\tfont-size: 1px;\n\tcursor: move;\n\tcursor: w-resize;\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tmargin: 0;\n}\n\n.dojoSplitContainerSizerV {\n\tcursor: n-resize;\n}\n\n.dojoSplitContainerVirtualSizerH,\n.dojoSplitContainerVirtualSizerV {\n\tfont-size: 1px;\n\tcursor: move;\n\tcursor: w-resize;\n\tbackground-color: ThreeDShadow;\n\t-moz-opacity: 0.5;\n\topacity: 0.5;\n\tfilter: Alpha(Opacity=50);\n\tmargin: 0;\n}\n\n.dojoSplitContainerVirtualSizerV {\n\tcursor: n-resize;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/SplitContainer.css"), activeSizing:false, sizerWidth:15, orientation:"horizontal", persist:true, postMixInProperties:function () {
dojo.widget.SplitContainer.superclass.postMixInProperties.apply(this, arguments);
this.isHorizontal = (this.orientation == "horizontal");
}, fillInTemplate:function () {
dojo.widget.SplitContainer.superclass.fillInTemplate.apply(this, arguments);
dojo.html.addClass(this.domNode, "dojoSplitContainer");
if (dojo.render.html.moz) {
this.domNode.style.overflow = "-moz-scrollbars-none";
}
var content = dojo.html.getContentBox(this.domNode);
this.paneWidth = content.width;
this.paneHeight = content.height;
}, onResized:function (e) {
var content = dojo.html.getContentBox(this.domNode);
this.paneWidth = content.width;
this.paneHeight = content.height;
this._layoutPanels();
}, postCreate:function (args, fragment, parentComp) {
dojo.widget.SplitContainer.superclass.postCreate.apply(this, arguments);
for (var i = 0; i < this.children.length; i++) {
with (this.children[i].domNode.style) {
position = "absolute";
}
dojo.html.addClass(this.children[i].domNode, "dojoSplitPane");
if (i == this.children.length - 1) {
break;
}
this._addSizer();
}
if (typeof this.sizerWidth == "object") {
try {
this.sizerWidth = parseInt(this.sizerWidth.toString());
}
catch (e) {
this.sizerWidth = 15;
}
}
this.virtualSizer = document.createElement("div");
this.virtualSizer.style.position = "absolute";
this.virtualSizer.style.display = "none";
this.virtualSizer.style.zIndex = 10;
this.virtualSizer.className = this.isHorizontal ? "dojoSplitContainerVirtualSizerH" : "dojoSplitContainerVirtualSizerV";
this.domNode.appendChild(this.virtualSizer);
dojo.html.disableSelection(this.virtualSizer);
if (this.persist) {
this._restoreState();
}
this.resizeSoon();
}, _injectChild:function (child) {
with (child.domNode.style) {
position = "absolute";
}
dojo.html.addClass(child.domNode, "dojoSplitPane");
}, _addSizer:function () {
var i = this.sizers.length;
this.sizers[i] = document.createElement("div");
this.sizers[i].style.position = "absolute";
this.sizers[i].className = this.isHorizontal ? "dojoSplitContainerSizerH" : "dojoSplitContainerSizerV";
var self = this;
var handler = (function () {
var sizer_i = i;
return function (e) {
self.beginSizing(e, sizer_i);
};
})();
dojo.event.connect(this.sizers[i], "onmousedown", handler);
this.domNode.appendChild(this.sizers[i]);
dojo.html.disableSelection(this.sizers[i]);
}, removeChild:function (widget) {
if (this.sizers.length > 0) {
for (var x = 0; x < this.children.length; x++) {
if (this.children[x] === widget) {
var i = this.sizers.length - 1;
this.domNode.removeChild(this.sizers[i]);
this.sizers.length = i;
break;
}
}
}
dojo.widget.SplitContainer.superclass.removeChild.call(this, widget, arguments);
this.onResized();
}, addChild:function (widget) {
dojo.widget.SplitContainer.superclass.addChild.apply(this, arguments);
this._injectChild(widget);
if (this.children.length > 1) {
this._addSizer();
}
this._layoutPanels();
}, _layoutPanels:function () {
if (this.children.length == 0) {
return;
}
var space = this.isHorizontal ? this.paneWidth : this.paneHeight;
if (this.children.length > 1) {
space -= this.sizerWidth * (this.children.length - 1);
}
var out_of = 0;
for (var i = 0; i < this.children.length; i++) {
out_of += this.children[i].sizeShare;
}
var pix_per_unit = space / out_of;
var total_size = 0;
for (var i = 0; i < this.children.length - 1; i++) {
var size = Math.round(pix_per_unit * this.children[i].sizeShare);
this.children[i].sizeActual = size;
total_size += size;
}
this.children[this.children.length - 1].sizeActual = space - total_size;
this._checkSizes();
var pos = 0;
var size = this.children[0].sizeActual;
this._movePanel(this.children[0], pos, size);
this.children[0].position = pos;
pos += size;
for (var i = 1; i < this.children.length; i++) {
this._moveSlider(this.sizers[i - 1], pos, this.sizerWidth);
this.sizers[i - 1].position = pos;
pos += this.sizerWidth;
size = this.children[i].sizeActual;
this._movePanel(this.children[i], pos, size);
this.children[i].position = pos;
pos += size;
}
}, _movePanel:function (panel, pos, size) {
if (this.isHorizontal) {
panel.domNode.style.left = pos + "px";
panel.domNode.style.top = 0;
panel.resizeTo(size, this.paneHeight);
} else {
panel.domNode.style.left = 0;
panel.domNode.style.top = pos + "px";
panel.resizeTo(this.paneWidth, size);
}
}, _moveSlider:function (slider, pos, size) {
if (this.isHorizontal) {
slider.style.left = pos + "px";
slider.style.top = 0;
dojo.html.setMarginBox(slider, {width:size, height:this.paneHeight});
} else {
slider.style.left = 0;
slider.style.top = pos + "px";
dojo.html.setMarginBox(slider, {width:this.paneWidth, height:size});
}
}, _growPane:function (growth, pane) {
if (growth > 0) {
if (pane.sizeActual > pane.sizeMin) {
if ((pane.sizeActual - pane.sizeMin) > growth) {
pane.sizeActual = pane.sizeActual - growth;
growth = 0;
} else {
growth -= pane.sizeActual - pane.sizeMin;
pane.sizeActual = pane.sizeMin;
}
}
}
return growth;
}, _checkSizes:function () {
var total_min_size = 0;
var total_size = 0;
for (var i = 0; i < this.children.length; i++) {
total_size += this.children[i].sizeActual;
total_min_size += this.children[i].sizeMin;
}
if (total_min_size <= total_size) {
var growth = 0;
for (var i = 0; i < this.children.length; i++) {
if (this.children[i].sizeActual < this.children[i].sizeMin) {
growth += this.children[i].sizeMin - this.children[i].sizeActual;
this.children[i].sizeActual = this.children[i].sizeMin;
}
}
if (growth > 0) {
if (this.isDraggingLeft) {
for (var i = this.children.length - 1; i >= 0; i--) {
growth = this._growPane(growth, this.children[i]);
}
} else {
for (var i = 0; i < this.children.length; i++) {
growth = this._growPane(growth, this.children[i]);
}
}
}
} else {
for (var i = 0; i < this.children.length; i++) {
this.children[i].sizeActual = Math.round(total_size * (this.children[i].sizeMin / total_min_size));
}
}
}, beginSizing:function (e, i) {
this.paneBefore = this.children[i];
this.paneAfter = this.children[i + 1];
this.isSizing = true;
this.sizingSplitter = this.sizers[i];
this.originPos = dojo.html.getAbsolutePosition(this.children[0].domNode, true, dojo.html.boxSizing.MARGIN_BOX);
if (this.isHorizontal) {
var client = (e.layerX ? e.layerX : e.offsetX);
var screen = e.pageX;
this.originPos = this.originPos.x;
} else {
var client = (e.layerY ? e.layerY : e.offsetY);
var screen = e.pageY;
this.originPos = this.originPos.y;
}
this.startPoint = this.lastPoint = screen;
this.screenToClientOffset = screen - client;
this.dragOffset = this.lastPoint - this.paneBefore.sizeActual - this.originPos - this.paneBefore.position;
if (!this.activeSizing) {
this._showSizingLine();
}
dojo.event.connect(document.documentElement, "onmousemove", this, "changeSizing");
dojo.event.connect(document.documentElement, "onmouseup", this, "endSizing");
dojo.event.browser.stopEvent(e);
}, changeSizing:function (e) {
this.lastPoint = this.isHorizontal ? e.pageX : e.pageY;
if (this.activeSizing) {
this.movePoint();
this._updateSize();
} else {
this.movePoint();
this._moveSizingLine();
}
dojo.event.browser.stopEvent(e);
}, endSizing:function (e) {
if (!this.activeSizing) {
this._hideSizingLine();
}
this._updateSize();
this.isSizing = false;
dojo.event.disconnect(document.documentElement, "onmousemove", this, "changeSizing");
dojo.event.disconnect(document.documentElement, "onmouseup", this, "endSizing");
if (this.persist) {
this._saveState(this);
}
}, movePoint:function () {
var p = this.lastPoint - this.screenToClientOffset;
var a = p - this.dragOffset;
a = this.legaliseSplitPoint(a);
p = a + this.dragOffset;
this.lastPoint = p + this.screenToClientOffset;
}, legaliseSplitPoint:function (a) {
a += this.sizingSplitter.position;
this.isDraggingLeft = (a > 0) ? true : false;
if (!this.activeSizing) {
if (a < this.paneBefore.position + this.paneBefore.sizeMin) {
a = this.paneBefore.position + this.paneBefore.sizeMin;
}
if (a > this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin))) {
a = this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin));
}
}
a -= this.sizingSplitter.position;
this._checkSizes();
return a;
}, _updateSize:function () {
var pos = this.lastPoint - this.dragOffset - this.originPos;
var start_region = this.paneBefore.position;
var end_region = this.paneAfter.position + this.paneAfter.sizeActual;
this.paneBefore.sizeActual = pos - start_region;
this.paneAfter.position = pos + this.sizerWidth;
this.paneAfter.sizeActual = end_region - this.paneAfter.position;
for (var i = 0; i < this.children.length; i++) {
this.children[i].sizeShare = this.children[i].sizeActual;
}
this._layoutPanels();
}, _showSizingLine:function () {
this._moveSizingLine();
if (this.isHorizontal) {
dojo.html.setMarginBox(this.virtualSizer, {width:this.sizerWidth, height:this.paneHeight});
} else {
dojo.html.setMarginBox(this.virtualSizer, {width:this.paneWidth, height:this.sizerWidth});
}
this.virtualSizer.style.display = "block";
}, _hideSizingLine:function () {
this.virtualSizer.style.display = "none";
}, _moveSizingLine:function () {
var pos = this.lastPoint - this.startPoint + this.sizingSplitter.position;
if (this.isHorizontal) {
this.virtualSizer.style.left = pos + "px";
} else {
var pos = (this.lastPoint - this.startPoint) + this.sizingSplitter.position;
this.virtualSizer.style.top = pos + "px";
}
}, _getCookieName:function (i) {
return this.widgetId + "_" + i;
}, _restoreState:function () {
for (var i = 0; i < this.children.length; i++) {
var cookieName = this._getCookieName(i);
var cookieValue = dojo.io.cookie.getCookie(cookieName);
if (cookieValue != null) {
var pos = parseInt(cookieValue);
if (typeof pos == "number") {
this.children[i].sizeShare = pos;
}
}
}
}, _saveState:function () {
for (var i = 0; i < this.children.length; i++) {
var cookieName = this._getCookieName(i);
dojo.io.cookie.setCookie(cookieName, this.children[i].sizeShare, null, null, null, null);
}
}});
dojo.lang.extend(dojo.widget.Widget, {sizeMin:10, sizeShare:10});
dojo.widget.defineWidget("dojo.widget.SplitContainerPanel", dojo.widget.ContentPane, {});
 
/trunk/api/js/dojo/src/widget/Dialog.js
New file
0,0 → 1,298
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Dialog");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.event.*");
dojo.require("dojo.gfx.color");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.display");
dojo.require("dojo.html.iframe");
dojo.declare("dojo.widget.ModalDialogBase", null, {isContainer:true, focusElement:"", bgColor:"black", bgOpacity:0.4, followScroll:true, closeOnBackgroundClick:false, trapTabs:function (e) {
if (e.target == this.tabStartOuter) {
if (this._fromTrap) {
this.tabStart.focus();
this._fromTrap = false;
} else {
this._fromTrap = true;
this.tabEnd.focus();
}
} else {
if (e.target == this.tabStart) {
if (this._fromTrap) {
this._fromTrap = false;
} else {
this._fromTrap = true;
this.tabEnd.focus();
}
} else {
if (e.target == this.tabEndOuter) {
if (this._fromTrap) {
this.tabEnd.focus();
this._fromTrap = false;
} else {
this._fromTrap = true;
this.tabStart.focus();
}
} else {
if (e.target == this.tabEnd) {
if (this._fromTrap) {
this._fromTrap = false;
} else {
this._fromTrap = true;
this.tabStart.focus();
}
}
}
}
}
}, clearTrap:function (e) {
var _this = this;
setTimeout(function () {
_this._fromTrap = false;
}, 100);
}, postCreate:function () {
with (this.domNode.style) {
position = "absolute";
zIndex = 999;
display = "none";
overflow = "visible";
}
var b = dojo.body();
b.appendChild(this.domNode);
this.bg = document.createElement("div");
this.bg.className = "dialogUnderlay";
with (this.bg.style) {
position = "absolute";
left = top = "0px";
zIndex = 998;
display = "none";
}
b.appendChild(this.bg);
this.setBackgroundColor(this.bgColor);
this.bgIframe = new dojo.html.BackgroundIframe();
if (this.bgIframe.iframe) {
with (this.bgIframe.iframe.style) {
position = "absolute";
left = top = "0px";
zIndex = 90;
display = "none";
}
}
if (this.closeOnBackgroundClick) {
dojo.event.kwConnect({srcObj:this.bg, srcFunc:"onclick", adviceObj:this, adviceFunc:"onBackgroundClick", once:true});
}
}, uninitialize:function () {
this.bgIframe.remove();
dojo.html.removeNode(this.bg, true);
}, setBackgroundColor:function (color) {
if (arguments.length >= 3) {
color = new dojo.gfx.color.Color(arguments[0], arguments[1], arguments[2]);
} else {
color = new dojo.gfx.color.Color(color);
}
this.bg.style.backgroundColor = color.toString();
return this.bgColor = color;
}, setBackgroundOpacity:function (op) {
if (arguments.length == 0) {
op = this.bgOpacity;
}
dojo.html.setOpacity(this.bg, op);
try {
this.bgOpacity = dojo.html.getOpacity(this.bg);
}
catch (e) {
this.bgOpacity = op;
}
return this.bgOpacity;
}, _sizeBackground:function () {
if (this.bgOpacity > 0) {
var viewport = dojo.html.getViewport();
var h = viewport.height;
var w = viewport.width;
with (this.bg.style) {
width = w + "px";
height = h + "px";
}
var scroll_offset = dojo.html.getScroll().offset;
this.bg.style.top = scroll_offset.y + "px";
this.bg.style.left = scroll_offset.x + "px";
var viewport = dojo.html.getViewport();
if (viewport.width != w) {
this.bg.style.width = viewport.width + "px";
}
if (viewport.height != h) {
this.bg.style.height = viewport.height + "px";
}
}
this.bgIframe.size(this.bg);
}, _showBackground:function () {
if (this.bgOpacity > 0) {
this.bg.style.display = "block";
}
if (this.bgIframe.iframe) {
this.bgIframe.iframe.style.display = "block";
}
}, placeModalDialog:function () {
var scroll_offset = dojo.html.getScroll().offset;
var viewport_size = dojo.html.getViewport();
var mb;
if (this.isShowing()) {
mb = dojo.html.getMarginBox(this.domNode);
} else {
dojo.html.setVisibility(this.domNode, false);
dojo.html.show(this.domNode);
mb = dojo.html.getMarginBox(this.domNode);
dojo.html.hide(this.domNode);
dojo.html.setVisibility(this.domNode, true);
}
var x = scroll_offset.x + (viewport_size.width - mb.width) / 2;
var y = scroll_offset.y + (viewport_size.height - mb.height) / 2;
with (this.domNode.style) {
left = x + "px";
top = y + "px";
}
}, _onKey:function (evt) {
if (evt.key) {
var node = evt.target;
while (node != null) {
if (node == this.domNode) {
return;
}
node = node.parentNode;
}
if (evt.key != evt.KEY_TAB) {
dojo.event.browser.stopEvent(evt);
} else {
if (!dojo.render.html.opera) {
try {
this.tabStart.focus();
}
catch (e) {
}
}
}
}
}, showModalDialog:function () {
if (this.followScroll && !this._scrollConnected) {
this._scrollConnected = true;
dojo.event.connect(window, "onscroll", this, "_onScroll");
}
dojo.event.connect(document.documentElement, "onkey", this, "_onKey");
this.placeModalDialog();
this.setBackgroundOpacity();
this._sizeBackground();
this._showBackground();
this._fromTrap = true;
setTimeout(dojo.lang.hitch(this, function () {
try {
this.tabStart.focus();
}
catch (e) {
}
}), 50);
}, hideModalDialog:function () {
if (this.focusElement) {
dojo.byId(this.focusElement).focus();
dojo.byId(this.focusElement).blur();
}
this.bg.style.display = "none";
this.bg.style.width = this.bg.style.height = "1px";
if (this.bgIframe.iframe) {
this.bgIframe.iframe.style.display = "none";
}
dojo.event.disconnect(document.documentElement, "onkey", this, "_onKey");
if (this._scrollConnected) {
this._scrollConnected = false;
dojo.event.disconnect(window, "onscroll", this, "_onScroll");
}
}, _onScroll:function () {
var scroll_offset = dojo.html.getScroll().offset;
this.bg.style.top = scroll_offset.y + "px";
this.bg.style.left = scroll_offset.x + "px";
this.placeModalDialog();
}, checkSize:function () {
if (this.isShowing()) {
this._sizeBackground();
this.placeModalDialog();
this.onResized();
}
}, onBackgroundClick:function () {
if (this.lifetime - this.timeRemaining >= this.blockDuration) {
return;
}
this.hide();
}});
dojo.widget.defineWidget("dojo.widget.Dialog", [dojo.widget.ContentPane, dojo.widget.ModalDialogBase], {templateString:"<div id=\"${this.widgetId}\" class=\"dojoDialog\" dojoattachpoint=\"wrapper\">\n\t<span dojoattachpoint=\"tabStartOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\"\ttabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabStart\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoattachpoint=\"containerNode\" style=\"position: relative; z-index: 2;\"></div>\n\t<span dojoattachpoint=\"tabEnd\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabEndOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n</div>\n", blockDuration:0, lifetime:0, closeNode:"", postMixInProperties:function () {
dojo.widget.Dialog.superclass.postMixInProperties.apply(this, arguments);
if (this.closeNode) {
this.setCloseControl(this.closeNode);
}
}, postCreate:function () {
dojo.widget.Dialog.superclass.postCreate.apply(this, arguments);
dojo.widget.ModalDialogBase.prototype.postCreate.apply(this, arguments);
}, show:function () {
if (this.lifetime) {
this.timeRemaining = this.lifetime;
if (this.timerNode) {
this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);
}
if (this.blockDuration && this.closeNode) {
if (this.lifetime > this.blockDuration) {
this.closeNode.style.visibility = "hidden";
} else {
this.closeNode.style.display = "none";
}
}
if (this.timer) {
clearInterval(this.timer);
}
this.timer = setInterval(dojo.lang.hitch(this, "_onTick"), 100);
}
this.showModalDialog();
dojo.widget.Dialog.superclass.show.call(this);
}, onLoad:function () {
this.placeModalDialog();
dojo.widget.Dialog.superclass.onLoad.call(this);
}, fillInTemplate:function () {
}, hide:function () {
this.hideModalDialog();
dojo.widget.Dialog.superclass.hide.call(this);
if (this.timer) {
clearInterval(this.timer);
}
}, setTimerNode:function (node) {
this.timerNode = node;
}, setCloseControl:function (node) {
this.closeNode = dojo.byId(node);
dojo.event.connect(this.closeNode, "onclick", this, "hide");
}, setShowControl:function (node) {
node = dojo.byId(node);
dojo.event.connect(node, "onclick", this, "show");
}, _onTick:function () {
if (this.timer) {
this.timeRemaining -= 100;
if (this.lifetime - this.timeRemaining >= this.blockDuration) {
if (this.closeNode) {
this.closeNode.style.visibility = "visible";
}
}
if (!this.timeRemaining) {
clearInterval(this.timer);
this.hide();
} else {
if (this.timerNode) {
this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);
}
}
}
}});
 
/trunk/api/js/dojo/src/widget/LinkPane.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.LinkPane");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.html.style");
dojo.widget.defineWidget("dojo.widget.LinkPane", dojo.widget.ContentPane, {templateString:"<div class=\"dojoLinkPane\"></div>", fillInTemplate:function (args, frag) {
var source = this.getFragNodeRef(frag);
this.label += source.innerHTML;
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
}});
 
/trunk/api/js/dojo/src/widget/Form.js
New file
0,0 → 1,265
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Form");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.Form", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onSubmit:onSubmit'></form>", formElements:[], ignoreNullValues:false, postCreate:function (args, frag) {
for (var key in args) {
if (key == "dojotype") {
continue;
}
var attr = document.createAttribute(key);
attr.nodeValue = args[key];
this.containerNode.setAttributeNode(attr);
}
}, _createRepeaters:function (obj, widget) {
for (var i = 0; i < widget.children.length; ++i) {
if (widget.children[i].widgetType == "RepeaterContainer") {
var rIndex = widget.children[i].index;
var rIndexPos = rIndex.indexOf("%{index}");
rIndex = rIndex.substr(0, rIndexPos - 1);
var myObj = this._getObject(obj, rIndex);
if (typeof (myObj) == "object" && myObj.length == 0) {
myObj = new Array();
}
var rowCount = widget.children[i].getRowCount();
for (var j = 0, len = rowCount; j < len; ++j) {
widget.children[i].deleteRow(0);
}
for (var j = 0; j < myObj.length; j++) {
widget.children[i].addRow(false);
}
}
if (widget.children[i].isContainer) {
this._createRepeaters(obj, widget.children[i]);
}
}
}, _createFormElements:function () {
if (dojo.render.html.safari) {
this.formElements = [];
var elems = ["INPUT", "SELECT", "TEXTAREA"];
for (var k = 0; k < elems.length; k++) {
var list = this.containerNode.getElementsByTagName(elems[k]);
for (var j = 0, len2 = list.length; j < len2; j++) {
this.formElements.push(list[j]);
}
}
} else {
this.formElements = this.containerNode.elements;
}
}, onSubmit:function (e) {
e.preventDefault();
}, submit:function () {
this.containerNode.submit();
}, _getFormElement:function (name) {
if (dojo.render.html.ie) {
for (var i = 0, len = this.formElements.length; i < len; i++) {
var element = this.formElements[i];
if (element.name == name) {
return element;
}
}
} else {
var elem = this.formElements[name];
if (typeof (elem) != "undefined") {
return elem;
}
}
return null;
}, _getObject:function (obj, searchString) {
var namePath = [];
namePath = searchString.split(".");
var myObj = obj;
var name = namePath[namePath.length - 1];
for (var j = 0, len = namePath.length; j < len; ++j) {
var p = namePath[j];
if (typeof (myObj[p]) == "undefined") {
myObj[p] = {};
}
myObj = myObj[p];
}
return myObj;
}, _setToContainers:function (obj, widget) {
for (var i = 0, len = widget.children.length; i < len; ++i) {
var currentWidget = widget.children[i];
if (currentWidget.widgetType == "Repeater") {
for (var j = 0, len = currentWidget.getRowCount(); j < len; ++j) {
currentWidget._initRow(j);
}
}
if (currentWidget.isContainer) {
this._setToContainers(obj, currentWidget);
continue;
}
switch (currentWidget.widgetType) {
case "Checkbox":
currentWidget.setValue(currentWidget.inputNode.checked);
break;
case "DropdownDatePicker":
currentWidget.setValue(currentWidget.getValue());
break;
case "Select":
continue;
break;
case "ComboBox":
continue;
break;
default:
break;
}
}
}, setValues:function (obj) {
this._createFormElements();
this._createRepeaters(obj, this);
for (var i = 0, len = this.formElements.length; i < len; i++) {
var element = this.formElements[i];
if (element.name == "") {
continue;
}
var namePath = new Array();
namePath = element.name.split(".");
var myObj = obj;
var name = namePath[namePath.length - 1];
for (var j = 1, len2 = namePath.length; j < len2; ++j) {
var p = namePath[j - 1];
if (typeof (myObj[p]) == "undefined") {
myObj = undefined;
break;
}
myObj = myObj[p];
}
if (typeof (myObj) == "undefined") {
continue;
}
if (typeof (myObj[name]) == "undefined" && this.ignoreNullValues) {
continue;
}
var type = element.type;
if (type == "hidden" || type == "text" || type == "textarea" || type == "password") {
type = "text";
}
switch (type) {
case "checkbox":
element.checked = false;
if (typeof (myObj[name]) == "undefined") {
continue;
}
for (var j = 0, len2 = myObj[name].length; j < len2; ++j) {
if (element.value == myObj[name][j]) {
element.checked = true;
}
}
break;
case "radio":
element.checked = false;
if (typeof (myObj[name]) == "undefined") {
continue;
}
if (myObj[name] == element.value) {
element.checked = true;
}
break;
case "select-multiple":
element.selectedIndex = -1;
for (var j = 0, len2 = element.options.length; j < len2; ++j) {
for (var k = 0, len3 = myObj[name].length; k < len3; ++k) {
if (element.options[j].value == myObj[name][k]) {
element.options[j].selected = true;
}
}
}
break;
case "select-one":
element.selectedIndex = "0";
for (var j = 0, len2 = element.options.length; j < len2; ++j) {
if (element.options[j].value == myObj[name]) {
element.options[j].selected = true;
} else {
}
}
break;
case "text":
var value = "";
if (typeof (myObj[name]) != "undefined") {
value = myObj[name];
}
element.value = value;
break;
default:
dojo.debug("Not supported type (" + type + ")");
break;
}
}
this._setToContainers(obj, this);
}, getValues:function () {
this._createFormElements();
var obj = {};
for (var i = 0, len = this.formElements.length; i < len; i++) {
var elm = this.formElements[i];
var namePath = [];
if (elm.name == "") {
continue;
}
namePath = elm.name.split(".");
var myObj = obj;
var name = namePath[namePath.length - 1];
for (var j = 1, len2 = namePath.length; j < len2; ++j) {
var nameIndex = null;
var p = namePath[j - 1];
var nameA = p.split("[");
if (nameA.length > 1) {
if (typeof (myObj[nameA[0]]) == "undefined") {
myObj[nameA[0]] = [];
}
nameIndex = parseInt(nameA[1]);
if (typeof (myObj[nameA[0]][nameIndex]) == "undefined") {
myObj[nameA[0]][nameIndex] = {};
}
} else {
if (typeof (myObj[nameA[0]]) == "undefined") {
myObj[nameA[0]] = {};
}
}
if (nameA.length == 1) {
myObj = myObj[nameA[0]];
} else {
myObj = myObj[nameA[0]][nameIndex];
}
}
if ((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type == "radio" && elm.checked)) {
if (name == name.split("[")[0]) {
myObj[name] = elm.value;
} else {
}
} else {
if (elm.type == "checkbox" && elm.checked) {
if (typeof (myObj[name]) == "undefined") {
myObj[name] = [];
}
myObj[name].push(elm.value);
} else {
if (elm.type == "select-multiple") {
if (typeof (myObj[name]) == "undefined") {
myObj[name] = [];
}
for (var jdx = 0, len3 = elm.options.length; jdx < len3; ++jdx) {
if (elm.options[jdx].selected) {
myObj[name].push(elm.options[jdx].value);
}
}
}
}
}
name = undefined;
}
return obj;
}});
 
/trunk/api/js/dojo/src/widget/TreeBasicController.js
New file
0,0 → 1,152
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeBasicController");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.widget.defineWidget("dojo.widget.TreeBasicController", dojo.widget.HtmlWidget, {widgetType:"TreeBasicController", DNDController:"", dieWithTree:false, initialize:function (args, frag) {
if (this.DNDController == "create") {
dojo.require("dojo.dnd.TreeDragAndDrop");
this.DNDController = new dojo.dnd.TreeDNDController(this);
}
}, listenTree:function (tree) {
dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.subscribe(tree.eventNames.treeClick, this, "onTreeClick");
dojo.event.topic.subscribe(tree.eventNames.treeCreate, this, "onTreeCreate");
dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
if (this.DNDController) {
this.DNDController.listenTree(tree);
}
}, unlistenTree:function (tree) {
dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
dojo.event.topic.unsubscribe(tree.eventNames.treeClick, this, "onTreeClick");
dojo.event.topic.unsubscribe(tree.eventNames.treeCreate, this, "onTreeCreate");
dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
}, onTreeDestroy:function (message) {
var tree = message.source;
this.unlistenTree(tree);
if (this.dieWithTree) {
this.destroy();
}
}, onCreateDOMNode:function (message) {
var node = message.source;
if (node.expandLevel > 0) {
this.expandToLevel(node, node.expandLevel);
}
}, onTreeCreate:function (message) {
var tree = message.source;
var _this = this;
if (tree.expandLevel) {
dojo.lang.forEach(tree.children, function (child) {
_this.expandToLevel(child, tree.expandLevel - 1);
});
}
}, expandToLevel:function (node, level) {
if (level == 0) {
return;
}
var children = node.children;
var _this = this;
var handler = function (node, expandLevel) {
this.node = node;
this.expandLevel = expandLevel;
this.process = function () {
for (var i = 0; i < this.node.children.length; i++) {
var child = node.children[i];
_this.expandToLevel(child, this.expandLevel);
}
};
};
var h = new handler(node, level - 1);
this.expand(node, false, h, h.process);
}, onTreeClick:function (message) {
var node = message.source;
if (node.isLocked()) {
return false;
}
if (node.isExpanded) {
this.collapse(node);
} else {
this.expand(node);
}
}, expand:function (node, sync, callObj, callFunc) {
node.expand();
if (callFunc) {
callFunc.apply(callObj, [node]);
}
}, collapse:function (node) {
node.collapse();
}, canMove:function (child, newParent) {
if (child.actionIsDisabled(child.actions.MOVE)) {
return false;
}
if (child.parent !== newParent && newParent.actionIsDisabled(newParent.actions.ADDCHILD)) {
return false;
}
var node = newParent;
while (node.isTreeNode) {
if (node === child) {
return false;
}
node = node.parent;
}
return true;
}, move:function (child, newParent, index) {
if (!this.canMove(child, newParent)) {
return false;
}
var result = this.doMove(child, newParent, index);
if (!result) {
return result;
}
if (newParent.isTreeNode) {
this.expand(newParent);
}
return result;
}, doMove:function (child, newParent, index) {
child.tree.move(child, newParent, index);
return true;
}, canRemoveNode:function (child) {
if (child.actionIsDisabled(child.actions.REMOVE)) {
return false;
}
return true;
}, removeNode:function (node, callObj, callFunc) {
if (!this.canRemoveNode(node)) {
return false;
}
return this.doRemoveNode(node, callObj, callFunc);
}, doRemoveNode:function (node, callObj, callFunc) {
node.tree.removeNode(node);
if (callFunc) {
callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node]);
}
}, canCreateChild:function (parent, index, data) {
if (parent.actionIsDisabled(parent.actions.ADDCHILD)) {
return false;
}
return true;
}, createChild:function (parent, index, data, callObj, callFunc) {
if (!this.canCreateChild(parent, index, data)) {
return false;
}
return this.doCreateChild.apply(this, arguments);
}, doCreateChild:function (parent, index, data, callObj, callFunc) {
var widgetType = data.widgetType ? data.widgetType : "TreeNode";
var newChild = dojo.widget.createWidget(widgetType, data);
parent.addChild(newChild, index);
this.expand(parent);
if (callFunc) {
callFunc.apply(callObj, [newChild]);
}
return newChild;
}});
 
/trunk/api/js/dojo/src/widget/TreeEditor.js
New file
0,0 → 1,65
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.RichText");
dojo.provide("dojo.widget.TreeEditor");
dojo.widget.defineWidget("dojo.widget.TreeEditor", dojo.widget.HtmlWidget, {singleLineMode:false, saveOnBlur:true, sync:false, selectOnOpen:true, controller:null, node:null, richTextParams:{styleSheets:"src/widget/templates/TreeEditor.css"}, getContents:function () {
return this.richText.getEditorContent();
}, open:function (node) {
if (!this.richText) {
this.richText = dojo.widget.createWidget("RichText", this.richTextParams, node.labelNode);
dojo.event.connect("around", this.richText, "onKeyDown", this, "richText_onKeyDown");
dojo.event.connect(this.richText, "onBlur", this, "richText_onBlur");
var self = this;
dojo.event.connect(this.richText, "onLoad", function () {
if (self.selectOnOpen) {
self.richText.execCommand("selectall");
}
});
} else {
this.richText.open(node.labelNode);
}
this.node = node;
}, close:function (save) {
this.richText.close(save);
this.node = null;
}, isClosed:function () {
return !this.richText || this.richText.isClosed;
}, execCommand:function () {
this.richText.execCommand.apply(this.richText, arguments);
}, richText_onKeyDown:function (invocation) {
var e = invocation.args[0];
if ((!e) && (this.object)) {
e = dojo.event.browser.fixEvent(this.editor.window.event);
}
switch (e.keyCode) {
case e.KEY_ESCAPE:
this.finish(false);
dojo.event.browser.stopEvent(e);
break;
case e.KEY_ENTER:
if (e.ctrlKey && !this.singleLineMode) {
this.execCommand("inserthtml", "<br/>");
} else {
this.finish(true);
}
dojo.event.browser.stopEvent(e);
break;
default:
return invocation.proceed();
}
}, richText_onBlur:function () {
this.finish(this.saveOnBlur);
}, finish:function (save) {
return this.controller.editLabelFinish(save, this.sync);
}});
 
/trunk/api/js/dojo/src/widget/FloatingPane.js
New file
0,0 → 1,247
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.FloatingPane");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Manager");
dojo.require("dojo.html.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.iframe");
dojo.require("dojo.html.selection");
dojo.require("dojo.lfx.shadow");
dojo.require("dojo.widget.html.layout");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.dnd.HtmlDragMove");
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.widget.ResizeHandle");
dojo.declare("dojo.widget.FloatingPaneBase", null, {title:"", iconSrc:"", hasShadow:false, constrainToContainer:false, taskBarId:"", resizable:true, titleBarDisplay:true, windowState:"normal", displayCloseAction:false, displayMinimizeAction:false, displayMaximizeAction:false, _max_taskBarConnectAttempts:5, _taskBarConnectAttempts:0, templateString:"<div id=\"${this.widgetId}\" dojoAttachEvent=\"onMouseDown\" class=\"dojoFloatingPane\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoFloatingPaneTitleBar\" style=\"display:none\">\n\t \t<img dojoAttachPoint=\"titleBarIcon\" class=\"dojoFloatingPaneTitleBarIcon\">\n\t\t<div dojoAttachPoint=\"closeAction\" dojoAttachEvent=\"onClick:closeWindow\"\n \t \t\tclass=\"dojoFloatingPaneCloseIcon\"></div>\n\t\t<div dojoAttachPoint=\"restoreAction\" dojoAttachEvent=\"onClick:restoreWindow\"\n \t \t\tclass=\"dojoFloatingPaneRestoreIcon\"></div>\n\t\t<div dojoAttachPoint=\"maximizeAction\" dojoAttachEvent=\"onClick:maximizeWindow\"\n \t \t\tclass=\"dojoFloatingPaneMaximizeIcon\"></div>\n\t\t<div dojoAttachPoint=\"minimizeAction\" dojoAttachEvent=\"onClick:minimizeWindow\"\n \t \t\tclass=\"dojoFloatingPaneMinimizeIcon\"></div>\n\t \t<div dojoAttachPoint=\"titleBarText\" class=\"dojoFloatingPaneTitleText\">${this.title}</div>\n\t</div>\n\n\t<div id=\"${this.widgetId}_container\" dojoAttachPoint=\"containerNode\" class=\"dojoFloatingPaneClient\"></div>\n\n\t<div dojoAttachPoint=\"resizeBar\" class=\"dojoFloatingPaneResizebar\" style=\"display:none\"></div>\n</div>\n", templateCssString:"\n/********** Outer Window ***************/\n\n.dojoFloatingPane {\n\t/* essential css */\n\tposition: absolute;\n\toverflow: visible;\t\t/* so drop shadow is displayed */\n\tz-index: 10;\n\n\t/* styling css */\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tbackground-color: ThreeDFace;\n}\n\n\n/********** Title Bar ****************/\n\n.dojoFloatingPaneTitleBar {\n\tvertical-align: top;\n\tmargin: 2px 2px 2px 2px;\n\tz-index: 10;\n\tbackground-color: #7596c6;\n\tcursor: default;\n\toverflow: hidden;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tvertical-align: middle;\n}\n\n.dojoFloatingPaneTitleText {\n\tfloat: left;\n\tpadding: 2px 4px 2px 2px;\n\twhite-space: nowrap;\n\tcolor: CaptionText;\n\tfont: small-caption;\n}\n\n.dojoTitleBarIcon {\n\tfloat: left;\n\theight: 22px;\n\twidth: 22px;\n\tvertical-align: middle;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\n}\n\n.dojoFloatingPaneActions{\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\ttop: 2px;\n\tvertical-align: middle;\n}\n\n\n.dojoFloatingPaneActionItem {\n\tvertical-align: middle;\n\tmargin-right: 1px;\n\theight: 22px;\n\twidth: 22px;\n}\n\n\n.dojoFloatingPaneTitleBarIcon {\n\t/* essential css */\n\tfloat: left;\n\n\t/* styling css */\n\tmargin-left: 2px;\n\tmargin-right: 4px;\n\theight: 22px;\n}\n\n/* minimize/maximize icons are specified by CSS only */\n.dojoFloatingPaneMinimizeIcon,\n.dojoFloatingPaneMaximizeIcon,\n.dojoFloatingPaneRestoreIcon,\n.dojoFloatingPaneCloseIcon {\n\tvertical-align: middle;\n\theight: 22px;\n\twidth: 22px;\n\tfloat: right;\n}\n.dojoFloatingPaneMinimizeIcon {\n\tbackground-image: url(images/floatingPaneMinimize.gif);\n}\n.dojoFloatingPaneMaximizeIcon {\n\tbackground-image: url(images/floatingPaneMaximize.gif);\n}\n.dojoFloatingPaneRestoreIcon {\n\tbackground-image: url(images/floatingPaneRestore.gif);\n}\n.dojoFloatingPaneCloseIcon {\n\tbackground-image: url(images/floatingPaneClose.gif);\n}\n\n/* bar at bottom of window that holds resize handle */\n.dojoFloatingPaneResizebar {\n\tz-index: 10;\n\theight: 13px;\n\tbackground-color: ThreeDFace;\n}\n\n/************* Client Area ***************/\n\n.dojoFloatingPaneClient {\n\tposition: relative;\n\tz-index: 10;\n\tborder: 1px solid;\n\tborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n\tmargin: 2px;\n\tbackground-color: ThreeDFace;\n\tpadding: 8px;\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\tfont-size: 12px;\n\toverflow: auto;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/FloatingPane.css"), fillInFloatingPaneTemplate:function (args, frag) {
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
dojo.body().appendChild(this.domNode);
if (!this.isShowing()) {
this.windowState = "minimized";
}
if (this.iconSrc == "") {
dojo.html.removeNode(this.titleBarIcon);
} else {
this.titleBarIcon.src = this.iconSrc.toString();
}
if (this.titleBarDisplay) {
this.titleBar.style.display = "";
dojo.html.disableSelection(this.titleBar);
this.titleBarIcon.style.display = (this.iconSrc == "" ? "none" : "");
this.minimizeAction.style.display = (this.displayMinimizeAction ? "" : "none");
this.maximizeAction.style.display = (this.displayMaximizeAction && this.windowState != "maximized" ? "" : "none");
this.restoreAction.style.display = (this.displayMaximizeAction && this.windowState == "maximized" ? "" : "none");
this.closeAction.style.display = (this.displayCloseAction ? "" : "none");
this.drag = new dojo.dnd.HtmlDragMoveSource(this.domNode);
if (this.constrainToContainer) {
this.drag.constrainTo();
}
this.drag.setDragHandle(this.titleBar);
var self = this;
dojo.event.topic.subscribe("dragMove", function (info) {
if (info.source.domNode == self.domNode) {
dojo.event.topic.publish("floatingPaneMove", {source:self});
}
});
}
if (this.resizable) {
this.resizeBar.style.display = "";
this.resizeHandle = dojo.widget.createWidget("ResizeHandle", {targetElmId:this.widgetId, id:this.widgetId + "_resize"});
this.resizeBar.appendChild(this.resizeHandle.domNode);
}
if (this.hasShadow) {
this.shadow = new dojo.lfx.shadow(this.domNode);
}
this.bgIframe = new dojo.html.BackgroundIframe(this.domNode);
if (this.taskBarId) {
this._taskBarSetup();
}
dojo.body().removeChild(this.domNode);
}, postCreate:function () {
if (dojo.hostenv.post_load_) {
this._setInitialWindowState();
} else {
dojo.addOnLoad(this, "_setInitialWindowState");
}
}, maximizeWindow:function (evt) {
var mb = dojo.html.getMarginBox(this.domNode);
this.previous = {width:mb.width || this.width, height:mb.height || this.height, left:this.domNode.style.left, top:this.domNode.style.top, bottom:this.domNode.style.bottom, right:this.domNode.style.right};
if (this.domNode.parentNode.style.overflow.toLowerCase() != "hidden") {
this.parentPrevious = {overflow:this.domNode.parentNode.style.overflow};
dojo.debug(this.domNode.parentNode.style.overflow);
this.domNode.parentNode.style.overflow = "hidden";
}
this.domNode.style.left = dojo.html.getPixelValue(this.domNode.parentNode, "padding-left", true) + "px";
this.domNode.style.top = dojo.html.getPixelValue(this.domNode.parentNode, "padding-top", true) + "px";
if ((this.domNode.parentNode.nodeName.toLowerCase() == "body")) {
var viewport = dojo.html.getViewport();
var padding = dojo.html.getPadding(dojo.body());
this.resizeTo(viewport.width - padding.width, viewport.height - padding.height);
} else {
var content = dojo.html.getContentBox(this.domNode.parentNode);
this.resizeTo(content.width, content.height);
}
this.maximizeAction.style.display = "none";
this.restoreAction.style.display = "";
if (this.resizeHandle) {
this.resizeHandle.domNode.style.display = "none";
}
this.drag.setDragHandle(null);
this.windowState = "maximized";
}, minimizeWindow:function (evt) {
this.hide();
for (var attr in this.parentPrevious) {
this.domNode.parentNode.style[attr] = this.parentPrevious[attr];
}
this.lastWindowState = this.windowState;
this.windowState = "minimized";
}, restoreWindow:function (evt) {
if (this.windowState == "minimized") {
this.show();
if (this.lastWindowState == "maximized") {
this.domNode.parentNode.style.overflow = "hidden";
this.windowState = "maximized";
} else {
this.windowState = "normal";
}
} else {
if (this.windowState == "maximized") {
for (var attr in this.previous) {
this.domNode.style[attr] = this.previous[attr];
}
for (var attr in this.parentPrevious) {
this.domNode.parentNode.style[attr] = this.parentPrevious[attr];
}
this.resizeTo(this.previous.width, this.previous.height);
this.previous = null;
this.parentPrevious = null;
this.restoreAction.style.display = "none";
this.maximizeAction.style.display = this.displayMaximizeAction ? "" : "none";
if (this.resizeHandle) {
this.resizeHandle.domNode.style.display = "";
}
this.drag.setDragHandle(this.titleBar);
this.windowState = "normal";
} else {
}
}
}, toggleDisplay:function () {
if (this.windowState == "minimized") {
this.restoreWindow();
} else {
this.minimizeWindow();
}
}, closeWindow:function (evt) {
dojo.html.removeNode(this.domNode);
this.destroy();
}, onMouseDown:function (evt) {
this.bringToTop();
}, bringToTop:function () {
var floatingPanes = dojo.widget.manager.getWidgetsByType(this.widgetType);
var windows = [];
for (var x = 0; x < floatingPanes.length; x++) {
if (this.widgetId != floatingPanes[x].widgetId) {
windows.push(floatingPanes[x]);
}
}
windows.sort(function (a, b) {
return a.domNode.style.zIndex - b.domNode.style.zIndex;
});
windows.push(this);
var floatingPaneStartingZ = 100;
for (x = 0; x < windows.length; x++) {
windows[x].domNode.style.zIndex = floatingPaneStartingZ + x * 2;
}
}, _setInitialWindowState:function () {
if (this.isShowing()) {
this.width = -1;
var mb = dojo.html.getMarginBox(this.domNode);
this.resizeTo(mb.width, mb.height);
}
if (this.windowState == "maximized") {
this.maximizeWindow();
this.show();
return;
}
if (this.windowState == "normal") {
this.show();
return;
}
if (this.windowState == "minimized") {
this.hide();
return;
}
this.windowState = "minimized";
}, _taskBarSetup:function () {
var taskbar = dojo.widget.getWidgetById(this.taskBarId);
if (!taskbar) {
if (this._taskBarConnectAttempts < this._max_taskBarConnectAttempts) {
dojo.lang.setTimeout(this, this._taskBarSetup, 50);
this._taskBarConnectAttempts++;
} else {
dojo.debug("Unable to connect to the taskBar");
}
return;
}
taskbar.addChild(this);
}, showFloatingPane:function () {
this.bringToTop();
}, onFloatingPaneShow:function () {
var mb = dojo.html.getMarginBox(this.domNode);
this.resizeTo(mb.width, mb.height);
}, resizeTo:function (width, height) {
dojo.html.setMarginBox(this.domNode, {width:width, height:height});
dojo.widget.html.layout(this.domNode, [{domNode:this.titleBar, layoutAlign:"top"}, {domNode:this.resizeBar, layoutAlign:"bottom"}, {domNode:this.containerNode, layoutAlign:"client"}]);
dojo.widget.html.layout(this.containerNode, this.children, "top-bottom");
this.bgIframe.onResized();
if (this.shadow) {
this.shadow.size(width, height);
}
this.onResized();
}, checkSize:function () {
}, destroyFloatingPane:function () {
if (this.resizeHandle) {
this.resizeHandle.destroy();
this.resizeHandle = null;
}
}});
dojo.widget.defineWidget("dojo.widget.FloatingPane", [dojo.widget.ContentPane, dojo.widget.FloatingPaneBase], {fillInTemplate:function (args, frag) {
this.fillInFloatingPaneTemplate(args, frag);
dojo.widget.FloatingPane.superclass.fillInTemplate.call(this, args, frag);
}, postCreate:function () {
dojo.widget.FloatingPaneBase.prototype.postCreate.apply(this, arguments);
dojo.widget.FloatingPane.superclass.postCreate.apply(this, arguments);
}, show:function () {
dojo.widget.FloatingPane.superclass.show.apply(this, arguments);
this.showFloatingPane();
}, onShow:function () {
dojo.widget.FloatingPane.superclass.onShow.call(this);
this.onFloatingPaneShow();
}, destroy:function () {
this.destroyFloatingPane();
dojo.widget.FloatingPane.superclass.destroy.apply(this, arguments);
}});
dojo.widget.defineWidget("dojo.widget.ModalFloatingPane", [dojo.widget.FloatingPane, dojo.widget.ModalDialogBase], {windowState:"minimized", displayCloseAction:true, postCreate:function () {
dojo.widget.ModalDialogBase.prototype.postCreate.call(this);
dojo.widget.ModalFloatingPane.superclass.postCreate.call(this);
}, show:function () {
this.showModalDialog();
dojo.widget.ModalFloatingPane.superclass.show.apply(this, arguments);
this.bg.style.zIndex = this.domNode.style.zIndex - 1;
}, hide:function () {
this.hideModalDialog();
dojo.widget.ModalFloatingPane.superclass.hide.apply(this, arguments);
}, closeWindow:function () {
this.hide();
dojo.widget.ModalFloatingPane.superclass.closeWindow.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/RegexpTextbox.js
New file
0,0 → 1,25
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.RegexpTextbox");
dojo.require("dojo.widget.ValidationTextbox");
dojo.widget.defineWidget("dojo.widget.RegexpTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties, frag) {
dojo.widget.RegexpTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.regexp) {
this.flags.regexp = localProperties.regexp;
}
if (localProperties.flags) {
this.flags.flags = localProperties.flags;
}
}, isValid:function () {
var regexp = new RegExp(this.flags.regexp, this.flags.flags);
return regexp.test(this.textbox.value);
}});
 
/trunk/api/js/dojo/src/widget/Editor2.js
New file
0,0 → 1,410
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor2");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.RichText");
dojo.require("dojo.widget.Editor2Toolbar");
dojo.require("dojo.uri.cache");
dojo.widget.Editor2Manager = new dojo.widget.HandlerManager;
dojo.lang.mixin(dojo.widget.Editor2Manager, {_currentInstance:null, commandState:{Disabled:0, Latched:1, Enabled:2}, getCurrentInstance:function () {
return this._currentInstance;
}, setCurrentInstance:function (inst) {
this._currentInstance = inst;
}, getCommand:function (editor, name) {
var oCommand;
name = name.toLowerCase();
for (var i = 0; i < this._registeredHandlers.length; i++) {
oCommand = this._registeredHandlers[i](editor, name);
if (oCommand) {
return oCommand;
}
}
switch (name) {
case "htmltoggle":
oCommand = new dojo.widget.Editor2BrowserCommand(editor, name);
break;
case "formatblock":
oCommand = new dojo.widget.Editor2FormatBlockCommand(editor, name);
break;
case "anchor":
oCommand = new dojo.widget.Editor2Command(editor, name);
break;
case "createlink":
oCommand = new dojo.widget.Editor2DialogCommand(editor, name, {contentFile:"dojo.widget.Editor2Plugin.CreateLinkDialog", contentClass:"Editor2CreateLinkDialog", title:"Insert/Edit Link", width:"300px", height:"200px"});
break;
case "insertimage":
oCommand = new dojo.widget.Editor2DialogCommand(editor, name, {contentFile:"dojo.widget.Editor2Plugin.InsertImageDialog", contentClass:"Editor2InsertImageDialog", title:"Insert/Edit Image", width:"400px", height:"270px"});
break;
default:
var curtInst = this.getCurrentInstance();
if ((curtInst && curtInst.queryCommandAvailable(name)) || (!curtInst && dojo.widget.Editor2.prototype.queryCommandAvailable(name))) {
oCommand = new dojo.widget.Editor2BrowserCommand(editor, name);
} else {
dojo.debug("dojo.widget.Editor2Manager.getCommand: Unknown command " + name);
return;
}
}
return oCommand;
}, destroy:function () {
this._currentInstance = null;
dojo.widget.HandlerManager.prototype.destroy.call(this);
}});
dojo.addOnUnload(dojo.widget.Editor2Manager, "destroy");
dojo.lang.declare("dojo.widget.Editor2Command", null, function (editor, name) {
this._editor = editor;
this._updateTime = 0;
this._name = name;
}, {_text:"Unknown", execute:function (para) {
dojo.unimplemented("dojo.widget.Editor2Command.execute");
}, getText:function () {
return this._text;
}, getState:function () {
return dojo.widget.Editor2Manager.commandState.Enabled;
}, destroy:function () {
}});
dojo.widget.Editor2BrowserCommandNames = {"bold":"Bold", "copy":"Copy", "cut":"Cut", "Delete":"Delete", "indent":"Indent", "inserthorizontalrule":"Horizental Rule", "insertorderedlist":"Numbered List", "insertunorderedlist":"Bullet List", "italic":"Italic", "justifycenter":"Align Center", "justifyfull":"Justify", "justifyleft":"Align Left", "justifyright":"Align Right", "outdent":"Outdent", "paste":"Paste", "redo":"Redo", "removeformat":"Remove Format", "selectall":"Select All", "strikethrough":"Strikethrough", "subscript":"Subscript", "superscript":"Superscript", "underline":"Underline", "undo":"Undo", "unlink":"Remove Link", "createlink":"Create Link", "insertimage":"Insert Image", "htmltoggle":"HTML Source", "forecolor":"Foreground Color", "hilitecolor":"Background Color", "plainformatblock":"Paragraph Style", "formatblock":"Paragraph Style", "fontsize":"Font Size", "fontname":"Font Name"};
dojo.lang.declare("dojo.widget.Editor2BrowserCommand", dojo.widget.Editor2Command, function (editor, name) {
var text = dojo.widget.Editor2BrowserCommandNames[name.toLowerCase()];
if (text) {
this._text = text;
}
}, {execute:function (para) {
this._editor.execCommand(this._name, para);
}, getState:function () {
if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {
this._updateTime = this._editor._lastStateTimestamp;
try {
if (this._editor.queryCommandEnabled(this._name)) {
if (this._editor.queryCommandState(this._name)) {
this._state = dojo.widget.Editor2Manager.commandState.Latched;
} else {
this._state = dojo.widget.Editor2Manager.commandState.Enabled;
}
} else {
this._state = dojo.widget.Editor2Manager.commandState.Disabled;
}
}
catch (e) {
this._state = dojo.widget.Editor2Manager.commandState.Enabled;
}
}
return this._state;
}, getValue:function () {
try {
return this._editor.queryCommandValue(this._name);
}
catch (e) {
}
}});
dojo.lang.declare("dojo.widget.Editor2FormatBlockCommand", dojo.widget.Editor2BrowserCommand, {});
dojo.require("dojo.widget.FloatingPane");
dojo.widget.defineWidget("dojo.widget.Editor2Dialog", [dojo.widget.HtmlWidget, dojo.widget.FloatingPaneBase, dojo.widget.ModalDialogBase], {templateString:"<div id=\"${this.widgetId}\" class=\"dojoFloatingPane\">\n\t<span dojoattachpoint=\"tabStartOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\"\ttabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabStart\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoFloatingPaneTitleBar\" style=\"display:none\">\n\t \t<img dojoAttachPoint=\"titleBarIcon\" class=\"dojoFloatingPaneTitleBarIcon\">\n\t\t<div dojoAttachPoint=\"closeAction\" dojoAttachEvent=\"onClick:hide\"\n \t \t\tclass=\"dojoFloatingPaneCloseIcon\"></div>\n\t\t<div dojoAttachPoint=\"restoreAction\" dojoAttachEvent=\"onClick:restoreWindow\"\n \t \t\tclass=\"dojoFloatingPaneRestoreIcon\"></div>\n\t\t<div dojoAttachPoint=\"maximizeAction\" dojoAttachEvent=\"onClick:maximizeWindow\"\n \t \t\tclass=\"dojoFloatingPaneMaximizeIcon\"></div>\n\t\t<div dojoAttachPoint=\"minimizeAction\" dojoAttachEvent=\"onClick:minimizeWindow\"\n \t \t\tclass=\"dojoFloatingPaneMinimizeIcon\"></div>\n\t \t<div dojoAttachPoint=\"titleBarText\" class=\"dojoFloatingPaneTitleText\">${this.title}</div>\n\t</div>\n\n\t<div id=\"${this.widgetId}_container\" dojoAttachPoint=\"containerNode\" class=\"dojoFloatingPaneClient\"></div>\n\t<span dojoattachpoint=\"tabEnd\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabEndOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoAttachPoint=\"resizeBar\" class=\"dojoFloatingPaneResizebar\" style=\"display:none\"></div>\n</div>\n", modal:true, width:"", height:"", windowState:"minimized", displayCloseAction:true, contentFile:"", contentClass:"", fillInTemplate:function (args, frag) {
this.fillInFloatingPaneTemplate(args, frag);
dojo.widget.Editor2Dialog.superclass.fillInTemplate.call(this, args, frag);
}, postCreate:function () {
if (this.contentFile) {
dojo.require(this.contentFile);
}
if (this.modal) {
dojo.widget.ModalDialogBase.prototype.postCreate.call(this);
} else {
with (this.domNode.style) {
zIndex = 999;
display = "none";
}
}
dojo.widget.FloatingPaneBase.prototype.postCreate.apply(this, arguments);
dojo.widget.Editor2Dialog.superclass.postCreate.call(this);
if (this.width && this.height) {
with (this.domNode.style) {
width = this.width;
height = this.height;
}
}
}, createContent:function () {
if (!this.contentWidget && this.contentClass) {
this.contentWidget = dojo.widget.createWidget(this.contentClass);
this.addChild(this.contentWidget);
}
}, show:function () {
if (!this.contentWidget) {
dojo.widget.Editor2Dialog.superclass.show.apply(this, arguments);
this.createContent();
dojo.widget.Editor2Dialog.superclass.hide.call(this);
}
if (!this.contentWidget || !this.contentWidget.loadContent()) {
return;
}
this.showFloatingPane();
dojo.widget.Editor2Dialog.superclass.show.apply(this, arguments);
if (this.modal) {
this.showModalDialog();
}
if (this.modal) {
this.bg.style.zIndex = this.domNode.style.zIndex - 1;
}
}, onShow:function () {
dojo.widget.Editor2Dialog.superclass.onShow.call(this);
this.onFloatingPaneShow();
}, closeWindow:function () {
this.hide();
dojo.widget.Editor2Dialog.superclass.closeWindow.apply(this, arguments);
}, hide:function () {
if (this.modal) {
this.hideModalDialog();
}
dojo.widget.Editor2Dialog.superclass.hide.call(this);
}, checkSize:function () {
if (this.isShowing()) {
if (this.modal) {
this._sizeBackground();
}
this.placeModalDialog();
this.onResized();
}
}});
dojo.widget.defineWidget("dojo.widget.Editor2DialogContent", dojo.widget.HtmlWidget, {widgetsInTemplate:true, loadContent:function () {
return true;
}, cancel:function () {
this.parent.hide();
}});
dojo.lang.declare("dojo.widget.Editor2DialogCommand", dojo.widget.Editor2BrowserCommand, function (editor, name, dialogParas) {
this.dialogParas = dialogParas;
}, {execute:function () {
if (!this.dialog) {
if (!this.dialogParas.contentFile || !this.dialogParas.contentClass) {
alert("contentFile and contentClass should be set for dojo.widget.Editor2DialogCommand.dialogParas!");
return;
}
this.dialog = dojo.widget.createWidget("Editor2Dialog", this.dialogParas);
dojo.body().appendChild(this.dialog.domNode);
dojo.event.connect(this, "destroy", this.dialog, "destroy");
}
this.dialog.show();
}, getText:function () {
return this.dialogParas.title || dojo.widget.Editor2DialogCommand.superclass.getText.call(this);
}});
dojo.widget.Editor2ToolbarGroups = {};
dojo.widget.defineWidget("dojo.widget.Editor2", dojo.widget.RichText, function () {
this._loadedCommands = {};
}, {toolbarAlwaysVisible:false, toolbarWidget:null, scrollInterval:null, toolbarTemplatePath:dojo.uri.cache.set(dojo.uri.moduleUri("dojo.widget", "templates/EditorToolbarOneline.html"), "<div class=\"EditorToolbarDomNode EditorToolbarSmallBg\">\n\t<table cellpadding=\"1\" cellspacing=\"0\" border=\"0\">\n\t\t<tbody>\n\t\t\t<tr valign=\"top\" align=\"left\">\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"htmltoggle\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon\" \n\t\t\t\t\t\tstyle=\"background-image: none; width: 30px;\" >&lt;h&gt;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"copy\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Copy\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"paste\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Paste\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"undo\">\n\t\t\t\t\t\t<!-- FIXME: should we have the text \"undo\" here? -->\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Undo\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"redo\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Redo\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\"\tstyle=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"createlink\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Link\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertimage\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Image\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"inserthorizontalrule\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_HorizontalLine \">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"bold\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Bold\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"italic\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Italic\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"underline\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Underline\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"strikethrough\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_StrikeThrough\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" \n\t\t\t\t\t\t\tstyle=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertunorderedlist\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_BulletedList\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertorderedlist\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_NumberedList\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"indent\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Indent\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"outdent\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Outdent\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"forecolor\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_TextColor\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"hilitecolor\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_BackgroundColor\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyleft\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_LeftJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifycenter\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_CenterJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyright\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_RightJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyfull\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_BlockJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\t\n\t\t\t\t<td>\n\t\t\t\t\t<select class=\"dojoEditorToolbarItem\" dojoETItemName=\"plainformatblock\">\n\t\t\t\t\t\t<!-- FIXME: using \"p\" here inserts a paragraph in most cases! -->\n\t\t\t\t\t\t<option value=\"\">-- format --</option>\n\t\t\t\t\t\t<option value=\"p\">Normal</option>\n\t\t\t\t\t\t<option value=\"pre\">Fixed Font</option>\n\t\t\t\t\t\t<option value=\"h1\">Main Heading</option>\n\t\t\t\t\t\t<option value=\"h2\">Section Heading</option>\n\t\t\t\t\t\t<option value=\"h3\">Sub-Heading</option>\n\t\t\t\t\t\t<!-- <option value=\"blockquote\">Block Quote</option> -->\n\t\t\t\t\t</select>\n\t\t\t\t</td>\n\t\t\t\t<td><!-- uncomment to enable save button -->\n\t\t\t\t\t<!-- save -->\n\t\t\t\t\t<!--span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"save\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Save\">&nbsp;</span>\n\t\t\t\t\t</span-->\n\t\t\t\t</td>\n\t\t\t\t<td width=\"*\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n"), toolbarTemplateCssPath:null, toolbarPlaceHolder:"", _inSourceMode:false, _htmlEditNode:null, toolbarGroup:"", shareToolbar:false, contextMenuGroupSet:"", editorOnLoad:function () {
dojo.event.topic.publish("dojo.widget.Editor2::preLoadingToolbar", this);
if (this.toolbarAlwaysVisible) {
dojo.require("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
}
if (this.toolbarWidget) {
this.toolbarWidget.show();
dojo.html.insertBefore(this.toolbarWidget.domNode, this.domNode.firstChild);
} else {
if (this.shareToolbar) {
dojo.deprecated("Editor2:shareToolbar is deprecated in favor of toolbarGroup", "0.5");
this.toolbarGroup = "defaultDojoToolbarGroup";
}
if (this.toolbarGroup) {
if (dojo.widget.Editor2ToolbarGroups[this.toolbarGroup]) {
this.toolbarWidget = dojo.widget.Editor2ToolbarGroups[this.toolbarGroup];
}
}
if (!this.toolbarWidget) {
var tbOpts = {shareGroup:this.toolbarGroup, parent:this};
tbOpts.templateString = dojo.uri.cache.get(this.toolbarTemplatePath);
if (this.toolbarTemplateCssPath) {
tbOpts.templateCssPath = this.toolbarTemplateCssPath;
tbOpts.templateCssString = dojo.uri.cache.get(this.toolbarTemplateCssPath);
}
if (this.toolbarPlaceHolder) {
this.toolbarWidget = dojo.widget.createWidget("Editor2Toolbar", tbOpts, dojo.byId(this.toolbarPlaceHolder), "after");
} else {
this.toolbarWidget = dojo.widget.createWidget("Editor2Toolbar", tbOpts, this.domNode.firstChild, "before");
}
if (this.toolbarGroup) {
dojo.widget.Editor2ToolbarGroups[this.toolbarGroup] = this.toolbarWidget;
}
dojo.event.connect(this, "close", this.toolbarWidget, "hide");
this.toolbarLoaded();
}
}
dojo.event.topic.registerPublisher("Editor2.clobberFocus", this, "clobberFocus");
dojo.event.topic.subscribe("Editor2.clobberFocus", this, "setBlur");
dojo.event.topic.publish("dojo.widget.Editor2::onLoad", this);
}, toolbarLoaded:function () {
}, registerLoadedPlugin:function (obj) {
if (!this.loadedPlugins) {
this.loadedPlugins = [];
}
this.loadedPlugins.push(obj);
}, unregisterLoadedPlugin:function (obj) {
for (var i in this.loadedPlugins) {
if (this.loadedPlugins[i] === obj) {
delete this.loadedPlugins[i];
return;
}
}
dojo.debug("dojo.widget.Editor2.unregisterLoadedPlugin: unknow plugin object: " + obj);
}, execCommand:function (command, argument) {
switch (command.toLowerCase()) {
case "htmltoggle":
this.toggleHtmlEditing();
break;
default:
dojo.widget.Editor2.superclass.execCommand.apply(this, arguments);
}
}, queryCommandEnabled:function (command, argument) {
switch (command.toLowerCase()) {
case "htmltoggle":
return true;
default:
if (this._inSourceMode) {
return false;
}
return dojo.widget.Editor2.superclass.queryCommandEnabled.apply(this, arguments);
}
}, queryCommandState:function (command, argument) {
switch (command.toLowerCase()) {
case "htmltoggle":
return this._inSourceMode;
default:
return dojo.widget.Editor2.superclass.queryCommandState.apply(this, arguments);
}
}, onClick:function (e) {
dojo.widget.Editor2.superclass.onClick.call(this, e);
if (dojo.widget.PopupManager) {
if (!e) {
e = this.window.event;
}
dojo.widget.PopupManager.onClick(e);
}
}, clobberFocus:function () {
}, toggleHtmlEditing:function () {
if (this === dojo.widget.Editor2Manager.getCurrentInstance()) {
if (!this._inSourceMode) {
var html = this.getEditorContent();
this._inSourceMode = true;
if (!this._htmlEditNode) {
this._htmlEditNode = dojo.doc().createElement("textarea");
dojo.html.insertAfter(this._htmlEditNode, this.editorObject);
}
this._htmlEditNode.style.display = "";
this._htmlEditNode.style.width = "100%";
this._htmlEditNode.style.height = dojo.html.getBorderBox(this.editNode).height + "px";
this._htmlEditNode.value = html;
with (this.editorObject.style) {
position = "absolute";
left = "-2000px";
top = "-2000px";
}
} else {
this._inSourceMode = false;
this._htmlEditNode.blur();
with (this.editorObject.style) {
position = "";
left = "";
top = "";
}
var html = this._htmlEditNode.value;
dojo.lang.setTimeout(this, "replaceEditorContent", 1, html);
this._htmlEditNode.style.display = "none";
this.focus();
}
this.onDisplayChanged(null, true);
}
}, setFocus:function () {
if (dojo.widget.Editor2Manager.getCurrentInstance() === this) {
return;
}
this.clobberFocus();
dojo.widget.Editor2Manager.setCurrentInstance(this);
}, setBlur:function () {
}, saveSelection:function () {
this._bookmark = null;
this._bookmark = dojo.withGlobal(this.window, dojo.html.selection.getBookmark);
}, restoreSelection:function () {
if (this._bookmark) {
this.focus();
dojo.withGlobal(this.window, "moveToBookmark", dojo.html.selection, [this._bookmark]);
this._bookmark = null;
} else {
dojo.debug("restoreSelection: no saved selection is found!");
}
}, _updateToolbarLastRan:null, _updateToolbarTimer:null, _updateToolbarFrequency:500, updateToolbar:function (force) {
if ((!this.isLoaded) || (!this.toolbarWidget)) {
return;
}
var diff = new Date() - this._updateToolbarLastRan;
if ((!force) && (this._updateToolbarLastRan) && ((diff < this._updateToolbarFrequency))) {
clearTimeout(this._updateToolbarTimer);
var _this = this;
this._updateToolbarTimer = setTimeout(function () {
_this.updateToolbar();
}, this._updateToolbarFrequency / 2);
return;
} else {
this._updateToolbarLastRan = new Date();
}
if (dojo.widget.Editor2Manager.getCurrentInstance() !== this) {
return;
}
this.toolbarWidget.update();
}, destroy:function (finalize) {
this._htmlEditNode = null;
dojo.event.disconnect(this, "close", this.toolbarWidget, "hide");
if (!finalize) {
this.toolbarWidget.destroy();
}
dojo.widget.Editor2.superclass.destroy.call(this);
}, _lastStateTimestamp:0, onDisplayChanged:function (e, forceUpdate) {
this._lastStateTimestamp = (new Date()).getTime();
dojo.widget.Editor2.superclass.onDisplayChanged.call(this, e);
this.updateToolbar(forceUpdate);
}, onLoad:function () {
try {
dojo.widget.Editor2.superclass.onLoad.call(this);
}
catch (e) {
dojo.debug(e);
}
this.editorOnLoad();
}, onFocus:function () {
dojo.widget.Editor2.superclass.onFocus.call(this);
this.setFocus();
}, getEditorContent:function () {
if (this._inSourceMode) {
return this._htmlEditNode.value;
}
return dojo.widget.Editor2.superclass.getEditorContent.call(this);
}, replaceEditorContent:function (html) {
if (this._inSourceMode) {
this._htmlEditNode.value = html;
return;
}
dojo.widget.Editor2.superclass.replaceEditorContent.apply(this, arguments);
}, getCommand:function (name) {
if (this._loadedCommands[name]) {
return this._loadedCommands[name];
}
var cmd = dojo.widget.Editor2Manager.getCommand(this, name);
this._loadedCommands[name] = cmd;
return cmd;
}, shortcuts:[["bold"], ["italic"], ["underline"], ["selectall", "a"], ["insertunorderedlist", "\\"]], setupDefaultShortcuts:function () {
var exec = function (cmd) {
return function () {
cmd.execute();
};
};
var self = this;
dojo.lang.forEach(this.shortcuts, function (item) {
var cmd = self.getCommand(item[0]);
if (cmd) {
self.addKeyHandler(item[1] ? item[1] : item[0].charAt(0), item[2] == undefined ? self.KEY_CTRL : item[2], exec(cmd));
}
});
}});
 
/trunk/api/js/dojo/src/widget/TreeSelectorV3.js
New file
0,0 → 1,158
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeSelectorV3");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeCommon");
dojo.widget.defineWidget("dojo.widget.TreeSelectorV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
this.eventNames = {};
this.listenedTrees = {};
this.selectedNodes = [];
this.lastClicked = {};
}, {listenTreeEvents:["afterTreeCreate", "afterCollapse", "afterChangeTree", "afterDetach", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
return elem instanceof dojo.widget.Widget;
}, allowedMulti:true, dblselectTimeout:300, eventNamesDefault:{select:"select", deselect:"deselect", dblselect:"dblselect"}, onAfterTreeCreate:function (message) {
var tree = message.source;
dojo.event.browser.addListener(tree.domNode, "onclick", dojo.lang.hitch(this, this.onTreeClick));
if (dojo.render.html.ie) {
dojo.event.browser.addListener(tree.domNode, "ondblclick", dojo.lang.hitch(this, this.onTreeDblClick));
}
dojo.event.browser.addListener(tree.domNode, "onKey", dojo.lang.hitch(this, this.onKey));
}, onKey:function (e) {
if (!e.key || e.ctrkKey || e.altKey) {
return;
}
switch (e.key) {
case e.KEY_ENTER:
var node = this.domElement2TreeNode(e.target);
if (node) {
this.processNode(node, e);
}
}
}, onAfterChangeTree:function (message) {
if (!message.oldTree && message.node.selected) {
this.select(message.node);
}
if (!message.newTree || !this.listenedTrees[message.newTree.widgetId]) {
if (this.selectedNode && message.node.children) {
this.deselectIfAncestorMatch(message.node);
}
}
}, initialize:function (args) {
for (name in this.eventNamesDefault) {
if (dojo.lang.isUndefined(this.eventNames[name])) {
this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
}
}
}, onBeforeTreeDestroy:function (message) {
this.unlistenTree(message.source);
}, onAfterCollapse:function (message) {
this.deselectIfAncestorMatch(message.source);
}, onTreeDblClick:function (event) {
this.onTreeClick(event);
}, checkSpecialEvent:function (event) {
return event.shiftKey || event.ctrlKey;
}, onTreeClick:function (event) {
var node = this.domElement2TreeNode(event.target);
if (!node) {
return;
}
var checkLabelClick = function (domElement) {
return domElement === node.labelNode;
};
if (this.checkPathCondition(event.target, checkLabelClick)) {
this.processNode(node, event);
}
}, processNode:function (node, event) {
if (node.actionIsDisabled(node.actions.SELECT)) {
return;
}
if (dojo.lang.inArray(this.selectedNodes, node)) {
if (this.checkSpecialEvent(event)) {
this.deselect(node);
return;
}
var _this = this;
var i = 0;
var selectedNode;
while (this.selectedNodes.length > i) {
selectedNode = this.selectedNodes[i];
if (selectedNode !== node) {
this.deselect(selectedNode);
continue;
}
i++;
}
var wasJustClicked = this.checkRecentClick(node);
eventName = wasJustClicked ? this.eventNames.dblselect : this.eventNames.select;
if (wasJustClicked) {
eventName = this.eventNames.dblselect;
this.forgetLastClicked();
} else {
eventName = this.eventNames.select;
this.setLastClicked(node);
}
dojo.event.topic.publish(eventName, {node:node});
return;
}
this.deselectIfNoMulti(event);
this.setLastClicked(node);
this.select(node);
}, forgetLastClicked:function () {
this.lastClicked = {};
}, setLastClicked:function (node) {
this.lastClicked.date = new Date();
this.lastClicked.node = node;
}, checkRecentClick:function (node) {
var diff = new Date() - this.lastClicked.date;
if (this.lastClicked.node && diff < this.dblselectTimeout) {
return true;
} else {
return false;
}
}, deselectIfNoMulti:function (event) {
if (!this.checkSpecialEvent(event) || !this.allowedMulti) {
this.deselectAll();
}
}, deselectIfAncestorMatch:function (ancestor) {
var _this = this;
dojo.lang.forEach(this.selectedNodes, function (node) {
var selectedNode = node;
node = node.parent;
while (node && node.isTreeNode) {
if (node === ancestor) {
_this.deselect(selectedNode);
return;
}
node = node.parent;
}
});
}, onAfterDetach:function (message) {
this.deselectIfAncestorMatch(message.child);
}, select:function (node) {
var index = dojo.lang.find(this.selectedNodes, node, true);
if (index >= 0) {
return;
}
this.selectedNodes.push(node);
dojo.event.topic.publish(this.eventNames.select, {node:node});
}, deselect:function (node) {
var index = dojo.lang.find(this.selectedNodes, node, true);
if (index < 0) {
return;
}
this.selectedNodes.splice(index, 1);
dojo.event.topic.publish(this.eventNames.deselect, {node:node});
}, deselectAll:function () {
while (this.selectedNodes.length) {
this.deselect(this.selectedNodes[0]);
}
}});
 
/trunk/api/js/dojo/src/widget/DocPane.js
New file
0,0 → 1,260
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DocPane");
dojo.require("dojo.widget.*");
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Editor2");
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.html.common");
dojo.require("dojo.html.display");
dojo.widget.DocPane = function () {
dojo.event.topic.subscribe("/docs/function/results", this, "onDocResults");
dojo.event.topic.subscribe("/docs/package/results", this, "onPkgResults");
dojo.event.topic.subscribe("/docs/function/detail", this, "onDocSelectFunction");
};
dojo.widget.defineWidget("dojo.widget.DocPane", dojo.widget.HtmlWidget, {dialog:null, dialogBg:null, dialogFg:null, logIn:null, edit:null, save:null, cancel:null, detail:null, result:null, packag:null, fn:null, fnLink:null, count:null, row:null, summary:null, description:null, variables:null, vRow:null, vLink:null, vDesc:null, methods:null, mRow:null, mLink:null, mDesc:null, requires:null, rRow:null, rRow2:null, rH3:null, rLink:null, parameters:null, pRow:null, pLink:null, pDesc:null, pOpt:null, pType:null, sType:null, sName:null, sParams:null, sPType:null, sPTypeSave:null, sPName:null, sPNameSave:null, pkgDescription:null, _appends:[], templateString:"<div class=\"dojoDocPane\">\n\t<div dojoAttachPoint=\"containerNode\" class=\"container\"></div>\n\n\t<div dojoAttachPoint=\"dialog\" class=\"dialog\">\n\t\t<div class=\"container\" dojoAttachPoint=\"dialogBg\">\n\t\t\t<div class=\"docDialog\" dojoAttachPoint=\"dialogFg\">\n\t\t\t\t<h2>Log In</h2>\n\t\t\t\t<p><input id=\"dojoDocUserName\" dojoAttachPoint=\"userName\"><label for=\"dojoDocUserName\">User Name:</label></p>\n\t\t\t\t<p><input id=\"dojoDocPassword\" dojoAttachPoint=\"password\" type=\"password\"><label for=\"dojoDocPassword\">Password:</label></p>\n\t\t\t\t<p><input type=\"button\" dojoAttachPoint=\"cancel\" value=\"cancel\"> <input type=\"button\" dojoAttachPoint=\"logIn\" value=\"Log In\"></p>\n\t\t\t\t<p></p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div dojoAttachPoint=\"nav\" class=\"nav\"><span>Detail</span> | <span>Source</span> | <span>Examples</span> | <span>Walkthrough</span></div>\n\n\t<div dojoAttachPoint=\"detail\" class=\"detail\">\n\t\t<h1>Detail: <span class=\"fn\" dojoAttachPoint=\"fn\">dojo.select</span></h1>\n\t\t<div class=\"description\" dojoAttachPoint=\"description\">Description</div>\n\t\t<div class=\"params\" dojoAttachPoint=\"parameters\">\n\t\t\t<h2>Parameters</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"pRow\">\n\t\t\t\t<span dojoAttachPoint=\"pOpt\"><em>optional</em> </span>\n\t\t\t\t<span><span dojoAttachPoint=\"pType\">type</span> </span>\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"pLink\">variable</a>\n\t\t\t\t<span> - <span dojoAttachPoint=\"pDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"variables\" dojoAttachPoint=\"variables\">\n\t\t\t<h2>Variables</h2>\n\t\t\t<div class\"row\" dojoAttachPoint=\"vRow\">\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"vLink\">variable</a><span> - <span dojoAttachPoint=\"vDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"signature\">\n\t\t\t<h2>Signature</h2>\n\t\t\t<div class=\"source\">\n\t\t\t\t<span class=\"return\" dojoAttachPoint=\"sType\">returnType</span> \n\t\t\t\t<span class=\"function\" dojoAttachPoint=\"sName\">foo</span>\n\t\t\t\t(<span class=\"params\" dojoAttachPoint=\"sParams\">\n\t\t\t\t\t<span class=\"type\" dojoAttachPoint=\"sPType\">type </span>\n\t\t\t\t\t<span class=\"name\" dojoAttachPoint=\"sPName\">paramName</span>\n\t\t\t\t</span>)\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\n\t<div dojoAttachPoint=\"result\" class=\"result\">\n\t\t<h1>Search Results: <span dojoAttachPoint=\"count\">0</span> matches</h1>\n\t\t<div class=\"row\" dojoAttachPoint=\"row\">\n\t\t\t<a href=\"#\" dojoAttachPoint=\"fnLink\">dojo.fnLink</a>\n\t\t\t<span> - <span class=\"summary\" dojoAttachPoint=\"summary\">summary</span></span>\n\t\t</div>\n\t</div>\n\n\t<div dojoAttachPoint=\"packag\" class=\"package\">\n\t\t<h1>Package: \n\t\t\t<span class=\"pkg\" dojoAttachPoint=\"pkg\">dojo.package</span> \n\t\t\t<span class=\"edit\" dojoAttachPoint=\"edit\">[edit]</span> \n\t\t\t<span class=\"save\" dojoAttachPoint=\"save\">[save]</span>\n\t\t</h1>\n\t\t<div dojoAttachPoint=\"pkgDescription\" class=\"description\">Description</div>\n\t\t<div class=\"methods\" dojoAttachPoint=\"methods\">\n\t\t\t<h2>Methods</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"mRow\">\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"mLink\">method</a>\n\t\t\t\t<span> - <span class=\"description\" dojoAttachPoint=\"mDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"requires\" dojoAttachPoint=\"requires\">\n\t\t\t<h2>Requires</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"rRow\">\n\t\t\t\t<h3 dojoAttachPoint=\"rH3\">Environment</h3>\n\t\t\t\t<div dojoAttachPoint=\"rRow2\"><a href=\"#\" dojoAttachPoint=\"rLink\" class=\"package\">require</a></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n", templateCssString:".dojoDocPane { padding:1em; font: 1em Georgia,Times,\"Times New Roman\",serif; }\n\n.dojoDocPane .container{ }\n\n.dojoDocPane .dialog{ }\n.dojoDocPane .dialog .container{ padding: 0.5em; background: #fff; border: 2px solid #333; }\n.dojoDocPane .dialog .docDialog{ background: transparent; width: 20em; }\n.dojoDocPane .dialog .docDialog h2{ margin-top: 0; padding-top: 0; }\n.dojoDocPane .dialog .docDialog input { float: right; margin-right: 1em; }\n.dojoDocPane .dialog .docDialog p{ clear: both; }\n#dojoDocUserName, #dojoDocPassword { width: 10em; }\n\n.dojoDocPane .nav{ }\n.dojoDocPane .nav span{ }\n\n.dojoDocPane .detail{ }\n.dojoDocPane .detail h1{ }\n.dojoDocPane .detail h1 span.fn{ }\n.dojoDocPane .detail .description{ }\n.dojoDocPane .detail .params{ }\n.dojoDocPane .detail .params .row{ }\n.dojoDocPane .detail .params .row span{ }\n.dojoDocPane .detail .variables{ }\n.dojoDocPane .detail .variables .row{ }\n.dojoDocPane .detail .signature{ }\n.dojoDocPane .detail .signature .source{ white-space: pre; font: 0.8em Monaco, Courier, \"Courier New\", monospace; }\n.dojoDocPane .detail .signature .source .return{ color:#369; }\n.dojoDocPane .detail .signature .source .function{ color: #98543F; font-weight: bold; }\n.dojoDocPane .detail .signature .source .params{ }\n.dojoDocPane .detail .signature .source .params .type{ font-style: italic; color: #d17575; }\n.dojoDocPane .detail .signature .source .params .name{ color: #d14040; }\n\n.dojoDocPane .result{ }\n.dojoDocPane .result h1{ }\n.dojoDocPane .result .row{ }\n.dojoDocPane .result .row .summary{ }\n\n.dojoDocPane .package{ }\n.dojoDocPane .package h1{ }\n.dojoDocPane .package .row{ }\n.dojoDocPane .package .row .summary{ }\n.dojoDocPane .package .description{ }\n.dojoDocPane .package .methods{ }\n.dojoDocPane .package .methods h2{ }\n.dojoDocPane .package .methods .row{ }\n.dojoDocPane .package .methods .row .description{ }\n.dojoDocPane .package .requires{ }\n.dojoDocPane .package .requires h2{ }\n.dojoDocPane .package .requires .row{ }\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/DocPane.css"), isContainer:true, fillInTemplate:function () {
this.requires = dojo.html.removeNode(this.requires);
this.rRow.style.display = "none";
this.rRow2.style.display = "none";
this.methods = dojo.html.removeNode(this.methods);
this.mRow.style.display = "none";
this.dialog = dojo.widget.createWidget("dialog", {}, this.dialog);
this.dialog.setCloseControl(this.cancel);
dojo.html.setOpacity(this.dialogBg, 0.8);
dojo.html.setOpacity(this.dialogFg, 1);
dojo.event.connect(this.edit, "onclick", dojo.lang.hitch(this, function () {
if (!this._isLoggedIn) {
this.dialog.show();
}
}));
dojo.event.connect(this.logIn, "onclick", this, "_logIn");
dojo.event.connect(this.save, "onclick", this, "_save");
dojo.event.connect(dojo.docs, "logInSuccess", this, "_loggedIn");
this.homeSave = this.containerNode.cloneNode(true);
this.detailSave = dojo.html.removeNode(this.detail);
this.resultSave = dojo.html.removeNode(this.result);
this.packageSave = dojo.html.removeNode(this.packag);
this.results = dojo.html.removeNode(this.results);
this.rowParent = this.row.parentNode;
this.rowSave = dojo.html.removeNode(this.row);
this.vParent = this.vRow.parentNode;
this.vSave = dojo.html.removeNode(this.vRow);
this.pParent = this.pRow.parentNode;
this.pSave = dojo.html.removeNode(this.pRow);
this.sPTypeSave = dojo.html.removeNode(this.sPType);
this.sPNameSave = dojo.html.removeNode(this.sPName);
this.navSave = dojo.html.removeNode(this.nav);
}, _logIn:function () {
dojo.docs.setUserName(this.userName.value);
dojo.docs.setPassword(this.password.value);
}, _loggedIn:function () {
this._isLoggedIn = true;
this.dialog.hide();
this.pkgEditor = dojo.widget.createWidget("editor2", {toolbarAlwaysVisible:true}, this.pkgDescription);
}, _save:function () {
if (this.pkgEditor) {
dojo.docs.savePackage(this._pkgPath, {description:this.pkgEditor.getEditorContent()});
}
}, onDocSelectFunction:function (message) {
dojo.debug("onDocSelectFunction()");
for (var key in message) {
dojo.debug(key + ": " + dojo.json.serialize(message[key]));
}
var meta = message.meta;
if (meta) {
var variables = meta.variables;
var this_variables = meta.this_variables;
var child_variables = meta.child_variables;
var parameters = meta.parameters;
}
var doc = message.doc;
dojo.debug(dojo.json.serialize(doc));
var appends = this._appends;
dojo.html.removeChildren(this.domNode);
this.fn.innerHTML = message.name;
this.variables.style.display = "block";
var all = [];
if (variables) {
all = variables;
}
if (this_variables) {
all = all.concat(this_variables);
}
if (child_variables) {
all = all.concat(child_variables);
}
if (!all.length) {
this.variables.style.display = "none";
} else {
for (var i = 0, one; one = all[i]; i++) {
this.vLink.innerHTML = one;
this.vDesc.parentNode.style.display = "none";
appends.push(this.vParent.appendChild(this.vSave.cloneNode(true)));
}
}
this.sParams.innerHTML = "";
var first = true;
for (var param in parameters) {
var paramType = parameters[param].type;
var paramSummary = parameters[param].summary;
var paramName = param;
this.parameters.style.display = "block";
this.pLink.innerHTML = paramName;
this.pOpt.style.display = "none";
if (parameters[param].opt) {
this.pOpt.style.display = "inline";
}
this.pType.parentNode.style.display = "none";
if (parameters[param][0]) {
this.pType.parentNode.style.display = "inline";
this.pType.innerHTML = paramType;
}
this.pDesc.parentNode.style.display = "none";
if (paramSummary) {
this.pDesc.parentNode.style.display = "inline";
this.pDesc.innerHTML = paramSummary;
}
appends.push(this.pParent.appendChild(this.pSave.cloneNode(true)));
if (!first) {
this.sParams.appendChild(document.createTextNode(", "));
}
first = false;
if (paramType) {
dojo.debug(this.sPTypeSave);
this.sPTypeSave.innerHTML = paramType;
this.sParams.appendChild(this.sPTypeSave.cloneNode(true));
this.sParams.appendChild(document.createTextNode(" "));
}
dojo.debug(this.sPNameSave);
this.sPNameSave.innerHTML = paramName;
this.sParams.appendChild(this.sPNameSave.cloneNode(true));
}
if (message.returns) {
this.sType.innerHTML = message.returns;
} else {
this.sType.innerHTML = "void";
}
this.sName.innerHTML = message.name;
this.domNode.appendChild(this.navSave);
this.domNode.appendChild(this.detailSave.cloneNode(true));
for (var i = 0, append; append = appends[i]; i++) {
dojo.html.removeNode(append);
}
}, onPkgResult:function (results) {
if (this.pkgEditor) {
this.pkgEditor.close(true);
dojo.debug(this.pkgDescription);
}
var methods = results.methods;
var requires = results.requires;
var description = results.description;
this._pkgPath = results.path;
var requireLinks = [];
var appends = this._appends;
while (appends.length) {
dojo.html.removeNode(appends.shift());
}
dojo.html.removeChildren(this.domNode);
this.pkg.innerHTML = results.pkg;
var hasRequires = false;
for (var env in requires) {
hasRequires = true;
this.rH3.style.display = "none";
if (env != "common") {
this.rH3.style.display = "";
this.rH3.innerHTML = env;
}
for (var i = 0, require; require = requires[env][i]; i++) {
requireLinks.push({name:require});
this.rLink.innerHTML = require;
this.rLink.href = "#" + require;
var rRow2 = this.rRow2.parentNode.insertBefore(this.rRow2.cloneNode(true), this.rRow2);
rRow2.style.display = "";
appends.push(rRow2);
}
var rRow = this.rRow.parentNode.insertBefore(this.rRow.cloneNode(true), this.rRow);
rRow.style.display = "";
appends.push(rRow);
}
if (hasRequires) {
appends.push(this.packageSave.appendChild(this.requires.cloneNode(true)));
}
if (results.size) {
for (var i = 0, method; method = methods[i]; i++) {
this.mLink.innerHTML = method.name;
this.mLink.href = "#" + method.name;
this.mDesc.parentNode.style.display = "none";
if (method.summary) {
this.mDesc.parentNode.style.display = "inline";
this.mDesc.innerHTML = method.summary;
}
var mRow = this.mRow.parentNode.insertBefore(this.mRow.cloneNode(true), this.mRow);
mRow.style.display = "";
appends.push(mRow);
}
appends.push(this.packageSave.appendChild(this.methods.cloneNode(true)));
}
this.domNode.appendChild(this.packageSave);
this.pkgDescription.innerHTML = description;
function makeSelect(fOrP, x) {
return function (e) {
dojo.event.topic.publish("/docs/" + fOrP + "/select", x);
};
}
var as = this.domNode.getElementsByTagName("a");
for (var i = 0, a; a = as[i]; i++) {
if (a.className == "docMLink") {
dojo.event.connect(a, "onclick", makeSelect("function", methods[i]));
} else {
if (a.className == "docRLink") {
dojo.event.connect(a, "onclick", makeSelect("package", requireLinks[i]));
}
}
}
}, onDocResults:function (fns) {
dojo.debug("onDocResults(): called");
if (fns.length == 1) {
dojo.event.topic.publish("/docs/function/select", fns[0]);
return;
}
dojo.html.removeChildren(this.domNode);
this.count.innerHTML = fns.length;
var appends = [];
for (var i = 0, fn; fn = fns[i]; i++) {
this.fnLink.innerHTML = fn.name;
this.fnLink.href = "#" + fn.name;
if (fn.id) {
this.fnLink.href = this.fnLink.href + "," + fn.id;
}
this.summary.parentNode.style.display = "none";
if (fn.summary) {
this.summary.parentNode.style.display = "inline";
this.summary.innerHTML = fn.summary;
}
appends.push(this.rowParent.appendChild(this.rowSave.cloneNode(true)));
}
function makeSelect(x) {
return function (e) {
dojo.event.topic.publish("/docs/function/select", x);
};
}
this.domNode.appendChild(this.resultSave.cloneNode(true));
var as = this.domNode.getElementsByTagName("a");
for (var i = 0, a; a = as[i]; i++) {
dojo.event.connect(a, "onclick", makeSelect(fns[i]));
}
for (var i = 0, append; append = appends[i]; i++) {
this.rowParent.removeChild(append);
}
}});
 
/trunk/api/js/dojo/src/widget/Button.js
New file
0,0 → 1,257
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Button");
dojo.require("dojo.lang.extras");
dojo.require("dojo.html.*");
dojo.require("dojo.html.selection");
dojo.require("dojo.widget.*");
dojo.widget.defineWidget("dojo.widget.Button", dojo.widget.HtmlWidget, {isContainer:true, caption:"", templateString:"<div dojoAttachPoint=\"buttonNode\" class=\"dojoButton\" style=\"position:relative;\" dojoAttachEvent=\"onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick; onKey:onKey; onFocus;\">\n <div class=\"dojoButtonContents\" align=center dojoAttachPoint=\"containerNode\" style=\"position:absolute;z-index:2;\"></div>\n <img dojoAttachPoint=\"leftImage\" style=\"position:absolute;left:0px;\">\n <img dojoAttachPoint=\"centerImage\" style=\"position:absolute;z-index:1;\">\n <img dojoAttachPoint=\"rightImage\" style=\"position:absolute;top:0px;right:0px;\">\n</div>\n", templateCssString:"/* ---- button --- */\n.dojoButton {\n\tpadding: 0 0 0 0;\n\tfont-size: 8pt;\n\twhite-space: nowrap;\n\tcursor: pointer;\n\tfont-family: Myriad, Tahoma, Verdana, sans-serif;\n}\n\n.dojoButton .dojoButtonContents {\n\tpadding: 2px 2px 2px 2px;\n\ttext-align: center;\t\t/* if icon and label are split across two lines, center icon */\n\tcolor: white;\n}\n\n.dojoButtonLeftPart .dojoButtonContents {\n\tpadding-right: 8px;\n}\n\n.dojoButtonDisabled {\n\tcursor: url(\"images/no.gif\"), default;\n}\n\n\n.dojoButtonContents img {\n\tvertical-align: middle;\t/* if icon and label are on same line, center them */\n}\n\n/* -------- colors ------------ */\n\n.dojoButtonHover .dojoButtonContents {\n}\n\n.dojoButtonDepressed .dojoButtonContents {\n\tcolor: #293a4b;\n}\n\n.dojoButtonDisabled .dojoButtonContents {\n\tcolor: #aaa;\n}\n\n\n/* ---------- drop down button specific ---------- */\n\n/* border between label and arrow (for drop down buttons */\n.dojoButton .border {\n\twidth: 1px;\n\tbackground: gray;\n}\n\n/* button arrow */\n.dojoButton .downArrow {\n\tpadding-left: 10px;\n\ttext-align: center;\n}\n\n.dojoButton.disabled .downArrow {\n\tcursor : default;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ButtonTemplate.css"), inactiveImg:"templates/images/soriaButton-", activeImg:"templates/images/soriaActive-", pressedImg:"templates/images/soriaPressed-", disabledImg:"templates/images/soriaDisabled-", width2height:1 / 3, fillInTemplate:function () {
if (this.caption) {
this.containerNode.appendChild(document.createTextNode(this.caption));
}
dojo.html.disableSelection(this.containerNode);
}, postCreate:function () {
this._sizeMyself();
}, _sizeMyself:function () {
if (this.domNode.parentNode) {
var placeHolder = document.createElement("span");
dojo.html.insertBefore(placeHolder, this.domNode);
}
dojo.body().appendChild(this.domNode);
this._sizeMyselfHelper();
if (placeHolder) {
dojo.html.insertBefore(this.domNode, placeHolder);
dojo.html.removeNode(placeHolder);
}
}, _sizeMyselfHelper:function () {
var mb = dojo.html.getMarginBox(this.containerNode);
this.height = mb.height;
this.containerWidth = mb.width;
var endWidth = this.height * this.width2height;
this.containerNode.style.left = endWidth + "px";
this.leftImage.height = this.rightImage.height = this.centerImage.height = this.height;
this.leftImage.width = this.rightImage.width = endWidth + 1;
this.centerImage.width = this.containerWidth;
this.centerImage.style.left = endWidth + "px";
this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
if (this.disabled) {
dojo.html.prependClass(this.domNode, "dojoButtonDisabled");
this.domNode.removeAttribute("tabIndex");
dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
} else {
dojo.html.removeClass(this.domNode, "dojoButtonDisabled");
this.domNode.setAttribute("tabIndex", "0");
dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
}
this.domNode.style.height = this.height + "px";
this.domNode.style.width = (this.containerWidth + 2 * endWidth) + "px";
}, onMouseOver:function (e) {
if (this.disabled) {
return;
}
if (!dojo.html.hasClass(this.buttonNode, "dojoButtonHover")) {
dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
}
this._setImage(this.activeImg);
}, onMouseDown:function (e) {
if (this.disabled) {
return;
}
dojo.html.prependClass(this.buttonNode, "dojoButtonDepressed");
dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
this._setImage(this.pressedImg);
}, onMouseUp:function (e) {
if (this.disabled) {
return;
}
dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
this._setImage(this.activeImg);
}, onMouseOut:function (e) {
if (this.disabled) {
return;
}
if (e.toElement && dojo.html.isDescendantOf(e.toElement, this.buttonNode)) {
return;
}
dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
this._setImage(this.inactiveImg);
}, onKey:function (e) {
if (!e.key) {
return;
}
var menu = dojo.widget.getWidgetById(this.menuId);
if (e.key == e.KEY_ENTER || e.key == " ") {
this.onMouseDown(e);
this.buttonClick(e);
dojo.lang.setTimeout(this, "onMouseUp", 75, e);
dojo.event.browser.stopEvent(e);
}
if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
}
}, onFocus:function (e) {
var menu = dojo.widget.getWidgetById(this.menuId);
if (menu) {
dojo.event.connectOnce(this.domNode, "onblur", this, "onBlur");
}
}, onBlur:function (e) {
var menu = dojo.widget.getWidgetById(this.menuId);
if (!menu) {
return;
}
if (menu.close && menu.isShowingNow) {
menu.close();
}
}, buttonClick:function (e) {
if (!this.disabled) {
try {
this.domNode.focus();
}
catch (e2) {
}
this.onClick(e);
}
}, onClick:function (e) {
}, _setImage:function (prefix) {
this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
}, _toggleMenu:function (menuId) {
var menu = dojo.widget.getWidgetById(menuId);
if (!menu) {
return;
}
if (menu.open && !menu.isShowingNow) {
var pos = dojo.html.getAbsolutePosition(this.domNode, false);
menu.open(pos.x, pos.y + this.height, this);
dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
} else {
if (menu.close && menu.isShowingNow) {
menu.close();
} else {
menu.toggle();
}
}
}, setCaption:function (content) {
this.caption = content;
this.containerNode.innerHTML = content;
this._sizeMyself();
}, setDisabled:function (disabled) {
this.disabled = disabled;
this._sizeMyself();
}});
dojo.widget.defineWidget("dojo.widget.DropDownButton", dojo.widget.Button, {menuId:"", downArrow:"templates/images/whiteDownArrow.gif", disabledDownArrow:"templates/images/whiteDownArrow.gif", fillInTemplate:function () {
dojo.widget.DropDownButton.superclass.fillInTemplate.apply(this, arguments);
this.arrow = document.createElement("img");
dojo.html.setClass(this.arrow, "downArrow");
dojo.widget.wai.setAttr(this.domNode, "waiState", "haspopup", this.menuId);
}, _sizeMyselfHelper:function () {
this.arrow.src = dojo.uri.moduleUri("dojo.widget", this.disabled ? this.disabledDownArrow : this.downArrow);
this.containerNode.appendChild(this.arrow);
dojo.widget.DropDownButton.superclass._sizeMyselfHelper.call(this);
}, onClick:function (e) {
this._toggleMenu(this.menuId);
}});
dojo.widget.defineWidget("dojo.widget.ComboButton", dojo.widget.Button, {menuId:"", templateString:"<div class=\"dojoButton\" style=\"position:relative;top:0px;left:0px; text-align:none;\" dojoAttachEvent=\"onKey;onFocus\">\n\n\t<div dojoAttachPoint=\"buttonNode\" class=\"dojoButtonLeftPart\" style=\"position:absolute;left:0px;top:0px;\"\n\t\tdojoAttachEvent=\"onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick;\">\n\t\t<div class=\"dojoButtonContents\" dojoAttachPoint=\"containerNode\" style=\"position:absolute;top:0px;right:0px;z-index:2;\"></div>\n\t\t<img dojoAttachPoint=\"leftImage\" style=\"position:absolute;left:0px;top:0px;\">\n\t\t<img dojoAttachPoint=\"centerImage\" style=\"position:absolute;right:0px;top:0px;z-index:1;\">\n\t</div>\n\n\t<div dojoAttachPoint=\"rightPart\" class=\"dojoButtonRightPart\" style=\"position:absolute;top:0px;right:0px;\"\n\t\tdojoAttachEvent=\"onMouseOver:rightOver; onMouseOut:rightOut; onMouseDown:rightDown; onMouseUp:rightUp; onClick:rightClick;\">\n\t\t<img dojoAttachPoint=\"arrowBackgroundImage\" style=\"position:absolute;top:0px;left:0px;z-index:1;\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/images/whiteDownArrow.gif\"\n\t\t \t\tstyle=\"z-index:2;position:absolute;left:3px;top:50%;\">\n\t\t<img dojoAttachPoint=\"rightImage\" style=\"position:absolute;top:0px;right:0px;\">\n\t</div>\n\n</div>\n", splitWidth:2, arrowWidth:5, _sizeMyselfHelper:function (e) {
var mb = dojo.html.getMarginBox(this.containerNode);
this.height = mb.height;
this.containerWidth = mb.width;
var endWidth = this.height / 3;
if (this.disabled) {
dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
this.domNode.removeAttribute("tabIndex");
} else {
dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
this.domNode.setAttribute("tabIndex", "0");
}
this.leftImage.height = this.rightImage.height = this.centerImage.height = this.arrowBackgroundImage.height = this.height;
this.leftImage.width = endWidth + 1;
this.centerImage.width = this.containerWidth;
this.buttonNode.style.height = this.height + "px";
this.buttonNode.style.width = endWidth + this.containerWidth + "px";
this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
this.arrowBackgroundImage.width = this.arrowWidth;
this.rightImage.width = endWidth + 1;
this.rightPart.style.height = this.height + "px";
this.rightPart.style.width = this.arrowWidth + endWidth + "px";
this._setImageR(this.disabled ? this.disabledImg : this.inactiveImg);
this.domNode.style.height = this.height + "px";
var totalWidth = this.containerWidth + this.splitWidth + this.arrowWidth + 2 * endWidth;
this.domNode.style.width = totalWidth + "px";
}, _setImage:function (prefix) {
this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
}, rightOver:function (e) {
if (this.disabled) {
return;
}
dojo.html.prependClass(this.rightPart, "dojoButtonHover");
this._setImageR(this.activeImg);
}, rightDown:function (e) {
if (this.disabled) {
return;
}
dojo.html.prependClass(this.rightPart, "dojoButtonDepressed");
dojo.html.removeClass(this.rightPart, "dojoButtonHover");
this._setImageR(this.pressedImg);
}, rightUp:function (e) {
if (this.disabled) {
return;
}
dojo.html.prependClass(this.rightPart, "dojoButtonHover");
dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
this._setImageR(this.activeImg);
}, rightOut:function (e) {
if (this.disabled) {
return;
}
dojo.html.removeClass(this.rightPart, "dojoButtonHover");
dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
this._setImageR(this.inactiveImg);
}, rightClick:function (e) {
if (this.disabled) {
return;
}
try {
this.domNode.focus();
}
catch (e2) {
}
this._toggleMenu(this.menuId);
}, _setImageR:function (prefix) {
this.arrowBackgroundImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
}, onKey:function (e) {
if (!e.key) {
return;
}
var menu = dojo.widget.getWidgetById(this.menuId);
if (e.key == e.KEY_ENTER || e.key == " ") {
this.onMouseDown(e);
this.buttonClick(e);
dojo.lang.setTimeout(this, "onMouseUp", 75, e);
dojo.event.browser.stopEvent(e);
} else {
if (e.key == e.KEY_DOWN_ARROW && e.altKey) {
this.rightDown(e);
this.rightClick(e);
dojo.lang.setTimeout(this, "rightUp", 75, e);
dojo.event.browser.stopEvent(e);
} else {
if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
}
}
}
}});
 
/trunk/api/js/dojo/src/widget/DatePicker.js
New file
0,0 → 1,347
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DatePicker");
dojo.require("dojo.date.common");
dojo.require("dojo.date.format");
dojo.require("dojo.date.serialize");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.dom");
dojo.require("dojo.html.style");
dojo.widget.defineWidget("dojo.widget.DatePicker", dojo.widget.HtmlWidget, {value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, dayWidth:"narrow", classNames:{previous:"previousMonth", disabledPrevious:"previousMonthDisabled", current:"currentMonth", disabledCurrent:"currentMonthDisabled", next:"nextMonth", disabledNext:"nextMonthDisabled", currentDate:"currentDate", selectedDate:"selectedDate"}, templateString:"<div class=\"datePickerContainer\" dojoAttachPoint=\"datePickerContainerNode\">\n\t<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarContainer\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"monthWrapper\" valign=\"top\">\n\t\t\t\t\t<table class=\"monthContainer\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"monthCurve monthCurveTL\" valign=\"top\"></td>\n\t\t\t\t\t\t\t<td class=\"monthLabelContainer\" valign=\"top\">\n\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"increaseWeekNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\t\t\t\t\t\t\tclass=\"incrementControl increase\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/incrementMonth.png\" \n\t\t\t\t\t\t\t\t\talt=\"&darr;\" style=\"width:7px;height:5px;\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"increaseMonthNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl increase\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/incrementMonth.png\" \n\t\t\t\t\t\t\t\t\t\talt=\"&darr;\" dojoAttachPoint=\"incrementMonthImageNode\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"decreaseWeekNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\t\t\t\t\t\t\tclass=\"incrementControl decrease\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/decrementMonth.png\" alt=\"&uarr;\" style=\"width:7px;height:5px;\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"decreaseMonthNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl decrease\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/decrementMonth.png\" \n\t\t\t\t\t\t\t\t\t\talt=\"&uarr;\" dojoAttachPoint=\"decrementMonthImageNode\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"monthLabelNode\" class=\"month\"></span>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td class=\"monthCurve monthCurveTR\" valign=\"top\"></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<table class=\"calendarBodyContainer\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr dojoAttachPoint=\"dayLabelsRow\">\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"calendarDatesContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: _handleUiClick;\">\n\t\t\t\t\t\t\t<tr dojoAttachPoint=\"calendarWeekTemplate\">\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t\t<tfoot>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"yearWrapper\">\n\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"yearContainer\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"curveBL\" valign=\"top\"></td>\n\t\t\t\t\t\t\t<td valign=\"top\">\n\t\t\t\t\t\t\t\t<h3 class=\"yearLabel\">\n\t\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\"\n\t\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"previousYear\"></span>\n\t\t\t\t\t\t\t\t\t<span class=\"selectedYear\" dojoAttachPoint=\"currentYearLabelNode\"></span>\n\t\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" \n\t\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"nextYear\"></span>\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td class=\"curveBR\" valign=\"top\"></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tfoot>\n\t</table>\n</div>\n", templateCssString:".datePickerContainer {\n\twidth:164px; /* needed for proper user styling */\n}\n\n.calendarContainer {\n/*\tborder:1px solid #566f8f;*/\n}\n\n.calendarBodyContainer {\n\twidth:100%; /* needed for the explode effect (explain?) */\n\tbackground: #7591bc url(\"images/dpBg.gif\") top left repeat-x;\n}\n\n.calendarBodyContainer thead tr td {\n\tcolor:#293a4b;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n\tpadding:0.25em;\n\tbackground: url(\"images/dpHorizLine.gif\") bottom left repeat-x;\n}\n\n.calendarBodyContainer tbody tr td {\n\tcolor:#fff;\n\tfont:bold 0.7em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n\tpadding:0.4em;\n\tbackground: url(\"images/dpVertLine.gif\") top right repeat-y;\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n\n.monthWrapper {\n\tpadding-bottom:2px;\n\tbackground: url(\"images/dpHorizLine.gif\") bottom left repeat-x;\n}\n\n.monthContainer {\n\twidth:100%;\n}\n\n.monthLabelContainer {\n\ttext-align:center;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\tbackground: url(\"images/dpMonthBg.png\") repeat-x top left !important;\n\tcolor:#293a4b;\n\tpadding:0.25em;\n}\n\n.monthCurve {\n\twidth:12px;\n}\n\n.monthCurveTL {\n\tbackground: url(\"images/dpCurveTL.png\") no-repeat top left !important;\n}\n\n.monthCurveTR {\n\t\tbackground: url(\"images/dpCurveTR.png\") no-repeat top right !important;\n}\n\n\n.yearWrapper {\n\tbackground: url(\"images/dpHorizLineFoot.gif\") top left repeat-x;\n\tpadding-top:2px;\n}\n\n.yearContainer {\n\twidth:100%;\n}\n\n.yearContainer td {\n\tbackground:url(\"images/dpYearBg.png\") top left repeat-x;\n}\n\n.yearContainer .yearLabel {\n\tmargin:0;\n\tpadding:0.45em 0 0.45em 0;\n\tcolor:#fff;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n}\n\n.curveBL {\n\tbackground: url(\"images/dpCurveBL.png\") bottom left no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.curveBR {\n\tbackground: url(\"images/dpCurveBR.png\") bottom right no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n\n.previousMonth {\n\tbackground-color:#6782a8 !important;\n}\n\n.previousMonthDisabled {\n\tbackground-color:#a4a5a6 !important;\n\tcursor:default !important\n}\n.currentMonth {\n}\n\n.currentMonthDisabled {\n\tbackground-color:#bbbbbc !important;\n\tcursor:default !important\n}\n.nextMonth {\n\tbackground-color:#6782a8 !important;\n}\n.nextMonthDisabled {\n\tbackground-color:#a4a5a6 !important;\n\tcursor:default !important;\n}\n\n.currentDate {\n\ttext-decoration:underline;\n\tfont-style:italic;\n}\n\n.selectedDate {\n\tbackground-color:#fff !important;\n\tcolor:#6782a8 !important;\n}\n\n.yearLabel .selectedYear {\n\tpadding:0.2em;\n\tbackground-color:#9ec3fb !important;\n}\n\n.nextYear, .previousYear {\n\tcursor:pointer;cursor:hand;\n\tpadding:0;\n}\n\n.nextYear {\n\tmargin:0 0 0 0.55em;\n}\n\n.previousYear {\n\tmargin:0 0.55em 0 0;\n}\n\n.incrementControl {\n\tcursor:pointer;cursor:hand;\n\twidth:1em;\n}\n\n.increase {\n\tfloat:right;\n}\n\n.decrease {\n\tfloat:left;\n}\n\n.lastColumn {\n\tbackground-image:none !important;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/DatePicker.css"), postMixInProperties:function () {
dojo.widget.DatePicker.superclass.postMixInProperties.apply(this, arguments);
if (!this.weekStartsOn) {
this.weekStartsOn = dojo.date.getFirstDayOfWeek(this.lang);
}
this.today = new Date();
this.today.setHours(0, 0, 0, 0);
if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
this.value = new Date();
} else {
if (this.value && (typeof this.value == "string") && (this.value.split("-").length > 2)) {
this.value = dojo.date.fromRfc3339(this.value);
this.value.setHours(0, 0, 0, 0);
}
}
}, fillInTemplate:function (args, frag) {
dojo.widget.DatePicker.superclass.fillInTemplate.apply(this, arguments);
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
this.weekTemplate = dojo.dom.removeNode(this.calendarWeekTemplate);
this._preInitUI(this.value ? this.value : this.today, false, true);
var dayLabels = dojo.lang.unnest(dojo.date.getNames("days", this.dayWidth, "standAlone", this.lang));
if (this.weekStartsOn > 0) {
for (var i = 0; i < this.weekStartsOn; i++) {
dayLabels.push(dayLabels.shift());
}
}
var dayLabelNodes = this.dayLabelsRow.getElementsByTagName("td");
for (i = 0; i < 7; i++) {
dayLabelNodes.item(i).innerHTML = dayLabels[i];
}
if (this.value) {
this.setValue(this.value);
}
}, getValue:function () {
return dojo.date.toRfc3339(new Date(this.value), "dateOnly");
}, getDate:function () {
return this.value;
}, setValue:function (rfcDate) {
this.setDate(rfcDate);
}, setDate:function (dateObj) {
if (dateObj == "") {
this.value = "";
this._preInitUI(this.curMonth, false, true);
} else {
if (typeof dateObj == "string") {
this.value = dojo.date.fromRfc3339(dateObj);
this.value.setHours(0, 0, 0, 0);
} else {
this.value = new Date(dateObj);
this.value.setHours(0, 0, 0, 0);
}
}
if (this.selectedNode != null) {
dojo.html.removeClass(this.selectedNode, this.classNames.selectedDate);
}
if (this.clickedNode != null) {
dojo.debug("adding selectedDate");
dojo.html.addClass(this.clickedNode, this.classNames.selectedDate);
this.selectedNode = this.clickedNode;
} else {
this._preInitUI(this.value, false, true);
}
this.clickedNode = null;
this.onValueChanged(this.value);
}, _preInitUI:function (dateObj, initFirst, initUI) {
if (typeof (this.startDate) == "string") {
this.startDate = dojo.date.fromRfc3339(this.startDate);
}
if (typeof (this.endDate) == "string") {
this.endDate = dojo.date.fromRfc3339(this.endDate);
}
this.startDate.setHours(0, 0, 0, 0);
this.endDate.setHours(24, 0, 0, -1);
if (dateObj < this.startDate || dateObj > this.endDate) {
dateObj = new Date((dateObj < this.startDate) ? this.startDate : this.endDate);
}
this.firstDay = this._initFirstDay(dateObj, initFirst);
this.selectedIsUsed = false;
this.currentIsUsed = false;
var nextDate = new Date(this.firstDay);
var tmpMonth = nextDate.getMonth();
this.curMonth = new Date(nextDate);
this.curMonth.setDate(nextDate.getDate() + 6);
this.curMonth.setDate(1);
if (this.displayWeeks == "" || this.adjustWeeks) {
this.adjustWeeks = true;
this.displayWeeks = Math.ceil((dojo.date.getDaysInMonth(this.curMonth) + this._getAdjustedDay(this.curMonth)) / 7);
}
var days = this.displayWeeks * 7;
if (dojo.date.diff(this.startDate, this.endDate, dojo.date.dateParts.DAY) < days) {
this.staticDisplay = true;
if (dojo.date.diff(nextDate, this.endDate, dojo.date.dateParts.DAY) > days) {
this._preInitUI(this.startDate, true, false);
nextDate = new Date(this.firstDay);
}
this.curMonth = new Date(nextDate);
this.curMonth.setDate(nextDate.getDate() + 6);
this.curMonth.setDate(1);
var curClass = (nextDate.getMonth() == this.curMonth.getMonth()) ? "current" : "previous";
}
if (initUI) {
this._initUI(days);
}
}, _initUI:function (days) {
dojo.dom.removeChildren(this.calendarDatesContainerNode);
for (var i = 0; i < this.displayWeeks; i++) {
this.calendarDatesContainerNode.appendChild(this.weekTemplate.cloneNode(true));
}
var nextDate = new Date(this.firstDay);
this._setMonthLabel(this.curMonth.getMonth());
this._setYearLabels(this.curMonth.getFullYear());
var calendarNodes = this.calendarDatesContainerNode.getElementsByTagName("td");
var calendarRows = this.calendarDatesContainerNode.getElementsByTagName("tr");
var currentCalendarNode;
for (i = 0; i < days; i++) {
currentCalendarNode = calendarNodes.item(i);
currentCalendarNode.innerHTML = nextDate.getDate();
currentCalendarNode.setAttribute("djDateValue", nextDate.valueOf());
var curClass = (nextDate.getMonth() != this.curMonth.getMonth() && Number(nextDate) < Number(this.curMonth)) ? "previous" : (nextDate.getMonth() == this.curMonth.getMonth()) ? "current" : "next";
var mappedClass = curClass;
if (this._isDisabledDate(nextDate)) {
var classMap = {previous:"disabledPrevious", current:"disabledCurrent", next:"disabledNext"};
mappedClass = classMap[curClass];
}
dojo.html.setClass(currentCalendarNode, this._getDateClassName(nextDate, mappedClass));
if (dojo.html.hasClass(currentCalendarNode, this.classNames.selectedDate)) {
this.selectedNode = currentCalendarNode;
}
nextDate = dojo.date.add(nextDate, dojo.date.dateParts.DAY, 1);
}
this.lastDay = dojo.date.add(nextDate, dojo.date.dateParts.DAY, -1);
this._initControls();
}, _initControls:function () {
var d = this.firstDay;
var d2 = this.lastDay;
var decWeek, incWeek, decMonth, incMonth, decYear, incYear;
decWeek = incWeek = decMonth = incMonth = decYear = incYear = !this.staticDisplay;
with (dojo.date.dateParts) {
var add = dojo.date.add;
if (decWeek && add(d, DAY, (-1 * (this._getAdjustedDay(d) + 1))) < this.startDate) {
decWeek = decMonth = decYear = false;
}
if (incWeek && d2 > this.endDate) {
incWeek = incMonth = incYear = false;
}
if (decMonth && add(d, DAY, -1) < this.startDate) {
decMonth = decYear = false;
}
if (incMonth && add(d2, DAY, 1) > this.endDate) {
incMonth = incYear = false;
}
if (decYear && add(d2, YEAR, -1) < this.startDate) {
decYear = false;
}
if (incYear && add(d, YEAR, 1) > this.endDate) {
incYear = false;
}
}
function enableControl(node, enabled) {
dojo.html.setVisibility(node, enabled ? "" : "hidden");
}
enableControl(this.decreaseWeekNode, decWeek);
enableControl(this.increaseWeekNode, incWeek);
enableControl(this.decreaseMonthNode, decMonth);
enableControl(this.increaseMonthNode, incMonth);
enableControl(this.previousYearLabelNode, decYear);
enableControl(this.nextYearLabelNode, incYear);
}, _incrementWeek:function (evt) {
var d = new Date(this.firstDay);
switch (evt.target) {
case this.increaseWeekNode.getElementsByTagName("img").item(0):
case this.increaseWeekNode:
var tmpDate = dojo.date.add(d, dojo.date.dateParts.WEEK, 1);
if (tmpDate < this.endDate) {
d = dojo.date.add(d, dojo.date.dateParts.WEEK, 1);
}
break;
case this.decreaseWeekNode.getElementsByTagName("img").item(0):
case this.decreaseWeekNode:
if (d >= this.startDate) {
d = dojo.date.add(d, dojo.date.dateParts.WEEK, -1);
}
break;
}
this._preInitUI(d, true, true);
}, _incrementMonth:function (evt) {
var d = new Date(this.curMonth);
var tmpDate = new Date(this.firstDay);
switch (evt.currentTarget) {
case this.increaseMonthNode.getElementsByTagName("img").item(0):
case this.increaseMonthNode:
tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.DAY, this.displayWeeks * 7);
if (tmpDate < this.endDate) {
d = dojo.date.add(d, dojo.date.dateParts.MONTH, 1);
} else {
var revertToEndDate = true;
}
break;
case this.decreaseMonthNode.getElementsByTagName("img").item(0):
case this.decreaseMonthNode:
if (tmpDate > this.startDate) {
d = dojo.date.add(d, dojo.date.dateParts.MONTH, -1);
} else {
var revertToStartDate = true;
}
break;
}
if (revertToStartDate) {
d = new Date(this.startDate);
} else {
if (revertToEndDate) {
d = new Date(this.endDate);
}
}
this._preInitUI(d, false, true);
}, _incrementYear:function (evt) {
var year = this.curMonth.getFullYear();
var tmpDate = new Date(this.firstDay);
switch (evt.target) {
case this.nextYearLabelNode:
tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, 1);
if (tmpDate < this.endDate) {
year++;
} else {
var revertToEndDate = true;
}
break;
case this.previousYearLabelNode:
tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, -1);
if (tmpDate > this.startDate) {
year--;
} else {
var revertToStartDate = true;
}
break;
}
var d;
if (revertToStartDate) {
d = new Date(this.startDate);
} else {
if (revertToEndDate) {
d = new Date(this.endDate);
} else {
d = new Date(year, this.curMonth.getMonth(), 1);
}
}
this._preInitUI(d, false, true);
}, onIncrementWeek:function (evt) {
evt.stopPropagation();
if (!this.staticDisplay) {
this._incrementWeek(evt);
}
}, onIncrementMonth:function (evt) {
evt.stopPropagation();
if (!this.staticDisplay) {
this._incrementMonth(evt);
}
}, onIncrementYear:function (evt) {
evt.stopPropagation();
if (!this.staticDisplay) {
this._incrementYear(evt);
}
}, _setMonthLabel:function (monthIndex) {
this.monthLabelNode.innerHTML = dojo.date.getNames("months", "wide", "standAlone", this.lang)[monthIndex];
}, _setYearLabels:function (year) {
var y = year - 1;
var that = this;
function f(n) {
that[n + "YearLabelNode"].innerHTML = dojo.date.format(new Date(y++, 0), {formatLength:"yearOnly", locale:that.lang});
}
f("previous");
f("current");
f("next");
}, _getDateClassName:function (date, monthState) {
var currentClassName = this.classNames[monthState];
if ((!this.selectedIsUsed && this.value) && (Number(date) == Number(this.value))) {
currentClassName = this.classNames.selectedDate + " " + currentClassName;
this.selectedIsUsed = true;
}
if ((!this.currentIsUsed) && (Number(date) == Number(this.today))) {
currentClassName = currentClassName + " " + this.classNames.currentDate;
this.currentIsUsed = true;
}
return currentClassName;
}, onClick:function (evt) {
dojo.event.browser.stopEvent(evt);
}, _handleUiClick:function (evt) {
var eventTarget = evt.target;
if (eventTarget.nodeType != dojo.dom.ELEMENT_NODE) {
eventTarget = eventTarget.parentNode;
}
dojo.event.browser.stopEvent(evt);
this.selectedIsUsed = this.todayIsUsed = false;
if (dojo.html.hasClass(eventTarget, this.classNames["disabledPrevious"]) || dojo.html.hasClass(eventTarget, this.classNames["disabledCurrent"]) || dojo.html.hasClass(eventTarget, this.classNames["disabledNext"])) {
return;
}
this.clickedNode = eventTarget;
this.setDate(new Date(Number(dojo.html.getAttribute(eventTarget, "djDateValue"))));
}, onValueChanged:function (date) {
}, _isDisabledDate:function (dateObj) {
if (dateObj < this.startDate || dateObj > this.endDate) {
return true;
}
return this.isDisabledDate(dateObj, this.lang);
}, isDisabledDate:function (dateObj, locale) {
return false;
}, _initFirstDay:function (dateObj, adj) {
var d = new Date(dateObj);
if (!adj) {
d.setDate(1);
}
d.setDate(d.getDate() - this._getAdjustedDay(d, this.weekStartsOn));
d.setHours(0, 0, 0, 0);
return d;
}, _getAdjustedDay:function (dateObj) {
var days = [0, 1, 2, 3, 4, 5, 6];
if (this.weekStartsOn > 0) {
for (var i = 0; i < this.weekStartsOn; i++) {
days.unshift(days.pop());
}
}
return days[dateObj.getDay()];
}, destroy:function () {
dojo.widget.DatePicker.superclass.destroy.apply(this, arguments);
dojo.html.destroyNode(this.weekTemplate);
}});
 
/trunk/api/js/dojo/src/widget/TreeNodeV3.js
New file
0,0 → 1,308
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeNodeV3");
dojo.require("dojo.html.*");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeWithNode");
dojo.widget.defineWidget("dojo.widget.TreeNodeV3", [dojo.widget.HtmlWidget, dojo.widget.TreeWithNode], function () {
this.actionsDisabled = [];
this.object = {};
}, {tryLazyInit:true, actions:{MOVE:"MOVE", DETACH:"DETACH", EDIT:"EDIT", ADDCHILD:"ADDCHILD", SELECT:"SELECT"}, labelClass:"", contentClass:"", expandNode:null, labelNode:null, nodeDocType:"", selected:false, getnodeDocType:function () {
return this.nodeDocType;
}, cloneProperties:["actionsDisabled", "tryLazyInit", "nodeDocType", "objectId", "object", "title", "isFolder", "isExpanded", "state"], clone:function (deep) {
var ret = new this.constructor();
for (var i = 0; i < this.cloneProperties.length; i++) {
var prop = this.cloneProperties[i];
ret[prop] = dojo.lang.shallowCopy(this[prop], true);
}
if (this.tree.unsetFolderOnEmpty && !deep && this.isFolder) {
ret.isFolder = false;
}
ret.toggleObj = this.toggleObj;
dojo.widget.manager.add(ret);
ret.tree = this.tree;
ret.buildRendering({}, {});
ret.initialize({}, {});
if (deep && this.children.length) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child.clone) {
ret.children.push(child.clone(deep));
} else {
ret.children.push(dojo.lang.shallowCopy(child, deep));
}
}
ret.setChildren();
}
return ret;
}, markProcessing:function () {
this.markProcessingSavedClass = dojo.html.getClass(this.expandNode);
dojo.html.setClass(this.expandNode, this.tree.classPrefix + "ExpandLoading");
}, unmarkProcessing:function () {
dojo.html.setClass(this.expandNode, this.markProcessingSavedClass);
}, buildRendering:function (args, fragment, parent) {
if (args.tree) {
this.tree = dojo.lang.isString(args.tree) ? dojo.widget.manager.getWidgetById(args.tree) : args.tree;
} else {
if (parent && parent.tree) {
this.tree = parent.tree;
}
}
if (!this.tree) {
dojo.raise("Can't evaluate tree from arguments or parent");
}
this.domNode = this.tree.nodeTemplate.cloneNode(true);
this.expandNode = this.domNode.firstChild;
this.contentNode = this.domNode.childNodes[1];
this.labelNode = this.contentNode.firstChild;
if (this.labelClass) {
dojo.html.addClass(this.labelNode, this.labelClass);
}
if (this.contentClass) {
dojo.html.addClass(this.contentNode, this.contentClass);
}
this.domNode.widgetId = this.widgetId;
this.labelNode.innerHTML = this.title;
}, isTreeNode:true, object:{}, title:"", isFolder:null, contentNode:null, expandClass:"", isExpanded:false, containerNode:null, getInfo:function () {
var info = {widgetId:this.widgetId, objectId:this.objectId, index:this.getParentIndex()};
return info;
}, setFolder:function () {
this.isFolder = true;
this.viewSetExpand();
if (!this.containerNode) {
this.viewAddContainer();
}
dojo.event.topic.publish(this.tree.eventNames.afterSetFolder, {source:this});
}, initialize:function (args, frag, parent) {
if (args.isFolder) {
this.isFolder = true;
}
if (this.children.length || this.isFolder) {
this.setFolder();
} else {
this.viewSetExpand();
}
for (var i = 0; i < this.actionsDisabled.length; i++) {
this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
}
dojo.event.topic.publish(this.tree.eventNames.afterChangeTree, {oldTree:null, newTree:this.tree, node:this});
}, unsetFolder:function () {
this.isFolder = false;
this.viewSetExpand();
dojo.event.topic.publish(this.tree.eventNames.afterUnsetFolder, {source:this});
}, insertNode:function (parent, index) {
if (!index) {
index = 0;
}
if (index == 0) {
dojo.html.prependChild(this.domNode, parent.containerNode);
} else {
dojo.html.insertAfter(this.domNode, parent.children[index - 1].domNode);
}
}, updateTree:function (newTree) {
if (this.tree === newTree) {
return;
}
var oldTree = this.tree;
dojo.lang.forEach(this.getDescendants(), function (elem) {
elem.tree = newTree;
});
if (oldTree.classPrefix != newTree.classPrefix) {
var stack = [this.domNode];
var elem;
var reg = new RegExp("(^|\\s)" + oldTree.classPrefix, "g");
while (elem = stack.pop()) {
for (var i = 0; i < elem.childNodes.length; i++) {
var childNode = elem.childNodes[i];
if (childNode.nodeDocType != 1) {
continue;
}
dojo.html.setClass(childNode, dojo.html.getClass(childNode).replace(reg, "$1" + newTree.classPrefix));
stack.push(childNode);
}
}
}
var message = {oldTree:oldTree, newTree:newTree, node:this};
dojo.event.topic.publish(this.tree.eventNames.afterChangeTree, message);
dojo.event.topic.publish(newTree.eventNames.afterChangeTree, message);
}, addedTo:function (parent, index, dontPublishEvent) {
if (this.tree !== parent.tree) {
this.updateTree(parent.tree);
}
if (parent.isTreeNode) {
if (!parent.isFolder) {
parent.setFolder();
parent.state = parent.loadStates.LOADED;
}
}
var siblingsCount = parent.children.length;
this.insertNode(parent, index);
this.viewAddLayout();
if (siblingsCount > 1) {
if (index == 0 && parent.children[1] instanceof dojo.widget.Widget) {
parent.children[1].viewUpdateLayout();
}
if (index == siblingsCount - 1 && parent.children[siblingsCount - 2] instanceof dojo.widget.Widget) {
parent.children[siblingsCount - 2].viewUpdateLayout();
}
} else {
if (parent.isTreeNode) {
parent.viewSetHasChildren();
}
}
if (!dontPublishEvent) {
var message = {child:this, index:index, parent:parent};
dojo.event.topic.publish(this.tree.eventNames.afterAddChild, message);
}
}, createSimple:function (args, parent) {
if (args.tree) {
var tree = args.tree;
} else {
if (parent) {
var tree = parent.tree;
} else {
dojo.raise("createSimple: can't evaluate tree");
}
}
tree = dojo.widget.byId(tree);
var treeNode = new tree.defaultChildWidget();
for (var x in args) {
treeNode[x] = args[x];
}
treeNode.toggleObj = dojo.lfx.toggle[treeNode.toggle.toLowerCase()] || dojo.lfx.toggle.plain;
dojo.widget.manager.add(treeNode);
treeNode.buildRendering(args, {}, parent);
treeNode.initialize(args, {}, parent);
if (treeNode.parent) {
delete dojo.widget.manager.topWidgets[treeNode.widgetId];
}
return treeNode;
}, viewUpdateLayout:function () {
this.viewRemoveLayout();
this.viewAddLayout();
}, viewAddContainer:function () {
this.containerNode = this.tree.containerNodeTemplate.cloneNode(true);
this.domNode.appendChild(this.containerNode);
}, viewAddLayout:function () {
if (this.parent["isTree"]) {
dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode) + " " + this.tree.classPrefix + "IsRoot");
}
if (this.isLastChild()) {
dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode) + " " + this.tree.classPrefix + "IsLast");
}
}, viewRemoveLayout:function () {
dojo.html.removeClass(this.domNode, this.tree.classPrefix + "IsRoot");
dojo.html.removeClass(this.domNode, this.tree.classPrefix + "IsLast");
}, viewGetExpandClass:function () {
if (this.isFolder) {
return this.isExpanded ? "ExpandOpen" : "ExpandClosed";
} else {
return "ExpandLeaf";
}
}, viewSetExpand:function () {
var expand = this.tree.classPrefix + this.viewGetExpandClass();
var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "Expand\\w+", "g");
dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + expand);
this.viewSetHasChildrenAndExpand();
}, viewGetChildrenClass:function () {
return "Children" + (this.children.length ? "Yes" : "No");
}, viewSetHasChildren:function () {
var clazz = this.tree.classPrefix + this.viewGetChildrenClass();
var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "Children\\w+", "g");
dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + clazz);
this.viewSetHasChildrenAndExpand();
}, viewSetHasChildrenAndExpand:function () {
var clazz = this.tree.classPrefix + "State" + this.viewGetChildrenClass() + "-" + this.viewGetExpandClass();
var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "State[\\w-]+", "g");
dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + clazz);
}, viewUnfocus:function () {
dojo.html.removeClass(this.labelNode, this.tree.classPrefix + "LabelFocused");
}, viewFocus:function () {
dojo.html.addClass(this.labelNode, this.tree.classPrefix + "LabelFocused");
}, viewEmphasize:function () {
dojo.html.clearSelection(this.labelNode);
dojo.html.addClass(this.labelNode, this.tree.classPrefix + "NodeEmphasized");
}, viewUnemphasize:function () {
dojo.html.removeClass(this.labelNode, this.tree.classPrefix + "NodeEmphasized");
}, detach:function () {
if (!this.parent) {
return;
}
var parent = this.parent;
var index = this.getParentIndex();
this.doDetach.apply(this, arguments);
dojo.event.topic.publish(this.tree.eventNames.afterDetach, {child:this, parent:parent, index:index});
}, doDetach:function () {
var parent = this.parent;
if (!parent) {
return;
}
var index = this.getParentIndex();
this.viewRemoveLayout();
dojo.widget.DomWidget.prototype.removeChild.call(parent, this);
var siblingsCount = parent.children.length;
if (siblingsCount > 0) {
if (index == 0) {
parent.children[0].viewUpdateLayout();
}
if (index == siblingsCount) {
parent.children[siblingsCount - 1].viewUpdateLayout();
}
} else {
if (parent.isTreeNode) {
parent.viewSetHasChildren();
}
}
if (this.tree.unsetFolderOnEmpty && !parent.children.length && parent.isTreeNode) {
parent.unsetFolder();
}
this.parent = null;
}, destroy:function () {
dojo.event.topic.publish(this.tree.eventNames.beforeNodeDestroy, {source:this});
this.detach();
return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
}, expand:function () {
if (this.isExpanded) {
return;
}
if (this.tryLazyInit) {
this.setChildren();
this.tryLazyInit = false;
}
this.isExpanded = true;
this.viewSetExpand();
this.showChildren();
}, collapse:function () {
if (!this.isExpanded) {
return;
}
this.isExpanded = false;
this.hideChildren();
}, hideChildren:function () {
this.tree.toggleObj.hide(this.containerNode, this.tree.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onHideChildren"));
}, showChildren:function () {
this.tree.toggleObj.show(this.containerNode, this.tree.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onShowChildren"));
}, onShowChildren:function () {
this.onShow();
dojo.event.topic.publish(this.tree.eventNames.afterExpand, {source:this});
}, onHideChildren:function () {
this.viewSetExpand();
this.onHide();
dojo.event.topic.publish(this.tree.eventNames.afterCollapse, {source:this});
}, setTitle:function (title) {
var oldTitle = this.title;
this.labelNode.innerHTML = this.title = title;
dojo.event.topic.publish(this.tree.eventNames.afterSetTitle, {source:this, oldTitle:oldTitle});
}, toString:function () {
return "[" + this.widgetType + ", " + this.title + "]";
}});
 
/trunk/api/js/dojo/src/widget/ShowAction.js
New file
0,0 → 1,18
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ShowAction");
dojo.require("dojo.widget.*");
dojo.widget.defineWidget("dojo.widget.ShowAction", dojo.widget.HtmlWidget, {on:"", action:"fade", duration:350, from:"", to:"", auto:"false", postMixInProperties:function () {
if (dojo.render.html.opera) {
this.action = this.action.split("/").pop();
}
}});
 
/trunk/api/js/dojo/src/widget/PageContainer.js
New file
0,0 → 1,200
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.PageContainer");
dojo.require("dojo.lang.func");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.PageContainer", dojo.widget.HtmlWidget, {isContainer:true, doLayout:true, templateString:"<div dojoAttachPoint='containerNode'></div>", selectedChild:"", fillInTemplate:function (args, frag) {
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
dojo.widget.PageContainer.superclass.fillInTemplate.apply(this, arguments);
}, postCreate:function (args, frag) {
if (this.children.length) {
dojo.lang.forEach(this.children, this._setupChild, this);
var initialChild;
if (this.selectedChild) {
this.selectChild(this.selectedChild);
} else {
for (var i = 0; i < this.children.length; i++) {
if (this.children[i].selected) {
this.selectChild(this.children[i]);
break;
}
}
if (!this.selectedChildWidget) {
this.selectChild(this.children[0]);
}
}
}
}, addChild:function (child) {
dojo.widget.PageContainer.superclass.addChild.apply(this, arguments);
this._setupChild(child);
this.onResized();
if (!this.selectedChildWidget) {
this.selectChild(child);
}
}, _setupChild:function (page) {
page.hide();
page.domNode.style.position = "relative";
dojo.event.topic.publish(this.widgetId + "-addChild", page);
}, removeChild:function (page) {
dojo.widget.PageContainer.superclass.removeChild.apply(this, arguments);
if (this._beingDestroyed) {
return;
}
dojo.event.topic.publish(this.widgetId + "-removeChild", page);
this.onResized();
if (this.selectedChildWidget === page) {
this.selectedChildWidget = undefined;
if (this.children.length > 0) {
this.selectChild(this.children[0], true);
}
}
}, selectChild:function (page, callingWidget) {
page = dojo.widget.byId(page);
this.correspondingPageButton = callingWidget;
if (this.selectedChildWidget) {
this._hideChild(this.selectedChildWidget);
}
this.selectedChildWidget = page;
this.selectedChild = page.widgetId;
this._showChild(page);
page.isFirstChild = (page == this.children[0]);
page.isLastChild = (page == this.children[this.children.length - 1]);
dojo.event.topic.publish(this.widgetId + "-selectChild", page);
}, forward:function () {
var index = dojo.lang.find(this.children, this.selectedChildWidget);
this.selectChild(this.children[index + 1]);
}, back:function () {
var index = dojo.lang.find(this.children, this.selectedChildWidget);
this.selectChild(this.children[index - 1]);
}, onResized:function () {
if (this.doLayout && this.selectedChildWidget) {
with (this.selectedChildWidget.domNode.style) {
top = dojo.html.getPixelValue(this.containerNode, "padding-top", true);
left = dojo.html.getPixelValue(this.containerNode, "padding-left", true);
}
var content = dojo.html.getContentBox(this.containerNode);
this.selectedChildWidget.resizeTo(content.width, content.height);
}
}, _showChild:function (page) {
if (this.doLayout) {
var content = dojo.html.getContentBox(this.containerNode);
page.resizeTo(content.width, content.height);
}
page.selected = true;
page.show();
}, _hideChild:function (page) {
page.selected = false;
page.hide();
}, closeChild:function (page) {
var remove = page.onClose(this, page);
if (remove) {
this.removeChild(page);
page.destroy();
}
}, destroy:function () {
this._beingDestroyed = true;
dojo.event.topic.destroy(this.widgetId + "-addChild");
dojo.event.topic.destroy(this.widgetId + "-removeChild");
dojo.event.topic.destroy(this.widgetId + "-selectChild");
dojo.widget.PageContainer.superclass.destroy.apply(this, arguments);
}});
dojo.widget.defineWidget("dojo.widget.PageController", dojo.widget.HtmlWidget, {templateString:"<span wairole='tablist' dojoAttachEvent='onKey'></span>", isContainer:true, containerId:"", buttonWidget:"PageButton", "class":"dojoPageController", fillInTemplate:function () {
dojo.html.addClass(this.domNode, this["class"]);
dojo.widget.wai.setAttr(this.domNode, "waiRole", "role", "tablist");
}, postCreate:function () {
this.pane2button = {};
var container = dojo.widget.byId(this.containerId);
if (container) {
dojo.lang.forEach(container.children, this.onAddChild, this);
}
dojo.event.topic.subscribe(this.containerId + "-addChild", this, "onAddChild");
dojo.event.topic.subscribe(this.containerId + "-removeChild", this, "onRemoveChild");
dojo.event.topic.subscribe(this.containerId + "-selectChild", this, "onSelectChild");
}, destroy:function () {
dojo.event.topic.unsubscribe(this.containerId + "-addChild", this, "onAddChild");
dojo.event.topic.unsubscribe(this.containerId + "-removeChild", this, "onRemoveChild");
dojo.event.topic.unsubscribe(this.containerId + "-selectChild", this, "onSelectChild");
dojo.widget.PageController.superclass.destroy.apply(this, arguments);
}, onAddChild:function (page) {
var button = dojo.widget.createWidget(this.buttonWidget, {label:page.label, closeButton:page.closable});
this.addChild(button);
this.domNode.appendChild(button.domNode);
this.pane2button[page] = button;
page.controlButton = button;
var _this = this;
dojo.event.connect(button, "onClick", function () {
_this.onButtonClick(page);
});
dojo.event.connect(button, "onCloseButtonClick", function () {
_this.onCloseButtonClick(page);
});
}, onRemoveChild:function (page) {
if (this._currentChild == page) {
this._currentChild = null;
}
var button = this.pane2button[page];
if (button) {
button.destroy();
}
this.pane2button[page] = null;
}, onSelectChild:function (page) {
if (this._currentChild) {
var oldButton = this.pane2button[this._currentChild];
oldButton.clearSelected();
}
var newButton = this.pane2button[page];
newButton.setSelected();
this._currentChild = page;
}, onButtonClick:function (page) {
var container = dojo.widget.byId(this.containerId);
container.selectChild(page, false, this);
}, onCloseButtonClick:function (page) {
var container = dojo.widget.byId(this.containerId);
container.closeChild(page);
}, onKey:function (evt) {
if ((evt.keyCode == evt.KEY_RIGHT_ARROW) || (evt.keyCode == evt.KEY_LEFT_ARROW)) {
var current = 0;
var next = null;
var current = dojo.lang.find(this.children, this.pane2button[this._currentChild]);
if (evt.keyCode == evt.KEY_RIGHT_ARROW) {
next = this.children[(current + 1) % this.children.length];
} else {
next = this.children[(current + (this.children.length - 1)) % this.children.length];
}
dojo.event.browser.stopEvent(evt);
next.onClick();
}
}});
dojo.widget.defineWidget("dojo.widget.PageButton", dojo.widget.HtmlWidget, {templateString:"<span class='item'>" + "<span dojoAttachEvent='onClick' dojoAttachPoint='titleNode' class='selectButton'>${this.label}</span>" + "<span dojoAttachEvent='onClick:onCloseButtonClick' class='closeButton'>[X]</span>" + "</span>", label:"foo", closeButton:false, onClick:function () {
this.focus();
}, onCloseButtonMouseOver:function () {
dojo.html.addClass(this.closeButtonNode, "closeHover");
}, onCloseButtonMouseOut:function () {
dojo.html.removeClass(this.closeButtonNode, "closeHover");
}, onCloseButtonClick:function (evt) {
}, setSelected:function () {
dojo.html.addClass(this.domNode, "current");
this.titleNode.setAttribute("tabIndex", "0");
}, clearSelected:function () {
dojo.html.removeClass(this.domNode, "current");
this.titleNode.setAttribute("tabIndex", "-1");
}, focus:function () {
if (this.titleNode.focus) {
this.titleNode.focus();
}
}});
dojo.lang.extend(dojo.widget.Widget, {label:"", selected:false, closable:false, onClose:function () {
return true;
}});
 
/trunk/api/js/dojo/src/widget/Toaster.js
New file
0,0 → 1,161
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Toaster");
dojo.require("dojo.widget.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.html.iframe");
dojo.widget.defineWidget("dojo.widget.Toaster", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"clipNode\"><div dojoAttachPoint=\"containerNode\" dojoAttachEvent=\"onClick:onSelect\"><div dojoAttachPoint=\"contentNode\"></div></div></div>", templateCssString:".dojoToasterClip {\n\tposition: absolute;\n\toverflow: hidden;\n}\n\n.dojoToasterContainer {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 17.5em;\n\tz-index: 5000;\n\tmargin: 0px;\n\tfont:0.75em Tahoma, Helvetica, Verdana, Arial;\n}\n\n.dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#73c74a;\n}\n\n.dojoToasterMessage{ \n\tcolor:#fff;\n}\n.dojoToasterWarning{ }\n.dojoToasterError,\n.dojoToasterFatal{\n\tfont-weight:bold;\n\tcolor:#fff;\n}\n\n\n.dojoToasterWarning .dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#d4d943;\n} \n\n.dojoToasterError .dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#c46600;\n} \n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toaster.css"), messageTopic:"", messageTypes:{MESSAGE:"MESSAGE", WARNING:"WARNING", ERROR:"ERROR", FATAL:"FATAL"}, defaultType:"MESSAGE", clipCssClass:"dojoToasterClip", containerCssClass:"dojoToasterContainer", contentCssClass:"dojoToasterContent", messageCssClass:"dojoToasterMessage", warningCssClass:"dojoToasterWarning", errorCssClass:"dojoToasterError", fatalCssClass:"dojoToasterFatal", positionDirection:"br-up", positionDirectionTypes:["br-up", "br-left", "bl-up", "bl-right", "tr-down", "tr-left", "tl-down", "tl-right"], showDelay:2000, postCreate:function () {
this.hide();
dojo.html.setClass(this.clipNode, this.clipCssClass);
dojo.html.addClass(this.containerNode, this.containerCssClass);
dojo.html.setClass(this.contentNode, this.contentCssClass);
if (this.messageTopic) {
dojo.event.topic.subscribe(this.messageTopic, this, "_handleMessage");
}
if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
this.positionDirection = this.positionDirectionTypes.BRU;
}
}, _handleMessage:function (msg) {
if (dojo.lang.isString(msg)) {
this.setContent(msg);
} else {
this.setContent(msg["message"], msg["type"], msg["delay"]);
}
}, setContent:function (msg, messageType, delay) {
var delay = delay || this.showDelay;
if (this.slideAnim && this.slideAnim.status() == "playing") {
dojo.lang.setTimeout(50, dojo.lang.hitch(this, function () {
this.setContent(msg, messageType);
}));
return;
} else {
if (this.slideAnim) {
this.slideAnim.stop();
if (this.fadeAnim) {
this.fadeAnim.stop();
}
}
}
if (!msg) {
dojo.debug(this.widgetId + ".setContent() incoming content was null, ignoring.");
return;
}
if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
}
dojo.html.removeClass(this.containerNode, this.messageCssClass);
dojo.html.removeClass(this.containerNode, this.warningCssClass);
dojo.html.removeClass(this.containerNode, this.errorCssClass);
dojo.html.removeClass(this.containerNode, this.fatalCssClass);
dojo.html.clearOpacity(this.containerNode);
if (msg instanceof String || typeof msg == "string") {
this.contentNode.innerHTML = msg;
} else {
if (dojo.html.isNode(msg)) {
this.contentNode.innerHTML = dojo.html.getContentAsString(msg);
} else {
dojo.raise("Toaster.setContent(): msg is of unknown type:" + msg);
}
}
switch (messageType) {
case this.messageTypes.WARNING:
dojo.html.addClass(this.containerNode, this.warningCssClass);
break;
case this.messageTypes.ERROR:
dojo.html.addClass(this.containerNode, this.errorCssClass);
break;
case this.messageTypes.FATAL:
dojo.html.addClass(this.containerNode, this.fatalCssClass);
break;
case this.messageTypes.MESSAGE:
default:
dojo.html.addClass(this.containerNode, this.messageCssClass);
break;
}
this.show();
var nodeSize = dojo.html.getMarginBox(this.containerNode);
if (this.positionDirection.indexOf("-up") >= 0) {
this.containerNode.style.left = 0 + "px";
this.containerNode.style.top = nodeSize.height + 10 + "px";
} else {
if (this.positionDirection.indexOf("-left") >= 0) {
this.containerNode.style.left = nodeSize.width + 10 + "px";
this.containerNode.style.top = 0 + "px";
} else {
if (this.positionDirection.indexOf("-right") >= 0) {
this.containerNode.style.left = 0 - nodeSize.width - 10 + "px";
this.containerNode.style.top = 0 + "px";
} else {
if (this.positionDirection.indexOf("-down") >= 0) {
this.containerNode.style.left = 0 + "px";
this.containerNode.style.top = 0 - nodeSize.height - 10 + "px";
} else {
dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
}
}
}
}
this.slideAnim = dojo.lfx.html.slideTo(this.containerNode, {top:0, left:0}, 450, null, dojo.lang.hitch(this, function (nodes, anim) {
dojo.lang.setTimeout(dojo.lang.hitch(this, function (evt) {
if (this.bgIframe) {
this.bgIframe.hide();
}
this.fadeAnim = dojo.lfx.html.fadeOut(this.containerNode, 1000, null, dojo.lang.hitch(this, function (evt) {
this.hide();
})).play();
}), delay);
})).play();
}, _placeClip:function () {
var scroll = dojo.html.getScroll();
var view = dojo.html.getViewport();
var nodeSize = dojo.html.getMarginBox(this.containerNode);
this.clipNode.style.height = nodeSize.height + "px";
this.clipNode.style.width = nodeSize.width + "px";
if (this.positionDirection.match(/^t/)) {
this.clipNode.style.top = scroll.top + "px";
} else {
if (this.positionDirection.match(/^b/)) {
this.clipNode.style.top = (view.height - nodeSize.height - 2 + scroll.top) + "px";
}
}
if (this.positionDirection.match(/^[tb]r-/)) {
this.clipNode.style.left = (view.width - nodeSize.width - 1 - scroll.left) + "px";
} else {
if (this.positionDirection.match(/^[tb]l-/)) {
this.clipNode.style.left = 0 + "px";
}
}
this.clipNode.style.clip = "rect(0px, " + nodeSize.width + "px, " + nodeSize.height + "px, 0px)";
if (dojo.render.html.ie) {
if (!this.bgIframe) {
this.bgIframe = new dojo.html.BackgroundIframe(this.containerNode);
this.bgIframe.setZIndex(this.containerNode);
}
this.bgIframe.onResized();
this.bgIframe.show();
}
}, onSelect:function (e) {
}, show:function () {
dojo.widget.Toaster.superclass.show.call(this);
this._placeClip();
if (!this._scrollConnected) {
this._scrollConnected = true;
dojo.event.connect(window, "onscroll", this, "_placeClip");
}
}, hide:function () {
dojo.widget.Toaster.superclass.hide.call(this);
if (this._scrollConnected) {
this._scrollConnected = false;
dojo.event.disconnect(window, "onscroll", this, "_placeClip");
}
dojo.html.setOpacity(this.containerNode, 1);
}});
 
/trunk/api/js/dojo/src/widget/templates/Menu.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Menu.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/SlideShow.html
New file
0,0 → 1,15
<div style="position: relative; padding: 3px;">
<div>
<input type="button" value="pause"
dojoAttachPoint="startStopButton"
dojoAttachEvent="onClick: togglePaused;">
</div>
<div style="position: relative; width: ${this.width}; height: ${this.height};"
dojoAttachPoint="imagesContainer"
dojoAttachEvent="onClick: togglePaused;">
<img dojoAttachPoint="img1" class="slideShowImg"
style="z-index: 1; width: ${this.width}; height: ${this.height};" />
<img dojoAttachPoint="img2" class="slideShowImg"
style="z-index: 0; width: ${this.width}; height: ${this.height};" />
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/TaskBarItemTemplate.html
New file
0,0 → 1,2
<div class="dojoTaskBarItem" dojoAttachEvent="onClick">
</div>
/trunk/api/js/dojo/src/widget/templates/Slider.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Slider.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/RemoteTabControl.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/RemoteTabControl.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ButtonTemplate.html
New file
0,0 → 1,6
<div dojoAttachPoint="buttonNode" class="dojoButton" style="position:relative;" dojoAttachEvent="onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick; onKey:onKey; onFocus;">
<div class="dojoButtonContents" align=center dojoAttachPoint="containerNode" style="position:absolute;z-index:2;"></div>
<img dojoAttachPoint="leftImage" style="position:absolute;left:0px;">
<img dojoAttachPoint="centerImage" style="position:absolute;z-index:1;">
<img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">
</div>
/trunk/api/js/dojo/src/widget/templates/ComboBox.html
New file
0,0 → 1,16
<span _="whitespace and CR's between tags adds &nbsp; in FF"
class="dojoComboBoxOuter"
><input style="display:none" tabindex="-1" name="" value=""
dojoAttachPoint="comboBoxValue"
><input style="display:none" tabindex="-1" name="" value=""
dojoAttachPoint="comboBoxSelectionValue"
><input type="text" autocomplete="off" class="dojoComboBox"
dojoAttachEvent="key:_handleKeyEvents; keyUp: onKeyUp; compositionEnd; onResize;"
dojoAttachPoint="textInputNode"
><img hspace="0"
vspace="0"
class="dojoComboBox"
dojoAttachPoint="downArrowNode"
dojoAttachEvent="onMouseUp: handleArrowClick; onResize;"
src="${this.buttonSrc}"
></span>
/trunk/api/js/dojo/src/widget/templates/ProgressBar.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ProgressBar.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Spinner.html
New file
0,0 → 1,25
<span _="weird end tag formatting is to prevent whitespace from becoming &nbsp;"
style='float:${this.htmlfloat};'
><table cellpadding=0 cellspacing=0 class="dojoSpinner">
<tr>
<td
><input
dojoAttachPoint='textbox' type='${this.type}'
dojoAttachEvent='onblur;onfocus;onkey:_handleKeyEvents;onKeyUp:_onSpinnerKeyUp;onresize:_resize'
id='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'
value='${this.value}' class='${this.className}' autocomplete="off"
></td>
<td
><img dojoAttachPoint="upArrowNode"
dojoAttachEvent="onDblClick: _upArrowDoubleClicked; onMouseDown: _upArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;"
src="${this.incrementSrc}" style="width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;"
><img dojoAttachPoint="downArrowNode"
dojoAttachEvent="onDblClick: _downArrowDoubleClicked; onMouseDown: _downArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;"
src="${this.decrementSrc}" style="width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;"
></td>
</tr>
</table
><span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span
><span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span
><span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span
></span>
/trunk/api/js/dojo/src/widget/templates/ResizableTextarea.html
New file
0,0 → 1,14
<div>
<div style="border: 2px solid black; width: 90%; height: 200px;"
dojoAttachPoint="rootLayoutNode">
<div dojoAttachPoint="textAreaContainerNode"
style="border: 0px; margin: 0px; overflow: hidden;">
</div>
<div dojoAttachPoint="statusBarContainerNode" class="statusBar">
<div dojoAttachPoint="statusLabelNode"
class="statusPanel"
style="padding-right: 0px; z-index: 1;">drag to resize</div>
<div dojoAttachPoint="resizeHandleNode"></div>
</div>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/Show.html
New file
0,0 → 1,11
<div class="dojoShow">
<div dojoAttachPoint="contentNode"></div>
<div class="dojoShowNav" dojoAttachPoint="nav">
<div class="dojoShowHider" dojoAttachPoint="hider"></div>
<span unselectable="on" style="cursor: default;" dojoAttachEvent="onClick:previousSlide">&lt;</span>
<select dojoAttachEvent="onClick:gotoSlideByEvent" dojoAttachPoint="select">
<option dojoAttachPoint="option">Title</option>
</select>
<span unselectable="on" style="cursor: default;" dojoAttachEvent="onClick:nextSlide">&gt;</span>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/InlineEditBox.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/InlineEditBox.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TreeDocIcon.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TreeDocIcon.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/EditorToolbarOneline.html
New file
0,0 → 1,172
<div class="EditorToolbarDomNode EditorToolbarSmallBg">
<table cellpadding="1" cellspacing="0" border="0">
<tbody>
<tr valign="top" align="left">
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="htmltoggle">
<span class="dojoE2TBIcon"
style="background-image: none; width: 30px;" >&lt;h&gt;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="copy">
<span class="dojoE2TBIcon dojoE2TBIcon_Copy">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="paste">
<span class="dojoE2TBIcon dojoE2TBIcon_Paste">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="undo">
<!-- FIXME: should we have the text "undo" here? -->
<span class="dojoE2TBIcon dojoE2TBIcon_Undo">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="redo">
<span class="dojoE2TBIcon dojoE2TBIcon_Redo">&nbsp;</span>
</span>
</td>
<td isSpacer="true">
<span class="iconContainer">
<span class="dojoE2TBIcon dojoE2TBIcon_Sep" style="width: 5px; min-width: 5px;"></span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="createlink">
<span class="dojoE2TBIcon dojoE2TBIcon_Link">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="insertimage">
<span class="dojoE2TBIcon dojoE2TBIcon_Image">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="inserthorizontalrule">
<span class="dojoE2TBIcon dojoE2TBIcon_HorizontalLine ">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="bold">
<span class="dojoE2TBIcon dojoE2TBIcon_Bold">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="italic">
<span class="dojoE2TBIcon dojoE2TBIcon_Italic">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="underline">
<span class="dojoE2TBIcon dojoE2TBIcon_Underline">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="strikethrough">
<span
class="dojoE2TBIcon dojoE2TBIcon_StrikeThrough">&nbsp;</span>
</span>
</td>
<td isSpacer="true">
<span class="iconContainer">
<span class="dojoE2TBIcon dojoE2TBIcon_Sep"
style="width: 5px; min-width: 5px;"></span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="insertunorderedlist">
<span
class="dojoE2TBIcon dojoE2TBIcon_BulletedList">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="insertorderedlist">
<span
class="dojoE2TBIcon dojoE2TBIcon_NumberedList">&nbsp;</span>
</span>
</td>
<td isSpacer="true">
<span class="iconContainer">
<span class="dojoE2TBIcon dojoE2TBIcon_Sep" style="width: 5px; min-width: 5px;"></span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="indent">
<span class="dojoE2TBIcon dojoE2TBIcon_Indent"
unselectable="on">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="outdent">
<span class="dojoE2TBIcon dojoE2TBIcon_Outdent"
unselectable="on">&nbsp;</span>
</span>
</td>
<td isSpacer="true">
<span class="iconContainer">
<span class="dojoE2TBIcon dojoE2TBIcon_Sep" style="width: 5px; min-width: 5px;"></span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="forecolor">
<span class="dojoE2TBIcon dojoE2TBIcon_TextColor"
unselectable="on">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="hilitecolor">
<span class="dojoE2TBIcon dojoE2TBIcon_BackgroundColor"
unselectable="on">&nbsp;</span>
</span>
</td>
<td isSpacer="true">
<span class="iconContainer">
<span class="dojoE2TBIcon dojoE2TBIcon_Sep" style="width: 5px; min-width: 5px;"></span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="justifyleft">
<span class="dojoE2TBIcon dojoE2TBIcon_LeftJustify">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="justifycenter">
<span class="dojoE2TBIcon dojoE2TBIcon_CenterJustify">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="justifyright">
<span class="dojoE2TBIcon dojoE2TBIcon_RightJustify">&nbsp;</span>
</span>
</td>
<td>
<span class="iconContainer dojoEditorToolbarItem" dojoETItemName="justifyfull">
<span class="dojoE2TBIcon dojoE2TBIcon_BlockJustify">&nbsp;</span>
</span>
</td>
<td>
<select class="dojoEditorToolbarItem" dojoETItemName="plainformatblock">
<!-- FIXME: using "p" here inserts a paragraph in most cases! -->
<option value="">-- format --</option>
<option value="p">Normal</option>
<option value="pre">Fixed Font</option>
<option value="h1">Main Heading</option>
<option value="h2">Section Heading</option>
<option value="h3">Sub-Heading</option>
<!-- <option value="blockquote">Block Quote</option> -->
</select>
</td>
<td><!-- uncomment to enable save button -->
<!-- save -->
<!--span class="iconContainer dojoEditorToolbarItem" dojoETItemName="save">
<span class="dojoE2TBIcon dojoE2TBIcon_Save">&nbsp;</span>
</span-->
</td>
<td width="*">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/templates/DropDownButtonTemplate.html
New file
0,0 → 1,9
<button dojoAttachPoint="button" class="dojoButton dojoButtonNoHover" dojoAttachEvent="onMouseOver: ; onMouseOut: ; onClick: ;">
<table dojoAttachPoint="table" style="margin:0 0 0 0;"><tr>
<td class="label" dojoAttachPoint="labelCell"></td>
<td class="border" dojoAttachPoint="borderCell"></td>
<td class="downArrow" dojoAttachPoint="arrowCell">
<img dojoAttachPoint="arrow">
</td>
</tr></table>
</button>
/trunk/api/js/dojo/src/widget/templates/ShowSlide.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ShowSlide.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TitlePane.html
New file
0,0 → 1,4
<div dojoAttachPoint="domNode">
<div dojoAttachPoint="labelNode" dojoAttachEvent="onclick: onLabelClick"></div>
<div dojoAttachPoint="containerNode"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/Checkbox.html
New file
0,0 → 1,5
<span style="display: inline-block;" tabIndex="${this.tabIndex}" waiRole="checkbox" id="${this.id}">
<img dojoAttachPoint="imageNode" class="dojoHtmlCheckbox" src="${dojoWidgetModuleUri}templates/images/blank.gif" alt="" />
<input type="checkbox" name="${this.name}" style="display: none" value="${this.value}"
dojoAttachPoint="inputNode">
</span>
/trunk/api/js/dojo/src/widget/templates/AccordionPane.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/AccordionPane.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ProgressBar.html
New file
0,0 → 1,5
<div dojoAttachPoint="containerNode" style="position:relative;overflow:hidden">
<div style="position:absolute;display:none;width:100%;text-align:center" dojoAttachPoint="backPercentLabel" class="dojoBackPercentLabel"></div>
<div style="position:absolute;overflow:hidden;width:100%;height:100%" dojoAttachPoint="internalProgress">
<div style="position:absolute;display:none;width:100%;text-align:center" dojoAttachPoint="frontPercentLabel" class="dojoFrontPercentLabel"></div></div>
</div>
/trunk/api/js/dojo/src/widget/templates/incrementMonth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/incrementMonth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ComboBox.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ComboBox.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/InlineEditBox.html
New file
0,0 → 1,6
<form class="inlineEditBox" style="display: none" dojoAttachPoint="form" dojoAttachEvent="onSubmit:saveEdit; onReset:cancelEdit; onKeyUp: checkForValueChange;">
<input type="text" dojoAttachPoint="text" style="display: none;" />
<textarea dojoAttachPoint="textarea" style="display: none;"></textarea>
<input type="submit" value="Save" dojoAttachPoint="submitButton" />
<input type="reset" value="Cancel" dojoAttachPoint="cancelButton" />
</form>
/trunk/api/js/dojo/src/widget/templates/Dialog.html
New file
0,0 → 1,7
<div id="${this.widgetId}" class="dojoDialog" dojoattachpoint="wrapper">
<span dojoattachpoint="tabStartOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<span dojoattachpoint="tabStart" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<div dojoattachpoint="containerNode" style="position: relative; z-index: 2;"></div>
<span dojoattachpoint="tabEnd" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<span dojoattachpoint="tabEndOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
</div>
/trunk/api/js/dojo/src/widget/templates/TreeDisableWrap.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TreeDisableWrap.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ShowSlide.html
New file
0,0 → 1,6
<div class="dojoShowSlide">
<div class="dojoShowSlideTitle">
<h1 dojoAttachPoint="htmlTitle">Title</h1>
</div>
<div class="dojoShowSlideBody" dojoAttachPoint="containerNode"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/Show.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Show.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/AccordionPane.html
New file
0,0 → 1,4
<div dojoAttachPoint="domNode">
<div dojoAttachPoint="labelNode" dojoAttachEvent="onclick: onLabelClick" class="${this.labelNodeClass}">${this.label}</div>
<div dojoAttachPoint="containerNode" style="overflow: hidden;" class="${this.containerNodeClass}"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/FloatingPane.html
New file
0,0 → 1,18
<div id="${this.widgetId}" dojoAttachEvent="onMouseDown" class="dojoFloatingPane">
<div dojoAttachPoint="titleBar" class="dojoFloatingPaneTitleBar" style="display:none">
<img dojoAttachPoint="titleBarIcon" class="dojoFloatingPaneTitleBarIcon">
<div dojoAttachPoint="closeAction" dojoAttachEvent="onClick:closeWindow"
class="dojoFloatingPaneCloseIcon"></div>
<div dojoAttachPoint="restoreAction" dojoAttachEvent="onClick:restoreWindow"
class="dojoFloatingPaneRestoreIcon"></div>
<div dojoAttachPoint="maximizeAction" dojoAttachEvent="onClick:maximizeWindow"
class="dojoFloatingPaneMaximizeIcon"></div>
<div dojoAttachPoint="minimizeAction" dojoAttachEvent="onClick:minimizeWindow"
class="dojoFloatingPaneMinimizeIcon"></div>
<div dojoAttachPoint="titleBarText" class="dojoFloatingPaneTitleText">${this.title}</div>
</div>
 
<div id="${this.widgetId}_container" dojoAttachPoint="containerNode" class="dojoFloatingPaneClient"></div>
 
<div dojoAttachPoint="resizeBar" class="dojoFloatingPaneResizebar" style="display:none"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/DemoEngine.html
New file
0,0 → 1,24
<div dojoAttachPoint="domNode">
<div dojoAttachPoint="navigationNode">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="1%" valign="top" class="navigationCell"><h1>Categories</h1><div dojoAttachPoint="menuNavigationNode"></div></td>
<td width="99%" valign="top">
<div dojoAttachPoint="demoNavigationNode">
</div>
</td>
</tr>
</table>
</div>
 
<div dojoAttachPoint="demoContainerNode">
 
<div dojoAttachPoint="demoPaneNode">
</div>
 
<div dojoAttachPoint="demoHeaderNode">
<span dojoAttachPoint="collapsedMenuNode" dojoAttachEvent="onclick: expandDemoNavigation"></span>
<div dojoAttachPoint="aboutNode">About this Demo</div>
</div>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/TooltipTemplate.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TooltipTemplate.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/DatePicker.html
New file
0,0 → 1,95
<div class="datePickerContainer" dojoAttachPoint="datePickerContainerNode">
<table cellspacing="0" cellpadding="0" class="calendarContainer">
<thead>
<tr>
<td class="monthWrapper" valign="top">
<table class="monthContainer" cellspacing="0" cellpadding="0" border="0">
<tr>
<td class="monthCurve monthCurveTL" valign="top"></td>
<td class="monthLabelContainer" valign="top">
<span dojoAttachPoint="increaseWeekNode"
dojoAttachEvent="onClick: onIncrementWeek;"
class="incrementControl increase">
<img src="${dojoWidgetModuleUri}templates/images/incrementMonth.png"
alt="&darr;" style="width:7px;height:5px;" />
</span>
<span
dojoAttachPoint="increaseMonthNode"
dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl increase">
<img src="${dojoWidgetModuleUri}templates/images/incrementMonth.png"
alt="&darr;" dojoAttachPoint="incrementMonthImageNode">
</span>
<span
dojoAttachPoint="decreaseWeekNode"
dojoAttachEvent="onClick: onIncrementWeek;"
class="incrementControl decrease">
<img src="${dojoWidgetModuleUri}templates/images/decrementMonth.png" alt="&uarr;" style="width:7px;height:5px;" />
</span>
<span
dojoAttachPoint="decreaseMonthNode"
dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl decrease">
<img src="${dojoWidgetModuleUri}templates/images/decrementMonth.png"
alt="&uarr;" dojoAttachPoint="decrementMonthImageNode">
</span>
<span dojoAttachPoint="monthLabelNode" class="month"></span>
</td>
<td class="monthCurve monthCurveTR" valign="top"></td>
</tr>
</table>
</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="3">
<table class="calendarBodyContainer" cellspacing="0" cellpadding="0" border="0">
<thead>
<tr dojoAttachPoint="dayLabelsRow">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</thead>
<tbody dojoAttachPoint="calendarDatesContainerNode"
dojoAttachEvent="onClick: _handleUiClick;">
<tr dojoAttachPoint="calendarWeekTemplate">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3" class="yearWrapper">
<table cellspacing="0" cellpadding="0" border="0" class="yearContainer">
<tr>
<td class="curveBL" valign="top"></td>
<td valign="top">
<h3 class="yearLabel">
<span dojoAttachPoint="previousYearLabelNode"
dojoAttachEvent="onClick: onIncrementYear;" class="previousYear"></span>
<span class="selectedYear" dojoAttachPoint="currentYearLabelNode"></span>
<span dojoAttachPoint="nextYearLabelNode"
dojoAttachEvent="onClick: onIncrementYear;" class="nextYear"></span>
</h3>
</td>
<td class="curveBR" valign="top"></td>
</tr>
</table>
</td>
</tr>
</tfoot>
</table>
</div>
/trunk/api/js/dojo/src/widget/templates/SliderVertical.html
New file
0,0 → 1,3
<div class="sliderMainVertical">
<div class="sliderHandleVertical" dojoAttachPoint="sliderHandle"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/SplitContainer.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/SplitContainer.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Slider.html
New file
0,0 → 1,56
<table _="weird end tag formatting is to prevent whitespace from becoming &nbsp;"
class="sliderMain"
dojoAttachPoint="focusNode"
dojoAttachEvent="onmousedown:_setFocus; onkey:_handleKeyEvents; onkeyup:_buttonReleased; onmouseup:_buttonReleased; onmousewheel:_mouseWheeled;"
tabindex="0" cols=3 cellpadding=0 cellspacing=0 style="">
<tr valign=middle align=center>
<td class="sliderComponent" colspan=3 dojoAttachPoint=topBorderNode style=""
><img class="sliderOutsetButton sliderButtonY"
dojoAttachPoint=topButtonNode
dojoAttachEvent="onmousedown:_topButtonPressed; onmousemove:_discardEvent; ondblclick:_topButtonDoubleClicked;"
src="${this.topButtonSrc}"
style="${this.buttonStyleY}"
></td>
</tr>
<tr valign=middle align=center>
<td class="sliderComponent" dojoAttachPoint=leftBorderNode style=""
><img class="sliderOutsetButton sliderButtonX"
dojoAttachPoint=leftButtonNode
dojoAttachEvent="onmousedown:_leftButtonPressed; onmousemove:_discardEvent; ondblclick:_leftButtonDoubleClicked;"
src="${this.leftButtonSrc}"
style="${this.buttonStyleX}"
></td>
<td dojoAttachPoint=constrainingContainerNode
class="sliderComponent sliderBackground"
style="${this.backgroundStyle}"
><img src="${this.handleSrc}"
class=sliderHandle
dojoAttachPoint=sliderHandleNode
style="${this.handleStyle}"
><img src="${this.progressBackgroundSrc}"
class="sliderBackgroundSizeOnly sliderProgressBackground"
dojoAttachPoint=progressBackgroundNode
style="${this.backgroundSize}"
><img src="${this.backgroundSrc}"
class=sliderBackgroundSizeOnly
dojoAttachPoint=sliderBackgroundNode
style="${this.backgroundSize}"
></td>
<td class="sliderComponent" dojoAttachPoint=rightBorderNode style=""
><img class="sliderOutsetButton sliderButtonX"
dojoAttachPoint=rightButtonNode
dojoAttachEvent="onmousedown:_rightButtonPressed; onmousemove:_discardEvent; ondblclick:_rightButtonDoubleClicked;"
src="${this.rightButtonSrc}"
style="${this.buttonStyleX}"
></td>
</tr>
<tr valign=middle align=center>
<td class="sliderComponent" colspan=3 dojoAttachPoint=bottomBorderNode style=""
><img class="sliderOutsetButton sliderButtonY"
dojoAttachPoint=bottomButtonNode
dojoAttachEvent="onmousedown:_bottomButtonPressed; onmousemove:_discardEvent; ondblclick:_bottomButtonDoubleClicked;"
src="${this.bottomButtonSrc}"
style="${this.buttonStyleY}"
></td>
</tr>
</table>
/trunk/api/js/dojo/src/widget/templates/Tree.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Tree.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/PopUpButton.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/PopUpButton.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/MonthlyCalendar.html
New file
0,0 → 1,110
<div class="datePickerContainer" dojoAttachPoint="datePickerContainerNode">
<h3 class="monthLabel">
<!--
<span
dojoAttachPoint="decreaseWeekNode"
dojoAttachEvent="onClick: onIncrementWeek;"
class="incrementControl">
<img src="${dojoWidgetModuleUri}templates/decrementWeek.gif" alt="&uarr;" />
</span>
-->
<span
dojoAttachPoint="decreaseMonthNode"
dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl">
<img src="${dojoWidgetModuleUri}templates/decrementMonth.gif"
alt="&uarr;" dojoAttachPoint="decrementMonthImageNode">
</span>
<span dojoAttachPoint="monthLabelNode" class="month">July</span>
<span
dojoAttachPoint="increaseMonthNode"
dojoAttachEvent="onClick: onIncrementMonth;" class="incrementControl">
<img src="${dojoWidgetModuleUri}templates/incrementMonth.gif"
alt="&darr;" dojoAttachPoint="incrementMonthImageNode">
</span>
<!--
<span dojoAttachPoint="increaseWeekNode"
dojoAttachEvent="onClick: onIncrementWeek;"
class="incrementControl">
<img src="${dojoWidgetModuleUri}templates/incrementWeek.gif"
alt="&darr;" />
</span>
-->
</h3>
<table class="calendarContainer">
<thead>
<tr dojoAttachPoint="dayLabelsRow">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</thead>
<tbody dojoAttachPoint="calendarDatesContainerNode"
dojoAttachEvent="onClick: onSetDate;">
<tr dojoAttachPoint="calendarRow0">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr dojoAttachPoint="calendarRow1">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr dojoAttachPoint="calendarRow2">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr dojoAttachPoint="calendarRow3">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr dojoAttachPoint="calendarRow4">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr dojoAttachPoint="calendarRow5">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 class="yearLabel">
<span dojoAttachPoint="previousYearLabelNode"
dojoAttachEvent="onClick: onIncrementYear;" class="previousYear"></span>
<span class="selectedYear" dojoAttachPoint="currentYearLabelNode"></span>
<span dojoAttachPoint="nextYearLabelNode"
dojoAttachEvent="onClick: onIncrementYear;" class="nextYear"></span>
</h3>
</div>
/trunk/api/js/dojo/src/widget/templates/Toolbar.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Toolbar.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ComboButtonTemplate.html
New file
0,0 → 1,18
<div class="dojoButton" style="position:relative;top:0px;left:0px; text-align:none;" dojoAttachEvent="onKey;onFocus">
 
<div dojoAttachPoint="buttonNode" class="dojoButtonLeftPart" style="position:absolute;left:0px;top:0px;"
dojoAttachEvent="onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick;">
<div class="dojoButtonContents" dojoAttachPoint="containerNode" style="position:absolute;top:0px;right:0px;z-index:2;"></div>
<img dojoAttachPoint="leftImage" style="position:absolute;left:0px;top:0px;">
<img dojoAttachPoint="centerImage" style="position:absolute;right:0px;top:0px;z-index:1;">
</div>
 
<div dojoAttachPoint="rightPart" class="dojoButtonRightPart" style="position:absolute;top:0px;right:0px;"
dojoAttachEvent="onMouseOver:rightOver; onMouseOut:rightOut; onMouseDown:rightDown; onMouseUp:rightUp; onClick:rightClick;">
<img dojoAttachPoint="arrowBackgroundImage" style="position:absolute;top:0px;left:0px;z-index:1;">
<img src="${dojoWidgetModuleUri}templates/images/whiteDownArrow.gif"
style="z-index:2;position:absolute;left:3px;top:50%;">
<img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">
</div>
 
</div>
/trunk/api/js/dojo/src/widget/templates/TabContainerA11y.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TabContainerA11y.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TreeEditor.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TreeEditor.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ButtonTemplate.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ButtonTemplate.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/list_num_outdent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/list_num_outdent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/strikethrough.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/strikethrough.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/delete.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/delete.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/bg-fade.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/bg-fade.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/inserthorizontalrule.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/inserthorizontalrule.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/insertunorderedlist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/insertunorderedlist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/justifyleft.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/justifyleft.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/inserttable.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/inserttable.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/subscript.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/subscript.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/justifyfull.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/justifyfull.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/outdent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/outdent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/list_bullet_indent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/list_bullet_indent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/superscript.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/superscript.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/underline.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/underline.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/aggregate.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/aggregate.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/sep.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/sep.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/list_num_indent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/list_num_indent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/cut.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/cut.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/space.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/space.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/save.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/save.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/justifycenter.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/justifycenter.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/wikiword.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/wikiword.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/backcolor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/backcolor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/undo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/undo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/italic.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/italic.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/insertorderedlist.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/insertorderedlist.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/removeformat.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/removeformat.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/insertimage.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/insertimage.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/copy.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/copy.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/paste.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/paste.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/hilitecolor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/hilitecolor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/bold.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/bold.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/createlink.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/createlink.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/indent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/indent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/list_bullet_outdent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/list_bullet_outdent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/cancel.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/cancel.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/left_to_right.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/left_to_right.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/right_to_left.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/right_to_left.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/redo.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/redo.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/forecolor.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/forecolor.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/buttons/justifyright.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/buttons/justifyright.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TreeV3.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TreeV3.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/SliderHorizontal.html
New file
0,0 → 1,3
<div class="sliderMainHorizontal">
<div class="sliderHandleHorizontal" dojoAttachPoint="sliderHandle"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/TimePicker.html
New file
0,0 → 1,98
<div class="timePickerContainer" dojoAttachPoint="timePickerContainerNode">
<table class="timeContainer" cellspacing="0" >
<thead>
<tr>
<td class="timeCorner cornerTopLeft" valign="top">&nbsp;</td>
<td class="timeLabelContainer hourSelector">${this.calendar.field-hour}</td>
<td class="timeLabelContainer minutesHeading">${this.calendar.field-minute}</td>
<td class="timeCorner cornerTopRight" valign="top">&nbsp;</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" colspan="2" class="hours">
<table align="center">
<tbody dojoAttachPoint="hourContainerNode"
dojoAttachEvent="onClick: onSetSelectedHour;">
<tr>
<td>12</td>
<td>6</td>
</tr>
<tr>
<td>1</td>
<td>7</td>
</tr>
<tr>
<td>2</td>
<td>8</td>
</tr>
<tr>
<td>3</td>
<td>9</td>
</tr>
<tr>
<td>4</td>
<td>10</td>
</tr>
<tr>
<td>5</td>
<td>11</td>
</tr>
</tbody>
</table>
</td>
<td valign="top" class="minutes" colspan="2">
<table align="center">
<tbody dojoAttachPoint="minuteContainerNode"
dojoAttachEvent="onClick: onSetSelectedMinute;">
<tr>
<td>00</td>
<td>30</td>
</tr>
<tr>
<td>05</td>
<td>35</td>
</tr>
<tr>
<td>10</td>
<td>40</td>
</tr>
<tr>
<td>15</td>
<td>45</td>
</tr>
<tr>
<td>20</td>
<td>50</td>
</tr>
<tr>
<td>25</td>
<td>55</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td class="cornerBottomLeft">&nbsp;</td>
<td valign="top" class="timeOptions">
<table class="amPmContainer">
<tbody dojoAttachPoint="amPmContainerNode"
dojoAttachEvent="onClick: onSetSelectedAmPm;">
<tr>
<td id="am">${this.calendar.am}</td>
<td id="pm">${this.calendar.pm}</td>
</tr>
</tbody>
</table>
</td>
<td class="timeOptions">
<div dojoAttachPoint="anyTimeContainerNode"
dojoAttachEvent="onClick: onSetSelectedAnyTime;"
class="anyTimeContainer">${this.widgetStrings.any}</div>
</td>
<td class="cornerBottomRight">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/templates/Wizard.html
New file
0,0 → 1,10
<div class="WizardContainer" dojoAttachPoint="wizardNode">
<div class="WizardText" dojoAttachPoint="wizardPanelContainerNode">
</div>
<div class="WizardButtonHolder" dojoAttachPoint="wizardControlContainerNode">
<input class="WizardButton" type="button" dojoAttachPoint="previousButton"/>
<input class="WizardButton" type="button" dojoAttachPoint="nextButton"/>
<input class="WizardButton" type="button" dojoAttachPoint="doneButton" style="display:none"/>
<input class="WizardButton" type="button" dojoAttachPoint="cancelButton"/>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/incrementWeek.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/incrementWeek.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_right.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_right.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_child.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_child.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneMinimize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneMinimize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_node.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_node.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaBarBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaBarBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/decrementMonth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/decrementMonth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_left_curr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_left_curr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/bdYearBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/bdYearBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_right_r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_right_r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_top_right.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_top_right.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dropdownButtonsArrow.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dropdownButtonsArrow.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpCurveTL.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpCurveTL.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/toolbar-bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/toolbar-bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/h-bar.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/h-bar.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-button-horz.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-button-horz.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dropdownButtonsArrow-disabled.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dropdownButtonsArrow-disabled.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpCurveTR.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpCurveTR.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/combo_box_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/combo_box_arrow.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/bar.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/bar.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/timeIcon.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/timeIcon.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider_right_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider_right_arrow.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/incrementMonth.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/incrementMonth.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/no.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/no.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/bdYearBg.1.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/bdYearBg.1.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_right_r_curr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_right_r_curr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider_up_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider_up_arrow.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_p.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_p.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/incrementMonth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/incrementMonth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_expand_plus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_expand_plus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_child.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_child.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/closed.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/closed.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_blank.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_loading.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_loading.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/document.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/document.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_expand_minus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_expand_minus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/Tree.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/Tree.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/plus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/plus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/blank.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_p.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_p.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/minus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/minus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_t.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_t.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_v.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_v.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/transparent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/transparent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_x.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_x.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_y.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_y.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_loading.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_loading.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_z.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/Tree/treenode_grid_z.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_t.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_t.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/verticalbar.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/verticalbar.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_v.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_v.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_left_r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_left_r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_x.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_x.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider_down_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider_down_arrow.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_top_left.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_top_left.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_y.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_y.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_z.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_grid_z.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpCurveBL.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpCurveBL.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/submenu_disabled.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/submenu_disabled.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-bg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-bg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/submenu_off.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/submenu_off.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/submenu_on.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/submenu_on.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaMenuBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaMenuBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpCurveBR.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpCurveBR.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneMaximize.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneMaximize.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneRestore.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneRestore.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpVertLine.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpVertLine.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpYearBg.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpYearBg.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_blank.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_left.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_left.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/spinnerIncrement.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/spinnerIncrement.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider_left_arrow.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider_left_arrow.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-bg-vert.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-bg-vert.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/blank.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/blank.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-button-vert.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-button-vert.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-bg-progress-vert.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-bg-progress-vert.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_close.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_close.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpYearBg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpYearBg.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneClose.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/floatingPaneClose.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_right.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_right.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/scBackground.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/scBackground.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/spinnerDecrement.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/spinnerDecrement.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/no.svg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/no.svg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_expand_plus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_expand_plus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaAccordionSelected.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaAccordionSelected.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaActive-r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/clock.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/clock.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider-button.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider-button.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/treenode_expand_minus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/treenode_expand_minus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpHorizLineFoot.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpHorizLineFoot.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/slider.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/slider.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/whiteDownArrow.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/whiteDownArrow.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg2.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpMonthBg2.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_left.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_left.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dateIcon.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dateIcon.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/dpHorizLine.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/dpHorizLine.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-c.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-c.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaAccordionOff.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaAccordionOff.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/decrementMonth.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/decrementMonth.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_left_r_curr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_left_r_curr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/transparent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/transparent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaPressed-r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaButton-l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_right_curr.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_bot_right_curr.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/tab_close_h.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/tab_close_h.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-r.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/soriaDisabled-r.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_minus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_minus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/l.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/l.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/minus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/minus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/open.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/open.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/t.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/t.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_leaf.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_leaf.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_long.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_long.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/x.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/x.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/closed.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/closed.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_loading.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_loading.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/document.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/document.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_plus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/expand_plus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_half.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_half.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/plus.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/plus.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_bhalf.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/images/TreeV3/i_bhalf.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/richtextframe.html
New file
0,0 → 1,24
<!-- <?xml version="1.0" encoding="UTF-8"?> -->
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html>
<head>
<title></title>
<script type="text/javascript">
function init(){
document.designMode = 'on';
try{
parentPageDomain = document.location.href.split('#')[1];
if(parentPageDomain){
document.domain = parentPageDomain;
}
}catch(e){ }
}
window.onload = init;
</script>
</head>
<body>
<br />
</body>
</html>
/trunk/api/js/dojo/src/widget/templates/ValidationTextbox.html
New file
0,0 → 1,8
<span style='float:${this.htmlfloat};'>
<input dojoAttachPoint='textbox' type='${this.type}' dojoAttachEvent='onblur;onfocus;onkeyup'
id='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'
class='${this.className}' style=''>
<span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span>
<span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span>
<span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span>
</span>
/trunk/api/js/dojo/src/widget/templates/MonthlyCalendar.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/MonthlyCalendar.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TimePicker.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TimePicker.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/decrementWeek.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/decrementWeek.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Wizard.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Wizard.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/CiviCrmDatePicker.html
New file
0,0 → 1,12
<table cellpadding="0" cellspacing="0" border="0" width="400">
<tr>
<td id="dateHolderTd" width="200">
</td>
<td id="timeHolderTd" width="200">
</td>
</tr>
<tr style="display: none;" id="formItemsTr">
<td id="formItemsTd">&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
/trunk/api/js/dojo/src/widget/templates/FloatingPane.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/FloatingPane.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/EditorToolbar.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/EditorToolbar.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/DocPane.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/DocPane.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Textbox.html
New file
0,0 → 1,5
<span style='float:${this.htmlfloat};'>
<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'
id='${this.widgetId}' name='${this.name}'
class='${this.className}' type='${this.type}' >
</span>
/trunk/api/js/dojo/src/widget/templates/TabContainer.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TabContainer.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/DatePicker.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/DatePicker.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ResizeHandle.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ResizeHandle.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/ResizableTextarea.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/ResizableTextarea.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Spinner.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Spinner.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Toaster.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Toaster.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Editor2/EditorToolbar_FontName.html
New file
0,0 → 1,20
<div class="SC_Panel" style="width: 150px; height: 150px;">
<div class="SC_Item" dropDownItemName="Arial">
<font face="Arial" style="font-size: 12px;">Arial</font>
</div>
<div class="SC_Item" dropDownItemName="Comic Sans MS">
<font face="Comic Sans MS" style="font-size: 12px;">Comic Sans MS</font>
</div>
<div class="SC_Item" dropDownItemName="Courier New">
<font face="Courier New" style="font-size: 12px;">Courier New</font>
</div>
<div class="SC_Item" dropDownItemName="Tahoma">
<font face="Tahoma" style="font-size: 12px;">Tahoma</font>
</div>
<div class="SC_Item" dropDownItemName="Times New Roman">
<font face="Times New Roman" style="font-size: 12px;">Times New Roman</font>
</div>
<div class="SC_Item" dropDownItemName="Verdana">
<font face="Verdana" style="font-size: 12px;">Verdana</font>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/Editor2/showtableborder_gecko.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Editor2/showtableborder_gecko.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Editor2/EditorDialog.html
New file
0,0 → 1,21
<div id="${this.widgetId}" class="dojoFloatingPane">
<span dojoattachpoint="tabStartOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<span dojoattachpoint="tabStart" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<div dojoAttachPoint="titleBar" class="dojoFloatingPaneTitleBar" style="display:none">
<img dojoAttachPoint="titleBarIcon" class="dojoFloatingPaneTitleBarIcon">
<div dojoAttachPoint="closeAction" dojoAttachEvent="onClick:hide"
class="dojoFloatingPaneCloseIcon"></div>
<div dojoAttachPoint="restoreAction" dojoAttachEvent="onClick:restoreWindow"
class="dojoFloatingPaneRestoreIcon"></div>
<div dojoAttachPoint="maximizeAction" dojoAttachEvent="onClick:maximizeWindow"
class="dojoFloatingPaneMaximizeIcon"></div>
<div dojoAttachPoint="minimizeAction" dojoAttachEvent="onClick:minimizeWindow"
class="dojoFloatingPaneMinimizeIcon"></div>
<div dojoAttachPoint="titleBarText" class="dojoFloatingPaneTitleText">${this.title}</div>
</div>
 
<div id="${this.widgetId}_container" dojoAttachPoint="containerNode" class="dojoFloatingPaneClient"></div>
<span dojoattachpoint="tabEnd" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<span dojoattachpoint="tabEndOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
<div dojoAttachPoint="resizeBar" class="dojoFloatingPaneResizebar" style="display:none"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/Editor2/showtableborder_ie.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Editor2/showtableborder_ie.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Editor2/EditorToolbar_FontSize.html
New file
0,0 → 1,31
<div class="SC_Panel" style="width: 150px; height: 150px;">
<table width="100%" cellspacing="0" cellpadding="0" style="table-layout: fixed;">
<tbody>
<tr>
<td nowrap="">
<div class="SC_Item" dropDownItemName="1">
<font size="1">xx-small</font>
</div>
<div class="SC_Item" dropDownItemName="2">
<font size="2">x-small</font>
</div>
<div class="SC_Item" dropDownItemName="3">
<font size="3">small</font>
</div>
<div class="SC_Item" dropDownItemName="4">
<font size="4">medium</font>
</div>
<div class="SC_Item" dropDownItemName="5">
<font size="5">large</font>
</div>
<div class="SC_Item" dropDownItemName="6">
<font size="6">x-large</font>
</div>
<div class="SC_Item" dropDownItemName="7">
<font size="7">xx-large</font>
</div>
</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/templates/Editor2/Dialog/insertimage.html
New file
0,0 → 1,114
<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td width="100%">
<span>URL</span>
</td>
<td style="display: none" nowrap="nowrap" rowspan="2">
<!--input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"/-->
</td>
</tr>
<tr>
<td valign="top">
<input dojoAttachPoint="image_src" style="width: 100%" type="text" />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<span>Alternative Text</span><br />
<input dojoAttachPoint="image_alt" style="width: 100%" type="text" /><br />
</td>
</tr>
<tr>
<td valign="top">
<table><tr><td>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td nowrap="nowrap">
<span>Width</span>&nbsp;</td>
<td>
<input type="text" size="3" dojoAttachPoint="image_width" /></td>
 
<td rowspan="2">
<!--div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
onclick="SwitchLock(this);">
</div-->
</td>
<td rowspan="2">
<!--div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
</div-->
</td>
</tr>
 
<tr>
<td nowrap="nowrap">
<span>Height</span>&nbsp;</td>
<td>
<input type="text" size="3" dojoAttachPoint="image_height" /></td>
</tr>
</table>
</td><td>
 
<table cellspacing="0" cellpadding="0" border="0">
<tr>
 
<td nowrap="nowrap">
<span >HSpace</span>&nbsp;</td>
<td>
<input type="text" size="2" dojoAttachPoint="image_hspace"/></td>
</tr>
<tr>
<td nowrap="nowrap">
<span >VSpace</span>&nbsp;</td>
 
<td>
<input type="text" size="2" dojoAttachPoint="image_vspace" /></td>
</tr>
</table>
</td></tr>
<tr><td colspan="2">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td nowrap="nowrap">
<span>Border</span>&nbsp;</td>
<td>
<input type="text" size="2" value="" dojoAttachPoint="image_border" /></td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td nowrap="nowrap">
<span >Align</span>&nbsp;</td>
<td>
<select dojoAttachPoint="image_align">
 
<option value="" selected="selected"></option>
<option value="left">Left</option>
<option value="absBottom">Abs Bottom</option>
<option value="absMiddle">Abs Middle</option>
<option value="baseline">Baseline</option>
<option value="bottom">Bottom</option>
 
<option value="middle">Middle</option>
<option value="right">Right</option>
<option value="textTop">Text Top</option>
<option value="top">Top</option>
</select>
</td>
</tr>
</table>
</td>
</tr></table>
</td>
</tr>
<tr><td>
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>
</tr></table>
</td></tr>
</table>
/trunk/api/js/dojo/src/widget/templates/Editor2/Dialog/replace.html
New file
0,0 → 1,15
<table style="white-space: nowrap;">
<tr><td>Find: </td><td> <input type="text" dojoAttachPoint="replace_text" /></td></tr>
<tr><td>Replace with: </td><td> <input type="text" dojoAttachPoint="replace_text" /></td></tr>
<tr><td colspan='2'><table><tr><td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="replace_option_casesens" id="dojo_replace_option_casesens" />
<label for="dojo_replace_option_casesens">Case Sensitive</label></td>
<td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="replace_option_backwards" id="dojo_replace_option_backwards" />
<label for="dojo_replace_option_backwards">Search Backwards</label></td></tr></table></td></tr>
<tr><td colspan=2">
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>
</tr></table>
</td></tr>
</table>
/trunk/api/js/dojo/src/widget/templates/Editor2/Dialog/inserttable.html
New file
0,0 → 1,91
<div>
<table cellSpacing="1" cellPadding="1" width="100%" border="0">
<tr>
<td valign="top">
<table cellSpacing="0" cellPadding="0" border="0">
<tr>
 
<td><span>Rows</span>:</td>
<td>&nbsp;<input dojoAttachPoint="table_rows" type="text" maxLength="3" size="2" value="3"></td>
</tr>
<tr>
<td><span>Columns</span>:</td>
<td>&nbsp;<input dojoAttachPoint="table_cols" type="text" maxLength="2" size="2" value="2"></td>
</tr>
 
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><span>Border size</span>:</td>
<td>&nbsp;<INPUT dojoAttachPoint="table_border" type="text" maxLength="2" size="2" value="1"></td>
</tr>
 
<tr>
<td><span>Alignment</span>:</td>
<td>&nbsp;<select dojoAttachPoint="table_align">
<option value="" selected>&lt;Not set&gt;</option>
<option value="left">Left</option>
<option value="center">Center</option>
<option value="right">Right</option>
</select></td>
</tr>
</table>
</td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td align="right" valign="top">
<table cellSpacing="0" cellPadding="0" border="0">
<tr>
<td><span>Width</span>:</td>
<td>&nbsp;<input dojoAttachPoint="table_width" type="text" maxLength="4" size="3"></td>
<td>&nbsp;<select dojoAttachPoint="table_widthtype">
<option value="percent" selected>percent</option>
<option value="pixels">pixels</option>
</select></td>
 
</tr>
<tr>
<td><span>Height</span>:</td>
<td>&nbsp;<INPUT dojoAttachPoint="table_height" type="text" maxLength="4" size="3"></td>
<td>&nbsp;<span>pixels</span></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td nowrap><span>Cell spacing</span>:</td>
<td>&nbsp;<input dojoAttachPoint="table_cellspacing" type="text" maxLength="2" size="2" value="1"></td>
<td>&nbsp;</td>
 
</tr>
<tr>
<td nowrap><span>Cell padding</span>:</td>
<td>&nbsp;<input dojoAttachPoint="table_cellpadding" type="text" maxLength="2" size="2" value="1"></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td nowrap><span>Caption</span>:</td>
<td>&nbsp;</td>
<td width="100%" nowrap>&nbsp;
<input dojoAttachPoint="table_caption" type="text" style="WIDTH: 90%"></td>
</tr>
<tr>
<td nowrap><span>Summary</span>:</td>
<td>&nbsp;</td>
<td width="100%" nowrap>&nbsp;
<input dojoAttachPoint="table_summary" type="text" style="WIDTH: 90%"></td>
</tr>
</table>
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>Ok</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>
</tr></table>
</div>
/trunk/api/js/dojo/src/widget/templates/Editor2/Dialog/find.html
New file
0,0 → 1,15
<table style="white-space: nowrap;">
<tr><td colspan='2'>Find: <input type="text" dojoAttachPoint="find_text" /></td></tr>
<tr><td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_casesens" />
<label for="find_option_casesens">Case Sensitive</label></td>
<td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_backwards" />
<label for="find_option_backwards">Search Backwards</label></td></tr>
<tr><td style="display: none;"><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_wholeword" />
<label for="find_option_wholeword">Whole Word</label></td>
<tr><td colspan="1">
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:find'>Find</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>
</tr></table>
</td></tr>
</table>
/trunk/api/js/dojo/src/widget/templates/Editor2/Dialog/createlink.html
New file
0,0 → 1,15
<table>
<tr><td>URL</td><td> <input type="text" dojoAttachPoint="link_href" name="dojo_createLink_href"/></td></tr>
<tr><td>Target </td><td><select dojoAttachPoint="link_target">
<option value="">Self</option>
<option value="_blank">New Window</option>
<option value="_top">Top Window</option>
</select></td></tr>
<tr><td>Class </td><td><input type="text" dojoAttachPoint="link_class" /></td></tr>
<tr><td colspan="2">
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>
</tr></table>
</td></tr>
</table>
/trunk/api/js/dojo/src/widget/templates/Editor2/EditorToolbar_FormatBlock.html
New file
0,0 → 1,52
<div class="SC_Panel" style="width: 190px; height: 150px;">
<div class="SC_Item" dropDownItemName="p">
<div class="BaseFont">
<p>Normal</p>
</div>
</div>
<div class="SC_Item" dropDownItemName="div">
<div class="BaseFont">
<div>Normal (DIV)</div>
</div>
</div>
<div class="SC_Item" dropDownItemName="pre">
<div class="BaseFont">
<pre>Formatted</pre>
</div>
</div>
<div class="SC_Item" dropDownItemName="address">
<div class="BaseFont">
<address>Address</address>
</div>
</div>
<div class="SC_Item" dropDownItemName="h1">
<div class="BaseFont">
<h1>Heading 1</h1>
</div>
</div>
<div class="SC_Item" dropDownItemName="h2">
<div class="BaseFont">
<h2>Heading 2</h2>
</div>
</div>
<div class="SC_Item" dropDownItemName="h3">
<div class="BaseFont">
<h3>Heading 3</h3>
</div>
</div>
<div class="SC_Item" dropDownItemName="h4">
<div class="BaseFont">
<h4>Heading 4</h4>
</div>
</div>
<div class="SC_Item" dropDownItemName="h5">
<div class="BaseFont">
<h5>Heading 5</h5>
</div>
</div>
<div class="SC_Item" dropDownItemName="h6">
<div class="BaseFont">
<h6>Heading 6</h6>
</div>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/TabContainer.html
New file
0,0 → 1,4
<div id="${this.widgetId}" class="dojoTabContainer">
<div dojoAttachPoint="tablistNode"></div>
<div class="dojoTabPaneWrapper" dojoAttachPoint="containerNode" dojoAttachEvent="onKey" waiRole="tabpanel"></div>
</div>
/trunk/api/js/dojo/src/widget/templates/DocPane.html
New file
0,0 → 1,79
<div class="dojoDocPane">
<div dojoAttachPoint="containerNode" class="container"></div>
 
<div dojoAttachPoint="dialog" class="dialog">
<div class="container" dojoAttachPoint="dialogBg">
<div class="docDialog" dojoAttachPoint="dialogFg">
<h2>Log In</h2>
<p><input id="dojoDocUserName" dojoAttachPoint="userName"><label for="dojoDocUserName">User Name:</label></p>
<p><input id="dojoDocPassword" dojoAttachPoint="password" type="password"><label for="dojoDocPassword">Password:</label></p>
<p><input type="button" dojoAttachPoint="cancel" value="cancel"> <input type="button" dojoAttachPoint="logIn" value="Log In"></p>
<p></p>
</div>
</div>
</div>
 
<div dojoAttachPoint="nav" class="nav"><span>Detail</span> | <span>Source</span> | <span>Examples</span> | <span>Walkthrough</span></div>
 
<div dojoAttachPoint="detail" class="detail">
<h1>Detail: <span class="fn" dojoAttachPoint="fn">dojo.select</span></h1>
<div class="description" dojoAttachPoint="description">Description</div>
<div class="params" dojoAttachPoint="parameters">
<h2>Parameters</h2>
<div class="row" dojoAttachPoint="pRow">
<span dojoAttachPoint="pOpt"><em>optional</em> </span>
<span><span dojoAttachPoint="pType">type</span> </span>
<a href="#" dojoAttachPoint="pLink">variable</a>
<span> - <span dojoAttachPoint="pDesc"></span></span>
</div>
</div>
<div class="variables" dojoAttachPoint="variables">
<h2>Variables</h2>
<div class"row" dojoAttachPoint="vRow">
<a href="#" dojoAttachPoint="vLink">variable</a><span> - <span dojoAttachPoint="vDesc"></span></span>
</div>
</div>
<div class="signature">
<h2>Signature</h2>
<div class="source">
<span class="return" dojoAttachPoint="sType">returnType</span>
<span class="function" dojoAttachPoint="sName">foo</span>
(<span class="params" dojoAttachPoint="sParams">
<span class="type" dojoAttachPoint="sPType">type </span>
<span class="name" dojoAttachPoint="sPName">paramName</span>
</span>)
</div>
</div>
</div>
<div dojoAttachPoint="result" class="result">
<h1>Search Results: <span dojoAttachPoint="count">0</span> matches</h1>
<div class="row" dojoAttachPoint="row">
<a href="#" dojoAttachPoint="fnLink">dojo.fnLink</a>
<span> - <span class="summary" dojoAttachPoint="summary">summary</span></span>
</div>
</div>
 
<div dojoAttachPoint="packag" class="package">
<h1>Package:
<span class="pkg" dojoAttachPoint="pkg">dojo.package</span>
<span class="edit" dojoAttachPoint="edit">[edit]</span>
<span class="save" dojoAttachPoint="save">[save]</span>
</h1>
<div dojoAttachPoint="pkgDescription" class="description">Description</div>
<div class="methods" dojoAttachPoint="methods">
<h2>Methods</h2>
<div class="row" dojoAttachPoint="mRow">
<a href="#" dojoAttachPoint="mLink">method</a>
<span> - <span class="description" dojoAttachPoint="mDesc"></span></span>
</div>
</div>
<div class="requires" dojoAttachPoint="requires">
<h2>Requires</h2>
<div class="row" dojoAttachPoint="rRow">
<h3 dojoAttachPoint="rH3">Environment</h3>
<div dojoAttachPoint="rRow2"><a href="#" dojoAttachPoint="rLink" class="package">require</a></div>
</div>
</div>
</div>
</div>
/trunk/api/js/dojo/src/widget/templates/EditorToolbar.html
New file
0,0 → 1,153
<div dojoAttachPoint="domNode" class="EditorToolbarDomNode" unselectable="on">
<table cellpadding="3" cellspacing="0" border="0">
<!--
our toolbar should look something like:
 
+=======+=======+=======+=============================================+
| w w | style | copy | bo | it | un | le | ce | ri |
| w w w | style |=======|==============|==============|
| w w | style | paste | undo | redo | change style |
+=======+=======+=======+=============================================+
-->
<tbody>
<tr valign="top">
<td rowspan="2">
<div class="bigIcon" dojoAttachPoint="wikiWordButton"
dojoOnClick="wikiWordClick; buttonClick;">
<span style="font-size: 30px; margin-left: 5px;">
W
</span>
</div>
</td>
<td rowspan="2">
<div class="bigIcon" dojoAttachPoint="styleDropdownButton"
dojoOnClick="styleDropdownClick; buttonClick;">
<span unselectable="on"
style="font-size: 30px; margin-left: 5px;">
S
</span>
</div>
<div class="StyleDropdownContainer" style="display: none;"
dojoAttachPoint="styleDropdownContainer">
<table cellpadding="0" cellspacing="0" border="0"
height="100%" width="100%">
<tr valign="top">
<td rowspan="2">
<div style="height: 245px; overflow: auto;">
<div class="headingContainer"
unselectable="on"
dojoOnClick="normalTextClick">normal</div>
<h1 class="headingContainer"
unselectable="on"
dojoOnClick="h1TextClick">Heading 1</h1>
<h2 class="headingContainer"
unselectable="on"
dojoOnClick="h2TextClick">Heading 2</h2>
<h3 class="headingContainer"
unselectable="on"
dojoOnClick="h3TextClick">Heading 3</h3>
<h4 class="headingContainer"
unselectable="on"
dojoOnClick="h4TextClick">Heading 4</h4>
<div class="headingContainer"
unselectable="on"
dojoOnClick="blahTextClick">blah</div>
<div class="headingContainer"
unselectable="on"
dojoOnClick="blahTextClick">blah</div>
<div class="headingContainer"
unselectable="on"
dojoOnClick="blahTextClick">blah</div>
<div class="headingContainer">blah</div>
<div class="headingContainer">blah</div>
<div class="headingContainer">blah</div>
<div class="headingContainer">blah</div>
</div>
</td>
<!--
<td>
<span class="iconContainer" dojoOnClick="buttonClick;">
<span class="icon justifyleft"
style="float: left;">&nbsp;</span>
</span>
<span class="iconContainer" dojoOnClick="buttonClick;">
<span class="icon justifycenter"
style="float: left;">&nbsp;</span>
</span>
<span class="iconContainer" dojoOnClick="buttonClick;">
<span class="icon justifyright"
style="float: left;">&nbsp;</span>
</span>
<span class="iconContainer" dojoOnClick="buttonClick;">
<span class="icon justifyfull"
style="float: left;">&nbsp;</span>
</span>
</td>
-->
</tr>
<tr valign="top">
<td>
thud
</td>
</tr>
</table>
</div>
</td>
<td>
<!-- copy -->
<span class="iconContainer" dojoAttachPoint="copyButton"
unselectable="on"
dojoOnClick="copyClick; buttonClick;">
<span class="icon copy"
unselectable="on"
style="float: left;">&nbsp;</span> copy
</span>
<!-- "droppable" options -->
<span class="iconContainer" dojoAttachPoint="boldButton"
unselectable="on"
dojoOnClick="boldClick; buttonClick;">
<span class="icon bold" unselectable="on">&nbsp;</span>
</span>
<span class="iconContainer" dojoAttachPoint="italicButton"
dojoOnClick="italicClick; buttonClick;">
<span class="icon italic" unselectable="on">&nbsp;</span>
</span>
<span class="iconContainer" dojoAttachPoint="underlineButton"
dojoOnClick="underlineClick; buttonClick;">
<span class="icon underline" unselectable="on">&nbsp;</span>
</span>
<span class="iconContainer" dojoAttachPoint="leftButton"
dojoOnClick="leftClick; buttonClick;">
<span class="icon justifyleft" unselectable="on">&nbsp;</span>
</span>
<span class="iconContainer" dojoAttachPoint="fullButton"
dojoOnClick="fullClick; buttonClick;">
<span class="icon justifyfull" unselectable="on">&nbsp;</span>
</span>
<span class="iconContainer" dojoAttachPoint="rightButton"
dojoOnClick="rightClick; buttonClick;">
<span class="icon justifyright" unselectable="on">&nbsp;</span>
</span>
</td>
</tr>
<tr>
<td>
<!-- paste -->
<span class="iconContainer" dojoAttachPoint="pasteButton"
dojoOnClick="pasteClick; buttonClick;" unselectable="on">
<span class="icon paste" style="float: left;" unselectable="on">&nbsp;</span> paste
</span>
<!-- "droppable" options -->
<span class="iconContainer" dojoAttachPoint="undoButton"
dojoOnClick="undoClick; buttonClick;" unselectable="on">
<span class="icon undo" style="float: left;" unselectable="on">&nbsp;</span> undo
</span>
<span class="iconContainer" dojoAttachPoint="redoButton"
dojoOnClick="redoClick; buttonClick;" unselectable="on">
<span class="icon redo" style="float: left;" unselectable="on">&nbsp;</span> redo
</span>
</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/templates/Menu2.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Menu2.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Checkbox.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Checkbox.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/TaskBar.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/TaskBar.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/FisheyeList.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/FisheyeList.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/Validate.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/Validate.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/decrementMonth.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/decrementMonth.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/check.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/check.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/CheckboxA11y.html
New file
0,0 → 1,4
<span class='dojoHtmlCheckbox'>
<input type="checkbox" name="${this.name}" tabIndex="${this.tabIndex}" id="${this.id}" value="${this.value}"
dojoAttachEvent="onClick: _onClick;" dojoAttachPoint="inputNode">
</span>
/trunk/api/js/dojo/src/widget/templates/grabCorner.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/grabCorner.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/templates/SlideShow.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/templates/SlideShow.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/Widget.js
New file
0,0 → 1,310
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Widget");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.extras");
dojo.require("dojo.lang.declare");
dojo.require("dojo.ns");
dojo.require("dojo.widget.Manager");
dojo.require("dojo.event.*");
dojo.require("dojo.a11y");
dojo.declare("dojo.widget.Widget", null, function () {
this.children = [];
this.extraArgs = {};
}, {parent:null, isTopLevel:false, disabled:false, isContainer:false, widgetId:"", widgetType:"Widget", ns:"dojo", getNamespacedType:function () {
return (this.ns ? this.ns + ":" + this.widgetType : this.widgetType).toLowerCase();
}, toString:function () {
return "[Widget " + this.getNamespacedType() + ", " + (this.widgetId || "NO ID") + "]";
}, repr:function () {
return this.toString();
}, enable:function () {
this.disabled = false;
}, disable:function () {
this.disabled = true;
}, onResized:function () {
this.notifyChildrenOfResize();
}, notifyChildrenOfResize:function () {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child.onResized) {
child.onResized();
}
}
}, create:function (args, fragment, parent, ns) {
if (ns) {
this.ns = ns;
}
this.satisfyPropertySets(args, fragment, parent);
this.mixInProperties(args, fragment, parent);
this.postMixInProperties(args, fragment, parent);
dojo.widget.manager.add(this);
this.buildRendering(args, fragment, parent);
this.initialize(args, fragment, parent);
this.postInitialize(args, fragment, parent);
this.postCreate(args, fragment, parent);
return this;
}, destroy:function (finalize) {
if (this.parent) {
this.parent.removeChild(this);
}
this.destroyChildren();
this.uninitialize();
this.destroyRendering(finalize);
dojo.widget.manager.removeById(this.widgetId);
}, destroyChildren:function () {
var widget;
var i = 0;
while (this.children.length > i) {
widget = this.children[i];
if (widget instanceof dojo.widget.Widget) {
this.removeChild(widget);
widget.destroy();
continue;
}
i++;
}
}, getChildrenOfType:function (type, recurse) {
var ret = [];
var isFunc = dojo.lang.isFunction(type);
if (!isFunc) {
type = type.toLowerCase();
}
for (var x = 0; x < this.children.length; x++) {
if (isFunc) {
if (this.children[x] instanceof type) {
ret.push(this.children[x]);
}
} else {
if (this.children[x].widgetType.toLowerCase() == type) {
ret.push(this.children[x]);
}
}
if (recurse) {
ret = ret.concat(this.children[x].getChildrenOfType(type, recurse));
}
}
return ret;
}, getDescendants:function () {
var result = [];
var stack = [this];
var elem;
while ((elem = stack.pop())) {
result.push(elem);
if (elem.children) {
dojo.lang.forEach(elem.children, function (elem) {
stack.push(elem);
});
}
}
return result;
}, isFirstChild:function () {
return this === this.parent.children[0];
}, isLastChild:function () {
return this === this.parent.children[this.parent.children.length - 1];
}, satisfyPropertySets:function (args) {
return args;
}, mixInProperties:function (args, frag) {
if ((args["fastMixIn"]) || (frag["fastMixIn"])) {
for (var x in args) {
this[x] = args[x];
}
return;
}
var undef;
var lcArgs = dojo.widget.lcArgsCache[this.widgetType];
if (lcArgs == null) {
lcArgs = {};
for (var y in this) {
lcArgs[((new String(y)).toLowerCase())] = y;
}
dojo.widget.lcArgsCache[this.widgetType] = lcArgs;
}
var visited = {};
for (var x in args) {
if (!this[x]) {
var y = lcArgs[(new String(x)).toLowerCase()];
if (y) {
args[y] = args[x];
x = y;
}
}
if (visited[x]) {
continue;
}
visited[x] = true;
if ((typeof this[x]) != (typeof undef)) {
if (typeof args[x] != "string") {
this[x] = args[x];
} else {
if (dojo.lang.isString(this[x])) {
this[x] = args[x];
} else {
if (dojo.lang.isNumber(this[x])) {
this[x] = new Number(args[x]);
} else {
if (dojo.lang.isBoolean(this[x])) {
this[x] = (args[x].toLowerCase() == "false") ? false : true;
} else {
if (dojo.lang.isFunction(this[x])) {
if (args[x].search(/[^\w\.]+/i) == -1) {
this[x] = dojo.evalObjPath(args[x], false);
} else {
var tn = dojo.lang.nameAnonFunc(new Function(args[x]), this);
dojo.event.kwConnect({srcObj:this, srcFunc:x, adviceObj:this, adviceFunc:tn});
}
} else {
if (dojo.lang.isArray(this[x])) {
this[x] = args[x].split(";");
} else {
if (this[x] instanceof Date) {
this[x] = new Date(Number(args[x]));
} else {
if (typeof this[x] == "object") {
if (this[x] instanceof dojo.uri.Uri) {
this[x] = dojo.uri.dojoUri(args[x]);
} else {
var pairs = args[x].split(";");
for (var y = 0; y < pairs.length; y++) {
var si = pairs[y].indexOf(":");
if ((si != -1) && (pairs[y].length > si)) {
this[x][pairs[y].substr(0, si).replace(/^\s+|\s+$/g, "")] = pairs[y].substr(si + 1);
}
}
}
} else {
this[x] = args[x];
}
}
}
}
}
}
}
}
} else {
this.extraArgs[x.toLowerCase()] = args[x];
}
}
}, postMixInProperties:function (args, frag, parent) {
}, initialize:function (args, frag, parent) {
return false;
}, postInitialize:function (args, frag, parent) {
return false;
}, postCreate:function (args, frag, parent) {
return false;
}, uninitialize:function () {
return false;
}, buildRendering:function (args, frag, parent) {
dojo.unimplemented("dojo.widget.Widget.buildRendering, on " + this.toString() + ", ");
return false;
}, destroyRendering:function () {
dojo.unimplemented("dojo.widget.Widget.destroyRendering");
return false;
}, addedTo:function (parent) {
}, addChild:function (child) {
dojo.unimplemented("dojo.widget.Widget.addChild");
return false;
}, removeChild:function (widget) {
for (var x = 0; x < this.children.length; x++) {
if (this.children[x] === widget) {
this.children.splice(x, 1);
widget.parent = null;
break;
}
}
return widget;
}, getPreviousSibling:function () {
var idx = this.getParentIndex();
if (idx <= 0) {
return null;
}
return this.parent.children[idx - 1];
}, getSiblings:function () {
return this.parent.children;
}, getParentIndex:function () {
return dojo.lang.indexOf(this.parent.children, this, true);
}, getNextSibling:function () {
var idx = this.getParentIndex();
if (idx == this.parent.children.length - 1) {
return null;
}
if (idx < 0) {
return null;
}
return this.parent.children[idx + 1];
}});
dojo.widget.lcArgsCache = {};
dojo.widget.tags = {};
dojo.widget.tags.addParseTreeHandler = function (type) {
dojo.deprecated("addParseTreeHandler", ". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget", "0.5");
};
dojo.widget.tags["dojo:propertyset"] = function (fragment, widgetParser, parentComp) {
var properties = widgetParser.parseProperties(fragment["dojo:propertyset"]);
};
dojo.widget.tags["dojo:connect"] = function (fragment, widgetParser, parentComp) {
var properties = widgetParser.parseProperties(fragment["dojo:connect"]);
};
dojo.widget.buildWidgetFromParseTree = function (type, frag, parser, parentComp, insertionIndex, localProps) {
dojo.a11y.setAccessibleMode();
var stype = type.split(":");
stype = (stype.length == 2) ? stype[1] : type;
var localProperties = localProps || parser.parseProperties(frag[frag["ns"] + ":" + stype]);
var twidget = dojo.widget.manager.getImplementation(stype, null, null, frag["ns"]);
if (!twidget) {
throw new Error("cannot find \"" + type + "\" widget");
} else {
if (!twidget.create) {
throw new Error("\"" + type + "\" widget object has no \"create\" method and does not appear to implement *Widget");
}
}
localProperties["dojoinsertionindex"] = insertionIndex;
var ret = twidget.create(localProperties, frag, parentComp, frag["ns"]);
return ret;
};
dojo.widget.defineWidget = function (widgetClass, renderer, superclasses, init, props) {
if (dojo.lang.isString(arguments[3])) {
dojo.widget._defineWidget(arguments[0], arguments[3], arguments[1], arguments[4], arguments[2]);
} else {
var args = [arguments[0]], p = 3;
if (dojo.lang.isString(arguments[1])) {
args.push(arguments[1], arguments[2]);
} else {
args.push("", arguments[1]);
p = 2;
}
if (dojo.lang.isFunction(arguments[p])) {
args.push(arguments[p], arguments[p + 1]);
} else {
args.push(null, arguments[p]);
}
dojo.widget._defineWidget.apply(this, args);
}
};
dojo.widget.defineWidget.renderers = "html|svg|vml";
dojo.widget._defineWidget = function (widgetClass, renderer, superclasses, init, props) {
var module = widgetClass.split(".");
var type = module.pop();
var regx = "\\.(" + (renderer ? renderer + "|" : "") + dojo.widget.defineWidget.renderers + ")\\.";
var r = widgetClass.search(new RegExp(regx));
module = (r < 0 ? module.join(".") : widgetClass.substr(0, r));
dojo.widget.manager.registerWidgetPackage(module);
var pos = module.indexOf(".");
var nsName = (pos > -1) ? module.substring(0, pos) : module;
props = (props) || {};
props.widgetType = type;
if ((!init) && (props["classConstructor"])) {
init = props.classConstructor;
delete props.classConstructor;
}
dojo.declare(widgetClass, superclasses, init, props);
};
 
/trunk/api/js/dojo/src/widget/SortableTable.js
New file
0,0 → 1,498
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.SortableTable");
dojo.deprecated("SortableTable will be removed in favor of FilteringTable.", "0.5");
dojo.require("dojo.lang.common");
dojo.require("dojo.date.format");
dojo.require("dojo.html.*");
dojo.require("dojo.html.selection");
dojo.require("dojo.html.util");
dojo.require("dojo.html.style");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.SortableTable", dojo.widget.HtmlWidget, function () {
this.data = [];
this.selected = [];
this.columns = [];
}, {enableMultipleSelect:false, maximumNumberOfSelections:0, enableAlternateRows:false, minRows:0, defaultDateFormat:"%D", sortIndex:0, sortDirection:0, valueField:"Id", headClass:"", tbodyClass:"", headerClass:"", headerSortUpClass:"selected", headerSortDownClass:"selected", rowClass:"", rowAlternateClass:"alt", rowSelectedClass:"selected", columnSelected:"sorted-column", isContainer:false, templatePath:null, templateCssPath:null, getTypeFromString:function (s) {
var parts = s.split("."), i = 0, obj = dj_global;
do {
obj = obj[parts[i++]];
} while (i < parts.length && obj);
return (obj != dj_global) ? obj : null;
}, compare:function (o1, o2) {
for (var p in o1) {
if (!(p in o2)) {
return false;
}
if (o1[p].valueOf() != o2[p].valueOf()) {
return false;
}
}
return true;
}, isSelected:function (o) {
for (var i = 0; i < this.selected.length; i++) {
if (this.compare(this.selected[i], o)) {
return true;
}
}
return false;
}, removeFromSelected:function (o) {
var idx = -1;
for (var i = 0; i < this.selected.length; i++) {
if (this.compare(this.selected[i], o)) {
idx = i;
break;
}
}
if (idx >= 0) {
this.selected.splice(idx, 1);
}
}, getSelection:function () {
return this.selected;
}, getValue:function () {
var a = [];
for (var i = 0; i < this.selected.length; i++) {
if (this.selected[i][this.valueField]) {
a.push(this.selected[i][this.valueField]);
}
}
return a.join();
}, reset:function () {
this.columns = [];
this.data = [];
this.resetSelections(this.domNode.getElementsByTagName("tbody")[0]);
}, resetSelections:function (body) {
this.selected = [];
var idx = 0;
var rows = body.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++) {
if (rows[i].parentNode == body) {
rows[i].removeAttribute("selected");
if (this.enableAlternateRows && idx % 2 == 1) {
rows[i].className = this.rowAlternateClass;
} else {
rows[i].className = "";
}
idx++;
}
}
}, getObjectFromRow:function (row) {
var cells = row.getElementsByTagName("td");
var o = {};
for (var i = 0; i < this.columns.length; i++) {
if (this.columns[i].sortType == "__markup__") {
o[this.columns[i].getField()] = cells[i].innerHTML;
} else {
var text = dojo.html.renderedTextContent(cells[i]);
var val = text;
if (this.columns[i].getType() != String) {
var val = new (this.columns[i].getType())(text);
}
o[this.columns[i].getField()] = val;
}
}
if (dojo.html.hasAttribute(row, "value")) {
o[this.valueField] = dojo.html.getAttribute(row, "value");
}
return o;
}, setSelectionByRow:function (row) {
var o = this.getObjectFromRow(row);
var b = false;
for (var i = 0; i < this.selected.length; i++) {
if (this.compare(this.selected[i], o)) {
b = true;
break;
}
}
if (!b) {
this.selected.push(o);
}
}, parseColumns:function (node) {
this.reset();
var row = node.getElementsByTagName("tr")[0];
var cells = row.getElementsByTagName("td");
if (cells.length == 0) {
cells = row.getElementsByTagName("th");
}
for (var i = 0; i < cells.length; i++) {
var o = {field:null, format:null, noSort:false, sortType:"String", dataType:String, sortFunction:null, label:null, align:"left", valign:"middle", getField:function () {
return this.field || this.label;
}, getType:function () {
return this.dataType;
}};
if (dojo.html.hasAttribute(cells[i], "align")) {
o.align = dojo.html.getAttribute(cells[i], "align");
}
if (dojo.html.hasAttribute(cells[i], "valign")) {
o.valign = dojo.html.getAttribute(cells[i], "valign");
}
if (dojo.html.hasAttribute(cells[i], "nosort")) {
o.noSort = dojo.html.getAttribute(cells[i], "nosort") == "true";
}
if (dojo.html.hasAttribute(cells[i], "sortusing")) {
var trans = dojo.html.getAttribute(cells[i], "sortusing");
var f = this.getTypeFromString(trans);
if (f != null && f != window && typeof (f) == "function") {
o.sortFunction = f;
}
}
if (dojo.html.hasAttribute(cells[i], "field")) {
o.field = dojo.html.getAttribute(cells[i], "field");
}
if (dojo.html.hasAttribute(cells[i], "format")) {
o.format = dojo.html.getAttribute(cells[i], "format");
}
if (dojo.html.hasAttribute(cells[i], "dataType")) {
var sortType = dojo.html.getAttribute(cells[i], "dataType");
if (sortType.toLowerCase() == "html" || sortType.toLowerCase() == "markup") {
o.sortType = "__markup__";
o.noSort = true;
} else {
var type = this.getTypeFromString(sortType);
if (type) {
o.sortType = sortType;
o.dataType = type;
}
}
}
o.label = dojo.html.renderedTextContent(cells[i]);
this.columns.push(o);
if (dojo.html.hasAttribute(cells[i], "sort")) {
this.sortIndex = i;
var dir = dojo.html.getAttribute(cells[i], "sort");
if (!isNaN(parseInt(dir))) {
dir = parseInt(dir);
this.sortDirection = (dir != 0) ? 1 : 0;
} else {
this.sortDirection = (dir.toLowerCase() == "desc") ? 1 : 0;
}
}
}
}, parseData:function (data) {
this.data = [];
this.selected = [];
for (var i = 0; i < data.length; i++) {
var o = {};
for (var j = 0; j < this.columns.length; j++) {
var field = this.columns[j].getField();
if (this.columns[j].sortType == "__markup__") {
o[field] = String(data[i][field]);
} else {
var type = this.columns[j].getType();
var val = data[i][field];
var t = this.columns[j].sortType.toLowerCase();
if (type == String) {
o[field] = val;
} else {
if (val != null) {
o[field] = new type(val);
} else {
o[field] = new type();
}
}
}
}
if (data[i][this.valueField] && !o[this.valueField]) {
o[this.valueField] = data[i][this.valueField];
}
this.data.push(o);
}
}, parseDataFromTable:function (tbody) {
this.data = [];
this.selected = [];
var rows = tbody.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++) {
if (dojo.html.getAttribute(rows[i], "ignoreIfParsed") == "true") {
continue;
}
var o = {};
var cells = rows[i].getElementsByTagName("td");
for (var j = 0; j < this.columns.length; j++) {
var field = this.columns[j].getField();
if (this.columns[j].sortType == "__markup__") {
o[field] = cells[j].innerHTML;
} else {
var type = this.columns[j].getType();
var val = dojo.html.renderedTextContent(cells[j]);
if (type == String) {
o[field] = val;
} else {
if (val != null) {
o[field] = new type(val);
} else {
o[field] = new type();
}
}
}
}
if (dojo.html.hasAttribute(rows[i], "value") && !o[this.valueField]) {
o[this.valueField] = dojo.html.getAttribute(rows[i], "value");
}
this.data.push(o);
if (dojo.html.getAttribute(rows[i], "selected") == "true") {
this.selected.push(o);
}
}
}, showSelections:function () {
var body = this.domNode.getElementsByTagName("tbody")[0];
var rows = body.getElementsByTagName("tr");
var idx = 0;
for (var i = 0; i < rows.length; i++) {
if (rows[i].parentNode == body) {
if (dojo.html.getAttribute(rows[i], "selected") == "true") {
rows[i].className = this.rowSelectedClass;
} else {
if (this.enableAlternateRows && idx % 2 == 1) {
rows[i].className = this.rowAlternateClass;
} else {
rows[i].className = "";
}
}
idx++;
}
}
}, render:function (bDontPreserve) {
var data = [];
var body = this.domNode.getElementsByTagName("tbody")[0];
if (!bDontPreserve) {
this.parseDataFromTable(body);
}
for (var i = 0; i < this.data.length; i++) {
data.push(this.data[i]);
}
var col = this.columns[this.sortIndex];
if (!col.noSort) {
var field = col.getField();
if (col.sortFunction) {
var sort = col.sortFunction;
} else {
var sort = function (a, b) {
if (a[field] > b[field]) {
return 1;
}
if (a[field] < b[field]) {
return -1;
}
return 0;
};
}
data.sort(sort);
if (this.sortDirection != 0) {
data.reverse();
}
}
while (body.childNodes.length > 0) {
body.removeChild(body.childNodes[0]);
}
for (var i = 0; i < data.length; i++) {
var row = document.createElement("tr");
dojo.html.disableSelection(row);
if (data[i][this.valueField]) {
row.setAttribute("value", data[i][this.valueField]);
}
if (this.isSelected(data[i])) {
row.className = this.rowSelectedClass;
row.setAttribute("selected", "true");
} else {
if (this.enableAlternateRows && i % 2 == 1) {
row.className = this.rowAlternateClass;
}
}
for (var j = 0; j < this.columns.length; j++) {
var cell = document.createElement("td");
cell.setAttribute("align", this.columns[j].align);
cell.setAttribute("valign", this.columns[j].valign);
dojo.html.disableSelection(cell);
if (this.sortIndex == j) {
cell.className = this.columnSelected;
}
if (this.columns[j].sortType == "__markup__") {
cell.innerHTML = data[i][this.columns[j].getField()];
for (var k = 0; k < cell.childNodes.length; k++) {
var node = cell.childNodes[k];
if (node && node.nodeType == dojo.html.ELEMENT_NODE) {
dojo.html.disableSelection(node);
}
}
} else {
if (this.columns[j].getType() == Date) {
var format = this.defaultDateFormat;
if (this.columns[j].format) {
format = this.columns[j].format;
}
cell.appendChild(document.createTextNode(dojo.date.strftime(data[i][this.columns[j].getField()], format)));
} else {
cell.appendChild(document.createTextNode(data[i][this.columns[j].getField()]));
}
}
row.appendChild(cell);
}
body.appendChild(row);
dojo.event.connect(row, "onclick", this, "onUISelect");
}
var minRows = parseInt(this.minRows);
if (!isNaN(minRows) && minRows > 0 && data.length < minRows) {
var mod = 0;
if (data.length % 2 == 0) {
mod = 1;
}
var nRows = minRows - data.length;
for (var i = 0; i < nRows; i++) {
var row = document.createElement("tr");
row.setAttribute("ignoreIfParsed", "true");
if (this.enableAlternateRows && i % 2 == mod) {
row.className = this.rowAlternateClass;
}
for (var j = 0; j < this.columns.length; j++) {
var cell = document.createElement("td");
cell.appendChild(document.createTextNode("\xa0"));
row.appendChild(cell);
}
body.appendChild(row);
}
}
}, onSelect:function (e) {
}, onUISelect:function (e) {
var row = dojo.html.getParentByType(e.target, "tr");
var body = dojo.html.getParentByType(row, "tbody");
if (this.enableMultipleSelect) {
if (e.metaKey || e.ctrlKey) {
if (this.isSelected(this.getObjectFromRow(row))) {
this.removeFromSelected(this.getObjectFromRow(row));
row.removeAttribute("selected");
} else {
this.setSelectionByRow(row);
row.setAttribute("selected", "true");
}
} else {
if (e.shiftKey) {
var startRow;
var rows = body.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++) {
if (rows[i].parentNode == body) {
if (rows[i] == row) {
break;
}
if (dojo.html.getAttribute(rows[i], "selected") == "true") {
startRow = rows[i];
}
}
}
if (!startRow) {
startRow = row;
for (; i < rows.length; i++) {
if (dojo.html.getAttribute(rows[i], "selected") == "true") {
row = rows[i];
break;
}
}
}
this.resetSelections(body);
if (startRow == row) {
row.setAttribute("selected", "true");
this.setSelectionByRow(row);
} else {
var doSelect = false;
for (var i = 0; i < rows.length; i++) {
if (rows[i].parentNode == body) {
rows[i].removeAttribute("selected");
if (rows[i] == startRow) {
doSelect = true;
}
if (doSelect) {
this.setSelectionByRow(rows[i]);
rows[i].setAttribute("selected", "true");
}
if (rows[i] == row) {
doSelect = false;
}
}
}
}
} else {
this.resetSelections(body);
row.setAttribute("selected", "true");
this.setSelectionByRow(row);
}
}
} else {
this.resetSelections(body);
row.setAttribute("selected", "true");
this.setSelectionByRow(row);
}
this.showSelections();
this.onSelect(e);
e.stopPropagation();
e.preventDefault();
}, onHeaderClick:function (e) {
var oldIndex = this.sortIndex;
var oldDirection = this.sortDirection;
var source = e.target;
var row = dojo.html.getParentByType(source, "tr");
var cellTag = "td";
if (row.getElementsByTagName(cellTag).length == 0) {
cellTag = "th";
}
var headers = row.getElementsByTagName(cellTag);
var header = dojo.html.getParentByType(source, cellTag);
for (var i = 0; i < headers.length; i++) {
if (headers[i] == header) {
if (i != oldIndex) {
this.sortIndex = i;
this.sortDirection = 0;
headers[i].className = this.headerSortDownClass;
} else {
this.sortDirection = (oldDirection == 0) ? 1 : 0;
if (this.sortDirection == 0) {
headers[i].className = this.headerSortDownClass;
} else {
headers[i].className = this.headerSortUpClass;
}
}
} else {
headers[i].className = this.headerClass;
}
}
this.render();
}, postCreate:function () {
var thead = this.domNode.getElementsByTagName("thead")[0];
if (this.headClass.length > 0) {
thead.className = this.headClass;
}
dojo.html.disableSelection(this.domNode);
this.parseColumns(thead);
var header = "td";
if (thead.getElementsByTagName(header).length == 0) {
header = "th";
}
var headers = thead.getElementsByTagName(header);
for (var i = 0; i < headers.length; i++) {
if (!this.columns[i].noSort) {
dojo.event.connect(headers[i], "onclick", this, "onHeaderClick");
}
if (this.sortIndex == i) {
if (this.sortDirection == 0) {
headers[i].className = this.headerSortDownClass;
} else {
headers[i].className = this.headerSortUpClass;
}
}
}
var tbody = this.domNode.getElementsByTagName("tbody")[0];
if (this.tbodyClass.length > 0) {
tbody.className = this.tbodyClass;
}
this.parseDataFromTable(tbody);
this.render(true);
}});
 
/trunk/api/js/dojo/src/widget/MonthlyCalendar.js
New file
0,0 → 1,147
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.MonthlyCalendar");
dojo.require("dojo.date.common");
dojo.require("dojo.date.format");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.DatePicker");
dojo.require("dojo.event.*");
dojo.require("dojo.html.*");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.MonthlyCalendar");
dojo.widget.defineWidget("dojo.widget.MonthlyCalendar", dojo.widget.DatePicker, {dayWidth:"wide", templateString:"<div class=\"datePickerContainer\" dojoAttachPoint=\"datePickerContainerNode\">\n\t<h3 class=\"monthLabel\">\n\t<!--\n\t<span \n\t\tdojoAttachPoint=\"decreaseWeekNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\tclass=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/decrementWeek.gif\" alt=\"&uarr;\" />\n\t</span>\n\t-->\n\t<span \n\t\tdojoAttachPoint=\"decreaseMonthNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/decrementMonth.gif\" \n\t\t\talt=\"&uarr;\" dojoAttachPoint=\"decrementMonthImageNode\">\n\t</span>\n\t<span dojoAttachPoint=\"monthLabelNode\" class=\"month\">July</span>\n\t<span \n\t\tdojoAttachPoint=\"increaseMonthNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/incrementMonth.gif\" \n\t\t\talt=\"&darr;\" dojoAttachPoint=\"incrementMonthImageNode\">\n\t</span>\n\t<!--\n\t\t<span dojoAttachPoint=\"increaseWeekNode\" \n\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\tclass=\"incrementControl\">\n\t\t\t<img src=\"${dojoWidgetModuleUri}templates/incrementWeek.gif\" \n\t\t\talt=\"&darr;\" />\n\t\t</span>\n\t-->\n\t</h3>\n\t<table class=\"calendarContainer\">\n\t\t<thead>\n\t\t\t<tr dojoAttachPoint=\"dayLabelsRow\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody dojoAttachPoint=\"calendarDatesContainerNode\" \n\t\t\tdojoAttachEvent=\"onClick: onSetDate;\">\n\t\t\t<tr dojoAttachPoint=\"calendarRow0\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow1\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow2\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow3\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow4\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow5\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n\t<h3 class=\"yearLabel\">\n\t\t<span dojoAttachPoint=\"previousYearLabelNode\"\n\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"previousYear\"></span>\n\t\t<span class=\"selectedYear\" dojoAttachPoint=\"currentYearLabelNode\"></span>\n\t\t<span dojoAttachPoint=\"nextYearLabelNode\" \n\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"nextYear\"></span>\n\t</h3>\n</div>\n", templateCssString:".datePickerContainer {\n\tmargin:0.5em 2em 0.5em 0;\n\t/*width:10em;*/\n\tfloat:left;\n}\n\n.previousMonth {\n\tbackground-color:#bbbbbb;\n}\n\n.currentMonth {\n\tbackground-color:#8f8f8f;\n}\n\n.nextMonth {\n\tbackground-color:#eeeeee;\n}\n\n.currentDate {\n\ttext-decoration:underline;\n\tfont-style:italic;\n}\n\n.selectedItem {\n\tbackground-color:#3a3a3a;\n\tcolor:#ffffff;\n}\n\n.calendarContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n\tborder-bottom:1px solid #e6e6e6;\n\toverflow: hidden;\n\ttext-align: right;\n}\n\n.calendarContainer thead{\n\tborder-bottom:1px solid #e6e6e6;\n}\n\n.calendarContainer tbody * td {\n height: 100px;\n border: 1px solid gray;\n}\n\n.calendarContainer td {\n width: 100px;\n padding: 2px;\n\tvertical-align: top;\n}\n\n.monthLabel {\n\tfont-size:0.9em;\n\tfont-weight:400;\n\tmargin:0;\n\ttext-align:center;\n}\n\n.monthLabel .month {\n\tpadding:0 0.4em 0 0.4em;\n}\n\n.yearLabel {\n\tfont-size:0.9em;\n\tfont-weight:400;\n\tmargin:0.25em 0 0 0;\n\ttext-align:right;\n\tcolor:#a3a3a3;\n}\n\n.yearLabel .selectedYear {\n\tcolor:#000;\n\tpadding:0 0.2em;\n}\n\n.nextYear, .previousYear {\n\tcursor:pointer;cursor:hand;\n}\n\n.incrementControl {\n\tcursor:pointer;cursor:hand;\n\twidth:1em;\n}\n\n.dojoMonthlyCalendarEvent {\n\tfont-size:0.7em;\n\toverflow: hidden;\n\tfont-color: grey;\n\twhite-space: nowrap;\n\ttext-align: left;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/MonthlyCalendar.css"), initializer:function () {
this.iCalendars = [];
}, addCalendar:function (cal) {
dojo.debug("Adding Calendar");
this.iCalendars.push(cal);
dojo.debug("Starting init");
this.initUI();
dojo.debug("done init");
}, createDayContents:function (node, mydate) {
dojo.html.removeChildren(node);
node.appendChild(document.createTextNode(mydate.getDate()));
for (var x = 0; x < this.iCalendars.length; x++) {
var evts = this.iCalendars[x].getEvents(mydate);
if ((dojo.lang.isArray(evts)) && (evts.length > 0)) {
for (var y = 0; y < evts.length; y++) {
var el = document.createElement("div");
dojo.html.addClass(el, "dojoMonthlyCalendarEvent");
el.appendChild(document.createTextNode(evts[y].summary.value));
el.width = dojo.html.getContentBox(node).width;
node.appendChild(el);
}
}
}
}, initUI:function () {
var dayLabels = dojo.date.getNames("days", this.dayWidth, "standAlone", this.lang);
var dayLabelNodes = this.dayLabelsRow.getElementsByTagName("td");
for (var i = 0; i < 7; i++) {
dayLabelNodes.item(i).innerHTML = dayLabels[i];
}
this.selectedIsUsed = false;
this.currentIsUsed = false;
var currentClassName = "";
var previousDate = new Date();
var calendarNodes = this.calendarDatesContainerNode.getElementsByTagName("td");
var currentCalendarNode;
previousDate.setHours(8);
var nextDate = new Date(this.firstSaturday.year, this.firstSaturday.month, this.firstSaturday.date, 8);
var lastDay = new Date(this.firstSaturday.year, this.firstSaturday.month, this.firstSaturday.date + 42, 8);
if (this.iCalendars.length > 0) {
for (var x = 0; x < this.iCalendars.length; x++) {
this.iCalendars[x].preComputeRecurringEvents(lastDay);
}
}
if (this.firstSaturday.date < 7) {
var dayInWeek = 6;
for (var i = this.firstSaturday.date; i > 0; i--) {
currentCalendarNode = calendarNodes.item(dayInWeek);
this.createDayContents(currentCalendarNode, nextDate);
dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
dayInWeek--;
previousDate = nextDate;
nextDate = this.incrementDate(nextDate, false);
}
for (var i = dayInWeek; i > -1; i--) {
currentCalendarNode = calendarNodes.item(i);
this.createDayContents(currentCalendarNode, nextDate);
dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "previous"));
previousDate = nextDate;
nextDate = this.incrementDate(nextDate, false);
}
} else {
nextDate.setDate(1);
for (var i = 0; i < 7; i++) {
currentCalendarNode = calendarNodes.item(i);
this.createDayContents(currentCalendarNode, nextDate);
dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
previousDate = nextDate;
nextDate = this.incrementDate(nextDate, true);
}
}
previousDate.setDate(this.firstSaturday.date);
previousDate.setMonth(this.firstSaturday.month);
previousDate.setFullYear(this.firstSaturday.year);
nextDate = this.incrementDate(previousDate, true);
var count = 7;
currentCalendarNode = calendarNodes.item(count);
while ((nextDate.getMonth() == previousDate.getMonth()) && (count < 42)) {
this.createDayContents(currentCalendarNode, nextDate);
dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
currentCalendarNode = calendarNodes.item(++count);
previousDate = nextDate;
nextDate = this.incrementDate(nextDate, true);
}
while (count < 42) {
this.createDayContents(currentCalendarNode, nextDate);
dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "next"));
currentCalendarNode = calendarNodes.item(++count);
previousDate = nextDate;
nextDate = this.incrementDate(nextDate, true);
}
this.setMonthLabel(this.firstSaturday.month);
this.setYearLabels(this.firstSaturday.year);
}});
dojo.widget.MonthlyCalendar.util = new function () {
this.toRfcDate = function (jsDate) {
if (!jsDate) {
jsDate = this.today;
}
var year = jsDate.getFullYear();
var month = jsDate.getMonth() + 1;
if (month < 10) {
month = "0" + month.toString();
}
var date = jsDate.getDate();
if (date < 10) {
date = "0" + date.toString();
}
return year + "-" + month + "-" + date + "T00:00:00+00:00";
};
this.fromRfcDate = function (rfcDate) {
var tempDate = rfcDate.split("-");
if (tempDate.length < 3) {
return new Date();
}
return new Date(parseInt(tempDate[0]), (parseInt(tempDate[1], 10) - 1), parseInt(tempDate[2].substr(0, 2), 10));
};
this.initFirstSaturday = function (month, year) {
if (!month) {
month = this.date.getMonth();
}
if (!year) {
year = this.date.getFullYear();
}
var firstOfMonth = new Date(year, month, 1);
return {year:year, month:month, date:7 - firstOfMonth.getDay()};
};
};
 
/trunk/api/js/dojo/src/widget/html/loader.js
New file
0,0 → 1,620
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.html.loader");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.io.*");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.extras");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.html.loader");
dojo.widget.html.loader = new (function () {
this.toString = function () {
return "dojo.widget.html.loader";
};
var _loader = this;
dojo.addOnLoad(function () {
dojo.experimental(_loader.toString());
var undo = dojo.evalObjPath("dojo.undo.browser");
if (djConfig["preventBackButtonFix"] && undo && !undo.initialState) {
undo.setInitialState(new trackerObj);
}
});
var logger = {};
var trackerObj = function (id, data) {
this.id = id;
this.data = data;
};
trackerObj.prototype.handle = function (type) {
if (typeof dojo == "undefined") {
return;
}
var wg = dojo.widget.byId(this.id);
if (wg) {
wg.setContent(this.data, true);
}
};
this._log = function (widget, data) {
if (widget.trackHistory) {
if (!logger[widget.widgetId]) {
logger[widget.widgetId] = {childrenIds:[], stack:[data]};
}
var children = logger[widget.widgetId].childrenIds;
while (children && children.length) {
delete logger[children.pop()];
}
for (var child in widget.children) {
logger[widget.widgetId].childrenIds = child.widgetId;
}
dojo.undo.browser.addToHistory(new trackerObj(widget.widgetId, dojo.lang.shallowCopy(data, true)));
}
};
var undef = dojo.lang.isUndefined;
var isFunc = dojo.lang.isFunction;
function handleDefaults(e, handler, useAlert) {
if (!handler) {
handler = "onContentError";
}
if (dojo.lang.isString(e)) {
e = {_text:e};
}
if (!e._text) {
e._text = e.toString();
}
e.toString = function () {
return this._text;
};
if (typeof e.returnValue != "boolean") {
e.returnValue = true;
}
if (typeof e.preventDefault != "function") {
e.preventDefault = function () {
this.returnValue = false;
};
}
this[handler](e);
if (e.returnValue) {
if (useAlert) {
alert(e.toString());
} else {
this.loader.callOnUnLoad.call(this, false);
this.onSetContent(e.toString());
}
}
}
function downloader(bindArgs) {
for (var x in this.bindArgs) {
bindArgs[x] = (undef(bindArgs[x]) ? this.bindArgs[x] : undefined);
}
var cache = this.cacheContent;
if (undef(bindArgs.useCache)) {
bindArgs.useCache = cache;
}
if (undef(bindArgs.preventCache)) {
bindArgs.preventCache = !cache;
}
if (undef(bindArgs.mimetype)) {
bindArgs.mimetype = "text/html";
}
this.loader.bindObj = dojo.io.bind(bindArgs);
}
function stackRunner(st) {
var err = "", func = null;
var scope = this.scriptScope || dojo.global();
while (st.length) {
func = st.shift();
try {
func.call(scope);
}
catch (e) {
err += "\n" + func + " failed: " + e;
}
}
if (err.length) {
var name = (st == this.loader.addOnLoads) ? "addOnLoad" : "addOnUnLoad";
handleDefaults.call(this, name + " failure\n " + err, "onExecError", true);
}
}
function stackPusher(st, obj, func) {
if (typeof func == "undefined") {
st.push(obj);
} else {
st.push(function () {
obj[func]();
});
}
}
function refreshed() {
this.onResized();
this.onLoad();
this.isLoaded = true;
}
function asyncParse(data) {
if (this.executeScripts) {
this.onExecScript.call(this, data.scripts);
}
if (this.parseContent) {
this.onContentParse.call(this);
}
refreshed.call(this);
}
function runHandler() {
if (dojo.lang.isFunction(this.handler)) {
this.handler(this, this.containerNode || this.domNode);
refreshed.call(this);
return false;
}
return true;
}
this.htmlContentBasicFix = function (s, url) {
var titles = [], styles = [];
var regex = /<title[^>]*>([\s\S]*?)<\/title>/i;
var match, attr;
while (match = regex.exec(s)) {
titles.push(match[1]);
s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
}
regex = /(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
while (match = regex.exec(s)) {
if (match[1] && match[1].toLowerCase() == "style") {
styles.push(dojo.html.fixPathsInCssText(match[2], url));
} else {
if (attr = match[3].match(/href=(['"]?)([^'">]*)\1/i)) {
styles.push({path:attr[2]});
}
}
s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
}
return {"s":s, "titles":titles, "styles":styles};
};
this.htmlContentAdjustPaths = function (s, url) {
var tag = "", str = "", tagFix = "", path = "";
var attr = [], origPath = "", fix = "";
var regexFindTag = /<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
var regexFindAttr = /\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
var regexProtocols = /^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
while (tag = regexFindTag.exec(s)) {
str += s.substring(0, tag.index);
s = s.substring((tag.index + tag[0].length), s.length);
tag = tag[0];
tagFix = "";
while (attr = regexFindAttr.exec(tag)) {
path = "";
origPath = attr[3];
switch (attr[1].toLowerCase()) {
case "src":
case "href":
if (regexProtocols.exec(origPath)) {
path = origPath;
} else {
path = (new dojo.uri.Uri(url, origPath).toString());
}
break;
case "style":
path = dojo.html.fixPathsInCssText(origPath, url);
break;
default:
path = origPath;
}
fix = " " + attr[1] + "=" + attr[2] + path + attr[2];
tagFix += tag.substring(0, attr.index) + fix;
tag = tag.substring((attr.index + attr[0].length), tag.length);
}
str += tagFix + tag;
}
return str + s;
};
this.htmlContentScripts = function (s, collectScripts) {
var scripts = [], requires = [], match = [];
var attr = "", tmp = null, tag = "", sc = "", str = "";
var regex = /<script([^>]*)>([\s\S]*?)<\/script>/i;
var regexSrc = /src=(['"]?)([^"']*)\1/i;
var regexDojoJs = /.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
var regexInvalid = /(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
var regexRequires = /dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix)|defineNamespace)\((['"]).*?\1\)\s*;?/;
while (match = regex.exec(s)) {
if (this.executeScripts && match[1]) {
if (attr = regexSrc.exec(match[1])) {
if (regexDojoJs.exec(attr[2])) {
dojo.debug("Security note! inhibit:" + attr[2] + " from beeing loaded again.");
} else {
scripts.push({path:attr[2]});
}
}
}
if (match[2]) {
sc = match[2].replace(regexInvalid, "");
if (!sc) {
continue;
}
while (tmp = regexRequires.exec(sc)) {
requires.push(tmp[0]);
sc = sc.substring(0, tmp.index) + sc.substr(tmp.index + tmp[0].length);
}
if (collectScripts) {
scripts.push(sc);
}
}
s = s.substr(0, match.index) + s.substr(match.index + match[0].length);
}
if (collectScripts) {
var regex = /(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*\S=(['"])[^>]*[^\.\]])scriptScope([^>]*>)/;
str = "";
while (tag = regex.exec(s)) {
tmp = ((tag[2] == "'") ? "\"" : "'");
str += s.substring(0, tag.index);
s = s.substr(tag.index).replace(regex, "$1dojo.widget.byId(" + tmp + this.widgetId + tmp + ").scriptScope$3");
}
s = str + s;
}
return {"s":s, "requires":requires, "scripts":scripts};
};
this.splitAndFixPaths = function (args) {
if (!args.url) {
args.url = "./";
}
url = new dojo.uri.Uri(location, args.url).toString();
var ret = {"xml":"", "styles":[], "titles":[], "requires":[], "scripts":[], "url":url};
if (args.content) {
var tmp = null, content = args.content;
if (args.adjustPaths) {
content = _loader.htmlContentAdjustPaths.call(this, content, url);
}
tmp = _loader.htmlContentBasicFix.call(this, content, url);
content = tmp.s;
ret.styles = tmp.styles;
ret.titles = tmp.titles;
if (args.collectRequires || args.collectScripts) {
tmp = _loader.htmlContentScripts.call(this, content, args.collectScripts);
content = tmp.s;
ret.requires = tmp.requires;
ret.scripts = tmp.scripts;
}
var match = [];
if (args.bodyExtract) {
match = content.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
if (match) {
content = match[1];
}
}
ret.xml = content;
}
return ret;
};
this.hookUp = function (args) {
var widget = args.widget;
if (dojo.lang.isString(widget)) {
if (args.mixin) {
dojo.raise(this.toString() + ", cant use mixin when widget is a string");
}
widget = dojo.evalObjPath(widget);
}
if (!widget || !(widget instanceof dojo.widget.HtmlWidget)) {
dojo.raise(this.toString() + " Widget isn't defined or isn't a HtmlWidget instance");
}
if (widget.loader && widget.setUrl) {
return;
}
var widgetProto = (args.mixin) ? widget : widget.constructor.prototype;
widget.loader = {isLoaded:false, styleNodes:[], addOnLoads:[], addOnUnLoads:[], callOnUnLoad:(function (canCall) {
return function (after) {
this.abort();
if (canCall) {
this.onUnLoad();
}
canCall = after;
};
})(false), bindObj:null, unHook:(function (w, wg) {
var oldProps = {isContainer:w.isContainer, adjustPats:w.adjustPaths, href:w.href, extractContent:w.extractContent, parseContent:w.parseContent, cacheContent:w.cacheContent, bindArgs:w.bindArgs, preload:w.preload, refreshOnShow:w.refreshOnShow, handler:w.handler, trackHistory:w.trackHistory, executeScripts:w.executeScripts, scriptScope:w.scriptScope, postCreate:w.postCreate, show:w.show, refresh:w.refresh, loadContents:w.loadContents, abort:w.abort, destroy:w.destroy, onLoad:w.onLoad, onUnLoad:w.onUnLoad, addOnLoad:w.addOnLoad, addOnUnLoad:w.addOnUnLoad, onDownloadStart:w.onDownloadStart, onDownloadEnd:w.onDownloadEnd, onDownloadError:w.onDownloadError, onContentError:w.onContentError, onExecError:w.onExecError, onSetContent:w.onSetContent, setUrl:w.setUrl, setContent:w.setContent, onContentParse:w.onContentParse, onExecScript:w.onExecScript, setHandler:w.setHandler};
return function () {
if (wg.abort) {
wg.abort();
}
if ((w != wg) && (dojo.widget.byType(wg.widgetType).length > 1)) {
return;
}
for (var x in oldProps) {
if (oldProps[x] === undefined) {
delete w[x];
continue;
}
w[x] = oldProps[x];
}
delete wg._loader_defined;
delete wg.loader;
};
})(widgetProto, widget)};
if (widgetProto._loader_defined || widget._loader_defined) {
return;
}
dojo.mixin(widgetProto, {isContainer:true, adjustPaths:undef(widgetProto.adjustPaths) ? true : widgetProto.adjustPaths, href:undef(widgetProto.href) ? "" : widgetProto.href, extractContent:undef(widgetProto.extractContent) ? true : widgetProto.extractContent, parseContent:undef(widgetProto.parseContent) ? true : widgetProto.parseContent, cacheContent:undef(widgetProto.cacheContent) ? true : widgetProto.cacheContent, bindArgs:undef(widgetProto.bindArgs) ? {} : widgetProto.bindArgs, preload:undef(widgetProto.preload) ? false : widgetProto.preload, refreshOnShow:undef(widgetProto.refreshOnShow) ? false : widgetProto.refreshOnShow, handler:undef(widgetProto.handler) ? "" : widgetProto.handler, executeScripts:undef(widgetProto.executeScripts) ? false : widgetProto.executeScripts, trackHistory:undef(widgetProto.tracHistory) ? false : widgetProto.trackHistory, scriptScope:null});
widgetProto.postCreate = (function (postCreate) {
return function () {
if (widgetProto.constructor.superclass.postCreate != postCreate) {
postCreate.apply(this, arguments);
} else {
widgetProto.constructor.superclass.postCreate.apply(this, arguments);
}
if (this.handler !== "") {
this.setHandler(this.handler);
}
if (this.isShowing() || this.preload) {
this.loadContents();
if (!this.href) {
_loader._log(this, (this.domNode || this.containerNode).innerHTML);
}
}
};
})(widgetProto.postCreate);
widgetProto.show = (function (show) {
return function () {
if (this.refreshOnShow) {
this.refresh();
} else {
this.loadContents();
}
if ((widgetProto.constructor.superclass.show == show) || !isFunc(show)) {
widgetProto.constructor.superclass.show.apply(this, arguments);
} else {
show.apply(this, arguments);
}
};
})(widgetProto.show);
widgetProto.destroy = (function (destroy) {
return function (destroy) {
this.onUnLoad();
this.abort();
this.loader.unHook();
if ((widgetProto.constructor.superclass.destroy != destroy) && isFunc(destroy)) {
destroy.apply(this, arguments);
} else {
widgetProto.constructor.superclass.destroy.apply(this, arguments);
}
};
})(widgetProto.destroy);
if (!widgetProto.refresh) {
widgetProto.refresh = function () {
this.loader.isLoaded = false;
this.loadContents();
};
}
if (!widgetProto.loadContents) {
widgetProto.loadContents = function () {
if (this.loader.isLoaded) {
return;
}
if (isFunc(this.handler)) {
runHandler.call(this);
} else {
if (this.href !== "") {
handleDefaults.call(this, "Loading...", "onDownloadStart");
var self = this, url = this.href;
downloader.call(this, {url:url, load:function (type, data, xhr) {
self.onDownloadEnd.call(self, url, data);
}, error:function (type, err, xhr) {
var e = {responseText:xhr.responseText, status:xhr.status, statusText:xhr.statusText, responseHeaders:(xhr.getAllResponseHeaders) ? xhr.getAllResponseHeaders() : [], _text:"Error loading '" + url + "' (" + xhr.status + " " + xhr.statusText + ")"};
handleDefaults.call(self, e, "onDownloadError");
self.onLoad();
}});
}
}
};
}
if (!widgetProto.abort) {
widgetProto.abort = function () {
if (!this.loader || !this.loader.bindObj || !this.loader.bindObj.abort) {
return;
}
this.loader.bindObj.abort();
this.loader.bindObj = null;
};
}
if (!widgetProto.onLoad) {
widgetProto.onLoad = function () {
stackRunner.call(this, this.loader.addOnLoads);
this.loader.isLoaded = true;
};
}
if (!widgetProto.onUnLoad) {
widgetProto.onUnLoad = function () {
stackRunner.call(this, this.loader.addOnUnLoads);
delete this.scriptScope;
};
}
if (!widgetProto.addOnLoad) {
widgetProto.addOnLoad = function (obj, func) {
stackPusher.call(this, this.loader.addOnLoads, obj, func);
};
}
if (!widgetProto.addOnUnLoad) {
widgetProto.addOnUnLoad = function (obj, func) {
stackPusher.call(this, this.loader.addOnUnLoads, obj, func);
};
}
if (!widgetProto.onExecError) {
widgetProto.onExecError = function () {
};
}
if (!widgetProto.onContentError) {
widgetProto.onContentError = function () {
};
}
if (!widgetProto.onDownloadError) {
widgetProto.onDownloadError = function () {
};
}
if (!widgetProto.onDownloadStart) {
widgetProto.onDownloadStart = function (onDownloadStart) {
};
}
if (!widgetProto.onDownloadEnd) {
widgetProto.onDownloadEnd = function (url, data) {
var args = {content:data, url:url, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent};
data = _loader.splitAndFixPaths.call(this, args);
this.setContent(data);
};
}
if (!widgetProto.onSetContent) {
widgetProto.onSetContent = function (cont) {
this.destroyChildren();
var styleNodes = this.loader.styleNodes;
while (styleNodes.length) {
var st = styleNodes.pop();
if (st && st.parentNode) {
st.parentNode.removeChild(st);
}
}
var node = this.containerNode || this.domNode;
while (node.firstChild) {
try {
dojo.event.browser.clean(node.firstChild);
}
catch (e) {
}
node.removeChild(node.firstChild);
}
try {
if (typeof cont != "string") {
node.appendChild(cont);
} else {
try {
node.innerHTML = cont;
}
catch (e) {
var tmp;
(tmp = dojo.doc().createElement("div")).innerHTML = cont;
while (tmp.firstChild) {
node.appendChild(tmp.removeChild(tmp.firstChild));
}
}
}
}
catch (e) {
e._text = "Could'nt load content: " + e;
var useAlert = (this.loader._onSetContent_err == e._text);
this.loader._onSetContent_err = e._text;
handleDefaults.call(this, e, "onContentError", useAlert);
}
};
}
if (!widgetProto.setUrl) {
widgetProto.setUrl = function (url) {
this.href = url;
this.loader.isLoaded = false;
if (this.preload || this.isShowing()) {
this.loadContents();
}
};
}
if (!widgetProto.setContent) {
widgetProto.setContent = function (data, dontLog) {
this.loader.callOnUnLoad.call(this, true);
if (!data || dojo.html.isNode(data)) {
this.onSetContent(data);
refreshed.call(this);
} else {
if (typeof data.xml != "string") {
this.href = "";
var args = {content:data, url:this.href, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent};
data = _loader.splitAndFixPaths.call(this, args);
} else {
if (data.url != "./") {
this.url = data.url;
}
}
this.onSetContent(data.xml);
for (var i = 0, styles = data.styles; i < styles.length; i++) {
if (styles[i].path) {
this.loader.styleNodes.push(dojo.html.insertCssFile(styles[i].path));
} else {
this.loader.styleNodes.push(dojo.html.insertCssText(styles[i]));
}
}
if (this.parseContent) {
for (var i = 0, requires = data.requires; i < requires.length; i++) {
try {
eval(requires[i]);
}
catch (e) {
e._text = "dojo.widget.html.loader.hookUp: error in package loading calls, " + (e.description || e);
handleDefaults.call(this, e, "onContentError", true);
}
}
}
if (dojo.hostenv.isXDomain && data.requires.length) {
dojo.addOnLoad(function () {
asyncParse.call(this, data);
if (!dontLog) {
_loader._log(this, data);
}
});
dontLog = true;
} else {
asyncParse.call(this, data);
}
}
if (!dontLog) {
}
};
}
if (!widgetProto.onContentParse) {
widgetProto.onContentParse = function () {
var node = this.containerNode || this.domNode;
var parser = new dojo.xml.Parse();
var frag = parser.parseElement(node, null, true);
dojo.widget.getParser().createSubComponents(frag, this);
};
}
if (!widgetProto.onExecScript) {
widgetProto.onExecScript = function (scripts) {
var self = this, tmp = "", code = "";
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].path) {
var url = scripts[i].path;
downloader.call(this, {"url":url, "load":function (type, scriptStr) {
(function () {
tmp = scriptStr;
scripts[i] = scriptStr;
}).call(self);
}, "error":function (type, error) {
error._text = type + " downloading remote script";
handleDefaults.call(self, error, "onExecError", true);
}, "mimetype":"text/plain", "sync":true});
code += tmp;
} else {
code += scripts[i];
}
}
try {
delete this.scriptScope;
this.scriptScope = new (new Function("_container_", code + "; return this;"))(self);
}
catch (e) {
e._text = "Error running scripts from content:\n" + (e.description || e.toString());
handleDefaults.call(this, e, "onExecError", true);
}
};
}
if (!widgetProto.setHandler) {
widgetProto.setHandler = function (handler) {
var fcn = dojo.lang.isFunction(handler) ? handler : window[handler];
if (!isFunc(fcn)) {
handleDefaults.call(this, "Unable to set handler, '" + handler + "' not a function.", "onExecError", true);
return;
}
this.handler = function () {
return fcn.apply(this, arguments);
};
};
}
widgetProto._loader_defined = true;
};
})();
 
/trunk/api/js/dojo/src/widget/html/layout.js
New file
0,0 → 1,92
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.html.layout");
dojo.require("dojo.lang.common");
dojo.require("dojo.string.extras");
dojo.require("dojo.html.style");
dojo.require("dojo.html.layout");
dojo.widget.html.layout = function (container, children, layoutPriority) {
dojo.html.addClass(container, "dojoLayoutContainer");
children = dojo.lang.filter(children, function (child, idx) {
child.idx = idx;
return dojo.lang.inArray(["top", "bottom", "left", "right", "client", "flood"], child.layoutAlign);
});
if (layoutPriority && layoutPriority != "none") {
var rank = function (child) {
switch (child.layoutAlign) {
case "flood":
return 1;
case "left":
case "right":
return (layoutPriority == "left-right") ? 2 : 3;
case "top":
case "bottom":
return (layoutPriority == "left-right") ? 3 : 2;
default:
return 4;
}
};
children.sort(function (a, b) {
return (rank(a) - rank(b)) || (a.idx - b.idx);
});
}
var f = {top:dojo.html.getPixelValue(container, "padding-top", true), left:dojo.html.getPixelValue(container, "padding-left", true)};
dojo.lang.mixin(f, dojo.html.getContentBox(container));
dojo.lang.forEach(children, function (child) {
var elm = child.domNode;
var pos = child.layoutAlign;
with (elm.style) {
left = f.left + "px";
top = f.top + "px";
bottom = "auto";
right = "auto";
}
dojo.html.addClass(elm, "dojoAlign" + dojo.string.capitalize(pos));
if ((pos == "top") || (pos == "bottom")) {
dojo.html.setMarginBox(elm, {width:f.width});
var h = dojo.html.getMarginBox(elm).height;
f.height -= h;
if (pos == "top") {
f.top += h;
} else {
elm.style.top = f.top + f.height + "px";
}
if (child.onResized) {
child.onResized();
}
} else {
if (pos == "left" || pos == "right") {
var w = dojo.html.getMarginBox(elm).width;
if (child.resizeTo) {
child.resizeTo(w, f.height);
} else {
dojo.html.setMarginBox(elm, {width:w, height:f.height});
}
f.width -= w;
if (pos == "left") {
f.left += w;
} else {
elm.style.left = f.left + f.width + "px";
}
} else {
if (pos == "flood" || pos == "client") {
if (child.resizeTo) {
child.resizeTo(f.width, f.height);
} else {
dojo.html.setMarginBox(elm, {width:f.width, height:f.height});
}
}
}
}
});
};
dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n" + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n" + "body .dojoAlignClient { position: absolute }\n" + ".dojoAlignClient { overflow: auto; }\n");
 
/trunk/api/js/dojo/src/widget/html/stabile.js
New file
0,0 → 1,126
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.html.stabile");
dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2};
dojo.widget.html.stabile.getState = function (id) {
dojo.widget.html.stabile.setup();
return dojo.widget.html.stabile.widgetState[id];
};
dojo.widget.html.stabile.setState = function (id, state, isCommit) {
dojo.widget.html.stabile.setup();
dojo.widget.html.stabile.widgetState[id] = state;
if (isCommit) {
dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState);
}
};
dojo.widget.html.stabile.setup = function () {
if (!dojo.widget.html.stabile.widgetState) {
var text = dojo.widget.html.stabile._getStorage().value;
dojo.widget.html.stabile.widgetState = text ? dj_eval("(" + text + ")") : {};
}
};
dojo.widget.html.stabile.commit = function (state) {
dojo.widget.html.stabile._getStorage().value = dojo.widget.html.stabile.description(state);
};
dojo.widget.html.stabile.description = function (v, showAll) {
var depth = dojo.widget.html.stabile._depth;
var describeThis = function () {
return this.description(this, true);
};
try {
if (v === void (0)) {
return "undefined";
}
if (v === null) {
return "null";
}
if (typeof (v) == "boolean" || typeof (v) == "number" || v instanceof Boolean || v instanceof Number) {
return v.toString();
}
if (typeof (v) == "string" || v instanceof String) {
var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1");
v1 = v1.replace(/\n/g, "\\n");
v1 = v1.replace(/\r/g, "\\r");
return "'" + v1 + "'";
}
if (v instanceof Date) {
return "new Date(" + d.getFullYear + "," + d.getMonth() + "," + d.getDate() + ")";
}
var d;
if (v instanceof Array || v.push) {
if (depth >= dojo.widget.html.stabile.depthLimit) {
return "[ ... ]";
}
d = "[";
var first = true;
dojo.widget.html.stabile._depth++;
for (var i = 0; i < v.length; i++) {
if (first) {
first = false;
} else {
d += ",";
}
d += arguments.callee(v[i], showAll);
}
return d + "]";
}
if (v.constructor == Object || v.toString == describeThis) {
if (depth >= dojo.widget.html.stabile.depthLimit) {
return "{ ... }";
}
if (typeof (v.hasOwnProperty) != "function" && v.prototype) {
throw new Error("description: " + v + " not supported by script engine");
}
var first = true;
d = "{";
dojo.widget.html.stabile._depth++;
for (var key in v) {
if (v[key] == void (0) || typeof (v[key]) == "function") {
continue;
}
if (first) {
first = false;
} else {
d += ", ";
}
var kd = key;
if (!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {
kd = arguments.callee(key, showAll);
}
d += kd + ": " + arguments.callee(v[key], showAll);
}
return d + "}";
}
if (showAll) {
if (dojo.widget.html.stabile._recur) {
var objectToString = Object.prototype.toString;
return objectToString.apply(v, []);
} else {
dojo.widget.html.stabile._recur = true;
return v.toString();
}
} else {
throw new Error("Unknown type: " + v);
return "'unknown'";
}
}
finally {
dojo.widget.html.stabile._depth = depth;
}
};
dojo.widget.html.stabile._getStorage = function () {
if (dojo.widget.html.stabile.dataField) {
return dojo.widget.html.stabile.dataField;
}
var form = document.forms._dojo_form;
return dojo.widget.html.stabile.dataField = form ? form.stabile : {value:""};
};
 
/trunk/api/js/dojo/src/widget/RichText.js
New file
0,0 → 1,1165
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.RichText");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.selection");
dojo.require("dojo.event.*");
dojo.require("dojo.string.extras");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.Deferred");
if (!djConfig["useXDomain"] || djConfig["allowXdRichTextSave"]) {
if (dojo.hostenv.post_load_) {
(function () {
var savetextarea = dojo.doc().createElement("textarea");
savetextarea.id = "dojo.widget.RichText.savedContent";
savetextarea.style = "display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;";
dojo.body().appendChild(savetextarea);
})();
} else {
try {
dojo.doc().write("<textarea id=\"dojo.widget.RichText.savedContent\" " + "style=\"display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;\"></textarea>");
}
catch (e) {
}
}
}
dojo.widget.defineWidget("dojo.widget.RichText", dojo.widget.HtmlWidget, function () {
this.contentPreFilters = [];
this.contentPostFilters = [];
this.contentDomPreFilters = [];
this.contentDomPostFilters = [];
this.editingAreaStyleSheets = [];
if (dojo.render.html.moz) {
this.contentPreFilters.push(this._fixContentForMoz);
}
this._keyHandlers = {};
if (dojo.Deferred) {
this.onLoadDeferred = new dojo.Deferred();
}
}, {inheritWidth:false, focusOnLoad:false, saveName:"", styleSheets:"", _content:"", height:"", minHeight:"1em", isClosed:true, isLoaded:false, useActiveX:false, relativeImageUrls:false, _SEPARATOR:"@@**%%__RICHTEXTBOUNDRY__%%**@@", onLoadDeferred:null, fillInTemplate:function () {
dojo.event.topic.publish("dojo.widget.RichText::init", this);
this.open();
dojo.event.connect(this, "onKeyPressed", this, "afterKeyPress");
dojo.event.connect(this, "onKeyPress", this, "keyPress");
dojo.event.connect(this, "onKeyDown", this, "keyDown");
dojo.event.connect(this, "onKeyUp", this, "keyUp");
this.setupDefaultShortcuts();
}, setupDefaultShortcuts:function () {
var ctrl = this.KEY_CTRL;
var exec = function (cmd, arg) {
return arguments.length == 1 ? function () {
this.execCommand(cmd);
} : function () {
this.execCommand(cmd, arg);
};
};
this.addKeyHandler("b", ctrl, exec("bold"));
this.addKeyHandler("i", ctrl, exec("italic"));
this.addKeyHandler("u", ctrl, exec("underline"));
this.addKeyHandler("a", ctrl, exec("selectall"));
this.addKeyHandler("s", ctrl, function () {
this.save(true);
});
this.addKeyHandler("1", ctrl, exec("formatblock", "h1"));
this.addKeyHandler("2", ctrl, exec("formatblock", "h2"));
this.addKeyHandler("3", ctrl, exec("formatblock", "h3"));
this.addKeyHandler("4", ctrl, exec("formatblock", "h4"));
this.addKeyHandler("\\", ctrl, exec("insertunorderedlist"));
if (!dojo.render.html.ie) {
this.addKeyHandler("Z", ctrl, exec("redo"));
}
}, events:["onBlur", "onFocus", "onKeyPress", "onKeyDown", "onKeyUp", "onClick"], open:function (element) {
if (this.onLoadDeferred.fired >= 0) {
this.onLoadDeferred = new dojo.Deferred();
}
var h = dojo.render.html;
if (!this.isClosed) {
this.close();
}
dojo.event.topic.publish("dojo.widget.RichText::open", this);
this._content = "";
if ((arguments.length == 1) && (element["nodeName"])) {
this.domNode = element;
}
if ((this.domNode["nodeName"]) && (this.domNode.nodeName.toLowerCase() == "textarea")) {
this.textarea = this.domNode;
var html = this._preFilterContent(this.textarea.value);
this.domNode = dojo.doc().createElement("div");
dojo.html.copyStyle(this.domNode, this.textarea);
var tmpFunc = dojo.lang.hitch(this, function () {
with (this.textarea.style) {
display = "block";
position = "absolute";
left = top = "-1000px";
if (h.ie) {
this.__overflow = overflow;
overflow = "hidden";
}
}
});
if (h.ie) {
setTimeout(tmpFunc, 10);
} else {
tmpFunc();
}
if (!h.safari) {
dojo.html.insertBefore(this.domNode, this.textarea);
}
if (this.textarea.form) {
dojo.event.connect("before", this.textarea.form, "onsubmit", dojo.lang.hitch(this, function () {
this.textarea.value = this.getEditorContent();
}));
}
var editor = this;
dojo.event.connect(this, "postCreate", function () {
dojo.html.insertAfter(editor.textarea, editor.domNode);
});
} else {
var html = this._preFilterContent(dojo.string.trim(this.domNode.innerHTML));
}
if (html == "") {
html = "&nbsp;";
}
var content = dojo.html.getContentBox(this.domNode);
this._oldHeight = content.height;
this._oldWidth = content.width;
this._firstChildContributingMargin = this._getContributingMargin(this.domNode, "top");
this._lastChildContributingMargin = this._getContributingMargin(this.domNode, "bottom");
this.savedContent = html;
this.domNode.innerHTML = "";
this.editingArea = dojo.doc().createElement("div");
this.domNode.appendChild(this.editingArea);
if ((this.domNode["nodeName"]) && (this.domNode.nodeName == "LI")) {
this.domNode.innerHTML = " <br>";
}
if (this.saveName != "" && (!djConfig["useXDomain"] || djConfig["allowXdRichTextSave"])) {
var saveTextarea = dojo.doc().getElementById("dojo.widget.RichText.savedContent");
if (saveTextarea.value != "") {
var datas = saveTextarea.value.split(this._SEPARATOR);
for (var i = 0; i < datas.length; i++) {
var data = datas[i].split(":");
if (data[0] == this.saveName) {
html = data[1];
datas.splice(i, 1);
break;
}
}
}
dojo.event.connect("before", window, "onunload", this, "_saveContent");
}
if (h.ie70 && this.useActiveX) {
dojo.debug("activeX in ie70 is not currently supported, useActiveX is ignored for now.");
this.useActiveX = false;
}
if (this.useActiveX && h.ie) {
var self = this;
setTimeout(function () {
self._drawObject(html);
}, 0);
} else {
if (h.ie || this._safariIsLeopard() || h.opera) {
this.iframe = dojo.doc().createElement("iframe");
this.iframe.src = "javascript:void(0)";
this.editorObject = this.iframe;
with (this.iframe.style) {
border = "0";
width = "100%";
}
this.iframe.frameBorder = 0;
this.editingArea.appendChild(this.iframe);
this.window = this.iframe.contentWindow;
this.document = this.window.document;
this.document.open();
this.document.write("<html><head><style>body{margin:0;padding:0;border:0;overflow:hidden;}</style></head><body><div></div></body></html>");
this.document.close();
this.editNode = this.document.body.firstChild;
this.editNode.contentEditable = true;
with (this.iframe.style) {
if (h.ie70) {
if (this.height) {
height = this.height;
}
if (this.minHeight) {
minHeight = this.minHeight;
}
} else {
height = this.height ? this.height : this.minHeight;
}
}
var formats = ["p", "pre", "address", "h1", "h2", "h3", "h4", "h5", "h6", "ol", "div", "ul"];
var localhtml = "";
for (var i in formats) {
if (formats[i].charAt(1) != "l") {
localhtml += "<" + formats[i] + "><span>content</span></" + formats[i] + ">";
} else {
localhtml += "<" + formats[i] + "><li>content</li></" + formats[i] + ">";
}
}
with (this.editNode.style) {
position = "absolute";
left = "-2000px";
top = "-2000px";
}
this.editNode.innerHTML = localhtml;
var node = this.editNode.firstChild;
while (node) {
dojo.withGlobal(this.window, "selectElement", dojo.html.selection, [node.firstChild]);
var nativename = node.tagName.toLowerCase();
this._local2NativeFormatNames[nativename] = this.queryCommandValue("formatblock");
this._native2LocalFormatNames[this._local2NativeFormatNames[nativename]] = nativename;
node = node.nextSibling;
}
with (this.editNode.style) {
position = "";
left = "";
top = "";
}
this.editNode.innerHTML = html;
if (this.height) {
this.document.body.style.overflowY = "scroll";
}
dojo.lang.forEach(this.events, function (e) {
dojo.event.connect(this.editNode, e.toLowerCase(), this, e);
}, this);
this.onLoad();
} else {
this._drawIframe(html);
this.editorObject = this.iframe;
}
}
if (this.domNode.nodeName == "LI") {
this.domNode.lastChild.style.marginTop = "-1.2em";
}
dojo.html.addClass(this.domNode, "RichTextEditable");
this.isClosed = false;
}, _hasCollapseableMargin:function (element, side) {
if (dojo.html.getPixelValue(element, "border-" + side + "-width", false)) {
return false;
} else {
if (dojo.html.getPixelValue(element, "padding-" + side, false)) {
return false;
} else {
return true;
}
}
}, _getContributingMargin:function (element, topOrBottom) {
if (topOrBottom == "top") {
var siblingAttr = "previousSibling";
var childSiblingAttr = "nextSibling";
var childAttr = "firstChild";
var marginProp = "margin-top";
var siblingMarginProp = "margin-bottom";
} else {
var siblingAttr = "nextSibling";
var childSiblingAttr = "previousSibling";
var childAttr = "lastChild";
var marginProp = "margin-bottom";
var siblingMarginProp = "margin-top";
}
var elementMargin = dojo.html.getPixelValue(element, marginProp, false);
function isSignificantNode(element) {
return !(element.nodeType == 3 && dojo.string.isBlank(element.data)) && dojo.html.getStyle(element, "display") != "none" && !dojo.html.isPositionAbsolute(element);
}
var childMargin = 0;
var child = element[childAttr];
while (child) {
while ((!isSignificantNode(child)) && child[childSiblingAttr]) {
child = child[childSiblingAttr];
}
childMargin = Math.max(childMargin, dojo.html.getPixelValue(child, marginProp, false));
if (!this._hasCollapseableMargin(child, topOrBottom)) {
break;
}
child = child[childAttr];
}
if (!this._hasCollapseableMargin(element, topOrBottom)) {
return parseInt(childMargin);
}
var contextMargin = 0;
var sibling = element[siblingAttr];
while (sibling) {
if (isSignificantNode(sibling)) {
contextMargin = dojo.html.getPixelValue(sibling, siblingMarginProp, false);
break;
}
sibling = sibling[siblingAttr];
}
if (!sibling) {
contextMargin = dojo.html.getPixelValue(element.parentNode, marginProp, false);
}
if (childMargin > elementMargin) {
return parseInt(Math.max((childMargin - elementMargin) - contextMargin, 0));
} else {
return 0;
}
}, _drawIframe:function (html) {
var oldMoz = Boolean(dojo.render.html.moz && (typeof window.XML == "undefined"));
if (!this.iframe) {
var currentDomain = (new dojo.uri.Uri(dojo.doc().location)).host;
this.iframe = dojo.doc().createElement("iframe");
with (this.iframe) {
style.border = "none";
style.lineHeight = "0";
style.verticalAlign = "bottom";
scrolling = this.height ? "auto" : "no";
}
}
if (djConfig["useXDomain"] && !djConfig["dojoRichTextFrameUrl"]) {
dojo.debug("dojo.widget.RichText: When using cross-domain Dojo builds," + " please save src/widget/templates/richtextframe.html to your domain and set djConfig.dojoRichTextFrameUrl" + " to the path on your domain to richtextframe.html");
}
this.iframe.src = (djConfig["dojoRichTextFrameUrl"] || dojo.uri.moduleUri("dojo.widget", "templates/richtextframe.html")) + ((dojo.doc().domain != currentDomain) ? ("#" + dojo.doc().domain) : "");
this.iframe.width = this.inheritWidth ? this._oldWidth : "100%";
if (this.height) {
this.iframe.style.height = this.height;
} else {
var height = this._oldHeight;
if (this._hasCollapseableMargin(this.domNode, "top")) {
height += this._firstChildContributingMargin;
}
if (this._hasCollapseableMargin(this.domNode, "bottom")) {
height += this._lastChildContributingMargin;
}
this.iframe.height = height;
}
var tmpContent = dojo.doc().createElement("div");
tmpContent.innerHTML = html;
this.editingArea.appendChild(tmpContent);
if (this.relativeImageUrls) {
var imgs = tmpContent.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
imgs[i].src = (new dojo.uri.Uri(dojo.global().location, imgs[i].src)).toString();
}
html = tmpContent.innerHTML;
}
var firstChild = dojo.html.firstElement(tmpContent);
var lastChild = dojo.html.lastElement(tmpContent);
if (firstChild) {
firstChild.style.marginTop = this._firstChildContributingMargin + "px";
}
if (lastChild) {
lastChild.style.marginBottom = this._lastChildContributingMargin + "px";
}
this.editingArea.appendChild(this.iframe);
if (dojo.render.html.safari) {
this.iframe.src = this.iframe.src;
}
var _iframeInitialized = false;
var ifrFunc = dojo.lang.hitch(this, function () {
if (!_iframeInitialized) {
_iframeInitialized = true;
} else {
return;
}
if (!this.editNode) {
if (this.iframe.contentWindow) {
this.window = this.iframe.contentWindow;
this.document = this.iframe.contentWindow.document;
} else {
if (this.iframe.contentDocument) {
this.window = this.iframe.contentDocument.window;
this.document = this.iframe.contentDocument;
}
}
var getStyle = (function (domNode) {
return function (style) {
return dojo.html.getStyle(domNode, style);
};
})(this.domNode);
var font = getStyle("font-weight") + " " + getStyle("font-size") + " " + getStyle("font-family");
var lineHeight = "1.0";
var lineHeightStyle = dojo.html.getUnitValue(this.domNode, "line-height");
if (lineHeightStyle.value && lineHeightStyle.units == "") {
lineHeight = lineHeightStyle.value;
}
dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:0;}" + "body{top:0;left:0;right:0;" + (((this.height) || (dojo.render.html.opera)) ? "" : "position:fixed;") + "font:" + font + ";" + "min-height:" + this.minHeight + ";" + "line-height:" + lineHeight + "}" + "p{margin: 1em 0 !important;}" + "body > *:first-child{padding-top:0 !important;margin-top:" + this._firstChildContributingMargin + "px !important;}" + "body > *:last-child{padding-bottom:0 !important;margin-bottom:" + this._lastChildContributingMargin + "px !important;}" + "li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n" + "li{min-height:1.2em;}" + "", this.document);
dojo.html.removeNode(tmpContent);
this.document.body.innerHTML = html;
if (oldMoz || dojo.render.html.safari) {
this.document.designMode = "on";
}
this.onLoad();
} else {
dojo.html.removeNode(tmpContent);
this.editNode.innerHTML = html;
this.onDisplayChanged();
}
});
if (this.editNode) {
ifrFunc();
} else {
if (dojo.render.html.moz) {
this.iframe.onload = function () {
setTimeout(ifrFunc, 250);
};
} else {
this.iframe.onload = ifrFunc;
}
}
}, _applyEditingAreaStyleSheets:function () {
var files = [];
if (this.styleSheets) {
files = this.styleSheets.split(";");
this.styleSheets = "";
}
files = files.concat(this.editingAreaStyleSheets);
this.editingAreaStyleSheets = [];
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
var url = files[i];
if (url) {
this.addStyleSheet(dojo.uri.dojoUri(url));
}
}
}
}, addStyleSheet:function (uri) {
var url = uri.toString();
if (dojo.lang.find(this.editingAreaStyleSheets, url) > -1) {
dojo.debug("dojo.widget.RichText.addStyleSheet: Style sheet " + url + " is already applied to the editing area!");
return;
}
if (url.charAt(0) == "." || (url.charAt(0) != "/" && !uri.host)) {
url = (new dojo.uri.Uri(dojo.global().location, url)).toString();
}
this.editingAreaStyleSheets.push(url);
if (this.document.createStyleSheet) {
this.document.createStyleSheet(url);
} else {
var head = this.document.getElementsByTagName("head")[0];
var stylesheet = this.document.createElement("link");
with (stylesheet) {
rel = "stylesheet";
type = "text/css";
href = url;
}
head.appendChild(stylesheet);
}
}, removeStyleSheet:function (uri) {
var url = uri.toString();
if (url.charAt(0) == "." || (url.charAt(0) != "/" && !uri.host)) {
url = (new dojo.uri.Uri(dojo.global().location, url)).toString();
}
var index = dojo.lang.find(this.editingAreaStyleSheets, url);
if (index == -1) {
dojo.debug("dojo.widget.RichText.removeStyleSheet: Style sheet " + url + " is not applied to the editing area so it can not be removed!");
return;
}
delete this.editingAreaStyleSheets[index];
var links = this.document.getElementsByTagName("link");
for (var i = 0; i < links.length; i++) {
if (links[i].href == url) {
if (dojo.render.html.ie) {
links[i].href = "";
}
dojo.html.removeNode(links[i]);
break;
}
}
}, _drawObject:function (html) {
this.object = dojo.html.createExternalElement(dojo.doc(), "object");
with (this.object) {
classid = "clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A";
width = this.inheritWidth ? this._oldWidth : "100%";
style.height = this.height ? this.height : (this._oldHeight + "px");
Scrollbars = this.height ? true : false;
Appearance = this._activeX.appearance.flat;
}
this.editorObject = this.object;
this.editingArea.appendChild(this.object);
this.object.attachEvent("DocumentComplete", dojo.lang.hitch(this, "onLoad"));
dojo.lang.forEach(this.events, function (e) {
this.object.attachEvent(e.toLowerCase(), dojo.lang.hitch(this, e));
}, this);
this.object.DocumentHTML = "<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" + "<html><title></title>" + "<style type=\"text/css\">" + " body,html { padding: 0; margin: 0; }" + (this.height ? "" : " body, { overflow: hidden; }") + "</style>" + "<body><div>" + html + "<div></body></html>";
this._cacheLocalBlockFormatNames();
}, _local2NativeFormatNames:{}, _native2LocalFormatNames:{}, _cacheLocalBlockFormatNames:function () {
if (!this._native2LocalFormatNames["p"]) {
var obj = this.object;
var error = false;
if (!obj) {
try {
obj = dojo.html.createExternalElement(dojo.doc(), "object");
obj.classid = "clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A";
dojo.body().appendChild(obj);
obj.DocumentHTML = "<html><head></head><body></body></html>";
}
catch (e) {
error = true;
}
}
try {
var oNamesParm = new ActiveXObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam");
obj.ExecCommand(this._activeX.command["getblockformatnames"], 0, oNamesParm);
var vbNamesArray = new VBArray(oNamesParm.Names);
var localFormats = vbNamesArray.toArray();
var nativeFormats = ["p", "pre", "address", "h1", "h2", "h3", "h4", "h5", "h6", "ol", "ul", "", "", "", "", "div"];
for (var i = 0; i < nativeFormats.length; ++i) {
if (nativeFormats[i].length > 0) {
this._local2NativeFormatNames[localFormats[i]] = nativeFormats[i];
this._native2LocalFormatNames[nativeFormats[i]] = localFormats[i];
}
}
}
catch (e) {
error = true;
}
if (obj && !this.object) {
dojo.body().removeChild(obj);
}
}
return !error;
}, _isResized:function () {
return false;
}, onLoad:function (e) {
this.isLoaded = true;
if (this.object) {
this.document = this.object.DOM;
this.window = this.document.parentWindow;
this.editNode = this.document.body.firstChild;
this.editingArea.style.height = this.height ? this.height : this.minHeight;
if (!this.height) {
this.connect(this, "onDisplayChanged", "_updateHeight");
}
this.window._frameElement = this.object;
} else {
if (this.iframe && !dojo.render.html.ie) {
this.editNode = this.document.body;
if (!this.height) {
this.connect(this, "onDisplayChanged", "_updateHeight");
}
try {
this.document.execCommand("useCSS", false, true);
this.document.execCommand("styleWithCSS", false, false);
}
catch (e2) {
}
if (dojo.render.html.safari) {
this.connect(this.editNode, "onblur", "onBlur");
this.connect(this.editNode, "onfocus", "onFocus");
this.connect(this.editNode, "onclick", "onFocus");
this.interval = setInterval(dojo.lang.hitch(this, "onDisplayChanged"), 750);
} else {
if (dojo.render.html.mozilla || dojo.render.html.opera) {
var doc = this.document;
var addListener = dojo.event.browser.addListener;
var self = this;
dojo.lang.forEach(this.events, function (e) {
var l = addListener(self.document, e.substr(2).toLowerCase(), dojo.lang.hitch(self, e));
if (e == "onBlur") {
var unBlur = {unBlur:function (e) {
dojo.event.browser.removeListener(doc, "blur", l);
}};
dojo.event.connect("before", self, "close", unBlur, "unBlur");
}
});
}
}
} else {
if (dojo.render.html.ie) {
if (!this.height) {
this.connect(this, "onDisplayChanged", "_updateHeight");
}
this.editNode.style.zoom = 1;
}
}
}
this._applyEditingAreaStyleSheets();
if (this.focusOnLoad) {
this.focus();
}
this.onDisplayChanged(e);
if (this.onLoadDeferred) {
this.onLoadDeferred.callback(true);
}
}, onKeyDown:function (e) {
if ((!e) && (this.object)) {
e = dojo.event.browser.fixEvent(this.window.event);
}
if ((dojo.render.html.ie) && (e.keyCode == e.KEY_TAB)) {
e.preventDefault();
e.stopPropagation();
this.execCommand((e.shiftKey ? "outdent" : "indent"));
} else {
if (dojo.render.html.ie) {
if ((65 <= e.keyCode) && (e.keyCode <= 90)) {
e.charCode = e.keyCode;
this.onKeyPress(e);
}
}
}
}, onKeyUp:function (e) {
return;
}, KEY_CTRL:1, onKeyPress:function (e) {
if ((!e) && (this.object)) {
e = dojo.event.browser.fixEvent(this.window.event);
}
var modifiers = e.ctrlKey ? this.KEY_CTRL : 0;
if (this._keyHandlers[e.key]) {
var handlers = this._keyHandlers[e.key], i = 0, handler;
while (handler = handlers[i++]) {
if (modifiers == handler.modifiers) {
e.preventDefault();
handler.handler.call(this);
break;
}
}
}
dojo.lang.setTimeout(this, this.onKeyPressed, 1, e);
}, addKeyHandler:function (key, modifiers, handler) {
if (!(this._keyHandlers[key] instanceof Array)) {
this._keyHandlers[key] = [];
}
this._keyHandlers[key].push({modifiers:modifiers || 0, handler:handler});
}, onKeyPressed:function (e) {
this.onDisplayChanged();
}, onClick:function (e) {
this.onDisplayChanged(e);
}, onBlur:function (e) {
}, _initialFocus:true, onFocus:function (e) {
if ((dojo.render.html.mozilla) && (this._initialFocus)) {
this._initialFocus = false;
if (dojo.string.trim(this.editNode.innerHTML) == "&nbsp;") {
this.placeCursorAtStart();
}
}
}, blur:function () {
if (this.iframe) {
this.window.blur();
} else {
if (this.object) {
this.document.body.blur();
} else {
if (this.editNode) {
this.editNode.blur();
}
}
}
}, focus:function () {
if (this.iframe && !dojo.render.html.ie) {
this.window.focus();
} else {
if (this.object) {
this.document.focus();
} else {
if (this.editNode && this.editNode.focus) {
this.editNode.focus();
} else {
dojo.debug("Have no idea how to focus into the editor!");
}
}
}
}, onDisplayChanged:function (e) {
}, _activeX:{command:{bold:5000, italic:5023, underline:5048, justifycenter:5024, justifyleft:5025, justifyright:5026, cut:5003, copy:5002, paste:5032, "delete":5004, undo:5049, redo:5033, removeformat:5034, selectall:5035, unlink:5050, indent:5018, outdent:5031, insertorderedlist:5030, insertunorderedlist:5051, inserttable:5022, insertcell:5019, insertcol:5020, insertrow:5021, deletecells:5005, deletecols:5006, deleterows:5007, mergecells:5029, splitcell:5047, setblockformat:5043, getblockformat:5011, getblockformatnames:5012, setfontname:5044, getfontname:5013, setfontsize:5045, getfontsize:5014, setbackcolor:5042, getbackcolor:5010, setforecolor:5046, getforecolor:5015, findtext:5008, font:5009, hyperlink:5016, image:5017, lockelement:5027, makeabsolute:5028, sendbackward:5036, bringforward:5037, sendbelowtext:5038, bringabovetext:5039, sendtoback:5040, bringtofront:5041, properties:5052}, ui:{"default":0, prompt:1, noprompt:2}, status:{notsupported:0, disabled:1, enabled:3, latched:7, ninched:11}, appearance:{flat:0, inset:1}, state:{unchecked:0, checked:1, gray:2}}, _normalizeCommand:function (cmd) {
var drh = dojo.render.html;
var command = cmd.toLowerCase();
if (command == "formatblock") {
if (drh.safari) {
command = "heading";
}
} else {
if (this.object) {
switch (command) {
case "createlink":
command = "hyperlink";
break;
case "insertimage":
command = "image";
break;
}
} else {
if (command == "hilitecolor" && !drh.mozilla) {
command = "backcolor";
}
}
}
return command;
}, _safariIsLeopard:function () {
var gt420 = false;
if (dojo.render.html.safari) {
var tmp = dojo.render.html.UA.split("AppleWebKit/")[1];
var ver = parseFloat(tmp.split(" ")[0]);
if (ver >= 420) {
gt420 = true;
}
}
return gt420;
}, queryCommandAvailable:function (command) {
var ie = 1;
var mozilla = 1 << 1;
var safari = 1 << 2;
var opera = 1 << 3;
var safari420 = 1 << 4;
var gt420 = this._safariIsLeopard();
function isSupportedBy(browsers) {
return {ie:Boolean(browsers & ie), mozilla:Boolean(browsers & mozilla), safari:Boolean(browsers & safari), safari420:Boolean(browsers & safari420), opera:Boolean(browsers & opera)};
}
var supportedBy = null;
switch (command.toLowerCase()) {
case "bold":
case "italic":
case "underline":
case "subscript":
case "superscript":
case "fontname":
case "fontsize":
case "forecolor":
case "hilitecolor":
case "justifycenter":
case "justifyfull":
case "justifyleft":
case "justifyright":
case "delete":
case "selectall":
supportedBy = isSupportedBy(mozilla | ie | safari | opera);
break;
case "createlink":
case "unlink":
case "removeformat":
case "inserthorizontalrule":
case "insertimage":
case "insertorderedlist":
case "insertunorderedlist":
case "indent":
case "outdent":
case "formatblock":
case "inserthtml":
case "undo":
case "redo":
case "strikethrough":
supportedBy = isSupportedBy(mozilla | ie | opera | safari420);
break;
case "blockdirltr":
case "blockdirrtl":
case "dirltr":
case "dirrtl":
case "inlinedirltr":
case "inlinedirrtl":
supportedBy = isSupportedBy(ie);
break;
case "cut":
case "copy":
case "paste":
supportedBy = isSupportedBy(ie | mozilla | safari420);
break;
case "inserttable":
supportedBy = isSupportedBy(mozilla | (this.object ? ie : 0));
break;
case "insertcell":
case "insertcol":
case "insertrow":
case "deletecells":
case "deletecols":
case "deleterows":
case "mergecells":
case "splitcell":
supportedBy = isSupportedBy(this.object ? ie : 0);
break;
default:
return false;
}
return (dojo.render.html.ie && supportedBy.ie) || (dojo.render.html.mozilla && supportedBy.mozilla) || (dojo.render.html.safari && supportedBy.safari) || (gt420 && supportedBy.safari420) || (dojo.render.html.opera && supportedBy.opera);
}, execCommand:function (command, argument) {
var returnValue;
this.focus();
command = this._normalizeCommand(command);
if (argument != undefined) {
if (command == "heading") {
throw new Error("unimplemented");
} else {
if (command == "formatblock") {
if (this.object) {
argument = this._native2LocalFormatNames[argument];
} else {
if (dojo.render.html.ie) {
argument = "<" + argument + ">";
}
}
}
}
}
if (this.object) {
switch (command) {
case "hilitecolor":
command = "setbackcolor";
break;
case "forecolor":
case "backcolor":
case "fontsize":
case "fontname":
command = "set" + command;
break;
case "formatblock":
command = "setblockformat";
}
if (command == "strikethrough") {
command = "inserthtml";
var range = this.document.selection.createRange();
if (!range.htmlText) {
return;
}
argument = range.htmlText.strike();
} else {
if (command == "inserthorizontalrule") {
command = "inserthtml";
argument = "<hr>";
}
}
if (command == "inserthtml") {
var range = this.document.selection.createRange();
if (this.document.selection.type.toUpperCase() == "CONTROL") {
for (var i = 0; i < range.length; i++) {
range.item(i).outerHTML = argument;
}
} else {
range.pasteHTML(argument);
range.select();
}
returnValue = true;
} else {
if (arguments.length == 1) {
returnValue = this.object.ExecCommand(this._activeX.command[command], this._activeX.ui.noprompt);
} else {
returnValue = this.object.ExecCommand(this._activeX.command[command], this._activeX.ui.noprompt, argument);
}
}
} else {
if (command == "inserthtml") {
if (dojo.render.html.ie) {
var insertRange = this.document.selection.createRange();
insertRange.pasteHTML(argument);
insertRange.select();
return true;
} else {
return this.document.execCommand(command, false, argument);
}
} else {
if ((command == "unlink") && (this.queryCommandEnabled("unlink")) && (dojo.render.html.mozilla)) {
var selection = this.window.getSelection();
var selectionRange = selection.getRangeAt(0);
var selectionStartContainer = selectionRange.startContainer;
var selectionStartOffset = selectionRange.startOffset;
var selectionEndContainer = selectionRange.endContainer;
var selectionEndOffset = selectionRange.endOffset;
var a = dojo.withGlobal(this.window, "getAncestorElement", dojo.html.selection, ["a"]);
dojo.withGlobal(this.window, "selectElement", dojo.html.selection, [a]);
returnValue = this.document.execCommand("unlink", false, null);
var selectionRange = this.document.createRange();
selectionRange.setStart(selectionStartContainer, selectionStartOffset);
selectionRange.setEnd(selectionEndContainer, selectionEndOffset);
selection.removeAllRanges();
selection.addRange(selectionRange);
return returnValue;
} else {
if ((command == "hilitecolor") && (dojo.render.html.mozilla)) {
this.document.execCommand("useCSS", false, false);
returnValue = this.document.execCommand(command, false, argument);
this.document.execCommand("useCSS", false, true);
} else {
if ((dojo.render.html.ie) && ((command == "backcolor") || (command == "forecolor"))) {
argument = arguments.length > 1 ? argument : null;
returnValue = this.document.execCommand(command, false, argument);
} else {
argument = arguments.length > 1 ? argument : null;
if (argument || command != "createlink") {
returnValue = this.document.execCommand(command, false, argument);
}
}
}
}
}
}
this.onDisplayChanged();
return returnValue;
}, queryCommandEnabled:function (command) {
command = this._normalizeCommand(command);
if (this.object) {
switch (command) {
case "hilitecolor":
command = "setbackcolor";
break;
case "forecolor":
case "backcolor":
case "fontsize":
case "fontname":
command = "set" + command;
break;
case "formatblock":
command = "setblockformat";
break;
case "strikethrough":
command = "bold";
break;
case "inserthorizontalrule":
return true;
}
if (typeof this._activeX.command[command] == "undefined") {
return false;
}
var status = this.object.QueryStatus(this._activeX.command[command]);
return ((status != this._activeX.status.notsupported) && (status != this._activeX.status.disabled));
} else {
if (dojo.render.html.mozilla) {
if (command == "unlink") {
return dojo.withGlobal(this.window, "hasAncestorElement", dojo.html.selection, ["a"]);
} else {
if (command == "inserttable") {
return true;
}
}
}
var elem = (dojo.render.html.ie) ? this.document.selection.createRange() : this.document;
return elem.queryCommandEnabled(command);
}
}, queryCommandState:function (command) {
command = this._normalizeCommand(command);
if (this.object) {
if (command == "forecolor") {
command = "setforecolor";
} else {
if (command == "backcolor") {
command = "setbackcolor";
} else {
if (command == "strikethrough") {
return dojo.withGlobal(this.window, "hasAncestorElement", dojo.html.selection, ["strike"]);
} else {
if (command == "inserthorizontalrule") {
return false;
}
}
}
}
if (typeof this._activeX.command[command] == "undefined") {
return null;
}
var status = this.object.QueryStatus(this._activeX.command[command]);
return ((status == this._activeX.status.latched) || (status == this._activeX.status.ninched));
} else {
return this.document.queryCommandState(command);
}
}, queryCommandValue:function (command) {
command = this._normalizeCommand(command);
if (this.object) {
switch (command) {
case "forecolor":
case "backcolor":
case "fontsize":
case "fontname":
command = "get" + command;
return this.object.execCommand(this._activeX.command[command], this._activeX.ui.noprompt);
case "formatblock":
var retvalue = this.object.execCommand(this._activeX.command["getblockformat"], this._activeX.ui.noprompt);
if (retvalue) {
return this._local2NativeFormatNames[retvalue];
}
}
} else {
if (dojo.render.html.ie && command == "formatblock") {
return this._local2NativeFormatNames[this.document.queryCommandValue(command)] || this.document.queryCommandValue(command);
}
return this.document.queryCommandValue(command);
}
}, placeCursorAtStart:function () {
this.focus();
if (dojo.render.html.moz && this.editNode.firstChild && this.editNode.firstChild.nodeType != dojo.dom.TEXT_NODE) {
dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode.firstChild]);
} else {
dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode]);
}
dojo.withGlobal(this.window, "collapse", dojo.html.selection, [true]);
}, placeCursorAtEnd:function () {
this.focus();
if (dojo.render.html.moz && this.editNode.lastChild && this.editNode.lastChild.nodeType != dojo.dom.TEXT_NODE) {
dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode.lastChild]);
} else {
dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode]);
}
dojo.withGlobal(this.window, "collapse", dojo.html.selection, [false]);
}, replaceEditorContent:function (html) {
html = this._preFilterContent(html);
if (this.isClosed) {
this.domNode.innerHTML = html;
} else {
if (this.window && this.window.getSelection && !dojo.render.html.moz) {
this.editNode.innerHTML = html;
} else {
if ((this.window && this.window.getSelection) || (this.document && this.document.selection)) {
this.execCommand("selectall");
if (dojo.render.html.moz && !html) {
html = "&nbsp;";
}
this.execCommand("inserthtml", html);
}
}
}
}, _preFilterContent:function (html) {
var ec = html;
dojo.lang.forEach(this.contentPreFilters, function (ef) {
ec = ef(ec);
});
if (this.contentDomPreFilters.length > 0) {
var dom = dojo.doc().createElement("div");
dom.style.display = "none";
dojo.body().appendChild(dom);
dom.innerHTML = ec;
dojo.lang.forEach(this.contentDomPreFilters, function (ef) {
dom = ef(dom);
});
ec = dom.innerHTML;
dojo.body().removeChild(dom);
}
return ec;
}, _postFilterContent:function (html) {
var ec = html;
if (this.contentDomPostFilters.length > 0) {
var dom = this.document.createElement("div");
dom.innerHTML = ec;
dojo.lang.forEach(this.contentDomPostFilters, function (ef) {
dom = ef(dom);
});
ec = dom.innerHTML;
}
dojo.lang.forEach(this.contentPostFilters, function (ef) {
ec = ef(ec);
});
return ec;
}, _lastHeight:0, _updateHeight:function () {
if (!this.isLoaded) {
return;
}
if (this.height) {
return;
}
var height = dojo.html.getBorderBox(this.editNode).height;
if (!height) {
height = dojo.html.getBorderBox(this.document.body).height;
}
if (height == 0) {
dojo.debug("Can not figure out the height of the editing area!");
return;
}
this._lastHeight = height;
this.editorObject.style.height = this._lastHeight + "px";
this.window.scrollTo(0, 0);
}, _saveContent:function (e) {
var saveTextarea = dojo.doc().getElementById("dojo.widget.RichText.savedContent");
saveTextarea.value += this._SEPARATOR + this.saveName + ":" + this.getEditorContent();
}, getEditorContent:function () {
var ec = "";
try {
ec = (this._content.length > 0) ? this._content : this.editNode.innerHTML;
if (dojo.string.trim(ec) == "&nbsp;") {
ec = "";
}
}
catch (e) {
}
if (dojo.render.html.ie && !this.object) {
var re = new RegExp("(?:<p>&nbsp;</p>[\n\r]*)+$", "i");
ec = ec.replace(re, "");
}
ec = this._postFilterContent(ec);
if (this.relativeImageUrls) {
var siteBase = dojo.global().location.protocol + "//" + dojo.global().location.host;
var pathBase = dojo.global().location.pathname;
if (pathBase.match(/\/$/)) {
} else {
var pathParts = pathBase.split("/");
if (pathParts.length) {
pathParts.pop();
}
pathBase = pathParts.join("/") + "/";
}
var sameSite = new RegExp("(<img[^>]* src=[\"'])(" + siteBase + "(" + pathBase + ")?)", "ig");
ec = ec.replace(sameSite, "$1");
}
return ec;
}, close:function (save, force) {
if (this.isClosed) {
return false;
}
if (arguments.length == 0) {
save = true;
}
this._content = this._postFilterContent(this.editNode.innerHTML);
var changed = (this.savedContent != this._content);
if (this.interval) {
clearInterval(this.interval);
}
if (dojo.render.html.ie && !this.object) {
dojo.event.browser.clean(this.editNode);
}
if (this.iframe) {
delete this.iframe;
}
if (this.textarea) {
with (this.textarea.style) {
position = "";
left = top = "";
if (dojo.render.html.ie) {
overflow = this.__overflow;
this.__overflow = null;
}
}
if (save) {
this.textarea.value = this._content;
} else {
this.textarea.value = this.savedContent;
}
dojo.html.removeNode(this.domNode);
this.domNode = this.textarea;
} else {
if (save) {
if (dojo.render.html.moz) {
var nc = dojo.doc().createElement("span");
this.domNode.appendChild(nc);
nc.innerHTML = this.editNode.innerHTML;
} else {
this.domNode.innerHTML = this._content;
}
} else {
this.domNode.innerHTML = this.savedContent;
}
}
dojo.html.removeClass(this.domNode, "RichTextEditable");
this.isClosed = true;
this.isLoaded = false;
delete this.editNode;
if (this.window._frameElement) {
this.window._frameElement = null;
}
this.window = null;
this.document = null;
this.object = null;
this.editingArea = null;
this.editorObject = null;
return changed;
}, destroyRendering:function () {
}, destroy:function () {
this.destroyRendering();
if (!this.isClosed) {
this.close(false);
}
dojo.widget.RichText.superclass.destroy.call(this);
}, connect:function (targetObj, targetFunc, thisFunc) {
dojo.event.connect(targetObj, targetFunc, this, thisFunc);
}, disconnect:function (targetObj, targetFunc, thisFunc) {
dojo.event.disconnect(targetObj, targetFunc, this, thisFunc);
}, disconnectAllWithRoot:function (targetObj) {
dojo.deprecated("disconnectAllWithRoot", "is deprecated. No need to disconnect manually", "0.5");
}, _fixContentForMoz:function (html) {
html = html.replace(/<strong([ \>])/gi, "<b$1");
html = html.replace(/<\/strong>/gi, "</b>");
html = html.replace(/<em([ \>])/gi, "<i$1");
html = html.replace(/<\/em>/gi, "</i>");
return html;
}});
 
/trunk/api/js/dojo/src/widget/Clock.js
New file
0,0 → 1,140
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Clock");
dojo.require("dojo.widget.*");
dojo.require("dojo.gfx.*");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.timing.Timer");
dojo.widget.defineWidget("dojo.widget.Clock", dojo.widget.HtmlWidget, function () {
var self = this;
this.timeZoneOffset = 0;
this.label = "";
this.date = new Date();
this.handColor = "#788598";
this.handStroke = "#6f7b8c";
this.secondHandColor = [201, 4, 5, 0.8];
this.topLabelColor = "#efefef";
this.labelColor = "#fff";
this.timer = new dojo.lang.timing.Timer(1000);
this.center = {x:75, y:75};
this.hands = {hour:null, minute:null, second:null};
this.shadows = {hour:{shadow:null, shift:{dx:2, dy:2}}, minute:{shadow:null, shift:{dx:2, dy:3}}, second:{shadow:null, shift:{dx:4, dy:4}}};
this.image = dojo.uri.moduleUri("dojo.widget", "templates/images/clock.png");
this.surface = null;
this.labelNode = null;
this.topLabelNode = null;
this.draw = function () {
self.date = new Date();
var h = (self.date.getHours() + self.timeZoneOffset) % 12;
var m = self.date.getMinutes();
var s = self.date.getSeconds();
self.placeHour(h, m, s);
self.placeMinute(m, s);
self.placeSecond(s);
self.topLabelNode.innerHTML = ((self.date.getHours() + self.timeZoneOffset) > 11) ? "PM" : "AM";
};
this.timer.onTick = self.draw;
}, {set:function (dt) {
this.date = dt;
if (!this.timer.isRunning) {
this.draw();
}
}, start:function () {
this.timer.start();
}, stop:function () {
this.timer.stop();
}, _initPoly:function (parent, points) {
var path = parent.createPath();
var first = true;
dojo.lang.forEach(points, function (c) {
if (first) {
path.moveTo(c.x, c.y);
first = false;
} else {
path.lineTo(c.x, c.y);
}
});
return path;
}, _placeHand:function (shape, angle, shift) {
var move = {dx:this.center.x + (shift ? shift.dx : 0), dy:this.center.y + (shift ? shift.dy : 0)};
return shape.setTransform([move, dojo.gfx.matrix.rotateg(-angle)]);
}, placeHour:function (h, m, s) {
var angle = 30 * (h + m / 60 + s / 3600);
this._placeHand(this.hands.hour, angle);
this._placeHand(this.shadows.hour.shadow, angle, this.shadows.hour.shift);
}, placeMinute:function (m, s) {
var angle = 6 * (m + s / 60);
this._placeHand(this.hands.minute, angle);
this._placeHand(this.shadows.minute.shadow, angle, this.shadows.minute.shift);
}, placeSecond:function (s) {
var angle = 6 * s;
this._placeHand(this.hands.second, angle);
this._placeHand(this.shadows.second.shadow, angle, this.shadows.second.shift);
}, init:function () {
if (this.domNode.style.position != "absolute") {
this.domNode.style.position = "relative";
}
while (this.domNode.childNodes.length > 0) {
this.domNode.removeChild(this.domNode.childNodes[0]);
}
this.domNode.style.width = "150px";
this.domNode.style.height = "150px";
this.surface = dojo.gfx.createSurface(this.domNode, 150, 150);
this.surface.createRect({width:150, height:150});
this.surface.createImage({width:150, height:150, src:this.image + ""});
var hP = [{x:-3, y:-4}, {x:3, y:-4}, {x:1, y:-27}, {x:-1, y:-27}, {x:-3, y:-4}];
var mP = [{x:-3, y:-4}, {x:3, y:-4}, {x:1, y:-38}, {x:-1, y:-38}, {x:-3, y:-4}];
var sP = [{x:-2, y:-2}, {x:2, y:-2}, {x:1, y:-45}, {x:-1, y:-45}, {x:-2, y:-2}];
this.shadows.hour.shadow = this._initPoly(this.surface, hP).setFill([0, 0, 0, 0.1]);
this.hands.hour = this._initPoly(this.surface, hP).setStroke({color:this.handStroke, width:1}).setFill({type:"linear", x1:0, y1:0, x2:0, y2:-27, colors:[{offset:0, color:"#fff"}, {offset:0.33, color:this.handColor}]});
this.shadows.minute.shadow = this._initPoly(this.surface, mP).setFill([0, 0, 0, 0.1]);
this.hands.minute = this._initPoly(this.surface, mP).setStroke({color:this.handStroke, width:1}).setFill({type:"linear", x1:0, y1:0, x2:0, y2:-38, colors:[{offset:0, color:"#fff"}, {offset:0.33, color:this.handColor}]});
this.surface.createCircle({r:6}).setStroke({color:this.handStroke, width:2}).setFill("#fff").setTransform({dx:75, dy:75});
this.shadows.second.shadow = this._initPoly(this.surface, sP).setFill([0, 0, 0, 0.1]);
this.hands.second = this._initPoly(this.surface, sP).setFill(this.secondHandColor);
this.surface.createCircle({r:4}).setFill(this.secondHandColor).setTransform({dx:75, dy:75});
this.topLabelNode = document.createElement("div");
with (this.topLabelNode.style) {
position = "absolute";
top = "3px";
left = "0px";
color = this.topLabelColor;
textAlign = "center";
width = "150px";
fontFamily = "sans-serif";
fontSize = "11px";
textTransform = "uppercase";
fontWeight = "bold";
}
this.topLabelNode.innerHTML = ((this.date.getHours() + this.timeZoneOffset) > 11) ? "PM" : "AM";
this.domNode.appendChild(this.topLabelNode);
this.labelNode = document.createElement("div");
with (this.labelNode.style) {
position = "absolute";
top = "134px";
left = "0px";
color = this.labelColor;
textAlign = "center";
width = "150px";
fontFamily = "sans-serif";
fontSize = "10px";
textTransform = "uppercase";
fontWeight = "bold";
}
this.labelNode.innerHTML = this.label || "&nbsp;";
this.domNode.appendChild(this.labelNode);
this.draw();
}, postCreate:function () {
this.init();
this.start();
}});
 
/trunk/api/js/dojo/src/widget/TreeControllerExtension.js
New file
0,0 → 1,58
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeControllerExtension");
dojo.declare("dojo.widget.TreeControllerExtension", null, {saveExpandedIndices:function (node, field) {
var obj = {};
for (var i = 0; i < node.children.length; i++) {
if (node.children[i].isExpanded) {
var key = dojo.lang.isUndefined(field) ? i : node.children[i][field];
obj[key] = this.saveExpandedIndices(node.children[i], field);
}
}
return obj;
}, restoreExpandedIndices:function (node, savedIndices, field) {
var _this = this;
var handler = function (node, savedIndices) {
this.node = node;
this.savedIndices = savedIndices;
this.process = function () {
_this.restoreExpandedIndices(this.node, this.savedIndices, field);
};
};
for (var i = 0; i < node.children.length; i++) {
var child = node.children[i];
var found = false;
var key = -1;
if (dojo.lang.isUndefined(field) && savedIndices[i]) {
found = true;
key = i;
}
if (field) {
for (var key in savedIndices) {
if (key == child[field]) {
found = true;
break;
}
}
}
if (found) {
var h = new handler(child, savedIndices[key]);
_this.expand(child, false, h, h.process);
} else {
if (child.isExpanded) {
dojo.lang.forEach(child.getDescendants(), function (elem) {
_this.collapse(elem);
});
}
}
}
}});
 
/trunk/api/js/dojo/src/widget/SlideShow.js
New file
0,0 → 1,75
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.SlideShow");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.html.display");
dojo.widget.defineWidget("dojo.widget.SlideShow", dojo.widget.HtmlWidget, {templateString:"<div style=\"position: relative; padding: 3px;\">\n\t\t<div>\n\t\t\t<input type=\"button\" value=\"pause\" \n\t\t\t\tdojoAttachPoint=\"startStopButton\"\n\t\t\t\tdojoAttachEvent=\"onClick: togglePaused;\">\n\t\t</div>\n\t\t<div style=\"position: relative; width: ${this.width}; height: ${this.height};\"\n\t\t\tdojoAttachPoint=\"imagesContainer\"\n\t\t\tdojoAttachEvent=\"onClick: togglePaused;\">\n\t\t\t<img dojoAttachPoint=\"img1\" class=\"slideShowImg\" \n\t\t\t\tstyle=\"z-index: 1; width: ${this.width}; height: ${this.height};\" />\n\t\t\t<img dojoAttachPoint=\"img2\" class=\"slideShowImg\" \n\t\t\t\tstyle=\"z-index: 0; width: ${this.width}; height: ${this.height};\" />\n\t\t</div>\t\n</div>\n", templateCssString:".slideShowImg {\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px; \n\tborder: 2px solid #4d4d4d;\n\tpadding: 0px;\n\tmargin: 0px;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/SlideShow.css"), imgUrls:[], imgUrlBase:"", delay:4000, transitionInterval:2000, imgWidth:800, imgHeight:600, preventCache:false, stopped:false, _urlsIdx:0, _background:"img2", _foreground:"img1", fadeAnim:null, startStopButton:null, img1:null, img2:null, postMixInProperties:function () {
this.width = this.imgWidth + "px";
this.height = this.imgHeight + "px";
}, fillInTemplate:function () {
if (dojo.render.html.safari && this.imgUrls.length == 2) {
this.preventCache = true;
}
dojo.html.setOpacity(this.img1, 0.9999);
dojo.html.setOpacity(this.img2, 0.9999);
if (this.imgUrls.length > 1) {
this.img2.src = this.imgUrlBase + this.imgUrls[this._urlsIdx++] + this._getUrlSuffix();
this._endTransition();
} else {
this.img1.src = this.imgUrlBase + this.imgUrls[this._urlsIdx++] + this._getUrlSuffix();
}
}, _getUrlSuffix:function () {
if (this.preventCache) {
return "?ts=" + (new Date()).getTime();
} else {
return "";
}
}, togglePaused:function () {
if (this.stopped) {
this.stopped = false;
this._backgroundImageLoaded();
this.startStopButton.value = "pause";
} else {
this.stopped = true;
this.startStopButton.value = "play";
}
}, _backgroundImageLoaded:function () {
if (this.stopped) {
return;
}
if (this.fadeAnim) {
this.fadeAnim.stop();
}
this.fadeAnim = dojo.lfx.fadeOut(this[this._foreground], this.transitionInterval, null);
dojo.event.connect(this.fadeAnim, "onEnd", this, "_endTransition");
this.fadeAnim.play();
}, _endTransition:function () {
with (this[this._background].style) {
zIndex = parseInt(zIndex) + 1;
}
with (this[this._foreground].style) {
zIndex = parseInt(zIndex) - 1;
}
var tmp = this._foreground;
this._foreground = this._background;
this._background = tmp;
this._loadNextImage();
}, _loadNextImage:function () {
dojo.event.kwConnect({srcObj:this[this._background], srcFunc:"onload", adviceObj:this, adviceFunc:"_backgroundImageLoaded", once:true, delay:this.delay});
dojo.html.setOpacity(this[this._background], 1);
this[this._background].src = this.imgUrlBase + this.imgUrls[this._urlsIdx++];
if (this._urlsIdx > (this.imgUrls.length - 1)) {
this._urlsIdx = 0;
}
}});
 
/trunk/api/js/dojo/src/widget/TreeWithNode.js
New file
0,0 → 1,113
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.lang.declare");
dojo.provide("dojo.widget.TreeWithNode");
dojo.declare("dojo.widget.TreeWithNode", null, function () {
}, {loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, state:"UNCHECKED", objectId:"", isContainer:true, lockLevel:0, lock:function () {
this.lockLevel++;
}, unlock:function () {
if (!this.lockLevel) {
dojo.raise(this.widgetType + " unlock: not locked");
}
this.lockLevel--;
}, expandLevel:0, loadLevel:0, hasLock:function () {
return this.lockLevel > 0;
}, isLocked:function () {
var node = this;
while (true) {
if (node.lockLevel) {
return true;
}
if (!node.parent || node.isTree) {
break;
}
node = node.parent;
}
return false;
}, flushLock:function () {
this.lockLevel = 0;
}, actionIsDisabled:function (action) {
var disabled = false;
if (dojo.lang.inArray(this.actionsDisabled, action)) {
disabled = true;
}
if (this.isTreeNode) {
if (!this.tree.allowAddChildToLeaf && action == this.actions.ADDCHILD && !this.isFolder) {
disabled = true;
}
}
return disabled;
}, actionIsDisabledNow:function (action) {
return this.actionIsDisabled(action) || this.isLocked();
}, setChildren:function (childrenArray) {
if (this.isTreeNode && !this.isFolder) {
this.setFolder();
} else {
if (this.isTreeNode) {
this.state = this.loadStates.LOADED;
}
}
var hadChildren = this.children.length > 0;
if (hadChildren && childrenArray) {
this.destroyChildren();
}
if (childrenArray) {
this.children = childrenArray;
}
var hasChildren = this.children.length > 0;
if (this.isTreeNode && hasChildren != hadChildren) {
this.viewSetHasChildren();
}
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (!(child instanceof dojo.widget.Widget)) {
child = this.children[i] = this.tree.createNode(child);
var childWidgetCreated = true;
} else {
var childWidgetCreated = false;
}
if (!child.parent) {
child.parent = this;
if (this.tree !== child.tree) {
child.updateTree(this.tree);
}
child.viewAddLayout();
this.containerNode.appendChild(child.domNode);
var message = {child:child, index:i, parent:this, childWidgetCreated:childWidgetCreated};
delete dojo.widget.manager.topWidgets[child.widgetId];
dojo.event.topic.publish(this.tree.eventNames.afterAddChild, message);
}
if (this.tree.eagerWidgetInstantiation) {
dojo.lang.forEach(this.children, function (child) {
child.setChildren();
});
}
}
}, doAddChild:function (child, index) {
return this.addChild(child, index, true);
}, addChild:function (child, index, dontPublishEvent) {
if (dojo.lang.isUndefined(index)) {
index = this.children.length;
}
if (!child.isTreeNode) {
dojo.raise("You can only add TreeNode widgets to a " + this.widgetType + " widget!");
return;
}
this.children.splice(index, 0, child);
child.parent = this;
child.addedTo(this, index, dontPublishEvent);
delete dojo.widget.manager.topWidgets[child.widgetId];
}, onShow:function () {
this.animationInProgress = false;
}, onHide:function () {
this.animationInProgress = false;
}});
 
/trunk/api/js/dojo/src/widget/TreeDemo.js
New file
0,0 → 1,83
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeDemo");
dojo.require("dojo.Deferred");
dojo.widget.TreeDemo = {reportIfDefered:function (res) {
if (res instanceof dojo.Deferred) {
res.addCallbacks(function (res) {
return res;
}, function (err) {
dojo.debug("Error");
dojo.debugShallow(err);
});
}
}, resetRandomChildren:function (maxCount) {
this.randomChildrenMaxCount = maxCount;
this.randomChildrenCount = 0;
this.randomChildrenDepth = 0;
}, makeRandomChildren:function (title) {
this.randomChildrenDepth++;
var children = [];
for (var i = 1; i <= 5; i++) {
var t = title + (this.randomChildrenDepth == 1 ? "" : ".") + i;
var node = {title:t};
children.push(node);
this.randomChildrenCount++;
if (this.randomChildrenCount >= this.randomChildrenMaxCount) {
break;
}
}
var i = 1;
var _this = this;
dojo.lang.forEach(children, function (child) {
var t = title + (_this.randomChildrenDepth == 1 ? "" : ".") + i;
i++;
if (_this.randomChildrenCount < _this.randomChildrenMaxCount && (_this.randomChildrenDepth == 1 && child === children[0] || _this.randomChildrenDepth < 5 && Math.random() > 0.3)) {
child.children = _this.makeRandomChildren(t);
}
});
this.randomChildrenDepth--;
return children;
}, bindDemoMenu:function (controller) {
var _t = this;
dojo.event.topic.subscribe("treeContextMenuDestroy/engage", function (menuItem) {
var node = menuItem.getTreeNode();
_t.reportIfDefered(controller.destroyChild(node));
});
dojo.event.topic.subscribe("treeContextMenuRefresh/engage", function (menuItem) {
var node = menuItem.getTreeNode();
_t.reportIfDefered(controller.refreshChildren(node));
});
dojo.event.topic.subscribe("treeContextMenuCreate/engage", function (menuItem) {
var node = menuItem.getTreeNode();
var d = controller.createAndEdit(node, 0);
_t.reportIfDefered(d);
});
dojo.event.topic.subscribe("treeContextMenuUp/engage", function (menuItem) {
var node = menuItem.getTreeNode();
if (node.isFirstChild()) {
return;
}
_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() - 1));
});
dojo.event.topic.subscribe("treeContextMenuDown/engage", function (menuItem) {
var node = menuItem.getTreeNode();
if (node.isLastChild()) {
return;
}
_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() + 1));
});
dojo.event.topic.subscribe("treeContextMenuEdit/engage", function (menuItem) {
var node = menuItem.getTreeNode();
_t.reportIfDefered(controller.editLabelStart(node));
});
}};
 
/trunk/api/js/dojo/src/widget/UsTextbox.js
New file
0,0 → 1,34
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.UsTextbox");
dojo.require("dojo.widget.ValidationTextbox");
dojo.require("dojo.validate.us");
dojo.widget.defineWidget("dojo.widget.UsStateTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties) {
dojo.widget.UsStateTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.allowterritories) {
this.flags.allowTerritories = (localProperties.allowterritories == "true");
}
if (localProperties.allowmilitary) {
this.flags.allowMilitary = (localProperties.allowmilitary == "true");
}
}, isValid:function () {
return dojo.validate.us.isState(this.textbox.value, this.flags);
}});
dojo.widget.defineWidget("dojo.widget.UsZipTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
return dojo.validate.us.isZipCode(this.textbox.value);
}});
dojo.widget.defineWidget("dojo.widget.UsSocialSecurityNumberTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
return dojo.validate.us.isSocialSecurityNumber(this.textbox.value);
}});
dojo.widget.defineWidget("dojo.widget.UsPhoneNumberTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
return dojo.validate.us.isPhoneNumber(this.textbox.value);
}});
 
/trunk/api/js/dojo/src/widget/TreeNode.js
New file
0,0 → 1,244
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeNode");
dojo.require("dojo.html.*");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.widget.defineWidget("dojo.widget.TreeNode", dojo.widget.HtmlWidget, function () {
this.actionsDisabled = [];
}, {widgetType:"TreeNode", loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, actions:{MOVE:"MOVE", REMOVE:"REMOVE", EDIT:"EDIT", ADDCHILD:"ADDCHILD"}, isContainer:true, lockLevel:0, templateString:("<div class=\"dojoTreeNode\"> " + "<span treeNode=\"${this.widgetId}\" class=\"dojoTreeNodeLabel\" dojoAttachPoint=\"labelNode\"> " + "\t\t<span dojoAttachPoint=\"titleNode\" dojoAttachEvent=\"onClick: onTitleClick\" class=\"dojoTreeNodeLabelTitle\">${this.title}</span> " + "</span> " + "<span class=\"dojoTreeNodeAfterLabel\" dojoAttachPoint=\"afterLabelNode\">${this.afterLabel}</span> " + "<div dojoAttachPoint=\"containerNode\" style=\"display:none\"></div> " + "</div>").replace(/(>|<)\s+/g, "$1"), childIconSrc:"", childIconFolderSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/closed.gif"), childIconDocumentSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/document.gif"), childIcon:null, isTreeNode:true, objectId:"", afterLabel:"", afterLabelNode:null, expandIcon:null, title:"", object:"", isFolder:false, labelNode:null, titleNode:null, imgs:null, expandLevel:"", tree:null, depth:0, isExpanded:false, state:null, domNodeInitialized:false, isFirstChild:function () {
return this.getParentIndex() == 0 ? true : false;
}, isLastChild:function () {
return this.getParentIndex() == this.parent.children.length - 1 ? true : false;
}, lock:function () {
return this.tree.lock.apply(this, arguments);
}, unlock:function () {
return this.tree.unlock.apply(this, arguments);
}, isLocked:function () {
return this.tree.isLocked.apply(this, arguments);
}, cleanLock:function () {
return this.tree.cleanLock.apply(this, arguments);
}, actionIsDisabled:function (action) {
var _this = this;
var disabled = false;
if (this.tree.strictFolders && action == this.actions.ADDCHILD && !this.isFolder) {
disabled = true;
}
if (dojo.lang.inArray(_this.actionsDisabled, action)) {
disabled = true;
}
if (this.isLocked()) {
disabled = true;
}
return disabled;
}, getInfo:function () {
var info = {widgetId:this.widgetId, objectId:this.objectId, index:this.getParentIndex(), isFolder:this.isFolder};
return info;
}, initialize:function (args, frag) {
this.state = this.loadStates.UNCHECKED;
for (var i = 0; i < this.actionsDisabled.length; i++) {
this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
}
this.expandLevel = parseInt(this.expandLevel);
}, adjustDepth:function (depthDiff) {
for (var i = 0; i < this.children.length; i++) {
this.children[i].adjustDepth(depthDiff);
}
this.depth += depthDiff;
if (depthDiff > 0) {
for (var i = 0; i < depthDiff; i++) {
var img = this.tree.makeBlankImg();
this.imgs.unshift(img);
dojo.html.insertBefore(this.imgs[0], this.domNode.firstChild);
}
}
if (depthDiff < 0) {
for (var i = 0; i < -depthDiff; i++) {
this.imgs.shift();
dojo.html.removeNode(this.domNode.firstChild);
}
}
}, markLoading:function () {
this._markLoadingSavedIcon = this.expandIcon.src;
this.expandIcon.src = this.tree.expandIconSrcLoading;
}, unMarkLoading:function () {
if (!this._markLoadingSavedIcon) {
return;
}
var im = new Image();
im.src = this.tree.expandIconSrcLoading;
if (this.expandIcon.src == im.src) {
this.expandIcon.src = this._markLoadingSavedIcon;
}
this._markLoadingSavedIcon = null;
}, setFolder:function () {
dojo.event.connect(this.expandIcon, "onclick", this, "onTreeClick");
this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;
this.isFolder = true;
}, createDOMNode:function (tree, depth) {
this.tree = tree;
this.depth = depth;
this.imgs = [];
for (var i = 0; i < this.depth + 1; i++) {
var img = this.tree.makeBlankImg();
this.domNode.insertBefore(img, this.labelNode);
this.imgs.push(img);
}
this.expandIcon = this.imgs[this.imgs.length - 1];
this.childIcon = this.tree.makeBlankImg();
this.imgs.push(this.childIcon);
dojo.html.insertBefore(this.childIcon, this.titleNode);
if (this.children.length || this.isFolder) {
this.setFolder();
} else {
this.state = this.loadStates.LOADED;
}
dojo.event.connect(this.childIcon, "onclick", this, "onIconClick");
for (var i = 0; i < this.children.length; i++) {
this.children[i].parent = this;
var node = this.children[i].createDOMNode(this.tree, this.depth + 1);
this.containerNode.appendChild(node);
}
if (this.children.length) {
this.state = this.loadStates.LOADED;
}
this.updateIcons();
this.domNodeInitialized = true;
dojo.event.topic.publish(this.tree.eventNames.createDOMNode, {source:this});
return this.domNode;
}, onTreeClick:function (e) {
dojo.event.topic.publish(this.tree.eventNames.treeClick, {source:this, event:e});
}, onIconClick:function (e) {
dojo.event.topic.publish(this.tree.eventNames.iconClick, {source:this, event:e});
}, onTitleClick:function (e) {
dojo.event.topic.publish(this.tree.eventNames.titleClick, {source:this, event:e});
}, markSelected:function () {
dojo.html.addClass(this.titleNode, "dojoTreeNodeLabelSelected");
}, unMarkSelected:function () {
dojo.html.removeClass(this.titleNode, "dojoTreeNodeLabelSelected");
}, updateExpandIcon:function () {
if (this.isFolder) {
this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;
} else {
this.expandIcon.src = this.tree.blankIconSrc;
}
}, updateExpandGrid:function () {
if (this.tree.showGrid) {
if (this.depth) {
this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);
} else {
if (this.isFirstChild()) {
this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcX : this.tree.gridIconSrcY);
} else {
this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);
}
}
} else {
this.setGridImage(-2, this.tree.blankIconSrc);
}
}, updateChildGrid:function () {
if ((this.depth || this.tree.showRootGrid) && this.tree.showGrid) {
this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcP : this.tree.gridIconSrcC);
} else {
if (this.tree.showGrid && !this.tree.showRootGrid) {
this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcZ : this.tree.blankIconSrc);
} else {
this.setGridImage(-1, this.tree.blankIconSrc);
}
}
}, updateParentGrid:function () {
var parent = this.parent;
for (var i = 0; i < this.depth; i++) {
var idx = this.imgs.length - (3 + i);
var img = (this.tree.showGrid && !parent.isLastChild()) ? this.tree.gridIconSrcV : this.tree.blankIconSrc;
this.setGridImage(idx, img);
parent = parent.parent;
}
}, updateExpandGridColumn:function () {
if (!this.tree.showGrid) {
return;
}
var _this = this;
var icon = this.isLastChild() ? this.tree.blankIconSrc : this.tree.gridIconSrcV;
dojo.lang.forEach(_this.getDescendants(), function (node) {
node.setGridImage(_this.depth, icon);
});
this.updateExpandGrid();
}, updateIcons:function () {
this.imgs[0].style.display = this.tree.showRootGrid ? "inline" : "none";
this.buildChildIcon();
this.updateExpandGrid();
this.updateChildGrid();
this.updateParentGrid();
dojo.profile.stop("updateIcons");
}, buildChildIcon:function () {
if (this.childIconSrc) {
this.childIcon.src = this.childIconSrc;
}
this.childIcon.style.display = this.childIconSrc ? "inline" : "none";
}, setGridImage:function (idx, src) {
if (idx < 0) {
idx = this.imgs.length + idx;
}
this.imgs[idx].style.backgroundImage = "url(" + src + ")";
}, updateIconTree:function () {
this.tree.updateIconTree.call(this);
}, expand:function () {
if (this.isExpanded) {
return;
}
if (this.children.length) {
this.showChildren();
}
this.isExpanded = true;
this.updateExpandIcon();
dojo.event.topic.publish(this.tree.eventNames.expand, {source:this});
}, collapse:function () {
if (!this.isExpanded) {
return;
}
this.hideChildren();
this.isExpanded = false;
this.updateExpandIcon();
dojo.event.topic.publish(this.tree.eventNames.collapse, {source:this});
}, hideChildren:function () {
this.tree.toggleObj.hide(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onHide"));
if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {
dojo.dnd.dragManager.cacheTargetLocations();
}
}, showChildren:function () {
this.tree.toggleObj.show(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onShow"));
if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {
dojo.dnd.dragManager.cacheTargetLocations();
}
}, addChild:function () {
return this.tree.addChild.apply(this, arguments);
}, doAddChild:function () {
return this.tree.doAddChild.apply(this, arguments);
}, edit:function (props) {
dojo.lang.mixin(this, props);
if (props.title) {
this.titleNode.innerHTML = this.title;
}
if (props.afterLabel) {
this.afterLabelNode.innerHTML = this.afterLabel;
}
if (props.childIconSrc) {
this.buildChildIcon();
}
}, removeNode:function () {
return this.tree.removeNode.apply(this, arguments);
}, doRemoveNode:function () {
return this.tree.doRemoveNode.apply(this, arguments);
}, toString:function () {
return "[" + this.widgetType + " Tree:" + this.tree + " ID:" + this.widgetId + " Title:" + this.title + "]";
}});
 
/trunk/api/js/dojo/src/widget/TreeExpandToNodeOnSelect.js
New file
0,0 → 1,20
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeExpandToNodeOnSelect");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.TreeExpandToNodeOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", withSelected:false, initialize:function () {
this.selector = dojo.widget.byId(this.selector);
this.controller = dojo.widget.byId(this.controller);
dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");
}, onSelectEvent:function (message) {
this.controller.expandToNode(message.node, this.withSelected);
}});
 
/trunk/api/js/dojo/src/widget/PopupContainer.js
New file
0,0 → 1,295
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.PopupContainer");
dojo.require("dojo.html.style");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.selection");
dojo.require("dojo.html.iframe");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.declare("dojo.widget.PopupContainerBase", null, function () {
this.queueOnAnimationFinish = [];
}, {isShowingNow:false, currentSubpopup:null, beginZIndex:1000, parentPopup:null, parent:null, popupIndex:0, aroundBox:dojo.html.boxSizing.BORDER_BOX, openedForWindow:null, processKey:function (evt) {
return false;
}, applyPopupBasicStyle:function () {
with (this.domNode.style) {
display = "none";
position = "absolute";
}
}, aboutToShow:function () {
}, open:function (x, y, parent, explodeSrc, orient, padding) {
if (this.isShowingNow) {
return;
}
if (this.animationInProgress) {
this.queueOnAnimationFinish.push(this.open, arguments);
return;
}
this.aboutToShow();
var around = false, node, aroundOrient;
if (typeof x == "object") {
node = x;
aroundOrient = explodeSrc;
explodeSrc = parent;
parent = y;
around = true;
}
this.parent = parent;
dojo.body().appendChild(this.domNode);
explodeSrc = explodeSrc || parent["domNode"] || [];
var parentPopup = null;
this.isTopLevel = true;
while (parent) {
if (parent !== this && (parent.setOpenedSubpopup != undefined && parent.applyPopupBasicStyle != undefined)) {
parentPopup = parent;
this.isTopLevel = false;
parentPopup.setOpenedSubpopup(this);
break;
}
parent = parent.parent;
}
this.parentPopup = parentPopup;
this.popupIndex = parentPopup ? parentPopup.popupIndex + 1 : 1;
if (this.isTopLevel) {
var button = dojo.html.isNode(explodeSrc) ? explodeSrc : null;
dojo.widget.PopupManager.opened(this, button);
}
if (this.isTopLevel && !dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.isCollapsed)) {
this._bookmark = dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.getBookmark);
} else {
this._bookmark = null;
}
if (explodeSrc instanceof Array) {
explodeSrc = {left:explodeSrc[0], top:explodeSrc[1], width:0, height:0};
}
with (this.domNode.style) {
display = "";
zIndex = this.beginZIndex + this.popupIndex;
}
if (around) {
this.move(node, padding, aroundOrient);
} else {
this.move(x, y, padding, orient);
}
this.domNode.style.display = "none";
this.explodeSrc = explodeSrc;
this.show();
this.isShowingNow = true;
}, move:function (x, y, padding, orient) {
var around = (typeof x == "object");
if (around) {
var aroundOrient = padding;
var node = x;
padding = y;
if (!aroundOrient) {
aroundOrient = {"BL":"TL", "TL":"BL"};
}
dojo.html.placeOnScreenAroundElement(this.domNode, node, padding, this.aroundBox, aroundOrient);
} else {
if (!orient) {
orient = "TL,TR,BL,BR";
}
dojo.html.placeOnScreen(this.domNode, x, y, padding, true, orient);
}
}, close:function (force) {
if (force) {
this.domNode.style.display = "none";
}
if (this.animationInProgress) {
this.queueOnAnimationFinish.push(this.close, []);
return;
}
this.closeSubpopup(force);
this.hide();
if (this.bgIframe) {
this.bgIframe.hide();
this.bgIframe.size({left:0, top:0, width:0, height:0});
}
if (this.isTopLevel) {
dojo.widget.PopupManager.closed(this);
}
this.isShowingNow = false;
if (this.parent) {
setTimeout(dojo.lang.hitch(this, function () {
try {
if (this.parent["focus"]) {
this.parent.focus();
} else {
this.parent.domNode.focus();
}
}
catch (e) {
dojo.debug("No idea how to focus to parent", e);
}
}), 10);
}
if (this._bookmark && dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.isCollapsed)) {
if (this.openedForWindow) {
this.openedForWindow.focus();
}
try {
dojo.withGlobal(this.openedForWindow || dojo.global(), "moveToBookmark", dojo.html.selection, [this._bookmark]);
}
catch (e) {
}
}
this._bookmark = null;
}, closeAll:function (force) {
if (this.parentPopup) {
this.parentPopup.closeAll(force);
} else {
this.close(force);
}
}, setOpenedSubpopup:function (popup) {
this.currentSubpopup = popup;
}, closeSubpopup:function (force) {
if (this.currentSubpopup == null) {
return;
}
this.currentSubpopup.close(force);
this.currentSubpopup = null;
}, onShow:function () {
dojo.widget.PopupContainer.superclass.onShow.apply(this, arguments);
this.openedSize = {w:this.domNode.style.width, h:this.domNode.style.height};
if (dojo.render.html.ie) {
if (!this.bgIframe) {
this.bgIframe = new dojo.html.BackgroundIframe();
this.bgIframe.setZIndex(this.domNode);
}
this.bgIframe.size(this.domNode);
this.bgIframe.show();
}
this.processQueue();
}, processQueue:function () {
if (!this.queueOnAnimationFinish.length) {
return;
}
var func = this.queueOnAnimationFinish.shift();
var args = this.queueOnAnimationFinish.shift();
func.apply(this, args);
}, onHide:function () {
dojo.widget.HtmlWidget.prototype.onHide.call(this);
if (this.openedSize) {
with (this.domNode.style) {
width = this.openedSize.w;
height = this.openedSize.h;
}
}
this.processQueue();
}});
dojo.widget.defineWidget("dojo.widget.PopupContainer", [dojo.widget.HtmlWidget, dojo.widget.PopupContainerBase], {isContainer:true, fillInTemplate:function () {
this.applyPopupBasicStyle();
dojo.widget.PopupContainer.superclass.fillInTemplate.apply(this, arguments);
}});
dojo.widget.PopupManager = new function () {
this.currentMenu = null;
this.currentButton = null;
this.currentFocusMenu = null;
this.focusNode = null;
this.registeredWindows = [];
this.registerWin = function (win) {
if (!win.__PopupManagerRegistered) {
dojo.event.connect(win.document, "onmousedown", this, "onClick");
dojo.event.connect(win, "onscroll", this, "onClick");
dojo.event.connect(win.document, "onkey", this, "onKey");
win.__PopupManagerRegistered = true;
this.registeredWindows.push(win);
}
};
this.registerAllWindows = function (targetWindow) {
if (!targetWindow) {
targetWindow = dojo.html.getDocumentWindow(window.top && window.top.document || window.document);
}
this.registerWin(targetWindow);
for (var i = 0; i < targetWindow.frames.length; i++) {
try {
var win = dojo.html.getDocumentWindow(targetWindow.frames[i].document);
if (win) {
this.registerAllWindows(win);
}
}
catch (e) {
}
}
};
this.unRegisterWin = function (win) {
if (win.__PopupManagerRegistered) {
dojo.event.disconnect(win.document, "onmousedown", this, "onClick");
dojo.event.disconnect(win, "onscroll", this, "onClick");
dojo.event.disconnect(win.document, "onkey", this, "onKey");
win.__PopupManagerRegistered = false;
}
};
this.unRegisterAllWindows = function () {
for (var i = 0; i < this.registeredWindows.length; ++i) {
this.unRegisterWin(this.registeredWindows[i]);
}
this.registeredWindows = [];
};
dojo.addOnLoad(this, "registerAllWindows");
dojo.addOnUnload(this, "unRegisterAllWindows");
this.closed = function (menu) {
if (this.currentMenu == menu) {
this.currentMenu = null;
this.currentButton = null;
this.currentFocusMenu = null;
}
};
this.opened = function (menu, button) {
if (menu == this.currentMenu) {
return;
}
if (this.currentMenu) {
this.currentMenu.close();
}
this.currentMenu = menu;
this.currentFocusMenu = menu;
this.currentButton = button;
};
this.setFocusedMenu = function (menu) {
this.currentFocusMenu = menu;
};
this.onKey = function (e) {
if (!e.key) {
return;
}
if (!this.currentMenu || !this.currentMenu.isShowingNow) {
return;
}
var m = this.currentFocusMenu;
while (m) {
if (m.processKey(e)) {
e.preventDefault();
e.stopPropagation();
break;
}
m = m.parentPopup || m.parentMenu;
}
}, this.onClick = function (e) {
if (!this.currentMenu) {
return;
}
var scrolloffset = dojo.html.getScroll().offset;
var m = this.currentMenu;
while (m) {
if (dojo.html.overElement(m.domNode, e) || dojo.html.isDescendantOf(e.target, m.domNode)) {
return;
}
m = m.currentSubpopup;
}
if (this.currentButton && dojo.html.overElement(this.currentButton, e)) {
return;
}
this.currentMenu.closeAll(true);
};
};
 
/trunk/api/js/dojo/src/widget/ValidationTextbox.js
New file
0,0 → 1,122
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ValidationTextbox");
dojo.require("dojo.widget.Textbox");
dojo.require("dojo.i18n.common");
dojo.widget.defineWidget("dojo.widget.ValidationTextbox", dojo.widget.Textbox, function () {
this.flags = {};
}, {required:false, rangeClass:"range", invalidClass:"invalid", missingClass:"missing", classPrefix:"dojoValidate", size:"", maxlength:"", promptMessage:"", invalidMessage:"", missingMessage:"", rangeMessage:"", listenOnKeyPress:true, htmlfloat:"none", lastCheckedValue:null, templateString:"<span style='float:${this.htmlfloat};'>\n\t<input dojoAttachPoint='textbox' type='${this.type}' dojoAttachEvent='onblur;onfocus;onkeyup'\n\t\tid='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'\n\t\tclass='${this.className}' style=''>\n\t<span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span>\n\t<span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span>\n\t<span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span>\n</span>\n", templateCssString:".dojoValidateEmpty{\n\tbackground-color: #00FFFF;\n}\n.dojoValidateValid{\n\tbackground-color: #cfc;\n}\n.dojoValidateInvalid{\n\tbackground-color: #fcc;\n}\n.dojoValidateRange{\n\tbackground-color: #ccf;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Validate.css"), invalidSpan:null, missingSpan:null, rangeSpan:null, getValue:function () {
return this.textbox.value;
}, setValue:function (value) {
this.textbox.value = value;
this.update();
}, isValid:function () {
return true;
}, isInRange:function () {
return true;
}, isEmpty:function () {
return (/^\s*$/.test(this.textbox.value));
}, isMissing:function () {
return (this.required && this.isEmpty());
}, update:function () {
this.lastCheckedValue = this.textbox.value;
this.missingSpan.style.display = "none";
this.invalidSpan.style.display = "none";
this.rangeSpan.style.display = "none";
var empty = this.isEmpty();
var valid = true;
if (this.promptMessage != this.textbox.value) {
valid = this.isValid();
}
var missing = this.isMissing();
if (missing) {
this.missingSpan.style.display = "";
} else {
if (!empty && !valid) {
this.invalidSpan.style.display = "";
} else {
if (!empty && !this.isInRange()) {
this.rangeSpan.style.display = "";
}
}
}
this.highlight();
}, updateClass:function (className) {
var pre = this.classPrefix;
dojo.html.removeClass(this.textbox, pre + "Empty");
dojo.html.removeClass(this.textbox, pre + "Valid");
dojo.html.removeClass(this.textbox, pre + "Invalid");
dojo.html.addClass(this.textbox, pre + className);
}, highlight:function () {
if (this.isEmpty()) {
this.updateClass("Empty");
} else {
if (this.isValid() && this.isInRange()) {
this.updateClass("Valid");
} else {
if (this.textbox.value != this.promptMessage) {
this.updateClass("Invalid");
} else {
this.updateClass("Empty");
}
}
}
}, onfocus:function (evt) {
if (!this.listenOnKeyPress) {
this.updateClass("Empty");
}
}, onblur:function (evt) {
this.filter();
this.update();
}, onkeyup:function (evt) {
if (this.listenOnKeyPress) {
this.update();
} else {
if (this.textbox.value != this.lastCheckedValue) {
this.updateClass("Empty");
}
}
}, postMixInProperties:function (localProperties, frag) {
dojo.widget.ValidationTextbox.superclass.postMixInProperties.apply(this, arguments);
this.messages = dojo.i18n.getLocalization("dojo.widget", "validate", this.lang);
dojo.lang.forEach(["invalidMessage", "missingMessage", "rangeMessage"], function (prop) {
if (this[prop]) {
this.messages[prop] = this[prop];
}
}, this);
}, fillInTemplate:function () {
dojo.widget.ValidationTextbox.superclass.fillInTemplate.apply(this, arguments);
this.textbox.isValid = function () {
this.isValid.call(this);
};
this.textbox.isMissing = function () {
this.isMissing.call(this);
};
this.textbox.isInRange = function () {
this.isInRange.call(this);
};
dojo.html.setClass(this.invalidSpan, this.invalidClass);
this.update();
this.filter();
if (dojo.render.html.ie) {
dojo.html.addClass(this.domNode, "ie");
}
if (dojo.render.html.moz) {
dojo.html.addClass(this.domNode, "moz");
}
if (dojo.render.html.opera) {
dojo.html.addClass(this.domNode, "opera");
}
if (dojo.render.html.safari) {
dojo.html.addClass(this.domNode, "safari");
}
}});
 
/trunk/api/js/dojo/src/widget/ComboBox.js
New file
0,0 → 1,556
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ComboBox");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.html.*");
dojo.require("dojo.string");
dojo.require("dojo.widget.html.stabile");
dojo.require("dojo.widget.PopupContainer");
dojo.declare("dojo.widget.incrementalComboBoxDataProvider", null, function (options) {
this.searchUrl = options.dataUrl;
this._cache = {};
this._inFlight = false;
this._lastRequest = null;
this.allowCache = false;
}, {_addToCache:function (keyword, data) {
if (this.allowCache) {
this._cache[keyword] = data;
}
}, startSearch:function (searchStr, callback) {
if (this._inFlight) {
}
var tss = encodeURIComponent(searchStr);
var realUrl = dojo.string.substituteParams(this.searchUrl, {"searchString":tss});
var _this = this;
var request = this._lastRequest = dojo.io.bind({url:realUrl, method:"get", mimetype:"text/json", load:function (type, data, evt) {
_this._inFlight = false;
if (!dojo.lang.isArray(data)) {
var arrData = [];
for (var key in data) {
arrData.push([data[key], key]);
}
data = arrData;
}
_this._addToCache(searchStr, data);
if (request == _this._lastRequest) {
callback(data);
}
}});
this._inFlight = true;
}});
dojo.declare("dojo.widget.basicComboBoxDataProvider", null, function (options, node) {
this._data = [];
this.searchLimit = 30;
this.searchType = "STARTSTRING";
this.caseSensitive = false;
if (!dj_undef("dataUrl", options) && !dojo.string.isBlank(options.dataUrl)) {
this._getData(options.dataUrl);
} else {
if ((node) && (node.nodeName.toLowerCase() == "select")) {
var opts = node.getElementsByTagName("option");
var ol = opts.length;
var data = [];
for (var x = 0; x < ol; x++) {
var text = opts[x].textContent || opts[x].innerText || opts[x].innerHTML;
var keyValArr = [String(text), String(opts[x].value)];
data.push(keyValArr);
if (opts[x].selected) {
options.setAllValues(keyValArr[0], keyValArr[1]);
}
}
this.setData(data);
}
}
}, {_getData:function (url) {
dojo.io.bind({url:url, load:dojo.lang.hitch(this, function (type, data, evt) {
if (!dojo.lang.isArray(data)) {
var arrData = [];
for (var key in data) {
arrData.push([data[key], key]);
}
data = arrData;
}
this.setData(data);
}), mimetype:"text/json"});
}, startSearch:function (searchStr, callback) {
this._performSearch(searchStr, callback);
}, _performSearch:function (searchStr, callback) {
var st = this.searchType;
var ret = [];
if (!this.caseSensitive) {
searchStr = searchStr.toLowerCase();
}
for (var x = 0; x < this._data.length; x++) {
if ((this.searchLimit > 0) && (ret.length >= this.searchLimit)) {
break;
}
var dataLabel = new String((!this.caseSensitive) ? this._data[x][0].toLowerCase() : this._data[x][0]);
if (dataLabel.length < searchStr.length) {
continue;
}
if (st == "STARTSTRING") {
if (searchStr == dataLabel.substr(0, searchStr.length)) {
ret.push(this._data[x]);
}
} else {
if (st == "SUBSTRING") {
if (dataLabel.indexOf(searchStr) >= 0) {
ret.push(this._data[x]);
}
} else {
if (st == "STARTWORD") {
var idx = dataLabel.indexOf(searchStr);
if (idx == 0) {
ret.push(this._data[x]);
}
if (idx <= 0) {
continue;
}
var matches = false;
while (idx != -1) {
if (" ,/(".indexOf(dataLabel.charAt(idx - 1)) != -1) {
matches = true;
break;
}
idx = dataLabel.indexOf(searchStr, idx + 1);
}
if (!matches) {
continue;
} else {
ret.push(this._data[x]);
}
}
}
}
}
callback(ret);
}, setData:function (pdata) {
this._data = pdata;
}});
dojo.widget.defineWidget("dojo.widget.ComboBox", dojo.widget.HtmlWidget, {forceValidOption:false, searchType:"stringstart", dataProvider:null, autoComplete:true, searchDelay:100, dataUrl:"", fadeTime:200, maxListLength:8, mode:"local", selectedResult:null, dataProviderClass:"", buttonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/combo_box_arrow.png"), dropdownToggle:"fade", templateString:"<span _=\"whitespace and CR's between tags adds &nbsp; in FF\"\n\tclass=\"dojoComboBoxOuter\"\n\t><input style=\"display:none\" tabindex=\"-1\" name=\"\" value=\"\" \n\t\tdojoAttachPoint=\"comboBoxValue\"\n\t><input style=\"display:none\" tabindex=\"-1\" name=\"\" value=\"\" \n\t\tdojoAttachPoint=\"comboBoxSelectionValue\"\n\t><input type=\"text\" autocomplete=\"off\" class=\"dojoComboBox\"\n\t\tdojoAttachEvent=\"key:_handleKeyEvents; keyUp: onKeyUp; compositionEnd; onResize;\"\n\t\tdojoAttachPoint=\"textInputNode\"\n\t><img hspace=\"0\"\n\t\tvspace=\"0\"\n\t\tclass=\"dojoComboBox\"\n\t\tdojoAttachPoint=\"downArrowNode\"\n\t\tdojoAttachEvent=\"onMouseUp: handleArrowClick; onResize;\"\n\t\tsrc=\"${this.buttonSrc}\"\n></span>\n", templateCssString:".dojoComboBoxOuter {\n\tborder: 0px !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n\tbackground: transparent !important;\n\twhite-space: nowrap !important;\n}\n\n.dojoComboBox {\n\tborder: 1px inset #afafaf;\n\tmargin: 0px;\n\tpadding: 0px;\n\tvertical-align: middle !important;\n\tfloat: none !important;\n\tposition: static !important;\n\tdisplay: inline !important;\n}\n\n/* the input box */\ninput.dojoComboBox {\n\tborder-right-width: 0px !important; \n\tmargin-right: 0px !important;\n\tpadding-right: 0px !important;\n}\n\n/* the down arrow */\nimg.dojoComboBox {\n\tborder-left-width: 0px !important;\n\tpadding-left: 0px !important;\n\tmargin-left: 0px !important;\n}\n\n/* IE vertical-alignment calculations can be off by +-1 but these margins are collapsed away */\n.dj_ie img.dojoComboBox {\n\tmargin-top: 1px; \n\tmargin-bottom: 1px; \n}\n\n/* the drop down */\n.dojoComboBoxOptions {\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\t/* font-size: 0.7em; */\n\tbackground-color: white;\n\tborder: 1px solid #afafaf;\n\tposition: absolute;\n\tz-index: 1000; \n\toverflow: auto;\n\tcursor: default;\n}\n\n.dojoComboBoxItem {\n\tpadding-left: 2px;\n\tpadding-top: 2px;\n\tmargin: 0px;\n}\n\n.dojoComboBoxItemEven {\n\tbackground-color: #f4f4f4;\n}\n\n.dojoComboBoxItemOdd {\n\tbackground-color: white;\n}\n\n.dojoComboBoxItemHighlight {\n\tbackground-color: #63709A;\n\tcolor: white;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ComboBox.css"), setValue:function (value) {
this.comboBoxValue.value = value;
if (this.textInputNode.value != value) {
this.textInputNode.value = value;
dojo.widget.html.stabile.setState(this.widgetId, this.getState(), true);
this.onValueChanged(value);
}
}, onValueChanged:function (value) {
}, getValue:function () {
return this.comboBoxValue.value;
}, getState:function () {
return {value:this.getValue()};
}, setState:function (state) {
this.setValue(state.value);
}, enable:function () {
this.disabled = false;
this.textInputNode.removeAttribute("disabled");
}, disable:function () {
this.disabled = true;
this.textInputNode.setAttribute("disabled", true);
}, _getCaretPos:function (element) {
if (dojo.lang.isNumber(element.selectionStart)) {
return element.selectionStart;
} else {
if (dojo.render.html.ie) {
var tr = document.selection.createRange().duplicate();
var ntr = element.createTextRange();
tr.move("character", 0);
ntr.move("character", 0);
try {
ntr.setEndPoint("EndToEnd", tr);
return String(ntr.text).replace(/\r/g, "").length;
}
catch (e) {
return 0;
}
}
}
}, _setCaretPos:function (element, location) {
location = parseInt(location);
this._setSelectedRange(element, location, location);
}, _setSelectedRange:function (element, start, end) {
if (!end) {
end = element.value.length;
}
if (element.setSelectionRange) {
element.focus();
element.setSelectionRange(start, end);
} else {
if (element.createTextRange) {
var range = element.createTextRange();
with (range) {
collapse(true);
moveEnd("character", end);
moveStart("character", start);
select();
}
} else {
element.value = element.value;
element.blur();
element.focus();
var dist = parseInt(element.value.length) - end;
var tchar = String.fromCharCode(37);
var tcc = tchar.charCodeAt(0);
for (var x = 0; x < dist; x++) {
var te = document.createEvent("KeyEvents");
te.initKeyEvent("keypress", true, true, null, false, false, false, false, tcc, tcc);
element.dispatchEvent(te);
}
}
}
}, _handleKeyEvents:function (evt) {
if (evt.ctrlKey || evt.altKey || !evt.key) {
return;
}
this._prev_key_backspace = false;
this._prev_key_esc = false;
var k = dojo.event.browser.keys;
var doSearch = true;
switch (evt.key) {
case k.KEY_DOWN_ARROW:
if (!this.popupWidget.isShowingNow) {
this._startSearchFromInput();
}
this._highlightNextOption();
dojo.event.browser.stopEvent(evt);
return;
case k.KEY_UP_ARROW:
this._highlightPrevOption();
dojo.event.browser.stopEvent(evt);
return;
case k.KEY_TAB:
if (!this.autoComplete && this.popupWidget.isShowingNow && this._highlighted_option) {
dojo.event.browser.stopEvent(evt);
this._selectOption({"target":this._highlighted_option, "noHide":false});
this._setSelectedRange(this.textInputNode, this.textInputNode.value.length, null);
} else {
this._selectOption();
return;
}
break;
case k.KEY_ENTER:
if (this.popupWidget.isShowingNow) {
dojo.event.browser.stopEvent(evt);
}
if (this.autoComplete) {
this._selectOption();
return;
}
case " ":
if (this.popupWidget.isShowingNow && this._highlighted_option) {
dojo.event.browser.stopEvent(evt);
this._selectOption();
this._hideResultList();
return;
}
break;
case k.KEY_ESCAPE:
this._hideResultList();
this._prev_key_esc = true;
return;
case k.KEY_BACKSPACE:
this._prev_key_backspace = true;
if (!this.textInputNode.value.length) {
this.setAllValues("", "");
this._hideResultList();
doSearch = false;
}
break;
case k.KEY_RIGHT_ARROW:
case k.KEY_LEFT_ARROW:
doSearch = false;
break;
default:
if (evt.charCode == 0) {
doSearch = false;
}
}
if (this.searchTimer) {
clearTimeout(this.searchTimer);
}
if (doSearch) {
this._blurOptionNode();
this.searchTimer = setTimeout(dojo.lang.hitch(this, this._startSearchFromInput), this.searchDelay);
}
}, compositionEnd:function (evt) {
evt.key = evt.keyCode;
this._handleKeyEvents(evt);
}, onKeyUp:function (evt) {
this.setValue(this.textInputNode.value);
}, setSelectedValue:function (value) {
this.comboBoxSelectionValue.value = value;
}, setAllValues:function (value1, value2) {
this.setSelectedValue(value2);
this.setValue(value1);
}, _focusOptionNode:function (node) {
if (this._highlighted_option != node) {
this._blurOptionNode();
this._highlighted_option = node;
dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");
}
}, _blurOptionNode:function () {
if (this._highlighted_option) {
dojo.html.removeClass(this._highlighted_option, "dojoComboBoxItemHighlight");
this._highlighted_option = null;
}
}, _highlightNextOption:function () {
if ((!this._highlighted_option) || !this._highlighted_option.parentNode) {
this._focusOptionNode(this.optionsListNode.firstChild);
} else {
if (this._highlighted_option.nextSibling) {
this._focusOptionNode(this._highlighted_option.nextSibling);
}
}
dojo.html.scrollIntoView(this._highlighted_option);
}, _highlightPrevOption:function () {
if (this._highlighted_option && this._highlighted_option.previousSibling) {
this._focusOptionNode(this._highlighted_option.previousSibling);
} else {
this._highlighted_option = null;
this._hideResultList();
return;
}
dojo.html.scrollIntoView(this._highlighted_option);
}, _itemMouseOver:function (evt) {
if (evt.target === this.optionsListNode) {
return;
}
this._focusOptionNode(evt.target);
dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");
}, _itemMouseOut:function (evt) {
if (evt.target === this.optionsListNode) {
return;
}
this._blurOptionNode();
}, onResize:function () {
var inputSize = dojo.html.getContentBox(this.textInputNode);
if (inputSize.height <= 0) {
dojo.lang.setTimeout(this, "onResize", 100);
return;
}
var buttonSize = {width:inputSize.height, height:inputSize.height};
dojo.html.setContentBox(this.downArrowNode, buttonSize);
}, fillInTemplate:function (args, frag) {
dojo.html.applyBrowserClass(this.domNode);
var source = this.getFragNodeRef(frag);
if (!this.name && source.name) {
this.name = source.name;
}
this.comboBoxValue.name = this.name;
this.comboBoxSelectionValue.name = this.name + "_selected";
dojo.html.copyStyle(this.domNode, source);
dojo.html.copyStyle(this.textInputNode, source);
dojo.html.copyStyle(this.downArrowNode, source);
with (this.downArrowNode.style) {
width = "0px";
height = "0px";
}
var dpClass;
if (this.dataProviderClass) {
if (typeof this.dataProviderClass == "string") {
dpClass = dojo.evalObjPath(this.dataProviderClass);
} else {
dpClass = this.dataProviderClass;
}
} else {
if (this.mode == "remote") {
dpClass = dojo.widget.incrementalComboBoxDataProvider;
} else {
dpClass = dojo.widget.basicComboBoxDataProvider;
}
}
this.dataProvider = new dpClass(this, this.getFragNodeRef(frag));
this.popupWidget = new dojo.widget.createWidget("PopupContainer", {toggle:this.dropdownToggle, toggleDuration:this.toggleDuration});
dojo.event.connect(this, "destroy", this.popupWidget, "destroy");
this.optionsListNode = this.popupWidget.domNode;
this.domNode.appendChild(this.optionsListNode);
dojo.html.addClass(this.optionsListNode, "dojoComboBoxOptions");
dojo.event.connect(this.optionsListNode, "onclick", this, "_selectOption");
dojo.event.connect(this.optionsListNode, "onmouseover", this, "_onMouseOver");
dojo.event.connect(this.optionsListNode, "onmouseout", this, "_onMouseOut");
dojo.event.connect(this.optionsListNode, "onmouseover", this, "_itemMouseOver");
dojo.event.connect(this.optionsListNode, "onmouseout", this, "_itemMouseOut");
}, _openResultList:function (results) {
if (this.disabled) {
return;
}
this._clearResultList();
if (!results.length) {
this._hideResultList();
}
if ((this.autoComplete) && (results.length) && (!this._prev_key_backspace) && (this.textInputNode.value.length > 0)) {
var cpos = this._getCaretPos(this.textInputNode);
if ((cpos + 1) > this.textInputNode.value.length) {
this.textInputNode.value += results[0][0].substr(cpos);
this._setSelectedRange(this.textInputNode, cpos, this.textInputNode.value.length);
}
}
var even = true;
while (results.length) {
var tr = results.shift();
if (tr) {
var td = document.createElement("div");
td.appendChild(document.createTextNode(tr[0]));
td.setAttribute("resultName", tr[0]);
td.setAttribute("resultValue", tr[1]);
td.className = "dojoComboBoxItem " + ((even) ? "dojoComboBoxItemEven" : "dojoComboBoxItemOdd");
even = (!even);
this.optionsListNode.appendChild(td);
}
}
this._showResultList();
}, _onFocusInput:function () {
this._hasFocus = true;
}, _onBlurInput:function () {
this._hasFocus = false;
this._handleBlurTimer(true, 500);
}, _handleBlurTimer:function (clear, millisec) {
if (this.blurTimer && (clear || millisec)) {
clearTimeout(this.blurTimer);
}
if (millisec) {
this.blurTimer = dojo.lang.setTimeout(this, "_checkBlurred", millisec);
}
}, _onMouseOver:function (evt) {
if (!this._mouseover_list) {
this._handleBlurTimer(true, 0);
this._mouseover_list = true;
}
}, _onMouseOut:function (evt) {
var relTarget = evt.relatedTarget;
try {
if (!relTarget || relTarget.parentNode != this.optionsListNode) {
this._mouseover_list = false;
this._handleBlurTimer(true, 100);
this._tryFocus();
}
}
catch (e) {
}
}, _isInputEqualToResult:function (result) {
var input = this.textInputNode.value;
if (!this.dataProvider.caseSensitive) {
input = input.toLowerCase();
result = result.toLowerCase();
}
return (input == result);
}, _isValidOption:function () {
var tgt = dojo.html.firstElement(this.optionsListNode);
var isValidOption = false;
while (!isValidOption && tgt) {
if (this._isInputEqualToResult(tgt.getAttribute("resultName"))) {
isValidOption = true;
} else {
tgt = dojo.html.nextElement(tgt);
}
}
return isValidOption;
}, _checkBlurred:function () {
if (!this._hasFocus && !this._mouseover_list) {
this._hideResultList();
if (!this.textInputNode.value.length) {
this.setAllValues("", "");
return;
}
var isValidOption = this._isValidOption();
if (this.forceValidOption && !isValidOption) {
this.setAllValues("", "");
return;
}
if (!isValidOption) {
this.setSelectedValue("");
}
}
}, _selectOption:function (evt) {
var tgt = null;
if (!evt) {
evt = {target:this._highlighted_option};
}
if (!dojo.html.isDescendantOf(evt.target, this.optionsListNode)) {
if (!this.textInputNode.value.length) {
return;
}
tgt = dojo.html.firstElement(this.optionsListNode);
if (!tgt || !this._isInputEqualToResult(tgt.getAttribute("resultName"))) {
return;
}
} else {
tgt = evt.target;
}
while ((tgt.nodeType != 1) || (!tgt.getAttribute("resultName"))) {
tgt = tgt.parentNode;
if (tgt === dojo.body()) {
return false;
}
}
this.selectedResult = [tgt.getAttribute("resultName"), tgt.getAttribute("resultValue")];
this.setAllValues(tgt.getAttribute("resultName"), tgt.getAttribute("resultValue"));
if (!evt.noHide) {
this._hideResultList();
this._setSelectedRange(this.textInputNode, 0, null);
}
this._tryFocus();
}, _clearResultList:function () {
if (this.optionsListNode.innerHTML) {
this.optionsListNode.innerHTML = "";
}
}, _hideResultList:function () {
this.popupWidget.close();
}, _showResultList:function () {
var childs = this.optionsListNode.childNodes;
if (childs.length) {
var visibleCount = Math.min(childs.length, this.maxListLength);
with (this.optionsListNode.style) {
display = "";
if (visibleCount == childs.length) {
height = "";
} else {
height = visibleCount * dojo.html.getMarginBox(childs[0]).height + "px";
}
width = (dojo.html.getMarginBox(this.domNode).width - 2) + "px";
}
this.popupWidget.open(this.domNode, this, this.downArrowNode);
} else {
this._hideResultList();
}
}, handleArrowClick:function () {
this._handleBlurTimer(true, 0);
this._tryFocus();
if (this.popupWidget.isShowingNow) {
this._hideResultList();
} else {
this._startSearch("");
}
}, _tryFocus:function () {
try {
this.textInputNode.focus();
}
catch (e) {
}
}, _startSearchFromInput:function () {
this._startSearch(this.textInputNode.value);
}, _startSearch:function (key) {
this.dataProvider.startSearch(key, dojo.lang.hitch(this, "_openResultList"));
}, postCreate:function () {
this.onResize();
dojo.event.connect(this.textInputNode, "onblur", this, "_onBlurInput");
dojo.event.connect(this.textInputNode, "onfocus", this, "_onFocusInput");
if (this.disabled) {
this.disable();
}
var s = dojo.widget.html.stabile.getState(this.widgetId);
if (s) {
this.setState(s);
}
}});
 
/trunk/api/js/dojo/src/widget/GoogleMap.js
New file
0,0 → 1,167
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.GoogleMap");
dojo.require("dojo.event.*");
dojo.require("dojo.math");
dojo.require("dojo.widget.*");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.widget.HtmlWidget");
(function () {
var gkey = djConfig["gMapKey"] || djConfig["googleMapKey"];
var uri = new dojo.uri.Uri(window.location.href);
if (uri.host == "www.dojotoolkit.org") {
gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hRqjp7ri2mNiOEYqetD3xnFHpt5rBSjszDd1sdufPyQKUTyCf_YxoIxvw";
} else {
if (uri.host == "blog.dojotoolkit.org") {
gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hSkep6Av1xaMhVn3yCLkorJeXeLARQ6fammI_P3qSGleTJhoI5_1JmP_Q";
} else {
if (uri.host == "archive.dojotoolkit.org") {
gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hTaQpDt0dyGLIHbXMPTzg1kWeAfwRTwZNyrUfbfxYE9yIvRivEjcXoDTg";
} else {
if (uri.host == "dojotoolkit.org") {
gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hSaOaO_TgJ5c3mtQFnk5JO2zD5dZBRZk-ieqVs7BORREYNzAERmcJoEjQ";
}
}
}
}
if (!dojo.hostenv.post_load_) {
if (!gkey || gkey == "") {
dojo.raise("dojo.widget.GoogleMap: The Google Map widget requires a proper API key in order to be used.");
}
var tag = "<scr" + "ipt src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=" + gkey + "'></scri" + "pt>";
if (!dj_global["GMap2"]) {
document.write(tag);
}
} else {
dojo.debug("Cannot initialize Google Map system after the page has been loaded! Please either manually include the script block provided by Google in your page or require() the GoogleMap widget before onload has fired.");
}
})();
dojo.widget.defineWidget("dojo.widget.GoogleMap", dojo.widget.HtmlWidget, function () {
this.map = null;
this.geocoder = null;
this.data = [];
this.datasrc = "";
this.controls = ["largemap", "scale", "maptype"];
}, {templatePath:null, templateCssPath:null, isContainer:false, _defaultPoint:{lat:39.10662, lng:-94.578209}, setControls:function () {
var methodmap = {largemap:GLargeMapControl, smallmap:GSmallMapControl, smallzoom:GSmallZoomControl, scale:GScaleControl, maptype:GMapTypeControl, overview:GOverviewMapControl};
for (var i = 0; i < this.controls.length; i++) {
this.map.addControl(new (methodmap[this.controls[i].toLowerCase()])());
}
}, findCenter:function (bounds) {
if (this.data.length == 1) {
return (new GLatLng(this.data[0].lat, this.data[0].lng));
}
var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2;
var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2;
return (new GLatLng(clat, clng));
}, createPinpoint:function (pt, overlay) {
var m = new GMarker(pt);
if (overlay) {
GEvent.addListener(m, "click", function () {
m.openInfoWindowHtml("<div>" + overlay + "</div>");
});
}
return m;
}, plot:function (obj) {
var p = new GLatLng(obj.lat, obj.lng);
var d = obj.description || null;
var m = this.createPinpoint(p, d);
this.map.addOverlay(m);
}, plotAddress:function (address) {
var self = this;
this.geocoder.getLocations(address, function (response) {
if (!response || response.Status.code != 200) {
alert("The address \"" + address + "\" was not found.");
return;
}
var obj = {lat:response.Placemark[0].Point.coordinates[1], lng:response.Placemark[0].Point.coordinates[0], description:response.Placemark[0].address};
self.data.push(obj);
self.render();
});
}, parse:function (table) {
this.data = [];
var h = table.getElementsByTagName("thead")[0];
if (!h) {
return;
}
var a = [];
var cols = h.getElementsByTagName("td");
if (cols.length == 0) {
cols = h.getElementsByTagName("th");
}
for (var i = 0; i < cols.length; i++) {
var c = cols[i].innerHTML.toLowerCase();
if (c == "long") {
c = "lng";
}
a.push(c);
}
var b = table.getElementsByTagName("tbody")[0];
if (!b) {
return;
}
for (var i = 0; i < b.childNodes.length; i++) {
if (!(b.childNodes[i].nodeName && b.childNodes[i].nodeName.toLowerCase() == "tr")) {
continue;
}
var cells = b.childNodes[i].getElementsByTagName("td");
var o = {};
for (var j = 0; j < a.length; j++) {
var col = a[j];
if (col == "lat" || col == "lng") {
o[col] = parseFloat(cells[j].innerHTML);
} else {
o[col] = cells[j].innerHTML;
}
}
this.data.push(o);
}
}, render:function () {
if (this.data.length == 0) {
this.map.setCenter(new GLatLng(this._defaultPoint.lat, this._defaultPoint.lng), 4);
return;
}
this.map.clearOverlays();
var bounds = new GLatLngBounds();
var d = this.data;
for (var i = 0; i < d.length; i++) {
bounds.extend(new GLatLng(d[i].lat, d[i].lng));
}
var zoom = Math.min((this.map.getBoundsZoomLevel(bounds) - 1), 14);
this.map.setCenter(this.findCenter(bounds), zoom);
for (var i = 0; i < this.data.length; i++) {
this.plot(this.data[i]);
}
}, initialize:function (args, frag) {
if (this.datasrc) {
this.parse(dojo.byId(this.datasrc));
} else {
if (this.domNode.getElementsByTagName("table")[0]) {
this.parse(this.domNode.getElementsByTagName("table")[0]);
}
}
}, postCreate:function () {
while (this.domNode.childNodes.length > 0) {
this.domNode.removeChild(this.domNode.childNodes[0]);
}
if (this.domNode.style.position != "absolute") {
this.domNode.style.position = "relative";
}
this.map = new GMap2(this.domNode);
try {
this.geocoder = new GClientGeocoder();
}
catch (ex) {
}
this.render();
this.setControls();
}});
 
/trunk/api/js/dojo/src/widget/TreeLoadingControllerV3.js
New file
0,0 → 1,248
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeLoadingControllerV3");
dojo.require("dojo.widget.TreeBasicControllerV3");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.Deferred");
dojo.require("dojo.DeferredList");
dojo.declare("dojo.Error", Error, function (message, extra) {
this.message = message;
this.extra = extra;
this.stack = (new Error()).stack;
});
dojo.declare("dojo.CommunicationError", dojo.Error, function () {
this.name = "CommunicationError";
});
dojo.declare("dojo.LockedError", dojo.Error, function () {
this.name = "LockedError";
});
dojo.declare("dojo.FormatError", dojo.Error, function () {
this.name = "FormatError";
});
dojo.declare("dojo.RpcError", dojo.Error, function () {
this.name = "RpcError";
});
dojo.widget.defineWidget("dojo.widget.TreeLoadingControllerV3", dojo.widget.TreeBasicControllerV3, {RpcUrl:"", RpcActionParam:"action", preventCache:true, checkValidRpcResponse:function (type, obj) {
if (type != "load") {
var extra = {};
for (var i = 1; i < arguments.length; i++) {
dojo.lang.mixin(extra, arguments[i]);
}
return new dojo.CommunicationError(obj, extra);
}
if (typeof obj != "object") {
return new dojo.FormatError("Wrong server answer format " + (obj && obj.toSource ? obj.toSource() : obj) + " type " + (typeof obj), obj);
}
if (!dojo.lang.isUndefined(obj.error)) {
return new dojo.RpcError(obj.error, obj);
}
return false;
}, getDeferredBindHandler:function (deferred) {
return dojo.lang.hitch(this, function (type, obj) {
var error = this.checkValidRpcResponse.apply(this, arguments);
if (error) {
deferred.errback(error);
return;
}
deferred.callback(obj);
});
}, getRpcUrl:function (action) {
if (this.RpcUrl == "local") {
var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));
var localUrl = dir + "/local/" + action;
return localUrl;
}
if (!this.RpcUrl) {
dojo.raise("Empty RpcUrl: can't load");
}
var url = this.RpcUrl;
if (url.indexOf("/") != 0) {
var protocol = document.location.href.replace(/:\/\/.*/, "");
var prefix = document.location.href.substring(protocol.length + 3);
if (prefix.lastIndexOf("/") != prefix.length - 1) {
prefix = prefix.replace(/\/[^\/]+$/, "/");
}
if (prefix.lastIndexOf("/") != prefix.length - 1) {
prefix = prefix + "/";
}
url = protocol + "://" + prefix + url;
}
return url + (url.indexOf("?") > -1 ? "&" : "?") + this.RpcActionParam + "=" + action;
}, loadProcessResponse:function (node, result) {
if (!dojo.lang.isArray(result)) {
throw new dojo.FormatError("loadProcessResponse: Not array loaded: " + result);
}
node.setChildren(result);
}, runRpc:function (kw) {
var _this = this;
var deferred = new dojo.Deferred();
dojo.io.bind({url:kw.url, handle:this.getDeferredBindHandler(deferred), mimetype:"text/javascript", preventCache:this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});
return deferred;
}, loadRemote:function (node, sync) {
var _this = this;
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
var deferred = this.runRpc({url:this.getRpcUrl("getChildren"), sync:sync, params:params});
deferred.addCallback(function (res) {
return _this.loadProcessResponse(node, res);
});
return deferred;
}, batchExpandTimeout:0, recurseToLevel:function (widget, level, callFunc, callObj, skipFirst, sync) {
if (level == 0) {
return;
}
if (!skipFirst) {
var deferred = callFunc.call(callObj, widget, sync);
} else {
var deferred = dojo.Deferred.prototype.makeCalled();
}
var _this = this;
var recurseOnExpand = function () {
var children = widget.children;
var deferreds = [];
for (var i = 0; i < children.length; i++) {
deferreds.push(_this.recurseToLevel(children[i], level - 1, callFunc, callObj, sync));
}
return new dojo.DeferredList(deferreds);
};
deferred.addCallback(recurseOnExpand);
return deferred;
}, expandToLevel:function (nodeOrTree, level, sync) {
return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.expand, this, nodeOrTree.isTree, sync);
}, loadToLevel:function (nodeOrTree, level, sync) {
return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.loadIfNeeded, this, nodeOrTree.isTree, sync);
}, loadAll:function (nodeOrTree, sync) {
return this.loadToLevel(nodeOrTree, Number.POSITIVE_INFINITY, sync);
}, expand:function (node, sync) {
var _this = this;
var deferred = this.startProcessing(node);
deferred.addCallback(function () {
return _this.loadIfNeeded(node, sync);
});
deferred.addCallback(function (res) {
dojo.widget.TreeBasicControllerV3.prototype.expand(node);
return res;
});
deferred.addBoth(function (res) {
_this.finishProcessing(node);
return res;
});
return deferred;
}, loadIfNeeded:function (node, sync) {
var deferred;
if (node.state == node.loadStates.UNCHECKED && node.isFolder && !node.children.length) {
deferred = this.loadRemote(node, sync);
} else {
deferred = new dojo.Deferred();
deferred.callback();
}
return deferred;
}, runStages:function (check, prepare, make, finalize, expose, args) {
var _this = this;
if (check && !check.apply(this, args)) {
return false;
}
var deferred = dojo.Deferred.prototype.makeCalled();
if (prepare) {
deferred.addCallback(function () {
return prepare.apply(_this, args);
});
}
if (make) {
deferred.addCallback(function () {
var res = make.apply(_this, args);
return res;
});
}
if (finalize) {
deferred.addBoth(function (res) {
finalize.apply(_this, args);
return res;
});
}
if (expose) {
deferred.addCallback(function (res) {
expose.apply(_this, args);
return res;
});
}
return deferred;
}, startProcessing:function (nodesArray) {
var deferred = new dojo.Deferred();
var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].isLocked()) {
deferred.errback(new dojo.LockedError("item locked " + nodes[i], nodes[i]));
return deferred;
}
if (nodes[i].isTreeNode) {
nodes[i].markProcessing();
}
nodes[i].lock();
}
deferred.callback();
return deferred;
}, finishProcessing:function (nodesArray) {
var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;
for (var i = 0; i < nodes.length; i++) {
if (!nodes[i].hasLock()) {
continue;
}
nodes[i].unlock();
if (nodes[i].isTreeNode) {
nodes[i].unmarkProcessing();
}
}
}, refreshChildren:function (nodeOrTree, sync) {
return this.runStages(null, this.prepareRefreshChildren, this.doRefreshChildren, this.finalizeRefreshChildren, this.exposeRefreshChildren, arguments);
}, prepareRefreshChildren:function (nodeOrTree, sync) {
var deferred = this.startProcessing(nodeOrTree);
nodeOrTree.destroyChildren();
nodeOrTree.state = nodeOrTree.loadStates.UNCHECKED;
return deferred;
}, doRefreshChildren:function (nodeOrTree, sync) {
return this.loadRemote(nodeOrTree, sync);
}, finalizeRefreshChildren:function (nodeOrTree, sync) {
this.finishProcessing(nodeOrTree);
}, exposeRefreshChildren:function (nodeOrTree, sync) {
nodeOrTree.expand();
}, move:function (child, newParent, index) {
return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);
}, doMove:function (child, newParent, index) {
child.tree.move(child, newParent, index);
return true;
}, prepareMove:function (child, newParent, index, sync) {
var deferred = this.startProcessing(newParent);
deferred.addCallback(dojo.lang.hitch(this, function () {
return this.loadIfNeeded(newParent, sync);
}));
return deferred;
}, finalizeMove:function (child, newParent) {
this.finishProcessing(newParent);
}, prepareCreateChild:function (parent, index, data, sync) {
var deferred = this.startProcessing(parent);
deferred.addCallback(dojo.lang.hitch(this, function () {
return this.loadIfNeeded(parent, sync);
}));
return deferred;
}, finalizeCreateChild:function (parent) {
this.finishProcessing(parent);
}, prepareClone:function (child, newParent, index, deep, sync) {
var deferred = this.startProcessing(child, newParent);
deferred.addCallback(dojo.lang.hitch(this, function () {
return this.loadIfNeeded(newParent, sync);
}));
return deferred;
}, finalizeClone:function (child, newParent) {
this.finishProcessing(child, newParent);
}});
 
/trunk/api/js/dojo/src/widget/IntegerTextbox.js
New file
0,0 → 1,40
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.IntegerTextbox");
dojo.require("dojo.widget.ValidationTextbox");
dojo.require("dojo.validate.common");
dojo.widget.defineWidget("dojo.widget.IntegerTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties, frag) {
dojo.widget.IntegerTextbox.superclass.mixInProperties.apply(this, arguments);
if ((localProperties.signed == "true") || (localProperties.signed == "always")) {
this.flags.signed = true;
} else {
if ((localProperties.signed == "false") || (localProperties.signed == "never")) {
this.flags.signed = false;
this.flags.min = 0;
} else {
this.flags.signed = [true, false];
}
}
if (localProperties.separator) {
this.flags.separator = localProperties.separator;
}
if (localProperties.min) {
this.flags.min = parseInt(localProperties.min);
}
if (localProperties.max) {
this.flags.max = parseInt(localProperties.max);
}
}, isValid:function () {
return dojo.validate.isInteger(this.textbox.value, this.flags);
}, isInRange:function () {
return dojo.validate.isInRange(this.textbox.value, this.flags);
}});
 
/trunk/api/js/dojo/src/widget/YahooMap.js
New file
0,0 → 1,143
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.YahooMap");
dojo.require("dojo.event.*");
dojo.require("dojo.math");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
(function () {
var yappid = djConfig["yAppId"] || djConfig["yahooAppId"] || "dojotoolkit";
if (!dojo.hostenv.post_load_) {
if (yappid == "dojotoolkit") {
dojo.debug("please provide a unique Yahoo App ID in djConfig.yahooAppId when using the map widget");
}
var tag = "<scr" + "ipt src='http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=" + yappid + "'></scri" + "pt>";
if (!dj_global["YMap"]) {
document.write(tag);
}
} else {
dojo.debug("cannot initialize map system after the page has been loaded! Please either manually include the script block provided by Yahoo in your page or require() the YahooMap widget before onload has fired");
}
})();
dojo.widget.defineWidget("dojo.widget.YahooMap", dojo.widget.HtmlWidget, function () {
this.map = null;
this.datasrc = "";
this.data = [];
this.width = 0;
this.height = 0;
this.controls = ["zoomlong", "maptype", "pan"];
}, {isContainer:false, templatePath:null, templateCssPath:null, findCenter:function (aPts) {
var start = new YGeoPoint(37, -90);
if (aPts.length == 0) {
return start;
}
var minLat, maxLat, minLon, maxLon, cLat, cLon;
minLat = maxLat = aPts[0].Lat;
minLon = maxLon = aPts[0].Lon;
for (var i = 0; i < aPts.length; i++) {
minLat = Math.min(minLat, aPts[i].Lat);
maxLat = Math.max(maxLat, aPts[i].Lat);
minLon = Math.min(minLon, aPts[i].Lon);
maxLon = Math.max(maxLon, aPts[i].Lon);
}
cLat = dojo.math.round((minLat + maxLat) / 2, 6);
cLon = dojo.math.round((minLon + maxLon) / 2, 6);
return new YGeoPoint(cLat, cLon);
}, setControls:function () {
var methodmap = {maptype:"addTypeControl", pan:"addPanControl", zoomlong:"addZoomLong", zoomshort:"addZoomShort"};
var c = this.controls;
for (var i = 0; i < c.length; i++) {
var controlMethod = methodmap[c[i].toLowerCase()];
if (this.map[controlMethod]) {
this.map[controlMethod]();
}
}
}, parse:function (table) {
this.data = [];
var h = table.getElementsByTagName("thead")[0];
if (!h) {
return;
}
var a = [];
var cols = h.getElementsByTagName("td");
if (cols.length == 0) {
cols = h.getElementsByTagName("th");
}
for (var i = 0; i < cols.length; i++) {
var c = cols[i].innerHTML.toLowerCase();
if (c == "long") {
c = "lng";
}
a.push(c);
}
var b = table.getElementsByTagName("tbody")[0];
if (!b) {
return;
}
for (var i = 0; i < b.childNodes.length; i++) {
if (!(b.childNodes[i].nodeName && b.childNodes[i].nodeName.toLowerCase() == "tr")) {
continue;
}
var cells = b.childNodes[i].getElementsByTagName("td");
var o = {};
for (var j = 0; j < a.length; j++) {
var col = a[j];
if (col == "lat" || col == "lng") {
o[col] = parseFloat(cells[j].innerHTML);
} else {
o[col] = cells[j].innerHTML;
}
}
this.data.push(o);
}
}, render:function () {
var pts = [];
var d = this.data;
for (var i = 0; i < d.length; i++) {
var pt = new YGeoPoint(d[i].lat, d[i].lng);
pts.push(pt);
var icon = d[i].icon || null;
if (icon) {
icon = new YImage(icon);
}
var m = new YMarker(pt, icon);
if (d[i].description) {
m.addAutoExpand("<div>" + d[i].description + "</div>");
}
this.map.addOverlay(m);
}
var c = this.findCenter(pts);
var z = this.map.getZoomLevel(pts);
this.map.drawZoomAndCenter(c, z);
}, initialize:function (args, frag) {
if (!YMap || !YGeoPoint) {
dojo.raise("dojo.widget.YahooMap: The Yahoo Map script must be included in order to use this widget.");
}
if (this.datasrc) {
this.parse(dojo.byId(this.datasrc));
} else {
if (this.domNode.getElementsByTagName("table")[0]) {
this.parse(this.domNode.getElementsByTagName("table")[0]);
}
}
}, postCreate:function () {
while (this.domNode.childNodes.length > 0) {
this.domNode.removeChild(this.domNode.childNodes[0]);
}
if (this.width > 0 && this.height > 0) {
this.map = new YMap(this.domNode, YAHOO_MAP_REG, new YSize(this.width, this.height));
} else {
this.map = new YMap(this.domNode);
}
this.setControls();
this.render();
}});
 
/trunk/api/js/dojo/src/widget/Show.js
New file
0,0 → 1,209
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Show");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.event.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.math.curves");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.func");
dojo.widget.defineWidget("dojo.widget.Show", dojo.widget.HtmlWidget, function () {
this._slides = [];
}, {isContainer:true, _slide:-1, body:null, nav:null, hider:null, select:null, option:null, inNav:false, debugPane:null, noClick:false, templateString:"<div class=\"dojoShow\">\n\t<div dojoAttachPoint=\"contentNode\"></div>\n\t<div class=\"dojoShowNav\" dojoAttachPoint=\"nav\">\n\t\t<div class=\"dojoShowHider\" dojoAttachPoint=\"hider\"></div>\n\t\t<span unselectable=\"on\" style=\"cursor: default;\" dojoAttachEvent=\"onClick:previousSlide\">&lt;</span>\n\t\t<select dojoAttachEvent=\"onClick:gotoSlideByEvent\" dojoAttachPoint=\"select\">\n\t\t\t<option dojoAttachPoint=\"option\">Title</option>\n\t\t</select>\n\t\t<span unselectable=\"on\" style=\"cursor: default;\" dojoAttachEvent=\"onClick:nextSlide\">&gt;</span>\n\t</div>\n</div>\n", templateCssString:"@media screen {\n\thtml, body {\n\t\tmargin: 0px;\n\t\tpadding: 0px;\n\t\twidth: 100%;\n\t}\n\th1 {\n\t\tfont-size: 50px;\n\t}\n\tp, li {\n\t\tfont-size: 30px;\n\t}\n\t.dojoShowNav {\n\t\tbackground: #369;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\t\theight: 5px;\n\t\tbottom: 0px;\n\t\tleft: 0px;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t}\n\t.dojoShowNav input {\n\t\tmargin: 0px;\n\t}\n\t.dojoShowHider {\n\t\theight: 5px;\n\t\toverflow: hidden;\n\t\twidth: 100%;\n\t}\n\t.dojoShowPrint {\n\t\tposition: absolute;\n\t\tleft: 5px;\n\t\ttop: 0px;\n\t}\n\t.dojoShow {\n\t\tdisplay: none;\n\t}\n}\n@media print {\n\t.dojoShow {\n\t\tdisplay: none !important;\n\t}\n\t.dojoShowPrint {\n\t\tdisplay: block !important;\n\t}\n\t.dojoShowPrintSlide {\n\t\tborder: 1px solid #aaa;\n\t\tpadding: 10px;\n\t\tmargin-bottom: 15px;\n\t}\n\t.dojoShowPrintSlide, ul {\n\tpage-break-inside: avoid;\n\t}\n\th1 {\n\t\tmargin-top: 0;\n\t\tpage-break-after: avoid;\n\t}\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Show.css"), fillInTemplate:function (args, frag) {
if (args.debugPane) {
var dp = this.debugPane = dojo.widget.byId(args.debugPane);
dp.hide();
dojo.event.connect(dp, "closeWindow", dojo.lang.hitch(this, function () {
this.debugPane = false;
}));
}
var source = this.getFragNodeRef(frag);
this.sourceNode = dojo.body().appendChild(source.cloneNode(true));
for (var i = 0, child; child = this.sourceNode.childNodes[i]; i++) {
if (child.tagName && child.getAttribute("dojotype").toLowerCase() == "showslide") {
child.className = "dojoShowPrintSlide";
child.innerHTML = "<h1>" + child.title + "</h1>" + child.innerHTML;
}
}
this.sourceNode.className = "dojoShowPrint";
this.sourceNode.style.display = "none";
dojo.event.connect(document, "onclick", this, "gotoSlideByEvent");
if (dojo.render.html.ie) {
dojo.event.connect(document, "onkeydown", this, "gotoSlideByEvent");
} else {
dojo.event.connect(document, "onkeypress", this, "gotoSlideByEvent");
}
dojo.event.connect(window, "onresize", this, "resizeWindow");
dojo.event.connect(this.nav, "onmousemove", this, "popUpNav");
}, postCreate:function () {
this._slides = [];
for (var i = 0, child; child = this.children[i]; i++) {
if (child.widgetType == "ShowSlide") {
this._slides.push(child);
this.option.text = child.title + " (" + (i + 1) + ")";
this.option.parentNode.insertBefore(this.option.cloneNode(true), this.option);
}
}
this.option.parentNode.removeChild(this.option);
this.domNode.style.display = "block";
this.resizeWindow();
this.gotoSlide(0, true);
dojo.addOnLoad(dojo.lang.hitch(this, function () {
var th = window.location.hash;
if (th.length) {
var parts = ("" + window.location).split(this.widgetId + "_SlideNo_");
if (parts.length > 1) {
setTimeout(dojo.lang.hitch(this, function () {
this.gotoSlide(parseInt(parts[1]), true);
}), 300);
}
}
}));
}, gotoSlide:function (slide, preventSetHash) {
if (slide == this._slide) {
return;
}
if (!this._slides[slide]) {
for (var i = 0, child; child = this._slides[i]; i++) {
if (child.title == slide) {
slide = i;
break;
}
}
}
if (!this._slides[slide]) {
return;
}
if (this.debugPane) {
if (this._slides[slide].debug) {
this.debugPane.show();
} else {
this.debugPane.hide();
}
}
if (this._slide != -1) {
while (this._slides[this._slide].previousAction()) {
}
}
if (!preventSetHash) {
window.location.href = "#" + this.widgetId + "_SlideNo_" + slide;
}
if (this._slides[this._slide]) {
this._slides[this._slide].hide();
}
this._slide = slide;
this.select.selectedIndex = slide;
var cn = this.contentNode;
while (cn.firstChild) {
cn.removeChild(cn.firstChild);
}
cn.appendChild(this._slides[slide].domNode);
this._slides[slide].show();
}, gotoSlideByEvent:function (event) {
var node = event.target;
var type = event.type;
if (type == "click") {
if (node.tagName == "OPTION" && node.parentNode == this.select) {
this.gotoSlide(node.index);
} else {
if (node == this.select) {
this.gotoSlide(node.selectedIndex);
} else {
this.nextSlide(event);
}
}
} else {
if (type == "keydown" || type == "keypress") {
var key = event.keyCode;
var ch = event.charCode;
if (key == 63234 || key == 37) {
this.previousSlide(event);
} else {
if (key == 63235 || key == 39 || ch == 32) {
this.nextSlide(event);
}
}
}
}
}, nextSlide:function (event) {
if (!this.stopEvent(event)) {
return false;
}
if (!this._slides[this._slide].nextAction(event)) {
if ((this._slide + 1) != this._slides.length) {
this.gotoSlide(this._slide + 1);
return true;
}
return false;
}
}, previousSlide:function (event) {
if (!this.stopEvent(event)) {
return false;
}
if (!this._slides[this._slide].previousAction(event)) {
if ((this._slide - 1) != -1) {
this.gotoSlide(this._slide - 1);
return true;
}
return false;
}
}, stopEvent:function (ev) {
if (!ev) {
return true;
}
if (ev.type == "click" && (this._slides[this._slide].noClick || this.noClick)) {
return false;
}
var target = ev.target;
while (target != null) {
if (target == this.domNode) {
target = ev.target;
break;
}
target = target.parentNode;
}
if (!dojo.dom.isDescendantOf(target, this.nav)) {
while (target && target != this.domNode) {
if (target.tagName == "A" || target.tagName == "INPUT" || target.tagName == "TEXTAREA" || target.tagName == "SELECT") {
return false;
}
if (typeof target.onclick == "function" || typeof target.onkeypress == "function") {
return false;
}
target = target.parentNode;
}
}
if (window.event) {
ev.returnValue = false;
ev.cancelBubble = true;
} else {
ev.preventDefault();
ev.stopPropagation();
}
return true;
}, popUpNav:function () {
if (!this.inNav) {
dojo.lfx.propertyAnimation(this.nav, {"height":{start:5, end:30}}, 250).play();
}
clearTimeout(this.inNav);
this.inNav = setTimeout(dojo.lang.hitch(this, "hideNav"), 2000);
}, hideNav:function () {
clearTimeout(this.inNav);
this.inNav = false;
dojo.lfx.propertyAnimation(this.nav, {"height":{start:30, end:5}}, 250).play();
}, resizeWindow:function (ev) {
dojo.body().style.height = "auto";
var h = Math.max(document.documentElement.scrollHeight || dojo.body().scrollHeight, dojo.html.getViewport().height);
dojo.body().style.height = h + "px";
}});
 
/trunk/api/js/dojo/src/widget/TreeTimeoutIterator.js
New file
0,0 → 1,86
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeTimeoutIterator");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeCommon");
dojo.declare("dojo.widget.TreeTimeoutIterator", null, function (elem, callFunc, callObj) {
var _this = this;
this.currentParent = elem;
this.callFunc = callFunc;
this.callObj = callObj ? callObj : this;
this.stack = [];
}, {maxStackDepth:Number.POSITIVE_INFINITY, stack:null, currentParent:null, currentIndex:0, filterFunc:function () {
return true;
}, finishFunc:function () {
return true;
}, setFilter:function (func, obj) {
this.filterFunc = func;
this.filterObj = obj;
}, setMaxLevel:function (level) {
this.maxStackDepth = level - 2;
}, forward:function (timeout) {
var _this = this;
if (this.timeout) {
var tid = setTimeout(function () {
_this.processNext();
clearTimeout(tid);
}, _this.timeout);
} else {
return this.processNext();
}
}, start:function (processFirst) {
if (processFirst) {
return this.callFunc.call(this.callObj, this.currentParent, this);
}
return this.processNext();
}, processNext:function () {
var handler;
var _this = this;
var found;
var next;
if (this.maxStackDepth == -2) {
return;
}
while (true) {
var children = this.currentParent.children;
if (children && children.length) {
do {
next = children[this.currentIndex];
} while (this.currentIndex++ < children.length && !(found = this.filterFunc.call(this.filterObj, next)));
if (found) {
if (next.isFolder && this.stack.length <= this.maxStackDepth) {
this.moveParent(next, 0);
}
return this.callFunc.call(this.callObj, next, this);
}
}
if (this.stack.length) {
this.popParent();
continue;
}
break;
}
return this.finishFunc.call(this.finishObj);
}, setFinish:function (func, obj) {
this.finishFunc = func;
this.finishObj = obj;
}, popParent:function () {
var p = this.stack.pop();
this.currentParent = p[0];
this.currentIndex = p[1];
}, moveParent:function (nextParent, nextIndex) {
this.stack.push([this.currentParent, this.currentIndex]);
this.currentParent = nextParent;
this.currentIndex = nextIndex;
}});
 
/trunk/api/js/dojo/src/widget/nls/zh-cn/validate.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"rangeMessage":"* \u8f93\u5165\u6570\u636e\u8d85\u51fa\u503c\u57df\u3002", "invalidMessage":"* \u975e\u6cd5\u7684\u8f93\u5165\u503c\u3002", "missingMessage":"* \u6b64\u503c\u662f\u5fc5\u987b\u7684\u3002"})
/trunk/api/js/dojo/src/widget/nls/DropdownDatePicker.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"selectDate":"Select a date"})
/trunk/api/js/dojo/src/widget/nls/DropdownTimePicker.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"selectTime":"Select time"})
/trunk/api/js/dojo/src/widget/nls/validate.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"rangeMessage":"* This value is out of range.", "invalidMessage":"* The value entered is not valid.", "missingMessage":"* This value is required."})
/trunk/api/js/dojo/src/widget/nls/TimePicker.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"any":"any"})
/trunk/api/js/dojo/src/widget/nls/fr/validate.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"rangeMessage":"* Cette valeur est hors limites.", "invalidMessage":"* La valeur saisie est incorrecte.", "missingMessage":"* Cette valeur est obligatoire."})
/trunk/api/js/dojo/src/widget/nls/ja/validate.js
New file
0,0 → 1,11
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
({"rangeMessage":"* \u5165\u529b\u3057\u305f\u6570\u5024\u306f\u9078\u629e\u7bc4\u56f2\u5916\u3067\u3059\u3002", "invalidMessage":"* \u5165\u529b\u3057\u305f\u30c7\u30fc\u30bf\u306b\u8a72\u5f53\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u305b\u3093\u3002", "missingMessage":"* \u5165\u529b\u304c\u5fc5\u9808\u3067\u3059\u3002"})
/trunk/api/js/dojo/src/widget/DomWidget.js
New file
0,0 → 1,505
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DomWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.Widget");
dojo.require("dojo.dom");
dojo.require("dojo.html.style");
dojo.require("dojo.xml.Parse");
dojo.require("dojo.uri.*");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.extras");
dojo.widget._cssFiles = {};
dojo.widget._cssStrings = {};
dojo.widget._templateCache = {};
dojo.widget.defaultStrings = {dojoRoot:dojo.hostenv.getBaseScriptUri(), dojoWidgetModuleUri:dojo.uri.moduleUri("dojo.widget"), baseScriptUri:dojo.hostenv.getBaseScriptUri()};
dojo.widget.fillFromTemplateCache = function (obj, templatePath, templateString, avoidCache) {
var tpath = templatePath || obj.templatePath;
var tmplts = dojo.widget._templateCache;
if (!tpath && !obj["widgetType"]) {
do {
var dummyName = "__dummyTemplate__" + dojo.widget._templateCache.dummyCount++;
} while (tmplts[dummyName]);
obj.widgetType = dummyName;
}
var wt = tpath ? tpath.toString() : obj.widgetType;
var ts = tmplts[wt];
if (!ts) {
tmplts[wt] = {"string":null, "node":null};
if (avoidCache) {
ts = {};
} else {
ts = tmplts[wt];
}
}
if ((!obj.templateString) && (!avoidCache)) {
obj.templateString = templateString || ts["string"];
}
if (obj.templateString) {
obj.templateString = this._sanitizeTemplateString(obj.templateString);
}
if ((!obj.templateNode) && (!avoidCache)) {
obj.templateNode = ts["node"];
}
if ((!obj.templateNode) && (!obj.templateString) && (tpath)) {
var tstring = this._sanitizeTemplateString(dojo.hostenv.getText(tpath));
obj.templateString = tstring;
if (!avoidCache) {
tmplts[wt]["string"] = tstring;
}
}
if ((!ts["string"]) && (!avoidCache)) {
ts.string = obj.templateString;
}
};
dojo.widget._sanitizeTemplateString = function (tString) {
if (tString) {
tString = tString.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, "");
var matches = tString.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
if (matches) {
tString = matches[1];
}
} else {
tString = "";
}
return tString;
};
dojo.widget._templateCache.dummyCount = 0;
dojo.widget.attachProperties = ["dojoAttachPoint", "id"];
dojo.widget.eventAttachProperty = "dojoAttachEvent";
dojo.widget.onBuildProperty = "dojoOnBuild";
dojo.widget.waiNames = ["waiRole", "waiState"];
dojo.widget.wai = {waiRole:{name:"waiRole", "namespace":"http://www.w3.org/TR/xhtml2", alias:"x2", prefix:"wairole:"}, waiState:{name:"waiState", "namespace":"http://www.w3.org/2005/07/aaa", alias:"aaa", prefix:""}, setAttr:function (node, ns, attr, value) {
if (dojo.render.html.ie) {
node.setAttribute(this[ns].alias + ":" + attr, this[ns].prefix + value);
} else {
node.setAttributeNS(this[ns]["namespace"], attr, this[ns].prefix + value);
}
}, getAttr:function (node, ns, attr) {
if (dojo.render.html.ie) {
return node.getAttribute(this[ns].alias + ":" + attr);
} else {
return node.getAttributeNS(this[ns]["namespace"], attr);
}
}, removeAttr:function (node, ns, attr) {
var success = true;
if (dojo.render.html.ie) {
success = node.removeAttribute(this[ns].alias + ":" + attr);
} else {
node.removeAttributeNS(this[ns]["namespace"], attr);
}
return success;
}};
dojo.widget.attachTemplateNodes = function (rootNode, targetObj, events) {
var elementNodeType = dojo.dom.ELEMENT_NODE;
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
if (!rootNode) {
rootNode = targetObj.domNode;
}
if (rootNode.nodeType != elementNodeType) {
return;
}
var nodes = rootNode.all || rootNode.getElementsByTagName("*");
var _this = targetObj;
for (var x = -1; x < nodes.length; x++) {
var baseNode = (x == -1) ? rootNode : nodes[x];
var attachPoint = [];
if (!targetObj.widgetsInTemplate || !baseNode.getAttribute("dojoType")) {
for (var y = 0; y < this.attachProperties.length; y++) {
var tmpAttachPoint = baseNode.getAttribute(this.attachProperties[y]);
if (tmpAttachPoint) {
attachPoint = tmpAttachPoint.split(";");
for (var z = 0; z < attachPoint.length; z++) {
if (dojo.lang.isArray(targetObj[attachPoint[z]])) {
targetObj[attachPoint[z]].push(baseNode);
} else {
targetObj[attachPoint[z]] = baseNode;
}
}
break;
}
}
var attachEvent = baseNode.getAttribute(this.eventAttachProperty);
if (attachEvent) {
var evts = attachEvent.split(";");
for (var y = 0; y < evts.length; y++) {
if ((!evts[y]) || (!evts[y].length)) {
continue;
}
var thisFunc = null;
var tevt = trim(evts[y]);
if (evts[y].indexOf(":") >= 0) {
var funcNameArr = tevt.split(":");
tevt = trim(funcNameArr[0]);
thisFunc = trim(funcNameArr[1]);
}
if (!thisFunc) {
thisFunc = tevt;
}
var tf = function () {
var ntf = new String(thisFunc);
return function (evt) {
if (_this[ntf]) {
_this[ntf](dojo.event.browser.fixEvent(evt, this));
}
};
}();
dojo.event.browser.addListener(baseNode, tevt, tf, false, true);
}
}
for (var y = 0; y < events.length; y++) {
var evtVal = baseNode.getAttribute(events[y]);
if ((evtVal) && (evtVal.length)) {
var thisFunc = null;
var domEvt = events[y].substr(4);
thisFunc = trim(evtVal);
var funcs = [thisFunc];
if (thisFunc.indexOf(";") >= 0) {
funcs = dojo.lang.map(thisFunc.split(";"), trim);
}
for (var z = 0; z < funcs.length; z++) {
if (!funcs[z].length) {
continue;
}
var tf = function () {
var ntf = new String(funcs[z]);
return function (evt) {
if (_this[ntf]) {
_this[ntf](dojo.event.browser.fixEvent(evt, this));
}
};
}();
dojo.event.browser.addListener(baseNode, domEvt, tf, false, true);
}
}
}
}
var tmpltPoint = baseNode.getAttribute(this.templateProperty);
if (tmpltPoint) {
targetObj[tmpltPoint] = baseNode;
}
dojo.lang.forEach(dojo.widget.waiNames, function (name) {
var wai = dojo.widget.wai[name];
var val = baseNode.getAttribute(wai.name);
if (val) {
if (val.indexOf("-") == -1) {
dojo.widget.wai.setAttr(baseNode, wai.name, "role", val);
} else {
var statePair = val.split("-");
dojo.widget.wai.setAttr(baseNode, wai.name, statePair[0], statePair[1]);
}
}
}, this);
var onBuild = baseNode.getAttribute(this.onBuildProperty);
if (onBuild) {
eval("var node = baseNode; var widget = targetObj; " + onBuild);
}
}
};
dojo.widget.getDojoEventsFromStr = function (str) {
var re = /(dojoOn([a-z]+)(\s?))=/gi;
var evts = str ? str.match(re) || [] : [];
var ret = [];
var lem = {};
for (var x = 0; x < evts.length; x++) {
if (evts[x].length < 1) {
continue;
}
var cm = evts[x].replace(/\s/, "");
cm = (cm.slice(0, cm.length - 1));
if (!lem[cm]) {
lem[cm] = true;
ret.push(cm);
}
}
return ret;
};
dojo.declare("dojo.widget.DomWidget", dojo.widget.Widget, function () {
if ((arguments.length > 0) && (typeof arguments[0] == "object")) {
this.create(arguments[0]);
}
}, {templateNode:null, templateString:null, templateCssString:null, preventClobber:false, domNode:null, containerNode:null, widgetsInTemplate:false, addChild:function (widget, overrideContainerNode, pos, ref, insertIndex) {
if (!this.isContainer) {
dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");
return null;
} else {
if (insertIndex == undefined) {
insertIndex = this.children.length;
}
this.addWidgetAsDirectChild(widget, overrideContainerNode, pos, ref, insertIndex);
this.registerChild(widget, insertIndex);
}
return widget;
}, addWidgetAsDirectChild:function (widget, overrideContainerNode, pos, ref, insertIndex) {
if ((!this.containerNode) && (!overrideContainerNode)) {
this.containerNode = this.domNode;
}
var cn = (overrideContainerNode) ? overrideContainerNode : this.containerNode;
if (!pos) {
pos = "after";
}
if (!ref) {
if (!cn) {
cn = dojo.body();
}
ref = cn.lastChild;
}
if (!insertIndex) {
insertIndex = 0;
}
widget.domNode.setAttribute("dojoinsertionindex", insertIndex);
if (!ref) {
cn.appendChild(widget.domNode);
} else {
if (pos == "insertAtIndex") {
dojo.dom.insertAtIndex(widget.domNode, ref.parentNode, insertIndex);
} else {
if ((pos == "after") && (ref === cn.lastChild)) {
cn.appendChild(widget.domNode);
} else {
dojo.dom.insertAtPosition(widget.domNode, cn, pos);
}
}
}
}, registerChild:function (widget, insertionIndex) {
widget.dojoInsertionIndex = insertionIndex;
var idx = -1;
for (var i = 0; i < this.children.length; i++) {
if (this.children[i].dojoInsertionIndex <= insertionIndex) {
idx = i;
}
}
this.children.splice(idx + 1, 0, widget);
widget.parent = this;
widget.addedTo(this, idx + 1);
delete dojo.widget.manager.topWidgets[widget.widgetId];
}, removeChild:function (widget) {
dojo.dom.removeNode(widget.domNode);
return dojo.widget.DomWidget.superclass.removeChild.call(this, widget);
}, getFragNodeRef:function (frag) {
if (!frag) {
return null;
}
if (!frag[this.getNamespacedType()]) {
dojo.raise("Error: no frag for widget type " + this.getNamespacedType() + ", id " + this.widgetId + " (maybe a widget has set it's type incorrectly)");
}
return frag[this.getNamespacedType()]["nodeRef"];
}, postInitialize:function (args, frag, parentComp) {
var sourceNodeRef = this.getFragNodeRef(frag);
if (parentComp && (parentComp.snarfChildDomOutput || !sourceNodeRef)) {
parentComp.addWidgetAsDirectChild(this, "", "insertAtIndex", "", args["dojoinsertionindex"], sourceNodeRef);
} else {
if (sourceNodeRef) {
if (this.domNode && (this.domNode !== sourceNodeRef)) {
this._sourceNodeRef = dojo.dom.replaceNode(sourceNodeRef, this.domNode);
}
}
}
if (parentComp) {
parentComp.registerChild(this, args.dojoinsertionindex);
} else {
dojo.widget.manager.topWidgets[this.widgetId] = this;
}
if (this.widgetsInTemplate) {
var parser = new dojo.xml.Parse();
var subContainerNode;
var subnodes = this.domNode.getElementsByTagName("*");
for (var i = 0; i < subnodes.length; i++) {
if (subnodes[i].getAttribute("dojoAttachPoint") == "subContainerWidget") {
subContainerNode = subnodes[i];
}
if (subnodes[i].getAttribute("dojoType")) {
subnodes[i].setAttribute("isSubWidget", true);
}
}
if (this.isContainer && !this.containerNode) {
if (subContainerNode) {
var src = this.getFragNodeRef(frag);
if (src) {
dojo.dom.moveChildren(src, subContainerNode);
frag["dojoDontFollow"] = true;
}
} else {
dojo.debug("No subContainerWidget node can be found in template file for widget " + this);
}
}
var templatefrag = parser.parseElement(this.domNode, null, true);
dojo.widget.getParser().createSubComponents(templatefrag, this);
var subwidgets = [];
var stack = [this];
var w;
while ((w = stack.pop())) {
for (var i = 0; i < w.children.length; i++) {
var cwidget = w.children[i];
if (cwidget._processedSubWidgets || !cwidget.extraArgs["issubwidget"]) {
continue;
}
subwidgets.push(cwidget);
if (cwidget.isContainer) {
stack.push(cwidget);
}
}
}
for (var i = 0; i < subwidgets.length; i++) {
var widget = subwidgets[i];
if (widget._processedSubWidgets) {
dojo.debug("This should not happen: widget._processedSubWidgets is already true!");
return;
}
widget._processedSubWidgets = true;
if (widget.extraArgs["dojoattachevent"]) {
var evts = widget.extraArgs["dojoattachevent"].split(";");
for (var j = 0; j < evts.length; j++) {
var thisFunc = null;
var tevt = dojo.string.trim(evts[j]);
if (tevt.indexOf(":") >= 0) {
var funcNameArr = tevt.split(":");
tevt = dojo.string.trim(funcNameArr[0]);
thisFunc = dojo.string.trim(funcNameArr[1]);
}
if (!thisFunc) {
thisFunc = tevt;
}
if (dojo.lang.isFunction(widget[tevt])) {
dojo.event.kwConnect({srcObj:widget, srcFunc:tevt, targetObj:this, targetFunc:thisFunc});
} else {
alert(tevt + " is not a function in widget " + widget);
}
}
}
if (widget.extraArgs["dojoattachpoint"]) {
this[widget.extraArgs["dojoattachpoint"]] = widget;
}
}
}
if (this.isContainer && !frag["dojoDontFollow"]) {
dojo.widget.getParser().createSubComponents(frag, this);
}
}, buildRendering:function (args, frag) {
var ts = dojo.widget._templateCache[this.widgetType];
if (args["templatecsspath"]) {
args["templateCssPath"] = args["templatecsspath"];
}
var cpath = args["templateCssPath"] || this.templateCssPath;
if (cpath && !dojo.widget._cssFiles[cpath.toString()]) {
if ((!this.templateCssString) && (cpath)) {
this.templateCssString = dojo.hostenv.getText(cpath);
this.templateCssPath = null;
}
dojo.widget._cssFiles[cpath.toString()] = true;
}
if ((this["templateCssString"]) && (!dojo.widget._cssStrings[this.templateCssString])) {
dojo.html.insertCssText(this.templateCssString, null, cpath);
dojo.widget._cssStrings[this.templateCssString] = true;
}
if ((!this.preventClobber) && ((this.templatePath) || (this.templateNode) || ((this["templateString"]) && (this.templateString.length)) || ((typeof ts != "undefined") && ((ts["string"]) || (ts["node"]))))) {
this.buildFromTemplate(args, frag);
} else {
this.domNode = this.getFragNodeRef(frag);
}
this.fillInTemplate(args, frag);
}, buildFromTemplate:function (args, frag) {
var avoidCache = false;
if (args["templatepath"]) {
args["templatePath"] = args["templatepath"];
}
dojo.widget.fillFromTemplateCache(this, args["templatePath"], null, avoidCache);
var ts = dojo.widget._templateCache[this.templatePath ? this.templatePath.toString() : this.widgetType];
if ((ts) && (!avoidCache)) {
if (!this.templateString.length) {
this.templateString = ts["string"];
}
if (!this.templateNode) {
this.templateNode = ts["node"];
}
}
var matches = false;
var node = null;
var tstr = this.templateString;
if ((!this.templateNode) && (this.templateString)) {
matches = this.templateString.match(/\$\{([^\}]+)\}/g);
if (matches) {
var hash = this.strings || {};
for (var key in dojo.widget.defaultStrings) {
if (dojo.lang.isUndefined(hash[key])) {
hash[key] = dojo.widget.defaultStrings[key];
}
}
for (var i = 0; i < matches.length; i++) {
var key = matches[i];
key = key.substring(2, key.length - 1);
var kval = (key.substring(0, 5) == "this.") ? dojo.lang.getObjPathValue(key.substring(5), this) : hash[key];
var value;
if ((kval) || (dojo.lang.isString(kval))) {
value = new String((dojo.lang.isFunction(kval)) ? kval.call(this, key, this.templateString) : kval);
while (value.indexOf("\"") > -1) {
value = value.replace("\"", "&quot;");
}
tstr = tstr.replace(matches[i], value);
}
}
} else {
this.templateNode = this.createNodesFromText(this.templateString, true)[0];
if (!avoidCache) {
ts.node = this.templateNode;
}
}
}
if ((!this.templateNode) && (!matches)) {
dojo.debug("DomWidget.buildFromTemplate: could not create template");
return false;
} else {
if (!matches) {
node = this.templateNode.cloneNode(true);
if (!node) {
return false;
}
} else {
node = this.createNodesFromText(tstr, true)[0];
}
}
this.domNode = node;
this.attachTemplateNodes();
if (this.isContainer && this.containerNode) {
var src = this.getFragNodeRef(frag);
if (src) {
dojo.dom.moveChildren(src, this.containerNode);
}
}
}, attachTemplateNodes:function (baseNode, targetObj) {
if (!baseNode) {
baseNode = this.domNode;
}
if (!targetObj) {
targetObj = this;
}
return dojo.widget.attachTemplateNodes(baseNode, targetObj, dojo.widget.getDojoEventsFromStr(this.templateString));
}, fillInTemplate:function () {
}, destroyRendering:function () {
try {
dojo.dom.destroyNode(this.domNode);
delete this.domNode;
}
catch (e) {
}
if (this._sourceNodeRef) {
try {
dojo.dom.destroyNode(this._sourceNodeRef);
}
catch (e) {
}
}
}, createNodesFromText:function () {
dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");
}});
 
/trunk/api/js/dojo/src/widget/svg/Chart.js
New file
0,0 → 1,470
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.svg.Chart");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Chart");
dojo.require("dojo.html.layout");
dojo.require("dojo.math");
dojo.require("dojo.svg");
dojo.require("dojo.gfx.color");
dojo.require("dojo.json");
dojo.widget.defineWidget("dojo.widget.svg.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () {
this.templatePath = null;
this.templateCssPath = null;
this._isInitialize = false;
this.hasData = false;
this.vectorNode = null;
this.plotArea = null;
this.dataGroup = null;
this.axisGroup = null;
this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}};
}, {parseProperties:function (node) {
var bRangeX = false;
var bRangeY = false;
if (node.getAttribute("width")) {
this.properties.width = node.getAttribute("width");
}
if (node.getAttribute("height")) {
this.properties.height = node.getAttribute("height");
}
if (node.getAttribute("plotType")) {
this.properties.plotType = node.getAttribute("plotType");
}
if (node.getAttribute("padding")) {
if (node.getAttribute("padding").indexOf(",") > -1) {
var p = node.getAttribute("padding").split(",");
} else {
var p = node.getAttribute("padding").split(" ");
}
if (p.length == 1) {
var pad = parseFloat(p[0]);
this.properties.padding.top = pad;
this.properties.padding.right = pad;
this.properties.padding.bottom = pad;
this.properties.padding.left = pad;
} else {
if (p.length == 2) {
var padV = parseFloat(p[0]);
var padH = parseFloat(p[1]);
this.properties.padding.top = padV;
this.properties.padding.right = padH;
this.properties.padding.bottom = padV;
this.properties.padding.left = padH;
} else {
if (p.length == 4) {
this.properties.padding.top = parseFloat(p[0]);
this.properties.padding.right = parseFloat(p[1]);
this.properties.padding.bottom = parseFloat(p[2]);
this.properties.padding.left = parseFloat(p[3]);
}
}
}
}
if (node.getAttribute("rangeX")) {
var p = node.getAttribute("rangeX");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
this.properties.axes.x.range.min = parseFloat(p[0]);
this.properties.axes.x.range.max = parseFloat(p[1]);
bRangeX = true;
}
if (node.getAttribute("rangeY")) {
var p = node.getAttribute("rangeY");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
this.properties.axes.y.range.min = parseFloat(p[0]);
this.properties.axes.y.range.max = parseFloat(p[1]);
bRangeY = true;
}
return {rangeX:bRangeX, rangeY:bRangeY};
}, setAxesPlot:function (table) {
if (table.getAttribute("axisAt")) {
var p = table.getAttribute("axisAt");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
if (!isNaN(parseFloat(p[0]))) {
this.properties.axes.x.plotAt = parseFloat(p[0]);
} else {
if (p[0].toLowerCase() == "ymin") {
this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
} else {
if (p[0].toLowerCase() == "ymax") {
this.properties.axes.x.plotAt = this.properties.axes.y.range.max;
}
}
}
if (!isNaN(parseFloat(p[1]))) {
this.properties.axes.y.plotAt = parseFloat(p[1]);
} else {
if (p[1].toLowerCase() == "xmin") {
this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
} else {
if (p[1].toLowerCase() == "xmax") {
this.properties.axes.y.plotAt = this.properties.axes.x.range.max;
}
}
}
} else {
this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
}
}, drawVectorNode:function () {
dojo.svg.g.suspend();
if (this.vectorNode) {
this.destroy();
}
this.vectorNode = document.createElementNS(dojo.svg.xmlns.svg, "svg");
this.vectorNode.setAttribute("width", this.properties.width);
this.vectorNode.setAttribute("height", this.properties.height);
dojo.svg.g.resume();
}, drawPlotArea:function () {
dojo.svg.g.suspend();
if (this.plotArea) {
this.plotArea.parentNode.removeChild(this.plotArea);
this.plotArea = null;
}
var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs");
var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath");
clip.setAttribute("id", "plotClip" + this.widgetId);
var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
rect.setAttribute("x", this.properties.padding.left);
rect.setAttribute("y", this.properties.padding.top);
rect.setAttribute("width", this.properties.width - this.properties.padding.left - this.properties.padding.right);
rect.setAttribute("height", this.properties.height - this.properties.padding.top - this.properties.padding.bottom);
clip.appendChild(rect);
defs.appendChild(clip);
this.vectorNode.appendChild(defs);
this.plotArea = document.createElementNS(dojo.svg.xmlns.svg, "g");
this.vectorNode.appendChild(this.plotArea);
var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
rect.setAttribute("x", this.properties.padding.left);
rect.setAttribute("y", this.properties.padding.top);
rect.setAttribute("width", this.properties.width - this.properties.padding.left - this.properties.padding.right);
rect.setAttribute("height", this.properties.height - this.properties.padding.top - this.properties.padding.bottom);
rect.setAttribute("fill", "#fff");
this.plotArea.appendChild(rect);
dojo.svg.g.resume();
}, drawDataGroup:function () {
dojo.svg.g.suspend();
if (this.dataGroup) {
this.dataGroup.parentNode.removeChild(this.dataGroup);
this.dataGroup = null;
}
this.dataGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
this.dataGroup.setAttribute("style", "clip-path:url(#plotClip" + this.widgetId + ");");
this.plotArea.appendChild(this.dataGroup);
dojo.svg.g.resume();
}, drawAxes:function () {
dojo.svg.g.suspend();
if (this.axisGroup) {
this.axisGroup.parentNode.removeChild(this.axisGroup);
this.axisGroup = null;
}
this.axisGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
this.plotArea.appendChild(this.axisGroup);
var stroke = 1;
var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
var y = dojo.widget.svg.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
line.setAttribute("y1", y);
line.setAttribute("y2", y);
line.setAttribute("x1", this.properties.padding.left - stroke);
line.setAttribute("x2", this.properties.width - this.properties.padding.right);
line.setAttribute("style", "stroke:#000;stroke-width:" + stroke + ";");
this.axisGroup.appendChild(line);
var textSize = 10;
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", this.properties.padding.left);
text.setAttribute("y", this.properties.height - this.properties.padding.bottom + textSize + 2);
text.setAttribute("style", "text-anchor:middle;font-size:" + textSize + "px;fill:#000;");
text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2)));
this.axisGroup.appendChild(text);
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", this.properties.width - this.properties.padding.right - (textSize / 2));
text.setAttribute("y", this.properties.height - this.properties.padding.bottom + textSize + 2);
text.setAttribute("style", "text-anchor:middle;font-size:" + textSize + "px;fill:#000;");
text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2)));
this.axisGroup.appendChild(text);
var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
var x = dojo.widget.svg.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
line.setAttribute("x1", x);
line.setAttribute("x2", x);
line.setAttribute("y1", this.properties.padding.top);
line.setAttribute("y2", this.properties.height - this.properties.padding.bottom);
line.setAttribute("style", "stroke:#000;stroke-width:" + stroke + ";");
this.axisGroup.appendChild(line);
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", this.properties.padding.left - 4);
text.setAttribute("y", this.properties.height - this.properties.padding.bottom);
text.setAttribute("style", "text-anchor:end;font-size:" + textSize + "px;fill:#000;");
text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2)));
this.axisGroup.appendChild(text);
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", this.properties.padding.left - 4);
text.setAttribute("y", this.properties.padding.top + (textSize / 2));
text.setAttribute("style", "text-anchor:end;font-size:" + textSize + "px;fill:#000;");
text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2)));
this.axisGroup.appendChild(text);
dojo.svg.g.resume();
}, init:function () {
if (!this.properties.width || !this.properties.height) {
var box = dojo.html.getContentBox(this.domNode);
if (!this.properties.width) {
this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width;
}
if (!this.properties.height) {
this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height;
}
}
this.drawVectorNode();
this.drawPlotArea();
this.drawDataGroup();
this.drawAxes();
this.domNode.appendChild(this.vectorNode);
this.assignColors();
this._isInitialized = true;
}, destroy:function () {
while (this.domNode.childNodes.length > 0) {
this.domNode.removeChild(this.domNode.childNodes.item(0));
}
this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null;
}, render:function () {
dojo.svg.g.suspend();
if (this.dataGroup) {
while (this.dataGroup.childNodes.length > 0) {
this.dataGroup.removeChild(this.dataGroup.childNodes.item(0));
}
} else {
this.init();
}
for (var i = 0; i < this.series.length; i++) {
dojo.widget.svg.Chart.Plotter.plot(this.series[i], this);
}
dojo.svg.g.resume();
}, postCreate:function () {
var table = this.domNode.getElementsByTagName("table")[0];
if (table) {
var ranges = this.parseProperties(table);
var bRangeX = false;
var bRangeY = false;
var axisValues = this.parseData(table);
if (!bRangeX) {
this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max};
}
if (!bRangeY) {
this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max};
}
this.setAxesPlot(table);
this.domNode.removeChild(table);
}
if (this.series.length > 0) {
this.render();
}
}});
dojo.widget.svg.Chart.Plotter = new function () {
var self = this;
var plotters = {};
var types = dojo.widget.Chart.PlotTypes;
this.getX = function (value, chart) {
var v = parseFloat(value);
var min = chart.properties.axes.x.range.min;
var max = chart.properties.axes.x.range.max;
var ofst = 0 - min;
min += ofst;
max += ofst;
v += ofst;
var xmin = chart.properties.padding.left;
var xmax = chart.properties.width - chart.properties.padding.right;
var x = (v * ((xmax - xmin) / max)) + xmin;
return x;
};
this.getY = function (value, chart) {
var v = parseFloat(value);
var max = chart.properties.axes.y.range.max;
var min = chart.properties.axes.y.range.min;
var ofst = 0;
if (min < 0) {
ofst += Math.abs(min);
}
min += ofst;
max += ofst;
v += ofst;
var ymin = chart.properties.height - chart.properties.padding.bottom;
var ymax = chart.properties.padding.top;
var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax;
return y;
};
this.addPlotter = function (name, func) {
plotters[name] = func;
};
this.plot = function (series, chart) {
if (series.values.length == 0) {
return;
}
if (series.plotType && plotters[series.plotType]) {
return plotters[series.plotType](series, chart);
} else {
if (chart.plotType && plotters[chart.plotType]) {
return plotters[chart.plotType](series, chart);
}
}
};
plotters["bar"] = function (series, chart) {
var space = 1;
var lastW = 0;
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var w;
if (i == series.values.length - 1) {
w = lastW;
} else {
w = self.getX(series.values[i + 1].x, chart) - x - space;
lastW = w;
}
x -= (w / 2);
var yA = self.getY(chart.properties.axes.x.plotAt, chart);
var y = self.getY(series.values[i].value, chart);
var h = Math.abs(yA - y);
if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) {
var oy = yA;
yA = y;
y = oy;
}
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", series.color);
bar.setAttribute("title", series.label + ": " + series.values[i].value);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.9");
chart.dataGroup.appendChild(bar);
}
};
plotters["line"] = function (series, chart) {
var tension = 1.5;
var line = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.setAttribute("fill", "none");
line.setAttribute("stroke", series.color);
line.setAttribute("stroke-width", "2");
line.setAttribute("stroke-opacity", "0.85");
line.setAttribute("title", series.label);
chart.dataGroup.appendChild(line);
var path = [];
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var y = self.getY(series.values[i].value, chart);
var dx = chart.properties.padding.left + 1;
var dy = chart.properties.height - chart.properties.padding.bottom;
if (i > 0) {
dx = x - self.getX(series.values[i - 1].x, chart);
dy = self.getY(series.values[i - 1].value, chart);
}
if (i == 0) {
path.push("M");
} else {
path.push("C");
var cx = x - (tension - 1) * (dx / tension);
path.push(cx + "," + dy);
cx = x - (dx / tension);
path.push(cx + "," + y);
}
path.push(x + "," + y);
}
line.setAttribute("d", path.join(" "));
};
plotters["area"] = function (series, chart) {
var tension = 1.5;
var line = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.setAttribute("fill", series.color);
line.setAttribute("fill-opacity", "0.4");
line.setAttribute("stroke", series.color);
line.setAttribute("stroke-width", "1");
line.setAttribute("stroke-opacity", "0.8");
line.setAttribute("title", series.label);
chart.dataGroup.appendChild(line);
var path = [];
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var y = self.getY(series.values[i].value, chart);
var dx = chart.properties.padding.left + 1;
var dy = chart.properties.height - chart.properties.padding.bottom;
if (i > 0) {
dx = x - self.getX(series.values[i - 1].x, chart);
dy = self.getY(series.values[i - 1].value, chart);
}
if (i == 0) {
path.push("M");
} else {
path.push("C");
var cx = x - (tension - 1) * (dx / tension);
path.push(cx + "," + dy);
cx = x - (dx / tension);
path.push(cx + "," + y);
}
path.push(x + "," + y);
}
path.push("L");
path.push(x + "," + self.getY(0, chart));
path.push("L");
path.push(self.getX(0, chart) + "," + self.getY(0, chart));
path.push("Z");
line.setAttribute("d", path.join(" "));
}, plotters["scatter"] = function (series, chart) {
var r = 7;
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var y = self.getY(series.values[i].value, chart);
var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
point.setAttribute("fill", series.color);
point.setAttribute("stroke-width", "0");
point.setAttribute("title", series.label + ": " + series.values[i].value);
point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z");
chart.dataGroup.appendChild(point);
}
};
plotters["bubble"] = function (series, chart) {
var minR = 1;
var min = chart.properties.axes.x.range.min;
var max = chart.properties.axes.x.range.max;
var ofst = 0 - min;
min += ofst;
max += ofst;
var xmin = chart.properties.padding.left;
var xmax = chart.properties.width - chart.properties.padding.right;
var factor = (max - min) / (xmax - xmin) * 25;
for (var i = 0; i < series.values.length; i++) {
var size = series.values[i].size;
if (isNaN(parseFloat(size))) {
size = minR;
}
var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");
point.setAttribute("stroke-width", 0);
point.setAttribute("fill", series.color);
point.setAttribute("fill-opacity", "0.8");
point.setAttribute("r", (parseFloat(size) * factor) / 2);
point.setAttribute("cx", self.getX(series.values[i].x, chart));
point.setAttribute("cy", self.getY(series.values[i].value, chart));
point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
chart.dataGroup.appendChild(point);
}
};
}();
 
/trunk/api/js/dojo/src/widget/TitlePane.js
New file
0,0 → 1,41
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TitlePane");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.html.style");
dojo.require("dojo.lfx.*");
dojo.widget.defineWidget("dojo.widget.TitlePane", dojo.widget.ContentPane, {labelNodeClass:"", containerNodeClass:"", label:"", open:true, templateString:"<div dojoAttachPoint=\"domNode\">\n<div dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onclick: onLabelClick\"></div>\n<div dojoAttachPoint=\"containerNode\"></div>\n</div>\n", postCreate:function () {
if (this.label) {
this.labelNode.appendChild(document.createTextNode(this.label));
}
if (this.labelNodeClass) {
dojo.html.addClass(this.labelNode, this.labelNodeClass);
}
if (this.containerNodeClass) {
dojo.html.addClass(this.containerNode, this.containerNodeClass);
}
if (!this.open) {
dojo.html.hide(this.containerNode);
}
dojo.widget.TitlePane.superclass.postCreate.apply(this, arguments);
}, onLabelClick:function () {
if (this.open) {
dojo.lfx.wipeOut(this.containerNode, 250).play();
this.open = false;
} else {
dojo.lfx.wipeIn(this.containerNode, 250).play();
this.open = true;
}
}, setLabel:function (label) {
this.labelNode.innerHTML = label;
}});
 
/trunk/api/js/dojo/src/widget/Checkbox.js
New file
0,0 → 1,101
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Checkbox");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.html.style");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.Checkbox", dojo.widget.HtmlWidget, {templateString:"<span style=\"display: inline-block;\" tabIndex=\"${this.tabIndex}\" waiRole=\"checkbox\" id=\"${this.id}\">\n\t<img dojoAttachPoint=\"imageNode\" class=\"dojoHtmlCheckbox\" src=\"${dojoWidgetModuleUri}templates/images/blank.gif\" alt=\"\" />\n\t<input type=\"checkbox\" name=\"${this.name}\" style=\"display: none\" value=\"${this.value}\"\n\t\tdojoAttachPoint=\"inputNode\">\n</span>\n", templateCssString:".dojoHtmlCheckbox {\n\tborder: 0px;\n\twidth: 16px;\n\theight: 16px;\n\tmargin: 2px;\n\tvertical-align: middle;\n}\n\n.dojoHtmlCheckboxOn {\n\tbackground: url(check.gif) 0px 0px;\n}\n.dojoHtmlCheckboxOff {\n\tbackground: url(check.gif) -16px 0px;\n}\n.dojoHtmlCheckboxDisabledOn {\n\tbackground: url(check.gif) -32px 0px;\n}\n.dojoHtmlCheckboxDisabledOff {\n\tbackground: url(check.gif) -48px 0px;\n}\n.dojoHtmlCheckboxOnHover {\n\tbackground: url(check.gif) -64px 0px;\n}\n.dojoHtmlCheckboxOffHover {\n\tbackground: url(check.gif) -80px 0px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Checkbox.css"), name:"", id:"", checked:false, tabIndex:"", value:"on", postMixInProperties:function () {
dojo.widget.Checkbox.superclass.postMixInProperties.apply(this, arguments);
if (!this.disabled && this.tabIndex == "") {
this.tabIndex = "0";
}
}, fillInTemplate:function () {
this._setInfo();
}, postCreate:function () {
var notcon = true;
this.id = this.id != "" ? this.id : this.widgetId;
if (this.id != "") {
var labels = document.getElementsByTagName("label");
if (labels != null && labels.length > 0) {
for (var i = 0; i < labels.length; i++) {
if (labels[i].htmlFor == this.id) {
labels[i].id = (labels[i].htmlFor + "label");
this._connectEvents(labels[i]);
dojo.widget.wai.setAttr(this.domNode, "waiState", "labelledby", labels[i].id);
break;
}
}
}
}
this._connectEvents(this.domNode);
this.inputNode.checked = this.checked;
}, _connectEvents:function (node) {
dojo.event.connect(node, "onmouseover", this, "mouseOver");
dojo.event.connect(node, "onmouseout", this, "mouseOut");
dojo.event.connect(node, "onkey", this, "onKey");
dojo.event.connect(node, "onclick", this, "_onClick");
dojo.html.disableSelection(node);
}, _onClick:function (e) {
if (this.disabled == false) {
this.checked = !this.checked;
this._setInfo();
}
e.preventDefault();
e.stopPropagation();
this.onClick();
}, setValue:function (bool) {
if (this.disabled == false) {
this.checked = bool;
this._setInfo();
}
}, onClick:function () {
}, onKey:function (e) {
var k = dojo.event.browser.keys;
if (e.key == " ") {
this._onClick(e);
}
}, mouseOver:function (e) {
this._hover(e, true);
}, mouseOut:function (e) {
this._hover(e, false);
}, _hover:function (e, isOver) {
if (this.disabled == false) {
var state = this.checked ? "On" : "Off";
var style = "dojoHtmlCheckbox" + state + "Hover";
if (isOver) {
dojo.html.addClass(this.imageNode, style);
} else {
dojo.html.removeClass(this.imageNode, style);
}
}
}, _setInfo:function () {
var state = "dojoHtmlCheckbox" + (this.disabled ? "Disabled" : "") + (this.checked ? "On" : "Off");
dojo.html.setClass(this.imageNode, "dojoHtmlCheckbox " + state);
this.inputNode.checked = this.checked;
if (this.disabled) {
this.inputNode.setAttribute("disabled", true);
} else {
this.inputNode.removeAttribute("disabled");
}
dojo.widget.wai.setAttr(this.domNode, "waiState", "checked", this.checked);
}});
dojo.widget.defineWidget("dojo.widget.a11y.Checkbox", dojo.widget.Checkbox, {templateString:"<span class='dojoHtmlCheckbox'>\n\t<input type=\"checkbox\" name=\"${this.name}\" tabIndex=\"${this.tabIndex}\" id=\"${this.id}\" value=\"${this.value}\"\n\t\t dojoAttachEvent=\"onClick: _onClick;\" dojoAttachPoint=\"inputNode\"> \n</span>\n", fillInTemplate:function () {
}, postCreate:function (args, frag) {
this.inputNode.checked = this.checked;
if (this.disabled) {
this.inputNode.setAttribute("disabled", true);
}
}, _onClick:function () {
this.onClick();
}});
 
/trunk/api/js/dojo/src/widget/FisheyeList.js
New file
0,0 → 1,444
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.FisheyeList");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.html.style");
dojo.require("dojo.html.selection");
dojo.require("dojo.html.util");
dojo.require("dojo.event.*");
dojo.widget.defineWidget("dojo.widget.FisheyeList", dojo.widget.HtmlWidget, function () {
this.pos = {x:-1, y:-1};
this.EDGE = {CENTER:0, LEFT:1, RIGHT:2, TOP:3, BOTTOM:4};
this.timerScale = 1;
}, {templateString:"<div class=\"dojoHtmlFisheyeListBar\"></div>", templateCssString:".dojoHtmlFisheyeListItemLabel {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tbackground-color: #eee;\n\tborder: 2px solid #666;\n\tpadding: 2px;\n\ttext-align: center;\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.dojoHtmlFisheyeListItemLabel.selected {\n\tdisplay: block;\n}\n\n.dojoHtmlFisheyeListItemImage {\n\tborder: 0px;\n\tposition: absolute;\n}\n\n.dojoHtmlFisheyeListItem {\n\tposition: absolute;\n\tz-index: 2;\n}\n\n.dojoHtmlFisheyeListBar {\n\tposition: relative;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/FisheyeList.css"), isContainer:true, snarfChildDomOutput:true, itemWidth:40, itemHeight:40, itemMaxWidth:150, itemMaxHeight:150, orientation:"horizontal", conservativeTrigger:false, effectUnits:2, itemPadding:10, attachEdge:"center", labelEdge:"bottom", enableCrappySvgSupport:false, fillInTemplate:function () {
dojo.html.disableSelection(this.domNode);
this.isHorizontal = (this.orientation == "horizontal");
this.selectedNode = -1;
this.isOver = false;
this.hitX1 = -1;
this.hitY1 = -1;
this.hitX2 = -1;
this.hitY2 = -1;
this.anchorEdge = this._toEdge(this.attachEdge, this.EDGE.CENTER);
this.labelEdge = this._toEdge(this.labelEdge, this.EDGE.TOP);
if (this.isHorizontal && (this.anchorEdge == this.EDGE.LEFT)) {
this.anchorEdge = this.EDGE.CENTER;
}
if (this.isHorizontal && (this.anchorEdge == this.EDGE.RIGHT)) {
this.anchorEdge = this.EDGE.CENTER;
}
if (!this.isHorizontal && (this.anchorEdge == this.EDGE.TOP)) {
this.anchorEdge = this.EDGE.CENTER;
}
if (!this.isHorizontal && (this.anchorEdge == this.EDGE.BOTTOM)) {
this.anchorEdge = this.EDGE.CENTER;
}
if (this.labelEdge == this.EDGE.CENTER) {
this.labelEdge = this.EDGE.TOP;
}
if (this.isHorizontal && (this.labelEdge == this.EDGE.LEFT)) {
this.labelEdge = this.EDGE.TOP;
}
if (this.isHorizontal && (this.labelEdge == this.EDGE.RIGHT)) {
this.labelEdge = this.EDGE.TOP;
}
if (!this.isHorizontal && (this.labelEdge == this.EDGE.TOP)) {
this.labelEdge = this.EDGE.LEFT;
}
if (!this.isHorizontal && (this.labelEdge == this.EDGE.BOTTOM)) {
this.labelEdge = this.EDGE.LEFT;
}
this.proximityLeft = this.itemWidth * (this.effectUnits - 0.5);
this.proximityRight = this.itemWidth * (this.effectUnits - 0.5);
this.proximityTop = this.itemHeight * (this.effectUnits - 0.5);
this.proximityBottom = this.itemHeight * (this.effectUnits - 0.5);
if (this.anchorEdge == this.EDGE.LEFT) {
this.proximityLeft = 0;
}
if (this.anchorEdge == this.EDGE.RIGHT) {
this.proximityRight = 0;
}
if (this.anchorEdge == this.EDGE.TOP) {
this.proximityTop = 0;
}
if (this.anchorEdge == this.EDGE.BOTTOM) {
this.proximityBottom = 0;
}
if (this.anchorEdge == this.EDGE.CENTER) {
this.proximityLeft /= 2;
this.proximityRight /= 2;
this.proximityTop /= 2;
this.proximityBottom /= 2;
}
}, postCreate:function () {
this._initializePositioning();
if (!this.conservativeTrigger) {
dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
}
dojo.event.connect(document.documentElement, "onmouseout", this, "_onBodyOut");
dojo.event.connect(this, "addChild", this, "_initializePositioning");
}, _initializePositioning:function () {
this.itemCount = this.children.length;
this.barWidth = (this.isHorizontal ? this.itemCount : 1) * this.itemWidth;
this.barHeight = (this.isHorizontal ? 1 : this.itemCount) * this.itemHeight;
this.totalWidth = this.proximityLeft + this.proximityRight + this.barWidth;
this.totalHeight = this.proximityTop + this.proximityBottom + this.barHeight;
for (var i = 0; i < this.children.length; i++) {
this.children[i].posX = this.itemWidth * (this.isHorizontal ? i : 0);
this.children[i].posY = this.itemHeight * (this.isHorizontal ? 0 : i);
this.children[i].cenX = this.children[i].posX + (this.itemWidth / 2);
this.children[i].cenY = this.children[i].posY + (this.itemHeight / 2);
var isz = this.isHorizontal ? this.itemWidth : this.itemHeight;
var r = this.effectUnits * isz;
var c = this.isHorizontal ? this.children[i].cenX : this.children[i].cenY;
var lhs = this.isHorizontal ? this.proximityLeft : this.proximityTop;
var rhs = this.isHorizontal ? this.proximityRight : this.proximityBottom;
var siz = this.isHorizontal ? this.barWidth : this.barHeight;
var range_lhs = r;
var range_rhs = r;
if (range_lhs > c + lhs) {
range_lhs = c + lhs;
}
if (range_rhs > (siz - c + rhs)) {
range_rhs = siz - c + rhs;
}
this.children[i].effectRangeLeft = range_lhs / isz;
this.children[i].effectRangeRght = range_rhs / isz;
}
this.domNode.style.width = this.barWidth + "px";
this.domNode.style.height = this.barHeight + "px";
for (var i = 0; i < this.children.length; i++) {
var itm = this.children[i];
var elm = itm.domNode;
elm.style.left = itm.posX + "px";
elm.style.top = itm.posY + "px";
elm.style.width = this.itemWidth + "px";
elm.style.height = this.itemHeight + "px";
if (itm.svgNode) {
itm.svgNode.style.position = "absolute";
itm.svgNode.style.left = this.itemPadding + "%";
itm.svgNode.style.top = this.itemPadding + "%";
itm.svgNode.style.width = (100 - 2 * this.itemPadding) + "%";
itm.svgNode.style.height = (100 - 2 * this.itemPadding) + "%";
itm.svgNode.style.zIndex = 1;
itm.svgNode.setSize(this.itemWidth, this.itemHeight);
} else {
itm.imgNode.style.left = this.itemPadding + "%";
itm.imgNode.style.top = this.itemPadding + "%";
itm.imgNode.style.width = (100 - 2 * this.itemPadding) + "%";
itm.imgNode.style.height = (100 - 2 * this.itemPadding) + "%";
}
}
this._calcHitGrid();
}, _onBodyOut:function (e) {
if (dojo.html.overElement(dojo.body(), e)) {
return;
}
this._setDormant(e);
}, _setDormant:function (e) {
if (!this.isOver) {
return;
}
this.isOver = false;
if (this.conservativeTrigger) {
dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
}
this._onGridMouseMove(-1, -1);
}, _setActive:function (e) {
if (this.isOver) {
return;
}
this.isOver = true;
if (this.conservativeTrigger) {
dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
this.timerScale = 0;
this._onMouseMove(e);
this._expandSlowly();
}
}, _onMouseMove:function (e) {
if ((e.pageX >= this.hitX1) && (e.pageX <= this.hitX2) && (e.pageY >= this.hitY1) && (e.pageY <= this.hitY2)) {
if (!this.isOver) {
this._setActive(e);
}
this._onGridMouseMove(e.pageX - this.hitX1, e.pageY - this.hitY1);
} else {
if (this.isOver) {
this._setDormant(e);
}
}
}, onResized:function () {
this._calcHitGrid();
}, _onGridMouseMove:function (x, y) {
this.pos = {x:x, y:y};
this._paint();
}, _paint:function () {
var x = this.pos.x;
var y = this.pos.y;
if (this.itemCount <= 0) {
return;
}
var pos = this.isHorizontal ? x : y;
var prx = this.isHorizontal ? this.proximityLeft : this.proximityTop;
var siz = this.isHorizontal ? this.itemWidth : this.itemHeight;
var sim = this.isHorizontal ? (1 - this.timerScale) * this.itemWidth + this.timerScale * this.itemMaxWidth : (1 - this.timerScale) * this.itemHeight + this.timerScale * this.itemMaxHeight;
var cen = ((pos - prx) / siz) - 0.5;
var max_off_cen = (sim / siz) - 0.5;
if (max_off_cen > this.effectUnits) {
max_off_cen = this.effectUnits;
}
var off_weight = 0;
if (this.anchorEdge == this.EDGE.BOTTOM) {
var cen2 = (y - this.proximityTop) / this.itemHeight;
off_weight = (cen2 > 0.5) ? 1 : y / (this.proximityTop + (this.itemHeight / 2));
}
if (this.anchorEdge == this.EDGE.TOP) {
var cen2 = (y - this.proximityTop) / this.itemHeight;
off_weight = (cen2 < 0.5) ? 1 : (this.totalHeight - y) / (this.proximityBottom + (this.itemHeight / 2));
}
if (this.anchorEdge == this.EDGE.RIGHT) {
var cen2 = (x - this.proximityLeft) / this.itemWidth;
off_weight = (cen2 > 0.5) ? 1 : x / (this.proximityLeft + (this.itemWidth / 2));
}
if (this.anchorEdge == this.EDGE.LEFT) {
var cen2 = (x - this.proximityLeft) / this.itemWidth;
off_weight = (cen2 < 0.5) ? 1 : (this.totalWidth - x) / (this.proximityRight + (this.itemWidth / 2));
}
if (this.anchorEdge == this.EDGE.CENTER) {
if (this.isHorizontal) {
off_weight = y / (this.totalHeight);
} else {
off_weight = x / (this.totalWidth);
}
if (off_weight > 0.5) {
off_weight = 1 - off_weight;
}
off_weight *= 2;
}
for (var i = 0; i < this.itemCount; i++) {
var weight = this._weighAt(cen, i);
if (weight < 0) {
weight = 0;
}
this._setItemSize(i, weight * off_weight);
}
var main_p = Math.round(cen);
var offset = 0;
if (cen < 0) {
main_p = 0;
} else {
if (cen > this.itemCount - 1) {
main_p = this.itemCount - 1;
} else {
offset = (cen - main_p) * ((this.isHorizontal ? this.itemWidth : this.itemHeight) - this.children[main_p].sizeMain);
}
}
this._positionElementsFrom(main_p, offset);
}, _weighAt:function (cen, i) {
var dist = Math.abs(cen - i);
var limit = ((cen - i) > 0) ? this.children[i].effectRangeRght : this.children[i].effectRangeLeft;
return (dist > limit) ? 0 : (1 - dist / limit);
}, _setItemSize:function (p, scale) {
scale *= this.timerScale;
var w = Math.round(this.itemWidth + ((this.itemMaxWidth - this.itemWidth) * scale));
var h = Math.round(this.itemHeight + ((this.itemMaxHeight - this.itemHeight) * scale));
if (this.isHorizontal) {
this.children[p].sizeW = w;
this.children[p].sizeH = h;
this.children[p].sizeMain = w;
this.children[p].sizeOff = h;
var y = 0;
if (this.anchorEdge == this.EDGE.TOP) {
y = (this.children[p].cenY - (this.itemHeight / 2));
} else {
if (this.anchorEdge == this.EDGE.BOTTOM) {
y = (this.children[p].cenY - (h - (this.itemHeight / 2)));
} else {
y = (this.children[p].cenY - (h / 2));
}
}
this.children[p].usualX = Math.round(this.children[p].cenX - (w / 2));
this.children[p].domNode.style.top = y + "px";
this.children[p].domNode.style.left = this.children[p].usualX + "px";
} else {
this.children[p].sizeW = w;
this.children[p].sizeH = h;
this.children[p].sizeOff = w;
this.children[p].sizeMain = h;
var x = 0;
if (this.anchorEdge == this.EDGE.LEFT) {
x = this.children[p].cenX - (this.itemWidth / 2);
} else {
if (this.anchorEdge == this.EDGE.RIGHT) {
x = this.children[p].cenX - (w - (this.itemWidth / 2));
} else {
x = this.children[p].cenX - (w / 2);
}
}
this.children[p].domNode.style.left = x + "px";
this.children[p].usualY = Math.round(this.children[p].cenY - (h / 2));
this.children[p].domNode.style.top = this.children[p].usualY + "px";
}
this.children[p].domNode.style.width = w + "px";
this.children[p].domNode.style.height = h + "px";
if (this.children[p].svgNode) {
this.children[p].svgNode.setSize(w, h);
}
}, _positionElementsFrom:function (p, offset) {
var pos = 0;
if (this.isHorizontal) {
pos = Math.round(this.children[p].usualX + offset);
this.children[p].domNode.style.left = pos + "px";
} else {
pos = Math.round(this.children[p].usualY + offset);
this.children[p].domNode.style.top = pos + "px";
}
this._positionLabel(this.children[p]);
var bpos = pos;
for (var i = p - 1; i >= 0; i--) {
bpos -= this.children[i].sizeMain;
if (this.isHorizontal) {
this.children[i].domNode.style.left = bpos + "px";
} else {
this.children[i].domNode.style.top = bpos + "px";
}
this._positionLabel(this.children[i]);
}
var apos = pos;
for (var i = p + 1; i < this.itemCount; i++) {
apos += this.children[i - 1].sizeMain;
if (this.isHorizontal) {
this.children[i].domNode.style.left = apos + "px";
} else {
this.children[i].domNode.style.top = apos + "px";
}
this._positionLabel(this.children[i]);
}
}, _positionLabel:function (itm) {
var x = 0;
var y = 0;
var mb = dojo.html.getMarginBox(itm.lblNode);
if (this.labelEdge == this.EDGE.TOP) {
x = Math.round((itm.sizeW / 2) - (mb.width / 2));
y = -mb.height;
}
if (this.labelEdge == this.EDGE.BOTTOM) {
x = Math.round((itm.sizeW / 2) - (mb.width / 2));
y = itm.sizeH;
}
if (this.labelEdge == this.EDGE.LEFT) {
x = -mb.width;
y = Math.round((itm.sizeH / 2) - (mb.height / 2));
}
if (this.labelEdge == this.EDGE.RIGHT) {
x = itm.sizeW;
y = Math.round((itm.sizeH / 2) - (mb.height / 2));
}
itm.lblNode.style.left = x + "px";
itm.lblNode.style.top = y + "px";
}, _calcHitGrid:function () {
var pos = dojo.html.getAbsolutePosition(this.domNode, true);
this.hitX1 = pos.x - this.proximityLeft;
this.hitY1 = pos.y - this.proximityTop;
this.hitX2 = this.hitX1 + this.totalWidth;
this.hitY2 = this.hitY1 + this.totalHeight;
}, _toEdge:function (inp, def) {
return this.EDGE[inp.toUpperCase()] || def;
}, _expandSlowly:function () {
if (!this.isOver) {
return;
}
this.timerScale += 0.2;
this._paint();
if (this.timerScale < 1) {
dojo.lang.setTimeout(this, "_expandSlowly", 10);
}
}, destroy:function () {
dojo.event.disconnect(document.documentElement, "onmouseout", this, "_onBodyOut");
dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
dojo.widget.FisheyeList.superclass.destroy.call(this);
}});
dojo.widget.defineWidget("dojo.widget.FisheyeListItem", dojo.widget.HtmlWidget, {iconSrc:"", svgSrc:"", caption:"", id:"", _blankImgPath:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), templateString:"<div class=\"dojoHtmlFisheyeListItem\">" + " <img class=\"dojoHtmlFisheyeListItemImage\" dojoAttachPoint=\"imgNode\" dojoAttachEvent=\"onMouseOver;onMouseOut;onClick\">" + " <div class=\"dojoHtmlFisheyeListItemLabel\" dojoAttachPoint=\"lblNode\"></div>" + "</div>", fillInTemplate:function () {
if (this.svgSrc != "") {
this.svgNode = this._createSvgNode(this.svgSrc);
this.domNode.appendChild(this.svgNode);
this.imgNode.style.display = "none";
} else {
if ((this.iconSrc.toLowerCase().substring(this.iconSrc.length - 4) == ".png") && (dojo.render.html.ie) && (!dojo.render.html.ie70)) {
if (dojo.dom.hasParent(this.imgNode) && this.id != "") {
var parent = this.imgNode.parentNode;
parent.setAttribute("id", this.id);
}
this.imgNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.iconSrc + "', sizingMethod='scale')";
this.imgNode.src = this._blankImgPath.toString();
} else {
if (dojo.dom.hasParent(this.imgNode) && this.id != "") {
var parent = this.imgNode.parentNode;
parent.setAttribute("id", this.id);
}
this.imgNode.src = this.iconSrc;
}
}
if (this.lblNode) {
this.lblNode.appendChild(document.createTextNode(this.caption));
}
dojo.html.disableSelection(this.domNode);
}, _createSvgNode:function (src) {
var elm = document.createElement("embed");
elm.src = src;
elm.type = "image/svg+xml";
elm.style.width = "1px";
elm.style.height = "1px";
elm.loaded = 0;
elm.setSizeOnLoad = false;
elm.onload = function () {
this.svgRoot = this.getSVGDocument().rootElement;
this.svgDoc = this.getSVGDocument().documentElement;
this.zeroWidth = this.svgRoot.width.baseVal.value;
this.zeroHeight = this.svgRoot.height.baseVal.value;
this.loaded = true;
if (this.setSizeOnLoad) {
this.setSize(this.setWidth, this.setHeight);
}
};
elm.setSize = function (w, h) {
if (!this.loaded) {
this.setWidth = w;
this.setHeight = h;
this.setSizeOnLoad = true;
return;
}
this.style.width = w + "px";
this.style.height = h + "px";
this.svgRoot.width.baseVal.value = w;
this.svgRoot.height.baseVal.value = h;
var scale_x = w / this.zeroWidth;
var scale_y = h / this.zeroHeight;
for (var i = 0; i < this.svgDoc.childNodes.length; i++) {
if (this.svgDoc.childNodes[i].setAttribute) {
this.svgDoc.childNodes[i].setAttribute("transform", "scale(" + scale_x + "," + scale_y + ")");
}
}
};
return elm;
}, onMouseOver:function (e) {
if (!this.parent.isOver) {
this.parent._setActive(e);
}
if (this.caption != "") {
dojo.html.addClass(this.lblNode, "selected");
this.parent._positionLabel(this);
}
}, onMouseOut:function (e) {
dojo.html.removeClass(this.lblNode, "selected");
}, onClick:function (e) {
}});
 
/trunk/api/js/dojo/src/widget/ProgressBar.js
New file
0,0 → 1,185
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ProgressBar");
dojo.require("dojo.widget.*");
dojo.require("dojo.event");
dojo.require("dojo.dom");
dojo.require("dojo.html.style");
dojo.require("dojo.string.*");
dojo.require("dojo.lfx.*");
dojo.widget.defineWidget("dojo.widget.ProgressBar", dojo.widget.HtmlWidget, {progressValue:0, maxProgressValue:100, width:300, height:30, frontPercentClass:"frontPercent", backPercentClass:"backPercent", frontBarClass:"frontBar", backBarClass:"backBar", hasText:false, isVertical:false, showOnlyIntegers:false, dataSource:"", pollInterval:3000, duration:1000, templateString:"<div dojoAttachPoint=\"containerNode\" style=\"position:relative;overflow:hidden\">\n\t<div style=\"position:absolute;display:none;width:100%;text-align:center\" dojoAttachPoint=\"backPercentLabel\" class=\"dojoBackPercentLabel\"></div>\n\t<div style=\"position:absolute;overflow:hidden;width:100%;height:100%\" dojoAttachPoint=\"internalProgress\">\n\t<div style=\"position:absolute;display:none;width:100%;text-align:center\" dojoAttachPoint=\"frontPercentLabel\" class=\"dojoFrontPercentLabel\"></div></div>\n</div>\n", templateCssString:".backBar{\n\tborder:1px solid #84a3d1;\n}\n.frontBar{\n\tbackground:url(\"images/bar.gif\") repeat bottom left;\n\tbackground-attachment: fixed;\n}\n.h-frontBar{\n\tbackground:url(\"images/h-bar.gif\") repeat bottom left;\n\tbackground-attachment: fixed;\n}\n.simpleFrontBar{\n\tbackground: red;\n}\n.frontPercent,.backPercent{\n\tfont:bold 13px helvetica;\n}\n.backPercent{\n\tcolor:#293a4b;\n}\n.frontPercent{\n\tcolor:#fff;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ProgressBar.css"), containerNode:null, internalProgress:null, _pixelUnitRatio:0, _pixelPercentRatio:0, _unitPercentRatio:0, _unitPixelRatio:0, _floatDimension:0, _intDimension:0, _progressPercentValue:"0%", _floatMaxProgressValue:0, _dimension:"width", _pixelValue:0, _oInterval:null, _animation:null, _animationStopped:true, _progressValueBak:false, _hasTextBak:false, fillInTemplate:function (args, frag) {
this.internalProgress.className = this.frontBarClass;
this.containerNode.className = this.backBarClass;
if (this.isVertical) {
this.internalProgress.style.bottom = "0px";
this.internalProgress.style.left = "0px";
this._dimension = "height";
} else {
this.internalProgress.style.top = "0px";
this.internalProgress.style.left = "0px";
this._dimension = "width";
}
this.frontPercentLabel.className = this.frontPercentClass;
this.backPercentLabel.className = this.backPercentClass;
this.progressValue = "" + this.progressValue;
this.domNode.style.height = this.height + "px";
this.domNode.style.width = this.width + "px";
this._intDimension = parseInt("0" + eval("this." + this._dimension));
this._floatDimension = parseFloat("0" + eval("this." + this._dimension));
this._pixelPercentRatio = this._floatDimension / 100;
this.setMaxProgressValue(this.maxProgressValue, true);
this.setProgressValue(dojo.string.trim(this.progressValue), true);
dojo.debug("float dimension: " + this._floatDimension);
dojo.debug("this._unitPixelRatio: " + this._unitPixelRatio);
this.showText(this.hasText);
}, showText:function (visible) {
if (visible) {
this.backPercentLabel.style.display = "block";
this.frontPercentLabel.style.display = "block";
} else {
this.backPercentLabel.style.display = "none";
this.frontPercentLabel.style.display = "none";
}
this.hasText = visible;
}, postCreate:function (args, frag) {
this.render();
}, _backupValues:function () {
this._progressValueBak = this.progressValue;
this._hasTextBak = this.hasText;
}, _restoreValues:function () {
this.setProgressValue(this._progressValueBak);
this.showText(this._hasTextBak);
}, _setupAnimation:function () {
var _self = this;
dojo.debug("internalProgress width: " + this.internalProgress.style.width);
this._animation = dojo.lfx.html.slideTo(this.internalProgress, {top:0, left:parseInt(this.width) - parseInt(this.internalProgress.style.width)}, parseInt(this.duration), null, function () {
var _backAnim = dojo.lfx.html.slideTo(_self.internalProgress, {top:0, left:0}, parseInt(_self.duration));
dojo.event.connect(_backAnim, "onEnd", function () {
if (!_self._animationStopped) {
_self._animation.play();
}
});
if (!_self._animationStopped) {
_backAnim.play();
}
_backAnim = null;
});
}, getMaxProgressValue:function () {
return this.maxProgressValue;
}, setMaxProgressValue:function (maxValue, noRender) {
if (!this._animationStopped) {
return;
}
this.maxProgressValue = maxValue;
this._floatMaxProgressValue = parseFloat("0" + this.maxProgressValue);
this._pixelUnitRatio = this._floatDimension / this.maxProgressValue;
this._unitPercentRatio = this._floatMaxProgressValue / 100;
this._unitPixelRatio = this._floatMaxProgressValue / this._floatDimension;
this.setProgressValue(this.progressValue, true);
if (!noRender) {
this.render();
}
}, setProgressValue:function (value, noRender) {
if (!this._animationStopped) {
return;
}
this._progressPercentValue = "0%";
var _value = dojo.string.trim("" + value);
var _floatValue = parseFloat("0" + _value);
var _intValue = parseInt("0" + _value);
var _pixelValue = 0;
if (dojo.string.endsWith(_value, "%", false)) {
this._progressPercentValue = Math.min(_floatValue.toFixed(1), 100) + "%";
_value = Math.min((_floatValue) * this._unitPercentRatio, this.maxProgressValue);
_pixelValue = Math.min((_floatValue) * this._pixelPercentRatio, eval("this." + this._dimension));
} else {
this.progressValue = Math.min(_floatValue, this.maxProgressValue);
this._progressPercentValue = Math.min((_floatValue / this._unitPercentRatio).toFixed(1), 100) + "%";
_pixelValue = Math.min(_floatValue / this._unitPixelRatio, eval("this." + this._dimension));
}
this.progressValue = dojo.string.trim(_value);
this._pixelValue = _pixelValue;
if (!noRender) {
this.render();
}
}, getProgressValue:function () {
return this.progressValue;
}, getProgressPercentValue:function () {
return this._progressPercentValue;
}, setDataSource:function (dataSource) {
this.dataSource = dataSource;
}, setPollInterval:function (pollInterval) {
this.pollInterval = pollInterval;
}, start:function () {
var _showFunction = dojo.lang.hitch(this, this._showRemoteProgress);
this._oInterval = setInterval(_showFunction, this.pollInterval);
}, startAnimation:function () {
if (this._animationStopped) {
this._backupValues();
this.setProgressValue("10%");
this._animationStopped = false;
this._setupAnimation();
this.showText(false);
this.internalProgress.style.height = "105%";
this._animation.play();
}
}, stopAnimation:function () {
if (this._animation) {
this._animationStopped = true;
this._animation.stop();
this.internalProgress.style.height = "100%";
this.internalProgress.style.left = "0px";
this._restoreValues();
this._setLabelPosition();
}
}, _showRemoteProgress:function () {
var _self = this;
if ((this.getMaxProgressValue() == this.getProgressValue()) && this._oInterval) {
clearInterval(this._oInterval);
this._oInterval = null;
this.setProgressValue("100%");
return;
}
var bArgs = {url:_self.dataSource, method:"POST", mimetype:"text/json", error:function (type, errorObj) {
dojo.debug("[ProgressBar] showRemoteProgress error");
}, load:function (type, data, evt) {
_self.setProgressValue((_self._oInterval ? data["progress"] : "100%"));
}};
dojo.io.bind(bArgs);
}, render:function () {
this._setPercentLabel(dojo.string.trim(this._progressPercentValue));
this._setPixelValue(this._pixelValue);
this._setLabelPosition();
}, _setLabelPosition:function () {
var _widthFront = dojo.html.getContentBox(this.frontPercentLabel).width;
var _heightFront = dojo.html.getContentBox(this.frontPercentLabel).height;
var _widthBack = dojo.html.getContentBox(this.backPercentLabel).width;
var _heightBack = dojo.html.getContentBox(this.backPercentLabel).height;
var _leftFront = (parseInt(this.width) - _widthFront) / 2 + "px";
var _bottomFront = (parseInt(this.height) - parseInt(_heightFront)) / 2 + "px";
var _leftBack = (parseInt(this.width) - _widthBack) / 2 + "px";
var _bottomBack = (parseInt(this.height) - parseInt(_heightBack)) / 2 + "px";
this.frontPercentLabel.style.left = _leftFront;
this.backPercentLabel.style.left = _leftBack;
this.frontPercentLabel.style.bottom = _bottomFront;
this.backPercentLabel.style.bottom = _bottomBack;
}, _setPercentLabel:function (percentValue) {
dojo.dom.removeChildren(this.frontPercentLabel);
dojo.dom.removeChildren(this.backPercentLabel);
var _percentValue = this.showOnlyIntegers == false ? percentValue : parseInt(percentValue) + "%";
this.frontPercentLabel.appendChild(document.createTextNode(_percentValue));
this.backPercentLabel.appendChild(document.createTextNode(_percentValue));
}, _setPixelValue:function (value) {
eval("this.internalProgress.style." + this._dimension + " = " + value + " + 'px'");
this.onChange();
}, onChange:function () {
}});
 
/trunk/api/js/dojo/src/widget/DateTextbox.js
New file
0,0 → 1,45
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DateTextbox");
dojo.require("dojo.widget.ValidationTextbox");
dojo.require("dojo.date.format");
dojo.require("dojo.validate.datetime");
dojo.widget.defineWidget("dojo.widget.DateTextbox", dojo.widget.ValidationTextbox, {displayFormat:"", formatLength:"short", mixInProperties:function (localProperties) {
dojo.widget.DateTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.format) {
this.flags.format = localProperties.format;
}
}, isValid:function () {
if (this.flags.format) {
dojo.deprecated("dojo.widget.DateTextbox", "format attribute is deprecated; use displayFormat or formatLength instead", "0.5");
return dojo.validate.isValidDate(this.textbox.value, this.flags.format);
}
return dojo.date.parse(this.textbox.value, {formatLength:this.formatLength, selector:"dateOnly", locale:this.lang, datePattern:this.displayFormat});
}});
dojo.widget.defineWidget("dojo.widget.TimeTextbox", dojo.widget.ValidationTextbox, {displayFormat:"", formatLength:"short", mixInProperties:function (localProperties) {
dojo.widget.TimeTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.format) {
this.flags.format = localProperties.format;
}
if (localProperties.amsymbol) {
this.flags.amSymbol = localProperties.amsymbol;
}
if (localProperties.pmsymbol) {
this.flags.pmSymbol = localProperties.pmsymbol;
}
}, isValid:function () {
if (this.flags.format) {
dojo.deprecated("dojo.widget.TimeTextbox", "format attribute is deprecated; use displayFormat or formatLength instead", "0.5");
return dojo.validate.isValidTime(this.textbox.value, this.flags);
}
return dojo.date.parse(this.textbox.value, {formatLength:this.formatLength, selector:"timeOnly", locale:this.lang, timePattern:this.displayFormat});
}});
 
/trunk/api/js/dojo/src/widget/TreeExtension.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeExtension");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeCommon");
dojo.widget.defineWidget("dojo.widget.TreeExtension", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
this.listenedTrees = {};
}, {});
 
/trunk/api/js/dojo/src/widget/InlineEditBox.js
New file
0,0 → 1,154
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.InlineEditBox");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.gfx.color");
dojo.require("dojo.string");
dojo.require("dojo.html.*");
dojo.require("dojo.html.layout");
dojo.widget.defineWidget("dojo.widget.InlineEditBox", dojo.widget.HtmlWidget, function () {
this.history = [];
}, {templateString:"<form class=\"inlineEditBox\" style=\"display: none\" dojoAttachPoint=\"form\" dojoAttachEvent=\"onSubmit:saveEdit; onReset:cancelEdit; onKeyUp: checkForValueChange;\">\n\t<input type=\"text\" dojoAttachPoint=\"text\" style=\"display: none;\" />\n\t<textarea dojoAttachPoint=\"textarea\" style=\"display: none;\"></textarea>\n\t<input type=\"submit\" value=\"Save\" dojoAttachPoint=\"submitButton\" />\n\t<input type=\"reset\" value=\"Cancel\" dojoAttachPoint=\"cancelButton\" />\n</form>\n", templateCssString:".editLabel {\n\tfont-size : small;\n\tpadding : 0 5px;\n\tdisplay : none;\n}\n\n.editableRegionDisabled {\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion {\n\tbackground-color : #ffc !important;\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion .editLabel {\n\tdisplay : inline;\n}\n\n.editableTextareaRegion .editLabel {\n\tdisplay : block;\n}\n\n.inlineEditBox {\n\t/*background-color : #ffc;*/\n\tdisplay : inline;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/InlineEditBox.css"), mode:"text", name:"", minWidth:100, minHeight:200, editing:false, value:"", textValue:"", defaultText:"", postMixInProperties:function () {
if (this.textValue) {
dojo.deprecated("InlineEditBox: Use value parameter instead of textValue; will be removed in 0.5");
this.value = this.textValue;
}
if (this.defaultText) {
dojo.deprecated("InlineEditBox: Use value parameter instead of defaultText; will be removed in 0.5");
this.value = this.defaultText;
}
}, postCreate:function (args, frag) {
this.editable = this.getFragNodeRef(frag);
dojo.html.insertAfter(this.editable, this.form);
dojo.event.connect(this.editable, "onmouseover", this, "onMouseOver");
dojo.event.connect(this.editable, "onmouseout", this, "onMouseOut");
dojo.event.connect(this.editable, "onclick", this, "_beginEdit");
if (this.value) {
this.editable.innerHTML = this.value;
return;
} else {
this.value = dojo.string.trim(this.editable.innerHTML);
this.editable.innerHTML = this.value;
}
}, onMouseOver:function () {
if (!this.editing) {
if (this.disabled) {
dojo.html.addClass(this.editable, "editableRegionDisabled");
} else {
dojo.html.addClass(this.editable, "editableRegion");
if (this.mode == "textarea") {
dojo.html.addClass(this.editable, "editableTextareaRegion");
}
}
}
}, onMouseOut:function () {
if (!this.editing) {
dojo.html.removeClass(this.editable, "editableRegion");
dojo.html.removeClass(this.editable, "editableTextareaRegion");
dojo.html.removeClass(this.editable, "editableRegionDisabled");
}
}, _beginEdit:function (e) {
if (this.editing || this.disabled) {
return;
}
this.onMouseOut();
this.editing = true;
var ee = this[this.mode.toLowerCase()];
ee.value = dojo.string.trim(this.value);
ee.style.fontSize = dojo.html.getStyle(this.editable, "font-size");
ee.style.fontWeight = dojo.html.getStyle(this.editable, "font-weight");
ee.style.fontStyle = dojo.html.getStyle(this.editable, "font-style");
var bb = dojo.html.getBorderBox(this.editable);
ee.style.width = Math.max(bb.width, this.minWidth) + "px";
if (this.mode.toLowerCase() == "textarea") {
ee.style.display = "block";
ee.style.height = Math.max(bb.height, this.minHeight) + "px";
} else {
ee.style.display = "";
}
this.form.style.display = "";
this.editable.style.display = "none";
ee.focus();
ee.select();
this.submitButton.disabled = true;
}, saveEdit:function (e) {
e.preventDefault();
e.stopPropagation();
var ee = this[this.mode.toLowerCase()];
if ((this.value != ee.value) && (dojo.string.trim(ee.value) != "")) {
this.doFade = true;
this.history.push(this.value);
this.onSave(ee.value, this.value, this.name);
this.value = ee.value;
this.editable.innerHTML = "";
var textNode = document.createTextNode(this.value);
this.editable.appendChild(textNode);
} else {
this.doFade = false;
}
this._finishEdit(e);
}, _stopEditing:function () {
this.editing = false;
this.form.style.display = "none";
this.editable.style.display = "";
return true;
}, cancelEdit:function (e) {
this._stopEditing();
this.onCancel();
return true;
}, _finishEdit:function (e) {
this._stopEditing();
if (this.doFade) {
dojo.lfx.highlight(this.editable, dojo.gfx.color.hex2rgb("#ffc"), 700).play(300);
}
this.doFade = false;
}, setText:function (txt) {
dojo.deprecated("setText() is deprecated, call setValue() instead, will be removed in 0.5");
this.setValue(txt);
}, setValue:function (txt) {
txt = "" + txt;
var tt = dojo.string.trim(txt);
this.value = tt;
this.editable.innerHTML = tt;
}, undo:function () {
if (this.history.length > 0) {
var curValue = this.value;
var value = this.history.pop();
this.editable.innerHTML = value;
this.value = value;
this.onUndo(value);
this.onSave(value, curValue, this.name);
}
}, onChange:function (newValue, oldValue) {
}, onSave:function (newValue, oldValue, name) {
}, onCancel:function () {
}, checkForValueChange:function () {
var ee = this[this.mode.toLowerCase()];
if ((this.value != ee.value) && (dojo.string.trim(ee.value) != "")) {
this.submitButton.disabled = false;
}
this.onChange(this.value, ee.value);
}, disable:function () {
this.submitButton.disabled = true;
this.cancelButton.disabled = true;
var ee = this[this.mode.toLowerCase()];
ee.disabled = true;
dojo.widget.InlineEditBox.superclass.disable.apply(this, arguments);
}, enable:function () {
this.checkForValueChange();
this.cancelButton.disabled = false;
var ee = this[this.mode.toLowerCase()];
ee.disabled = false;
dojo.widget.InlineEditBox.superclass.enable.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/TreeToggleOnSelect.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeToggleOnSelect");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.TreeToggleOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", selectEvent:"select", initialize:function () {
this.selector = dojo.widget.byId(this.selector);
this.controller = dojo.widget.byId(this.controller);
dojo.event.topic.subscribe(this.selector.eventNames[this.selectEvent], this, "onSelectEvent");
}, onSelectEvent:function (message) {
var node = message.node;
node.isExpanded ? this.controller.collapse(node) : this.controller.expand(node);
}});
 
/trunk/api/js/dojo/src/widget/DropdownContainer.js
New file
0,0 → 1,63
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DropdownContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.PopupContainer");
dojo.require("dojo.event.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.display");
dojo.require("dojo.html.iframe");
dojo.require("dojo.html.util");
dojo.widget.defineWidget("dojo.widget.DropdownContainer", dojo.widget.HtmlWidget, {inputWidth:"7em", id:"", inputId:"", inputName:"", iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/combo_box_arrow.png"), copyClasses:false, iconAlt:"", containerToggle:"plain", containerToggleDuration:150, templateString:"<span style=\"white-space:nowrap\"><input type=\"hidden\" name=\"\" value=\"\" dojoAttachPoint=\"valueNode\" /><input name=\"\" type=\"text\" value=\"\" style=\"vertical-align:middle;\" dojoAttachPoint=\"inputNode\" autocomplete=\"off\" /> <img src=\"${this.iconURL}\" alt=\"${this.iconAlt}\" dojoAttachEvent=\"onclick:onIconClick\" dojoAttachPoint=\"buttonNode\" style=\"vertical-align:middle; cursor:pointer; cursor:hand\" /></span>", templateCssPath:"", isContainer:true, attachTemplateNodes:function () {
dojo.widget.DropdownContainer.superclass.attachTemplateNodes.apply(this, arguments);
this.popup = dojo.widget.createWidget("PopupContainer", {toggle:this.containerToggle, toggleDuration:this.containerToggleDuration});
this.containerNode = this.popup.domNode;
}, fillInTemplate:function (args, frag) {
this.domNode.appendChild(this.popup.domNode);
if (this.id) {
this.domNode.id = this.id;
}
if (this.inputId) {
this.inputNode.id = this.inputId;
}
if (this.inputName) {
this.inputNode.name = this.inputName;
}
this.inputNode.style.width = this.inputWidth;
this.inputNode.disabled = this.disabled;
if (this.copyClasses) {
this.inputNode.style = "";
this.inputNode.className = this.getFragNodeRef(frag).className;
}
dojo.event.connect(this.inputNode, "onchange", this, "onInputChange");
}, onIconClick:function (evt) {
if (this.disabled) {
return;
}
if (!this.popup.isShowingNow) {
this.popup.open(this.inputNode, this, this.buttonNode);
} else {
this.popup.close();
}
}, hideContainer:function () {
if (this.popup.isShowingNow) {
this.popup.close();
}
}, onInputChange:function () {
}, enable:function () {
this.inputNode.disabled = false;
dojo.widget.DropdownContainer.superclass.enable.apply(this, arguments);
}, disable:function () {
this.inputNode.disabled = true;
dojo.widget.DropdownContainer.superclass.disable.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/Rounded.js
New file
0,0 → 1,527
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Rounded");
dojo.widget.tags.addParseTreeHandler("dojo:rounded");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.html.style");
dojo.require("dojo.html.display");
dojo.require("dojo.gfx.color");
dojo.deprecated("dojo.widget.Rounded will be removed in version 0.5; you can now apply rounded corners to any block element using dojo.lfx.rounded.", "0.5");
dojo.widget.defineWidget("dojo.widget.Rounded", dojo.widget.ContentPane, {isSafari:dojo.render.html.safari, boxMargin:"50px", radius:14, domNode:"", corners:"TR,TL,BR,BL", antiAlias:true, fillInTemplate:function (args, frag) {
dojo.widget.Rounded.superclass.fillInTemplate.call(this, args, frag);
dojo.html.insertCssFile(this.templateCssPath);
if (this.domNode.style.height <= 0) {
var minHeight = (this.radius * 1) + this.domNode.clientHeight;
this.domNode.style.height = minHeight + "px";
}
if (this.domNode.style.width <= 0) {
var minWidth = (this.radius * 1) + this.domNode.clientWidth;
this.domNode.style.width = minWidth + "px";
}
var cornersAvailable = ["TR", "TL", "BR", "BL"];
var cornersPassed = this.corners.split(",");
this.settings = {antiAlias:this.antiAlias};
var setCorner = function (currentCorner) {
var val = currentCorner.toLowerCase();
if (dojo.lang.inArray(cornersPassed, currentCorner)) {
this.settings[val] = {radius:this.radius, enabled:true};
} else {
this.settings[val] = {radius:0};
}
};
dojo.lang.forEach(cornersAvailable, setCorner, this);
this.domNode.style.margin = this.boxMargin;
this.curvyCorners(this.settings);
this.applyCorners();
}, curvyCorners:function (settings) {
this.box = this.domNode;
this.topContainer = null;
this.bottomContainer = null;
this.masterCorners = [];
var boxHeight = dojo.html.getStyle(this.box, "height");
if (boxHeight == "") {
boxHeight = "0px";
}
var boxWidth = dojo.html.getStyle(this.box, "width");
var borderWidth = dojo.html.getStyle(this.box, "borderTopWidth");
if (borderWidth == "") {
borderWidth = "0px";
}
var borderColour = dojo.html.getStyle(this.box, "borderTopColor");
if (borderWidth > 0) {
this.antiAlias = true;
}
var boxColour = dojo.html.getStyle(this.box, "backgroundColor");
var backgroundImage = dojo.html.getStyle(this.box, "backgroundImage");
var boxPosition = dojo.html.getStyle(this.box, "position");
this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1) ? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight));
this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1) ? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth));
this.borderWidth = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1) ? borderWidth.slice(0, borderWidth.indexOf("px")) : 0));
var test = new dojo.gfx.color.Color(boxColour);
this.boxColour = ((boxColour != "" && boxColour != "transparent") ? ((boxColour.substr(0, 3) == "rgb") ? this.rgb2Hex(boxColour) : boxColour) : "#ffffff");
this.borderColour = ((borderColour != "" && borderColour != "transparent" && this.borderWidth > 0) ? ((borderColour.substr(0, 3) == "rgb") ? this.rgb2Hex(borderColour) : borderColour) : this.boxColour);
this.borderString = this.borderWidth + "px" + " solid " + this.borderColour;
this.backgroundImage = ((backgroundImage != "none") ? backgroundImage : "");
if (boxPosition != "absolute") {
this.box.style.position = "relative";
}
this.applyCorners = function () {
for (var t = 0; t < 2; t++) {
switch (t) {
case 0:
if (this.settings.tl.enabled || this.settings.tr.enabled) {
var newMainContainer = document.createElement("DIV");
with (newMainContainer.style) {
width = "100%";
fontSize = "1px";
overflow = "hidden";
position = "absolute";
paddingLeft = this.borderWidth + "px";
paddingRight = this.borderWidth + "px";
var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0);
height = topMaxRadius + "px";
top = 0 - topMaxRadius + "px";
left = 0 - this.borderWidth + "px";
}
this.topContainer = this.box.appendChild(newMainContainer);
}
break;
case 1:
if (this.settings.bl.enabled || this.settings.br.enabled) {
var newMainContainer = document.createElement("DIV");
with (newMainContainer.style) {
width = "100%";
fontSize = "1px";
overflow = "hidden";
position = "absolute";
paddingLeft = this.borderWidth + "px";
paddingRight = this.borderWidth + "px";
var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0);
height = botMaxRadius + "px";
bottom = 0 - botMaxRadius + "px";
left = 0 - this.borderWidth + "px";
}
this.bottomContainer = this.box.appendChild(newMainContainer);
}
break;
}
}
if (this.topContainer) {
this.box.style.borderTopWidth = "0px";
}
if (this.bottomContainer) {
this.box.style.borderBottomWidth = "0px";
}
var corners = ["tr", "tl", "br", "bl"];
for (var i in corners) {
var cc = corners[i];
if (!this.settings[cc]) {
if (((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null)) {
var newCorner = document.createElement("DIV");
newCorner.style.position = "relative";
newCorner.style.fontSize = "1px";
newCorner.style.overflow = "hidden";
if (this.backgroundImage == "") {
newCorner.style.backgroundColor = this.boxColour;
} else {
newCorner.style.backgroundImage = this.backgroundImage;
}
switch (cc) {
case "tl":
with (newCorner.style) {
height = topMaxRadius - this.borderWidth + "px";
marginRight = this.settings.tr.radius - (this.borderWidth * 2) + "px";
borderLeft = this.borderString;
borderTop = this.borderString;
left = -this.borderWidth + "px";
}
break;
case "tr":
with (newCorner.style) {
height = topMaxRadius - this.borderWidth + "px";
marginLeft = this.settings.tl.radius - (this.borderWidth * 2) + "px";
borderRight = this.borderString;
borderTop = this.borderString;
backgroundPosition = "-" + this.boxWidth + "px 0px";
left = this.borderWidth + "px";
}
break;
case "bl":
with (newCorner.style) {
height = botMaxRadius - this.borderWidth + "px";
marginRight = this.settings.br.radius - (this.borderWidth * 2) + "px";
borderLeft = this.borderString;
borderBottom = this.borderString;
left = -this.borderWidth + "px";
}
break;
case "br":
with (newCorner.style) {
height = botMaxRadius - this.borderWidth + "px";
marginLeft = this.settings.bl.radius - (this.borderWidth * 2) + "px";
borderRight = this.borderString;
borderBottom = this.borderString;
left = this.borderWidth + "px";
}
break;
}
}
} else {
if (this.masterCorners[this.settings[cc].radius]) {
var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);
} else {
var newCorner = document.createElement("DIV");
with (newCorner.style) {
height = this.settings[cc].radius + "px";
width = this.settings[cc].radius + "px";
position = "absolute";
fontSize = "1px";
overflow = "hidden";
}
var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth);
for (var intx = 0, j = this.settings[cc].radius; intx < j; intx++) {
if ((intx + 1) >= borderRadius) {
var y1 = -1;
} else {
var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx + 1), 2))) - 1);
}
if (borderRadius != j) {
if ((intx) >= borderRadius) {
var y2 = -1;
} else {
var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx, 2)));
}
if ((intx + 1) >= j) {
var y3 = -1;
} else {
var y3 = (Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((intx + 1), 2))) - 1);
}
}
if ((intx) >= j) {
var y4 = -1;
} else {
var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(intx, 2)));
}
if (y1 > -1) {
this.drawPixel(intx, 0, this.boxColour, 100, (y1 + 1), newCorner, -1, this.settings[cc].radius);
}
if (borderRadius != j) {
if (this.antiAlias) {
for (var inty = (y1 + 1); inty < y2; inty++) {
if (this.backgroundImage != "") {
var borderFract = (this.pixelFraction(intx, inty, borderRadius) * 100);
if (borderFract < 30) {
this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);
} else {
this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);
}
} else {
var pixelcolour = dojo.gfx.color.blend(this.boxColour, this.borderColour, this.pixelFraction(intx, inty, borderRadius));
this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius);
}
}
}
if (y3 >= y2) {
if (y1 == -1) {
y1 = 0;
}
this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, this.settings[cc].radius);
}
var outsideColour = this.borderColour;
} else {
var outsideColour = this.boxColour;
var y3 = y1;
}
if (this.antiAlias) {
for (var inty = (y3 + 1); inty < y4; inty++) {
this.drawPixel(intx, inty, outsideColour, (this.pixelFraction(intx, inty, j) * 100), 1, newCorner, ((this.borderWidth > 0) ? 0 : -1), this.settings[cc].radius);
}
}
}
this.masterCorners[this.settings[cc].radius] = newCorner.cloneNode(true);
}
if (cc != "br") {
for (var t = 0, k = newCorner.childNodes.length; t < k; t++) {
var pixelBar = newCorner.childNodes[t];
var pixelBarTop = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px")));
var pixelBarLeft = parseInt(pixelBar.style.left.substring(0, pixelBar.style.left.indexOf("px")));
var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px")));
if (cc == "tl" || cc == "bl") {
pixelBar.style.left = this.settings[cc].radius - pixelBarLeft - 1 + "px";
}
if (cc == "tr" || cc == "tl") {
pixelBar.style.top = this.settings[cc].radius - pixelBarHeight - pixelBarTop + "px";
}
var value;
switch (cc) {
case "tr":
value = (-1 * (Math.abs((this.boxWidth - this.settings[cc].radius + this.borderWidth) + pixelBarLeft) - (Math.abs(this.settings[cc].radius - pixelBarHeight - pixelBarTop - this.borderWidth))));
pixelBar.style.backgroundPosition = value + "px";
break;
case "tl":
value = (-1 * (Math.abs((this.settings[cc].radius - pixelBarLeft - 1) - this.borderWidth) - (Math.abs(this.settings[cc].radius - pixelBarHeight - pixelBarTop - this.borderWidth))));
pixelBar.style.backgroundPosition = value + "px";
break;
case "bl":
value = (-1 * (Math.abs((this.settings[cc].radius - pixelBarLeft - 1) - this.borderWidth) - (Math.abs((this.boxHeight + this.settings[cc].radius + pixelBarTop) - this.borderWidth))));
pixelBar.style.backgroundPosition = value + "px";
break;
}
}
}
}
if (newCorner) {
switch (cc) {
case "tl":
if (newCorner.style.position == "absolute") {
newCorner.style.top = "0px";
}
if (newCorner.style.position == "absolute") {
newCorner.style.left = "0px";
}
if (this.topContainer) {
this.topContainer.appendChild(newCorner);
}
break;
case "tr":
if (newCorner.style.position == "absolute") {
newCorner.style.top = "0px";
}
if (newCorner.style.position == "absolute") {
newCorner.style.right = "0px";
}
if (this.topContainer) {
this.topContainer.appendChild(newCorner);
}
break;
case "bl":
if (newCorner.style.position == "absolute") {
newCorner.style.bottom = "0px";
}
if (newCorner.style.position == "absolute") {
newCorner.style.left = "0px";
}
if (this.bottomContainer) {
this.bottomContainer.appendChild(newCorner);
}
break;
case "br":
if (newCorner.style.position == "absolute") {
newCorner.style.bottom = "0px";
}
if (newCorner.style.position == "absolute") {
newCorner.style.right = "0px";
}
if (this.bottomContainer) {
this.bottomContainer.appendChild(newCorner);
}
break;
}
}
}
var radiusDiff = [];
radiusDiff["t"] = this.settings.tl.enabled && this.settings.tr.enabled ? Math.abs(this.settings.tl.radius - this.settings.tr.radius) : 0;
radiusDiff["b"] = this.settings.bl.enabled && this.settings.br.enabled ? Math.abs(this.settings.bl.radius - this.settings.br.radius) : 0;
for (var z in radiusDiff) {
if (radiusDiff[z]) {
var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius) ? z + "l" : z + "r");
var newFiller = document.createElement("DIV");
with (newFiller.style) {
height = radiusDiff[z] + "px";
width = this.settings[smallerCornerType].radius + "px";
position = "absolute";
fontSize = "1px";
overflow = "hidden";
backgroundColor = this.boxColour;
}
switch (smallerCornerType) {
case "tl":
with (newFiller.style) {
bottom = "0px";
left = "0px";
borderLeft = this.borderString;
}
this.topContainer.appendChild(newFiller);
break;
case "tr":
with (newFiller.style) {
bottom = "0px";
right = "0px";
borderRight = this.borderString;
}
this.topContainer.appendChild(newFiller);
break;
case "bl":
with (newFiller.style) {
top = "0px";
left = "0px";
borderLeft = this.borderString;
}
this.bottomContainer.appendChild(newFiller);
break;
case "br":
with (newFiller.style) {
top = "0px";
right = "0px";
borderRight = this.borderString;
}
this.bottomContainer.appendChild(newFiller);
break;
}
}
var newFillerBar = document.createElement("DIV");
with (newFillerBar.style) {
position = "relative";
fontSize = "1px";
overflow = "hidden";
backgroundColor = this.boxColour;
}
switch (z) {
case "t":
if (this.topContainer) {
with (newFillerBar.style) {
height = topMaxRadius - this.borderWidth + "px";
marginLeft = this.settings.tl.radius - this.borderWidth + "px";
marginRight = this.settings.tr.radius - this.borderWidth + "px";
borderTop = this.borderString;
}
this.topContainer.appendChild(newFillerBar);
}
break;
case "b":
if (this.bottomContainer) {
with (newFillerBar.style) {
height = botMaxRadius - this.borderWidth + "px";
marginLeft = this.settings.bl.radius - this.borderWidth + "px";
marginRight = this.settings.br.radius - this.borderWidth + "px";
borderBottom = this.borderString;
}
this.bottomContainer.appendChild(newFillerBar);
}
break;
}
}
};
this.drawPixel = function (intx, inty, colour, transAmount, height, newCorner, image, cornerRadius) {
var pixel = document.createElement("DIV");
pixel.style.height = height + "px";
pixel.style.width = "1px";
pixel.style.position = "absolute";
pixel.style.fontSize = "1px";
pixel.style.overflow = "hidden";
if (image == -1 && this.backgroundImage != "") {
pixel.style.backgroundImage = this.backgroundImage;
pixel.style.backgroundPosition = "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + cornerRadius + inty) - this.borderWidth) + "px";
} else {
pixel.style.backgroundColor = colour;
}
if (transAmount != 100) {
dojo.html.setOpacity(pixel, transAmount);
}
pixel.style.top = inty + "px";
pixel.style.left = intx + "px";
newCorner.appendChild(pixel);
};
}, pixelFraction:function (x, y, r) {
var pixelfraction = 0;
var xvalues = [];
var yvalues = [];
var point = 0;
var whatsides = "";
var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
if ((intersect >= y) && (intersect < (y + 1))) {
whatsides = "Left";
xvalues[point] = 0;
yvalues[point] = intersect - y;
point = point + 1;
}
var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
if ((intersect >= x) && (intersect < (x + 1))) {
whatsides = whatsides + "Top";
xvalues[point] = intersect - x;
yvalues[point] = 1;
point = point + 1;
}
var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
if ((intersect >= y) && (intersect < (y + 1))) {
whatsides = whatsides + "Right";
xvalues[point] = 1;
yvalues[point] = intersect - y;
point = point + 1;
}
var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
if ((intersect >= x) && (intersect < (x + 1))) {
whatsides = whatsides + "Bottom";
xvalues[point] = intersect - x;
yvalues[point] = 0;
}
switch (whatsides) {
case "LeftRight":
pixelfraction = Math.min(yvalues[0], yvalues[1]) + ((Math.max(yvalues[0], yvalues[1]) - Math.min(yvalues[0], yvalues[1])) / 2);
break;
case "TopRight":
pixelfraction = 1 - (((1 - xvalues[0]) * (1 - yvalues[1])) / 2);
break;
case "TopBottom":
pixelfraction = Math.min(xvalues[0], xvalues[1]) + ((Math.max(xvalues[0], xvalues[1]) - Math.min(xvalues[0], xvalues[1])) / 2);
break;
case "LeftBottom":
pixelfraction = (yvalues[0] * xvalues[1]) / 2;
break;
default:
pixelfraction = 1;
}
return pixelfraction;
}, rgb2Hex:function (rgbColour) {
try {
var rgbArray = this.rgb2Array(rgbColour);
var red = parseInt(rgbArray[0]);
var green = parseInt(rgbArray[1]);
var blue = parseInt(rgbArray[2]);
var hexColour = "#" + this.intToHex(red) + this.intToHex(green) + this.intToHex(blue);
}
catch (e) {
alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");
}
return hexColour;
}, intToHex:function (strNum) {
var base = strNum / 16;
var rem = strNum % 16;
var base = base - (rem / 16);
var baseS = this.makeHex(base);
var remS = this.makeHex(rem);
return baseS + "" + remS;
}, makeHex:function (x) {
if ((x >= 0) && (x <= 9)) {
return x;
} else {
switch (x) {
case 10:
return "A";
case 11:
return "B";
case 12:
return "C";
case 13:
return "D";
case 14:
return "E";
case 15:
return "F";
}
}
}, rgb2Array:function (rgbColour) {
var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")"));
var rgbArray = rgbValues.split(", ");
return rgbArray;
}});
 
/trunk/api/js/dojo/src/widget/ShowSlide.js
New file
0,0 → 1,199
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ShowSlide");
dojo.require("dojo.widget.*");
dojo.require("dojo.lang.common");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.lfx.html");
dojo.require("dojo.html.display");
dojo.require("dojo.html.layout");
dojo.require("dojo.animation.Animation");
dojo.require("dojo.gfx.color");
dojo.widget.defineWidget("dojo.widget.ShowSlide", dojo.widget.HtmlWidget, {title:"", _action:-1, isContainer:true, _components:{}, _actions:[], gotoAction:function (action) {
this._action = action;
}, _nextAction:function (event) {
if ((this._action + 1) != this._actions.length) {
++this._action;
return true;
}
return false;
}, _previousAction:function (event) {
if ((this._action - 1) != -1) {
--this._action;
return true;
}
return false;
}, htmlTitle:null, debug:false, noClick:false, templateString:"<div class=\"dojoShowSlide\">\n\t<div class=\"dojoShowSlideTitle\">\n\t\t<h1 dojoAttachPoint=\"htmlTitle\">Title</h1>\n\t</div>\n\t<div class=\"dojoShowSlideBody\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n", templateCssString:".dojoShowSlideTitle {\n\theight: 100px;\n\tbackground: #369;\n}\n.dojoShowSlideTitle h1 {\n\tmargin-top: 0;\n\tline-height: 100px;\n\tmargin-left: 30px;\n}\n.dojoShowSlideBody {\n\tmargin: 15px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ShowSlide.css"), postCreate:function () {
this.htmlTitle.innerHTML = this.title;
var actions = this.getChildrenOfType("ShowAction", false);
var atypes = {};
dojo.lang.forEach(actions, function (act) {
atypes[act.on] = true;
});
this._components = {};
var cn = this.containerNode;
var nodes = dojo.render.html.ie ? cn.all : cn.getElementsByTagName("*");
dojo.lang.forEach(nodes, function (node) {
var as = node.getAttribute("as");
if (as) {
if (!this._components[as]) {
this._components[as] = [];
}
this._components[as].push(node);
if (!atypes[as]) {
var tmpAction = dojo.widget.createWidget("ShowAction", {on:as});
this.addChild(tmpAction);
atypes[as] = true;
}
}
}, this);
this._actions = [];
actions = this.getChildrenOfType("ShowAction", false);
dojo.lang.forEach(actions, function (child) {
this._actions.push(child);
var components = this._components[child.on];
for (var j = 0, component; component = components[j]; j++) {
if (child["action"] && ((child.action != "remove") && (child.action != "fadeout") && (child.action != "wipeout"))) {
this.hideComponent(component);
}
}
}, this);
}, previousAction:function (event) {
if (!this.parent.stopEvent(event)) {
return false;
}
var action = this._actions[this._action];
if (!action) {
return false;
}
var on = action.on;
while (action.on == on) {
var components = this._components[on];
for (var i = 0, component; component = components[i]; i++) {
if ((action.action == "remove") || (action.action == "fadeout") || (action.action == "wipeout")) {
if (component.style.display == "none") {
component.style.display = "";
component.style.visibility = "visible";
var exits = true;
}
dojo.html.setOpacity(component, 1);
} else {
if (action.action) {
this.hideComponent(component);
}
}
}
--this._action;
if (exits) {
return true;
}
if (action.auto == "true") {
on = this._actions[this._action].on;
}
action = this._actions[this._action];
if (!action) {
return false;
}
}
return true;
}, hideComponent:function (component) {
component.style.visibility = "hidden";
component.style.backgroundColor = "transparent";
var parent = component.parentNode;
if ((parent) && (parent.tagName.toLowerCase() == "li")) {
parent.oldType = parent.style.listStyleType;
parent.style.listStyleType = "none";
}
}, nextAction:function (event) {
if (!this.parent.stopEvent(event)) {
return false;
}
if (!this._nextAction(this)) {
return false;
}
var action = this._actions[this._action];
if (!action) {
return false;
}
var tmpAction = action["action"];
var components = this._components[action.on];
for (var i = 0, component; component = components[i]; i++) {
if (tmpAction) {
var duration = action.duration || 1000;
if ((tmpAction == "fade") || (tmpAction == "fadeIn")) {
dojo.html.setOpacity(component, 0);
dojo.lfx.html.fadeShow(component, duration).play(true);
} else {
if (tmpAction == "fadeout") {
dojo.lfx.html.fadeHide(component, duration).play(true);
} else {
if (tmpAction == "fly") {
var width = dojo.html.getMarginBox(component).width;
var position = dojo.html.getAbsolutePosition(component);
component.style.position = "relative";
component.style.left = -(width + position.x) + "px";
dojo.lfx.html.slideBy(component, {top:0, left:(width + position.x)}, duration, -1, this.callWith).play(true);
} else {
if ((tmpAction == "wipe") || (tmpAction == "wipein")) {
dojo.lfx.html.wipeIn(component, duration).play();
} else {
if (tmpAction == "wipeout") {
dojo.lfx.html.wipeOut(component, duration).play();
} else {
if (tmpAction == "color") {
var from = new dojo.gfx.color.Color(action.from).toRgb();
var to = new dojo.gfx.color.Color(action.to).toRgb();
var anim = new dojo.animation.Animation(new dojo.math.curves.Line(from, to), duration, 0);
var node = component;
dojo.event.connect(anim, "onAnimate", function (e) {
node.style.color = "rgb(" + e.coordsAsInts().join(",") + ")";
});
anim.play(true);
} else {
if (tmpAction == "bgcolor") {
dojo.lfx.html.unhighlight(component, action.to, duration).play();
} else {
if (tmpAction == "remove") {
component.style.display = "none";
}
}
}
}
}
}
}
}
if (tmpAction == "hide") {
component.style.visibility = "hidden";
} else {
component.style.visibility = "visible";
}
}
}
action = this._actions[this._action + 1];
if (action && action.auto == "true") {
this.nextAction();
}
return true;
}, callWith:function (node) {
if (!node) {
return;
}
if (dojo.lang.isArray(node)) {
dojo.lang.forEach(node, arguments.callee);
return;
}
var parent = node.parentNode;
if ((parent) && (parent.tagName.toLowerCase() == "li")) {
parent.style.listStyleType = parent.oldType;
}
}});
 
/trunk/api/js/dojo/src/widget/Chart.js
New file
0,0 → 1,231
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Chart");
dojo.require("dojo.widget.*");
dojo.require("dojo.gfx.color");
dojo.require("dojo.gfx.color.hsl");
dojo.declare("dojo.widget.Chart", null, function () {
this.series = [];
}, {isContainer:false, assignColors:function () {
var hue = 30;
var sat = 120;
var lum = 120;
var steps = Math.round(330 / this.series.length);
for (var i = 0; i < this.series.length; i++) {
var c = dojo.gfx.color.hsl2rgb(hue, sat, lum);
if (!this.series[i].color) {
this.series[i].color = dojo.gfx.color.rgb2hex(c[0], c[1], c[2]);
}
hue += steps;
}
}, parseData:function (table) {
var thead = table.getElementsByTagName("thead")[0];
var tbody = table.getElementsByTagName("tbody")[0];
if (!(thead && tbody)) {
dojo.raise("dojo.widget.Chart: supplied table must define a head and a body.");
}
var columns = thead.getElementsByTagName("tr")[0].getElementsByTagName("th");
for (var i = 1; i < columns.length; i++) {
var key = "column" + i;
var label = columns[i].innerHTML;
var plotType = columns[i].getAttribute("plotType") || "line";
var color = columns[i].getAttribute("color");
var ds = new dojo.widget.Chart.DataSeries(key, label, plotType, color);
this.series.push(ds);
}
var rows = tbody.rows;
var xMin = Number.MAX_VALUE, xMax = Number.MIN_VALUE;
var yMin = Number.MAX_VALUE, yMax = Number.MIN_VALUE;
var ignore = ["accesskey", "align", "bgcolor", "class", "colspan", "height", "id", "nowrap", "rowspan", "style", "tabindex", "title", "valign", "width"];
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cells = row.cells;
var x = Number.MIN_VALUE;
for (var j = 0; j < cells.length; j++) {
if (j == 0) {
x = parseFloat(cells[j].innerHTML);
xMin = Math.min(xMin, x);
xMax = Math.max(xMax, x);
} else {
var ds = this.series[j - 1];
var y = parseFloat(cells[j].innerHTML);
yMin = Math.min(yMin, y);
yMax = Math.max(yMax, y);
var o = {x:x, value:y};
var attrs = cells[j].attributes;
for (var k = 0; k < attrs.length; k++) {
var attr = attrs.item(k);
var bIgnore = false;
for (var l = 0; l < ignore.length; l++) {
if (attr.nodeName.toLowerCase() == ignore[l]) {
bIgnore = true;
break;
}
}
if (!bIgnore) {
o[attr.nodeName] = attr.nodeValue;
}
}
ds.add(o);
}
}
}
return {x:{min:xMin, max:xMax}, y:{min:yMin, max:yMax}};
}});
dojo.declare("dojo.widget.Chart.DataSeries", null, function (key, label, plotType, color) {
this.id = "DataSeries" + dojo.widget.Chart.DataSeries.count++;
this.key = key;
this.label = label || this.id;
this.plotType = plotType || "line";
this.color = color;
this.values = [];
}, {add:function (v) {
if (v.x == null || v.value == null) {
dojo.raise("dojo.widget.Chart.DataSeries.add: v must have both an 'x' and 'value' property.");
}
this.values.push(v);
}, clear:function () {
this.values = [];
}, createRange:function (len) {
var idx = this.values.length - 1;
var length = (len || this.values.length);
return {"index":idx, "length":length, "start":Math.max(idx - length, 0)};
}, getMean:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var t = 0;
var c = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
t += n;
c++;
}
}
t /= Math.max(c, 1);
return t;
}, getMovingAverage:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var t = 0;
var c = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
t += n;
c++;
}
}
t /= Math.max(c, 1);
return t;
}, getVariance:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var t = 0;
var s = 0;
var c = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
t += n;
s += Math.pow(n, 2);
c++;
}
}
return (s / c) - Math.pow(t / c, 2);
}, getStandardDeviation:function (len) {
return Math.sqrt(this.getVariance(len));
}, getMax:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var t = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
t = Math.max(n, t);
}
}
return t;
}, getMin:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var t = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
t = Math.min(n, t);
}
}
return t;
}, getMedian:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var a = [];
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
var b = false;
for (var j = 0; j < a.length && !b; j++) {
if (n == a[j]) {
b = true;
}
}
if (!b) {
a.push(n);
}
}
}
a.sort();
if (a.length > 0) {
return a[Math.ceil(a.length / 2)];
}
return 0;
}, getMode:function (len) {
var range = this.createRange(len);
if (range.index < 0) {
return 0;
}
var o = {};
var ret = 0;
var m = 0;
for (var i = range.index; i >= range.start; i--) {
var n = parseFloat(this.values[i].value);
if (!isNaN(n)) {
if (!o[this.values[i].value]) {
o[this.values[i].value] = 1;
} else {
o[this.values[i].value]++;
}
}
}
for (var p in o) {
if (m < o[p]) {
m = o[p];
ret = p;
}
}
return parseFloat(ret);
}});
dojo.requireIf(dojo.render.svg.capable, "dojo.widget.svg.Chart");
dojo.requireIf(!dojo.render.svg.capable && dojo.render.vml.capable, "dojo.widget.vml.Chart");
 
/trunk/api/js/dojo/src/widget/TreeLoadingController.js
New file
0,0 → 1,92
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeLoadingController");
dojo.require("dojo.widget.TreeBasicController");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.widget.defineWidget("dojo.widget.TreeLoadingController", dojo.widget.TreeBasicController, {RPCUrl:"", RPCActionParam:"action", RPCErrorHandler:function (type, obj, evt) {
alert("RPC Error: " + (obj.message || "no message"));
}, preventCache:true, getRPCUrl:function (action) {
if (this.RPCUrl == "local") {
var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));
var localUrl = dir + "/" + action;
return localUrl;
}
if (!this.RPCUrl) {
dojo.raise("Empty RPCUrl: can't load");
}
return this.RPCUrl + (this.RPCUrl.indexOf("?") > -1 ? "&" : "?") + this.RPCActionParam + "=" + action;
}, loadProcessResponse:function (node, result, callObj, callFunc) {
if (!dojo.lang.isUndefined(result.error)) {
this.RPCErrorHandler("server", result.error);
return false;
}
var newChildren = result;
if (!dojo.lang.isArray(newChildren)) {
dojo.raise("loadProcessResponse: Not array loaded: " + newChildren);
}
for (var i = 0; i < newChildren.length; i++) {
newChildren[i] = dojo.widget.createWidget(node.widgetType, newChildren[i]);
node.addChild(newChildren[i]);
}
node.state = node.loadStates.LOADED;
if (dojo.lang.isFunction(callFunc)) {
callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node, newChildren]);
}
}, getInfo:function (obj) {
return obj.getInfo();
}, runRPC:function (kw) {
var _this = this;
var handle = function (type, data, evt) {
if (kw.lock) {
dojo.lang.forEach(kw.lock, function (t) {
t.unlock();
});
}
if (type == "load") {
kw.load.call(this, data);
} else {
this.RPCErrorHandler(type, data, evt);
}
};
if (kw.lock) {
dojo.lang.forEach(kw.lock, function (t) {
t.lock();
});
}
dojo.io.bind({url:kw.url, handle:dojo.lang.hitch(this, handle), mimetype:"text/json", preventCache:_this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});
}, loadRemote:function (node, sync, callObj, callFunc) {
var _this = this;
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
this.runRPC({url:this.getRPCUrl("getChildren"), load:function (result) {
_this.loadProcessResponse(node, result, callObj, callFunc);
}, sync:sync, lock:[node], params:params});
}, expand:function (node, sync, callObj, callFunc) {
if (node.state == node.loadStates.UNCHECKED && node.isFolder) {
this.loadRemote(node, sync, this, function (node, newChildren) {
this.expand(node, sync, callObj, callFunc);
});
return;
}
dojo.widget.TreeBasicController.prototype.expand.apply(this, arguments);
}, doMove:function (child, newParent, index) {
if (newParent.isTreeNode && newParent.state == newParent.loadStates.UNCHECKED) {
this.loadRemote(newParent, true);
}
return dojo.widget.TreeBasicController.prototype.doMove.apply(this, arguments);
}, doCreateChild:function (parent, index, data, callObj, callFunc) {
if (parent.state == parent.loadStates.UNCHECKED) {
this.loadRemote(parent, true);
}
return dojo.widget.TreeBasicController.prototype.doCreateChild.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/Toolbar.js
New file
0,0 → 1,722
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Toolbar");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.style");
dojo.widget.defineWidget("dojo.widget.ToolbarContainer", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbarContainer\" dojoAttachPoint=\"containerNode\"></div>", templateCssString:".toolbarContainer {\n\tborder-bottom : 0;\n\tbackground-color : #def;\n\tcolor : ButtonText;\n\tfont : Menu;\n\tbackground-image: url(images/toolbar-bg.gif);\n}\n\n.toolbar {\n\tpadding : 2px 4px;\n\tmin-height : 26px;\n\t_height : 26px;\n}\n\n.toolbarItem {\n\tfloat : left;\n\tpadding : 1px 2px;\n\tmargin : 0 2px 1px 0;\n\tcursor : pointer;\n}\n\n.toolbarItem.selected, .toolbarItem.down {\n\tmargin : 1px 1px 0 1px;\n\tpadding : 0px 1px;\n\tborder : 1px solid #bbf;\n\tbackground-color : #fafaff;\n}\n\n.toolbarButton img {\n\tvertical-align : bottom;\n}\n\n.toolbarButton span {\n\tline-height : 16px;\n\tvertical-align : middle;\n}\n\n.toolbarButton.hover {\n\tpadding : 0px 1px;\n\tborder : 1px solid #99c;\n}\n\n.toolbarItem.disabled {\n\topacity : 0.3;\n\tfilter : alpha(opacity=30);\n\tcursor : default;\n}\n\n.toolbarSeparator {\n\tcursor : default;\n}\n\n.toolbarFlexibleSpace {\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toolbar.css"), getItem:function (name) {
if (name instanceof dojo.widget.ToolbarItem) {
return name;
}
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
var item = child.getItem(name);
if (item) {
return item;
}
}
}
return null;
}, getItems:function () {
var items = [];
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
items = items.concat(child.getItems());
}
}
return items;
}, enable:function () {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
child.enable.apply(child, arguments);
}
}
}, disable:function () {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
child.disable.apply(child, arguments);
}
}
}, select:function (name) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
child.select(arguments);
}
}
}, deselect:function (name) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
child.deselect(arguments);
}
}
}, getItemsState:function () {
var values = {};
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
dojo.lang.mixin(values, child.getItemsState());
}
}
return values;
}, getItemsActiveState:function () {
var values = {};
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
dojo.lang.mixin(values, child.getItemsActiveState());
}
}
return values;
}, getItemsSelectedState:function () {
var values = {};
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.Toolbar) {
dojo.lang.mixin(values, child.getItemsSelectedState());
}
}
return values;
}});
dojo.widget.defineWidget("dojo.widget.Toolbar", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbar\" dojoAttachPoint=\"containerNode\" unselectable=\"on\" dojoOnMouseover=\"_onmouseover\" dojoOnMouseout=\"_onmouseout\" dojoOnClick=\"_onclick\" dojoOnMousedown=\"_onmousedown\" dojoOnMouseup=\"_onmouseup\"></div>", _getItem:function (node) {
var start = new Date();
var widget = null;
while (node && node != this.domNode) {
if (dojo.html.hasClass(node, "toolbarItem")) {
var widgets = dojo.widget.manager.getWidgetsByFilter(function (w) {
return w.domNode == node;
});
if (widgets.length == 1) {
widget = widgets[0];
break;
} else {
if (widgets.length > 1) {
dojo.raise("Toolbar._getItem: More than one widget matches the node");
}
}
}
node = node.parentNode;
}
return widget;
}, _onmouseover:function (e) {
var widget = this._getItem(e.target);
if (widget && widget._onmouseover) {
widget._onmouseover(e);
}
}, _onmouseout:function (e) {
var widget = this._getItem(e.target);
if (widget && widget._onmouseout) {
widget._onmouseout(e);
}
}, _onclick:function (e) {
var widget = this._getItem(e.target);
if (widget && widget._onclick) {
widget._onclick(e);
}
}, _onmousedown:function (e) {
var widget = this._getItem(e.target);
if (widget && widget._onmousedown) {
widget._onmousedown(e);
}
}, _onmouseup:function (e) {
var widget = this._getItem(e.target);
if (widget && widget._onmouseup) {
widget._onmouseup(e);
}
}, addChild:function (item, pos, props) {
var widget = dojo.widget.ToolbarItem.make(item, null, props);
var ret = dojo.widget.Toolbar.superclass.addChild.call(this, widget, null, pos, null);
return ret;
}, push:function () {
for (var i = 0; i < arguments.length; i++) {
this.addChild(arguments[i]);
}
}, getItem:function (name) {
if (name instanceof dojo.widget.ToolbarItem) {
return name;
}
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
return child;
}
}
return null;
}, getItems:function () {
var items = [];
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
items.push(child);
}
}
return items;
}, getItemsState:function () {
var values = {};
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
values[child._name] = {selected:child._selected, enabled:!child.disabled};
}
}
return values;
}, getItemsActiveState:function () {
var values = this.getItemsState();
for (var item in values) {
values[item] = values[item].enabled;
}
return values;
}, getItemsSelectedState:function () {
var values = this.getItemsState();
for (var item in values) {
values[item] = values[item].selected;
}
return values;
}, enable:function () {
var items = arguments.length ? arguments : this.children;
for (var i = 0; i < items.length; i++) {
var child = this.getItem(items[i]);
if (child instanceof dojo.widget.ToolbarItem) {
child.enable(false, true);
}
}
}, disable:function () {
var items = arguments.length ? arguments : this.children;
for (var i = 0; i < items.length; i++) {
var child = this.getItem(items[i]);
if (child instanceof dojo.widget.ToolbarItem) {
child.disable();
}
}
}, select:function () {
for (var i = 0; i < arguments.length; i++) {
var name = arguments[i];
var item = this.getItem(name);
if (item) {
item.select();
}
}
}, deselect:function () {
for (var i = 0; i < arguments.length; i++) {
var name = arguments[i];
var item = this.getItem(name);
if (item) {
item.disable();
}
}
}, setValue:function () {
for (var i = 0; i < arguments.length; i += 2) {
var name = arguments[i], value = arguments[i + 1];
var item = this.getItem(name);
if (item) {
if (item instanceof dojo.widget.ToolbarItem) {
item.setValue(value);
}
}
}
}});
dojo.widget.defineWidget("dojo.widget.ToolbarItem", dojo.widget.HtmlWidget, {templateString:"<span unselectable=\"on\" class=\"toolbarItem\"></span>", _name:null, getName:function () {
return this._name;
}, setName:function (value) {
return (this._name = value);
}, getValue:function () {
return this.getName();
}, setValue:function (value) {
return this.setName(value);
}, _selected:false, isSelected:function () {
return this._selected;
}, setSelected:function (is, force, preventEvent) {
if (!this._toggleItem && !force) {
return;
}
is = Boolean(is);
if (force || !this.disabled && this._selected != is) {
this._selected = is;
this.update();
if (!preventEvent) {
this._fireEvent(is ? "onSelect" : "onDeselect");
this._fireEvent("onChangeSelect");
}
}
}, select:function (force, preventEvent) {
return this.setSelected(true, force, preventEvent);
}, deselect:function (force, preventEvent) {
return this.setSelected(false, force, preventEvent);
}, _toggleItem:false, isToggleItem:function () {
return this._toggleItem;
}, setToggleItem:function (value) {
this._toggleItem = Boolean(value);
}, toggleSelected:function (force) {
return this.setSelected(!this._selected, force);
}, isEnabled:function () {
return !this.disabled;
}, setEnabled:function (is, force, preventEvent) {
is = Boolean(is);
if (force || this.disabled == is) {
this.disabled = !is;
this.update();
if (!preventEvent) {
this._fireEvent(this.disabled ? "onDisable" : "onEnable");
this._fireEvent("onChangeEnabled");
}
}
return !this.disabled;
}, enable:function (force, preventEvent) {
return this.setEnabled(true, force, preventEvent);
}, disable:function (force, preventEvent) {
return this.setEnabled(false, force, preventEvent);
}, toggleEnabled:function (force, preventEvent) {
return this.setEnabled(this.disabled, force, preventEvent);
}, _icon:null, getIcon:function () {
return this._icon;
}, setIcon:function (value) {
var icon = dojo.widget.Icon.make(value);
if (this._icon) {
this._icon.setIcon(icon);
} else {
this._icon = icon;
}
var iconNode = this._icon.getNode();
if (iconNode.parentNode != this.domNode) {
if (this.domNode.hasChildNodes()) {
this.domNode.insertBefore(iconNode, this.domNode.firstChild);
} else {
this.domNode.appendChild(iconNode);
}
}
return this._icon;
}, _label:"", getLabel:function () {
return this._label;
}, setLabel:function (value) {
var ret = (this._label = value);
if (!this.labelNode) {
this.labelNode = document.createElement("span");
this.domNode.appendChild(this.labelNode);
}
this.labelNode.innerHTML = "";
this.labelNode.appendChild(document.createTextNode(this._label));
this.update();
return ret;
}, update:function () {
if (this.disabled) {
this._selected = false;
dojo.html.addClass(this.domNode, "disabled");
dojo.html.removeClass(this.domNode, "down");
dojo.html.removeClass(this.domNode, "hover");
} else {
dojo.html.removeClass(this.domNode, "disabled");
if (this._selected) {
dojo.html.addClass(this.domNode, "selected");
} else {
dojo.html.removeClass(this.domNode, "selected");
}
}
this._updateIcon();
}, _updateIcon:function () {
if (this._icon) {
if (this.disabled) {
this._icon.disable();
} else {
if (this._cssHover) {
this._icon.hover();
} else {
if (this._selected) {
this._icon.select();
} else {
this._icon.enable();
}
}
}
}
}, _fireEvent:function (evt) {
if (typeof this[evt] == "function") {
var args = [this];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
this[evt].apply(this, args);
}
}, _onmouseover:function (e) {
if (this.disabled) {
return;
}
dojo.html.addClass(this.domNode, "hover");
this._fireEvent("onMouseOver");
}, _onmouseout:function (e) {
dojo.html.removeClass(this.domNode, "hover");
dojo.html.removeClass(this.domNode, "down");
if (!this._selected) {
dojo.html.removeClass(this.domNode, "selected");
}
this._fireEvent("onMouseOut");
}, _onclick:function (e) {
if (!this.disabled && !this._toggleItem) {
this._fireEvent("onClick");
}
}, _onmousedown:function (e) {
if (e.preventDefault) {
e.preventDefault();
}
if (this.disabled) {
return;
}
dojo.html.addClass(this.domNode, "down");
if (this._toggleItem) {
if (this.parent.preventDeselect && this._selected) {
return;
}
this.toggleSelected();
}
this._fireEvent("onMouseDown");
}, _onmouseup:function (e) {
dojo.html.removeClass(this.domNode, "down");
this._fireEvent("onMouseUp");
}, onClick:function () {
}, onMouseOver:function () {
}, onMouseOut:function () {
}, onMouseDown:function () {
}, onMouseUp:function () {
}, fillInTemplate:function (args, frag) {
if (args.name) {
this._name = args.name;
}
if (args.selected) {
this.select();
}
if (args.disabled) {
this.disable();
}
if (args.label) {
this.setLabel(args.label);
}
if (args.icon) {
this.setIcon(args.icon);
}
if (args.toggleitem || args.toggleItem) {
this.setToggleItem(true);
}
}});
dojo.widget.ToolbarItem.make = function (wh, whIsType, props) {
var item = null;
if (wh instanceof Array) {
item = dojo.widget.createWidget("ToolbarButtonGroup", props);
item.setName(wh[0]);
for (var i = 1; i < wh.length; i++) {
item.addChild(wh[i]);
}
} else {
if (wh instanceof dojo.widget.ToolbarItem) {
item = wh;
} else {
if (wh instanceof dojo.uri.Uri) {
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
} else {
if (whIsType) {
item = dojo.widget.createWidget(wh, props);
} else {
if (typeof wh == "string" || wh instanceof String) {
switch (wh.charAt(0)) {
case "|":
case "-":
case "/":
item = dojo.widget.createWidget("ToolbarSeparator", props);
break;
case " ":
if (wh.length == 1) {
item = dojo.widget.createWidget("ToolbarSpace", props);
} else {
item = dojo.widget.createWidget("ToolbarFlexibleSpace", props);
}
break;
default:
if (/\.(gif|jpg|jpeg|png)$/i.test(wh)) {
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
} else {
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
}
}
} else {
if (wh && wh.tagName && /^img$/i.test(wh.tagName)) {
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:wh}));
} else {
item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
}
}
}
}
}
}
return item;
};
dojo.widget.defineWidget("dojo.widget.ToolbarButtonGroup", dojo.widget.ToolbarItem, {isContainer:true, templateString:"<span unselectable=\"on\" class=\"toolbarButtonGroup\" dojoAttachPoint=\"containerNode\"></span>", defaultButton:"", postCreate:function () {
for (var i = 0; i < this.children.length; i++) {
this._injectChild(this.children[i]);
}
}, addChild:function (item, pos, props) {
var widget = dojo.widget.ToolbarItem.make(item, null, dojo.lang.mixin(props || {}, {toggleItem:true}));
var ret = dojo.widget.ToolbarButtonGroup.superclass.addChild.call(this, widget, null, pos, null);
this._injectChild(widget);
return ret;
}, _injectChild:function (widget) {
dojo.event.connect(widget, "onSelect", this, "onChildSelected");
dojo.event.connect(widget, "onDeselect", this, "onChildDeSelected");
if (widget._name == this.defaultButton || (typeof this.defaultButton == "number" && this.children.length - 1 == this.defaultButton)) {
widget.select(false, true);
}
}, getItem:function (name) {
if (name instanceof dojo.widget.ToolbarItem) {
return name;
}
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
return child;
}
}
return null;
}, getItems:function () {
var items = [];
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
items.push(child);
}
}
return items;
}, onChildSelected:function (e) {
this.select(e._name);
}, onChildDeSelected:function (e) {
this._fireEvent("onChangeSelect", this._value);
}, enable:function (force, preventEvent) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
child.enable(force, preventEvent);
if (child._name == this._value) {
child.select(force, preventEvent);
}
}
}
}, disable:function (force, preventEvent) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
child.disable(force, preventEvent);
}
}
}, _value:"", getValue:function () {
return this._value;
}, select:function (name, force, preventEvent) {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
if (child instanceof dojo.widget.ToolbarItem) {
if (child._name == name) {
child.select(force, preventEvent);
this._value = name;
} else {
child.deselect(true, true);
}
}
}
if (!preventEvent) {
this._fireEvent("onSelect", this._value);
this._fireEvent("onChangeSelect", this._value);
}
}, setValue:this.select, preventDeselect:false});
dojo.widget.defineWidget("dojo.widget.ToolbarButton", dojo.widget.ToolbarItem, {fillInTemplate:function (args, frag) {
dojo.widget.ToolbarButton.superclass.fillInTemplate.call(this, args, frag);
dojo.html.addClass(this.domNode, "toolbarButton");
if (this._icon) {
this.setIcon(this._icon);
}
if (this._label) {
this.setLabel(this._label);
}
if (!this._name) {
if (this._label) {
this.setName(this._label);
} else {
if (this._icon) {
var src = this._icon.getSrc("enabled").match(/[\/^]([^\.\/]+)\.(gif|jpg|jpeg|png)$/i);
if (src) {
this.setName(src[1]);
}
} else {
this._name = this._widgetId;
}
}
}
}});
dojo.widget.defineWidget("dojo.widget.ToolbarDialog", dojo.widget.ToolbarButton, {fillInTemplate:function (args, frag) {
dojo.widget.ToolbarDialog.superclass.fillInTemplate.call(this, args, frag);
dojo.event.connect(this, "onSelect", this, "showDialog");
dojo.event.connect(this, "onDeselect", this, "hideDialog");
}, showDialog:function (e) {
dojo.lang.setTimeout(dojo.event.connect, 1, document, "onmousedown", this, "deselect");
}, hideDialog:function (e) {
dojo.event.disconnect(document, "onmousedown", this, "deselect");
}});
dojo.widget.defineWidget("dojo.widget.ToolbarMenu", dojo.widget.ToolbarDialog, {});
dojo.widget.ToolbarMenuItem = function () {
};
dojo.widget.defineWidget("dojo.widget.ToolbarSeparator", dojo.widget.ToolbarItem, {templateString:"<span unselectable=\"on\" class=\"toolbarItem toolbarSeparator\"></span>", defaultIconPath:new dojo.uri.moduleUri("dojo.widget", "templates/buttons/sep.gif"), fillInTemplate:function (args, frag, skip) {
dojo.widget.ToolbarSeparator.superclass.fillInTemplate.call(this, args, frag);
this._name = this.widgetId;
if (!skip) {
if (!this._icon) {
this.setIcon(this.defaultIconPath);
}
this.domNode.appendChild(this._icon.getNode());
}
}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
dojo.widget.defineWidget("dojo.widget.ToolbarSpace", dojo.widget.ToolbarSeparator, {fillInTemplate:function (args, frag, skip) {
dojo.widget.ToolbarSpace.superclass.fillInTemplate.call(this, args, frag, true);
if (!skip) {
dojo.html.addClass(this.domNode, "toolbarSpace");
}
}});
dojo.widget.defineWidget("dojo.widget.ToolbarSelect", dojo.widget.ToolbarItem, {templateString:"<span class=\"toolbarItem toolbarSelect\" unselectable=\"on\"><select dojoAttachPoint=\"selectBox\" dojoOnChange=\"changed\"></select></span>", fillInTemplate:function (args, frag) {
dojo.widget.ToolbarSelect.superclass.fillInTemplate.call(this, args, frag, true);
var keys = args.values;
var i = 0;
for (var val in keys) {
var opt = document.createElement("option");
opt.setAttribute("value", keys[val]);
opt.innerHTML = val;
this.selectBox.appendChild(opt);
}
}, changed:function (e) {
this._fireEvent("onSetValue", this.selectBox.value);
}, setEnabled:function (is, force, preventEvent) {
var ret = dojo.widget.ToolbarSelect.superclass.setEnabled.call(this, is, force, preventEvent);
this.selectBox.disabled = this.disabled;
return ret;
}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
dojo.widget.Icon = function (enabled, disabled, hovered, selected) {
if (!arguments.length) {
throw new Error("Icon must have at least an enabled state");
}
var states = ["enabled", "disabled", "hovered", "selected"];
var currentState = "enabled";
var domNode = document.createElement("img");
this.getState = function () {
return currentState;
};
this.setState = function (value) {
if (dojo.lang.inArray(states, value)) {
if (this[value]) {
currentState = value;
var img = this[currentState];
if ((dojo.render.html.ie55 || dojo.render.html.ie60) && img.src && img.src.match(/[.]png$/i)) {
domNode.width = img.width || img.offsetWidth;
domNode.height = img.height || img.offsetHeight;
domNode.setAttribute("src", dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif").uri);
domNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "',sizingMethod='image')";
} else {
domNode.setAttribute("src", img.src);
}
}
} else {
throw new Error("Invalid state set on Icon (state: " + value + ")");
}
};
this.setSrc = function (state, value) {
if (/^img$/i.test(value.tagName)) {
this[state] = value;
} else {
if (typeof value == "string" || value instanceof String || value instanceof dojo.uri.Uri) {
this[state] = new Image();
this[state].src = value.toString();
}
}
return this[state];
};
this.setIcon = function (icon) {
for (var i = 0; i < states.length; i++) {
if (icon[states[i]]) {
this.setSrc(states[i], icon[states[i]]);
}
}
this.update();
};
this.enable = function () {
this.setState("enabled");
};
this.disable = function () {
this.setState("disabled");
};
this.hover = function () {
this.setState("hovered");
};
this.select = function () {
this.setState("selected");
};
this.getSize = function () {
return {width:domNode.width || domNode.offsetWidth, height:domNode.height || domNode.offsetHeight};
};
this.setSize = function (w, h) {
domNode.width = w;
domNode.height = h;
return {width:w, height:h};
};
this.getNode = function () {
return domNode;
};
this.getSrc = function (state) {
if (state) {
return this[state].src;
}
return domNode.src || "";
};
this.update = function () {
this.setState(currentState);
};
for (var i = 0; i < states.length; i++) {
var arg = arguments[i];
var state = states[i];
this[state] = null;
if (!arg) {
continue;
}
this.setSrc(state, arg);
}
this.enable();
};
dojo.widget.Icon.make = function (a, b, c, d) {
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] instanceof dojo.widget.Icon) {
return arguments[i];
}
}
return new dojo.widget.Icon(a, b, c, d);
};
dojo.widget.defineWidget("dojo.widget.ToolbarColorDialog", dojo.widget.ToolbarDialog, {palette:"7x10", fillInTemplate:function (args, frag) {
dojo.widget.ToolbarColorDialog.superclass.fillInTemplate.call(this, args, frag);
this.dialog = dojo.widget.createWidget("ColorPalette", {palette:this.palette});
this.dialog.domNode.style.position = "absolute";
dojo.event.connect(this.dialog, "onColorSelect", this, "_setValue");
}, _setValue:function (color) {
this._value = color;
this._fireEvent("onSetValue", color);
}, showDialog:function (e) {
dojo.widget.ToolbarColorDialog.superclass.showDialog.call(this, e);
var abs = dojo.html.getAbsolutePosition(this.domNode, true);
var y = abs.y + dojo.html.getBorderBox(this.domNode).height;
this.dialog.showAt(abs.x, y);
}, hideDialog:function (e) {
dojo.widget.ToolbarColorDialog.superclass.hideDialog.call(this, e);
this.dialog.hide();
}});
 
/trunk/api/js/dojo/src/widget/TreeEmphasizeOnSelect.js
New file
0,0 → 1,24
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeEmphasizeOnSelect");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeSelectorV3");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.TreeEmphasizeOnSelect", dojo.widget.HtmlWidget, {selector:"", initialize:function () {
this.selector = dojo.widget.byId(this.selector);
dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");
dojo.event.topic.subscribe(this.selector.eventNames.deselect, this, "onDeselect");
}, onSelect:function (message) {
message.node.viewEmphasize();
}, onDeselect:function (message) {
message.node.viewUnemphasize();
}});
 
/trunk/api/js/dojo/src/widget/Toggler.js
New file
0,0 → 1,24
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Toggler");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.widget.defineWidget("dojo.widget.Toggler", dojo.widget.HtmlWidget, {targetId:"", fillInTemplate:function () {
dojo.event.connect(this.domNode, "onclick", this, "onClick");
}, onClick:function () {
var pane = dojo.widget.byId(this.targetId);
if (!pane) {
return;
}
pane.explodeSrc = this.domNode;
pane.toggleShowing();
}});
 
/trunk/api/js/dojo/src/widget/AccordionContainer.js
New file
0,0 → 1,126
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.AccordionContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.*");
dojo.require("dojo.lfx.html");
dojo.require("dojo.html.selection");
dojo.require("dojo.widget.html.layout");
dojo.require("dojo.widget.PageContainer");
dojo.widget.defineWidget("dojo.widget.AccordionContainer", dojo.widget.HtmlWidget, {isContainer:true, labelNodeClass:"label", containerNodeClass:"accBody", duration:250, fillInTemplate:function () {
with (this.domNode.style) {
if (position != "absolute") {
position = "relative";
}
overflow = "hidden";
}
}, addChild:function (widget) {
var child = this._addChild(widget);
this._setSizes();
return child;
}, _addChild:function (widget) {
if (widget.open) {
dojo.deprecated("open parameter deprecated, use 'selected=true' instead will be removed in ", "0.5");
dojo.debug(widget.widgetId + ": open == " + widget.open);
widget.selected = true;
}
if (widget.widgetType != "AccordionPane") {
var wrapper = dojo.widget.createWidget("AccordionPane", {label:widget.label, selected:widget.selected, labelNodeClass:this.labelNodeClass, containerNodeClass:this.containerNodeClass, allowCollapse:this.allowCollapse});
wrapper.addChild(widget);
this.addWidgetAsDirectChild(wrapper);
this.registerChild(wrapper, this.children.length);
return wrapper;
} else {
dojo.html.addClass(widget.containerNode, this.containerNodeClass);
dojo.html.addClass(widget.labelNode, this.labelNodeClass);
this.addWidgetAsDirectChild(widget);
this.registerChild(widget, this.children.length);
return widget;
}
}, postCreate:function () {
var tmpChildren = this.children;
this.children = [];
dojo.html.removeChildren(this.domNode);
dojo.lang.forEach(tmpChildren, dojo.lang.hitch(this, "_addChild"));
this._setSizes();
}, removeChild:function (widget) {
dojo.widget.AccordionContainer.superclass.removeChild.call(this, widget);
this._setSizes();
}, onResized:function () {
this._setSizes();
}, _setSizes:function () {
var totalCollapsedHeight = 0;
var openIdx = 0;
dojo.lang.forEach(this.children, function (child, idx) {
totalCollapsedHeight += child.getLabelHeight();
if (child.selected) {
openIdx = idx;
}
});
var mySize = dojo.html.getContentBox(this.domNode);
var y = 0;
dojo.lang.forEach(this.children, function (child, idx) {
var childCollapsedHeight = child.getLabelHeight();
child.resizeTo(mySize.width, mySize.height - totalCollapsedHeight + childCollapsedHeight);
child.domNode.style.zIndex = idx + 1;
child.domNode.style.position = "absolute";
child.domNode.style.top = y + "px";
y += (idx == openIdx) ? dojo.html.getBorderBox(child.domNode).height : childCollapsedHeight;
});
}, selectChild:function (page) {
dojo.lang.forEach(this.children, function (child) {
child.setSelected(child == page);
});
var y = 0;
var anims = [];
dojo.lang.forEach(this.children, function (child, idx) {
if (child.domNode.style.top != (y + "px")) {
anims.push(dojo.lfx.html.slideTo(child.domNode, {top:y, left:0}, this.duration));
}
y += child.selected ? dojo.html.getBorderBox(child.domNode).height : child.getLabelHeight();
}, this);
dojo.lfx.combine(anims).play();
}});
dojo.widget.defineWidget("dojo.widget.AccordionPane", dojo.widget.HtmlWidget, {label:"", "class":"dojoAccordionPane", labelNodeClass:"label", containerNodeClass:"accBody", selected:false, templateString:"<div dojoAttachPoint=\"domNode\">\n<div dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onclick: onLabelClick\" class=\"${this.labelNodeClass}\">${this.label}</div>\n<div dojoAttachPoint=\"containerNode\" style=\"overflow: hidden;\" class=\"${this.containerNodeClass}\"></div>\n</div>\n", templateCssString:".dojoAccordionPane .label {\n\tcolor: #000;\n\tfont-weight: bold;\n\tbackground: url(\"images/soriaAccordionOff.gif\") repeat-x top left #85aeec;\n\tborder:1px solid #d9d9d9;\n\tfont-size:0.9em;\n}\n\n.dojoAccordionPane-selected .label {\n\tbackground: url(\"images/soriaAccordionSelected.gif\") repeat-x top left #85aeec;\n\tborder:1px solid #84a3d1;\n}\n\n.dojoAccordionPane .label:hover {\n\tcursor: pointer;\n}\n\n.dojoAccordionPane .accBody {\n\tbackground: #fff;\n\toverflow: auto;\n\tborder:1px solid #84a3d1;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/AccordionPane.css"), isContainer:true, fillInTemplate:function () {
dojo.html.addClass(this.domNode, this["class"]);
dojo.widget.AccordionPane.superclass.fillInTemplate.call(this);
dojo.html.disableSelection(this.labelNode);
this.setSelected(this.selected);
}, setLabel:function (label) {
this.labelNode.innerHTML = label;
}, resizeTo:function (width, height) {
dojo.html.setMarginBox(this.domNode, {width:width, height:height});
var children = [{domNode:this.labelNode, layoutAlign:"top"}, {domNode:this.containerNode, layoutAlign:"client"}];
dojo.widget.html.layout(this.domNode, children);
var childSize = dojo.html.getContentBox(this.containerNode);
this.children[0].resizeTo(childSize.width, childSize.height);
}, getLabelHeight:function () {
return dojo.html.getMarginBox(this.labelNode).height;
}, onLabelClick:function () {
this.parent.selectChild(this);
}, setSelected:function (isSelected) {
this.selected = isSelected;
(isSelected ? dojo.html.addClass : dojo.html.removeClass)(this.domNode, this["class"] + "-selected");
var child = this.children[0];
if (child) {
if (isSelected) {
if (!child.isShowing()) {
child.show();
} else {
child.onShow();
}
} else {
child.onHide();
}
}
}});
dojo.lang.extend(dojo.widget.Widget, {open:false});
 
/trunk/api/js/dojo/src/widget/InternetTextbox.js
New file
0,0 → 1,76
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.InternetTextbox");
dojo.require("dojo.widget.ValidationTextbox");
dojo.require("dojo.validate.web");
dojo.widget.defineWidget("dojo.widget.IpAddressTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties) {
dojo.widget.IpAddressTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.allowdotteddecimal) {
this.flags.allowDottedDecimal = (localProperties.allowdotteddecimal == "true");
}
if (localProperties.allowdottedhex) {
this.flags.allowDottedHex = (localProperties.allowdottedhex == "true");
}
if (localProperties.allowdottedoctal) {
this.flags.allowDottedOctal = (localProperties.allowdottedoctal == "true");
}
if (localProperties.allowdecimal) {
this.flags.allowDecimal = (localProperties.allowdecimal == "true");
}
if (localProperties.allowhex) {
this.flags.allowHex = (localProperties.allowhex == "true");
}
if (localProperties.allowipv6) {
this.flags.allowIPv6 = (localProperties.allowipv6 == "true");
}
if (localProperties.allowhybrid) {
this.flags.allowHybrid = (localProperties.allowhybrid == "true");
}
}, isValid:function () {
return dojo.validate.isIpAddress(this.textbox.value, this.flags);
}});
dojo.widget.defineWidget("dojo.widget.UrlTextbox", dojo.widget.IpAddressTextbox, {mixInProperties:function (localProperties) {
dojo.widget.UrlTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.scheme) {
this.flags.scheme = (localProperties.scheme == "true");
}
if (localProperties.allowip) {
this.flags.allowIP = (localProperties.allowip == "true");
}
if (localProperties.allowlocal) {
this.flags.allowLocal = (localProperties.allowlocal == "true");
}
if (localProperties.allowcc) {
this.flags.allowCC = (localProperties.allowcc == "true");
}
if (localProperties.allowgeneric) {
this.flags.allowGeneric = (localProperties.allowgeneric == "true");
}
}, isValid:function () {
return dojo.validate.isUrl(this.textbox.value, this.flags);
}});
dojo.widget.defineWidget("dojo.widget.EmailTextbox", dojo.widget.UrlTextbox, {mixInProperties:function (localProperties) {
dojo.widget.EmailTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.allowcruft) {
this.flags.allowCruft = (localProperties.allowcruft == "true");
}
}, isValid:function () {
return dojo.validate.isEmailAddress(this.textbox.value, this.flags);
}});
dojo.widget.defineWidget("dojo.widget.EmailListTextbox", dojo.widget.EmailTextbox, {mixInProperties:function (localProperties) {
dojo.widget.EmailListTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.listseparator) {
this.flags.listSeparator = localProperties.listseparator;
}
}, isValid:function () {
return dojo.validate.isEmailAddressList(this.textbox.value, this.flags);
}});
 
/trunk/api/js/dojo/src/widget/TreeCommon.js
New file
0,0 → 1,80
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeCommon");
dojo.require("dojo.widget.*");
dojo.declare("dojo.widget.TreeCommon", null, {listenTreeEvents:[], listenedTrees:{}, listenNodeFilter:null, listenTree:function (tree) {
var _this = this;
if (this.listenedTrees[tree.widgetId]) {
return;
}
dojo.lang.forEach(this.listenTreeEvents, function (event) {
var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
dojo.event.topic.subscribe(tree.eventNames[event], _this, eventHandler);
});
var filter;
if (this.listenNodeFilter) {
this.processDescendants(tree, this.listenNodeFilter, this.listenNode, true);
}
this.listenedTrees[tree.widgetId] = true;
}, listenNode:function () {
}, unlistenNode:function () {
}, unlistenTree:function (tree, nodeFilter) {
var _this = this;
if (!this.listenedTrees[tree.widgetId]) {
return;
}
dojo.lang.forEach(this.listenTreeEvents, function (event) {
var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
dojo.event.topic.unsubscribe(tree.eventNames[event], _this, eventHandler);
});
if (this.listenNodeFilter) {
this.processDescendants(tree, this.listenNodeFilter, this.unlistenNode, true);
}
delete this.listenedTrees[tree.widgetId];
}, checkPathCondition:function (domElement, condition) {
while (domElement && !domElement.widgetId) {
if (condition.call(null, domElement)) {
return true;
}
domElement = domElement.parentNode;
}
return false;
}, domElement2TreeNode:function (domElement) {
while (domElement && !domElement.widgetId) {
domElement = domElement.parentNode;
}
if (!domElement) {
return null;
}
var widget = dojo.widget.byId(domElement.widgetId);
if (!widget.isTreeNode) {
return null;
}
return widget;
}, processDescendants:function (elem, filter, func, skipFirst) {
var _this = this;
if (!skipFirst) {
if (!filter.call(_this, elem)) {
return;
}
func.call(_this, elem);
}
var stack = [elem];
while (elem = stack.pop()) {
dojo.lang.forEach(elem.children, function (elem) {
if (filter.call(_this, elem)) {
func.call(_this, elem);
stack.push(elem);
}
});
}
}});
 
/trunk/api/js/dojo/src/widget/TreeV3.js
New file
0,0 → 1,133
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeV3");
dojo.require("dojo.widget.TreeWithNode");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeNodeV3");
dojo.widget.defineWidget("dojo.widget.TreeV3", [dojo.widget.HtmlWidget, dojo.widget.TreeWithNode], function () {
this.eventNames = {};
this.DndAcceptTypes = [];
this.actionsDisabled = [];
this.listeners = [];
this.tree = this;
}, {DndMode:"", defaultChildWidget:null, defaultChildTitle:"New Node", eagerWidgetInstantiation:false, eventNamesDefault:{afterTreeCreate:"afterTreeCreate", beforeTreeDestroy:"beforeTreeDestroy", beforeNodeDestroy:"beforeNodeDestroy", afterChangeTree:"afterChangeTree", afterSetFolder:"afterSetFolder", afterUnsetFolder:"afterUnsetFolder", beforeMoveFrom:"beforeMoveFrom", beforeMoveTo:"beforeMoveTo", afterMoveFrom:"afterMoveFrom", afterMoveTo:"afterMoveTo", afterAddChild:"afterAddChild", afterDetach:"afterDetach", afterExpand:"afterExpand", beforeExpand:"beforeExpand", afterSetTitle:"afterSetTitle", afterCollapse:"afterCollapse", beforeCollapse:"beforeCollapse"}, classPrefix:"Tree", style:"", allowAddChildToLeaf:true, unsetFolderOnEmpty:true, DndModes:{BETWEEN:1, ONTO:2}, DndAcceptTypes:"", templateCssString:"/* indent for all tree children excepts root */\n.TreeNode {\n background-image : url('../templates/images/TreeV3/i.gif');\n background-position : top left;\n background-repeat : repeat-y;\n margin-left: 19px;\n zoom: 1;\n}\n.TreeIsRoot {\n margin-left: 0;\n}\n \n/* left vertical line (grid) for all nodes */\n.TreeIsLast {\n background-image: url('../templates/images/TreeV3/i_half.gif');\n background-repeat : no-repeat;\n}\n \n.TreeExpandOpen .TreeExpand {\n background-image: url('../templates/images/TreeV3/expand_minus.gif');\n}\n \n/* closed is higher priority than open */\n.TreeExpandClosed .TreeExpand {\n background-image: url('../templates/images/TreeV3/expand_plus.gif');\n}\n \n/* highest priority */\n.TreeExpandLeaf .TreeExpand {\n background-image: url('../templates/images/TreeV3/expand_leaf.gif');\n}\n\n/* \nshould always override any expand setting, but do not touch children.\nif I add .TreeExpand .TreeExpandLoading same time and put it to top/bottom, then it will take precedence over +- for all descendants or always fail\nso I have to remove TreeExpand and process this one specifically\n*/\n\n.TreeExpandLoading {\n width: 18px;\n height: 18px;\n float: left;\n display: inline;\n background-repeat : no-repeat;\n background-image: url('../templates/images/TreeV3/expand_loading.gif');\n}\n \n.TreeContent {\n min-height: 18px;\n min-width: 18px;\n margin-left:18px;\n cursor: default;\n /* can't make inline - multiline bugs */\n}\n\n.TreeIEContent {\n\theight: 18px;\n}\n \n.TreeExpand {\n width: 18px;\n height: 18px;\n float: left;\n display: inline;\n background-repeat : no-repeat;\n}\n \n/* same style as IE selection */\n.TreeNodeEmphasized {\n background-color: Highlight;\n color: HighlightText;\n}\n \n.TreeContent .RichTextEditable, .TreeContent .RichTextEditable iframe {\n background-color: #ffc;\n color: black;\n}\n\n/* don't use :focus due to opera's lack of support on div's */\n.TreeLabelFocused {\n outline: 1px invert dotted;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeV3.css"), templateString:"<div style=\"${this.style}\">\n</div>", isExpanded:true, isTree:true, createNode:function (data) {
data.tree = this.widgetId;
if (data.widgetName) {
return dojo.widget.createWidget(data.widgetName, data);
} else {
if (this.defaultChildWidget.prototype.createSimple) {
return this.defaultChildWidget.prototype.createSimple(data);
} else {
var ns = this.defaultChildWidget.prototype.ns;
var wt = this.defaultChildWidget.prototype.widgetType;
return dojo.widget.createWidget(ns + ":" + wt, data);
}
}
}, makeNodeTemplate:function () {
var domNode = document.createElement("div");
dojo.html.setClass(domNode, this.classPrefix + "Node " + this.classPrefix + "ExpandLeaf " + this.classPrefix + "ChildrenNo");
this.nodeTemplate = domNode;
var expandNode = document.createElement("div");
var clazz = this.classPrefix + "Expand";
if (dojo.render.html.ie) {
clazz = clazz + " " + this.classPrefix + "IEExpand";
}
dojo.html.setClass(expandNode, clazz);
this.expandNodeTemplate = expandNode;
var labelNode = document.createElement("span");
dojo.html.setClass(labelNode, this.classPrefix + "Label");
this.labelNodeTemplate = labelNode;
var contentNode = document.createElement("div");
var clazz = this.classPrefix + "Content";
if (dojo.render.html.ie && !dojo.render.html.ie70) {
clazz = clazz + " " + this.classPrefix + "IEContent";
}
dojo.html.setClass(contentNode, clazz);
this.contentNodeTemplate = contentNode;
domNode.appendChild(expandNode);
domNode.appendChild(contentNode);
contentNode.appendChild(labelNode);
}, makeContainerNodeTemplate:function () {
var div = document.createElement("div");
div.style.display = "none";
dojo.html.setClass(div, this.classPrefix + "Container");
this.containerNodeTemplate = div;
}, actions:{ADDCHILD:"ADDCHILD"}, getInfo:function () {
var info = {widgetId:this.widgetId, objectId:this.objectId};
return info;
}, adjustEventNames:function () {
for (var name in this.eventNamesDefault) {
if (dojo.lang.isUndefined(this.eventNames[name])) {
this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
}
}
}, adjustDndMode:function () {
var _this = this;
var DndMode = 0;
dojo.lang.forEach(this.DndMode.split(";"), function (elem) {
var mode = _this.DndModes[dojo.string.trim(elem).toUpperCase()];
if (mode) {
DndMode = DndMode | mode;
}
});
this.DndMode = DndMode;
}, destroy:function () {
dojo.event.topic.publish(this.tree.eventNames.beforeTreeDestroy, {source:this});
return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
}, initialize:function (args) {
this.domNode.widgetId = this.widgetId;
for (var i = 0; i < this.actionsDisabled.length; i++) {
this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
}
if (!args.defaultChildWidget) {
this.defaultChildWidget = dojo.widget.TreeNodeV3;
} else {
this.defaultChildWidget = dojo.lang.getObjPathValue(args.defaultChildWidget);
}
this.adjustEventNames();
this.adjustDndMode();
this.makeNodeTemplate();
this.makeContainerNodeTemplate();
this.containerNode = this.domNode;
dojo.html.setClass(this.domNode, this.classPrefix + "Container");
var _this = this;
dojo.lang.forEach(this.listeners, function (elem) {
var t = dojo.lang.isString(elem) ? dojo.widget.byId(elem) : elem;
t.listenTree(_this);
});
}, postCreate:function () {
dojo.event.topic.publish(this.eventNames.afterTreeCreate, {source:this});
}, move:function (child, newParent, index) {
if (!child.parent) {
dojo.raise(this.widgetType + ": child can be moved only while it's attached");
}
var oldParent = child.parent;
var oldTree = child.tree;
var oldIndex = child.getParentIndex();
var newTree = newParent.tree;
var newParent = newParent;
var newIndex = index;
var message = {oldParent:oldParent, oldTree:oldTree, oldIndex:oldIndex, newParent:newParent, newTree:newTree, newIndex:newIndex, child:child};
dojo.event.topic.publish(oldTree.eventNames.beforeMoveFrom, message);
dojo.event.topic.publish(newTree.eventNames.beforeMoveTo, message);
this.doMove.apply(this, arguments);
dojo.event.topic.publish(oldTree.eventNames.afterMoveFrom, message);
dojo.event.topic.publish(newTree.eventNames.afterMoveTo, message);
}, doMove:function (child, newParent, index) {
child.doDetach();
newParent.doAddChild(child, index);
}, toString:function () {
return "[" + this.widgetType + " ID:" + this.widgetId + "]";
}});
 
/trunk/api/js/dojo/src/widget/DebugConsole.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DebugConsole");
dojo.require("dojo.widget.Widget");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.FloatingPane");
dojo.widget.defineWidget("dojo.widget.DebugConsole", dojo.widget.FloatingPane, {fillInTemplate:function () {
dojo.widget.DebugConsole.superclass.fillInTemplate.apply(this, arguments);
this.containerNode.id = "debugConsoleClientPane";
djConfig.isDebug = true;
djConfig.debugContainerId = this.containerNode.id;
}});
 
/trunk/api/js/dojo/src/widget/TabContainer.js
New file
0,0 → 1,87
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TabContainer");
dojo.require("dojo.lang.func");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.PageContainer");
dojo.require("dojo.event.*");
dojo.require("dojo.html.selection");
dojo.require("dojo.widget.html.layout");
dojo.widget.defineWidget("dojo.widget.TabContainer", dojo.widget.PageContainer, {labelPosition:"top", closeButton:"none", templateString:null, templateString:"<div id=\"${this.widgetId}\" class=\"dojoTabContainer\">\n\t<div dojoAttachPoint=\"tablistNode\"></div>\n\t<div class=\"dojoTabPaneWrapper\" dojoAttachPoint=\"containerNode\" dojoAttachEvent=\"onKey\" waiRole=\"tabpanel\"></div>\n</div>\n", templateCssString:".dojoTabContainer {\n\tposition : relative;\n}\n\n.dojoTabPaneWrapper {\n\tborder : 1px solid #6290d2;\n\t_zoom: 1; /* force IE6 layout mode so top border doesnt disappear */\n\tdisplay: block;\n\tclear: both;\n\toverflow: hidden;\n}\n\n.dojoTabLabels-top {\n\tposition : relative;\n\ttop : 0px;\n\tleft : 0px;\n\toverflow : visible;\n\tmargin-bottom : -1px;\n\twidth : 100%;\n\tz-index: 2;\t/* so the bottom of the tab label will cover up the border of dojoTabPaneWrapper */\n}\n\n.dojoTabNoLayout.dojoTabLabels-top .dojoTab {\n\tmargin-bottom: -1px;\n\t_margin-bottom: 0px; /* IE filter so top border lines up correctly */\n}\n\n.dojoTab {\n\tposition : relative;\n\tfloat : left;\n\tpadding-left : 9px;\n\tborder-bottom : 1px solid #6290d2;\n\tbackground : url(images/tab_left.gif) no-repeat left top;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tz-index: 3;\n}\n\n.dojoTab div {\n\tdisplay : block;\n\tpadding : 4px 15px 4px 6px;\n\tbackground : url(images/tab_top_right.gif) no-repeat right top;\n\tcolor : #333;\n\tfont-size : 90%;\n}\n\n.dojoTab .close {\n\tdisplay : inline-block;\n\theight : 12px;\n\twidth : 12px;\n\tpadding : 0 12px 0 0;\n\tmargin : 0 -10px 0 10px;\n\tcursor : default;\n\tfont-size: small;\n}\n\n.dojoTab .closeImage {\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n}\n\n.dojoTab .closeHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoTab.current {\n\tpadding-bottom : 1px;\n\tborder-bottom : 0;\n\tbackground-position : 0 -150px;\n}\n\n.dojoTab.current div {\n\tpadding-bottom : 5px;\n\tmargin-bottom : -1px;\n\tbackground-position : 100% -150px;\n}\n\n/* bottom tabs */\n\n.dojoTabLabels-bottom {\n\tposition : relative;\n\tbottom : 0px;\n\tleft : 0px;\n\toverflow : visible;\n\tmargin-top : -1px;\n\twidth : 100%;\n\tz-index: 2;\n}\n\n.dojoTabNoLayout.dojoTabLabels-bottom {\n\tposition : relative;\n}\n\n.dojoTabLabels-bottom .dojoTab {\n\tborder-top : 1px solid #6290d2;\n\tborder-bottom : 0;\n\tbackground : url(images/tab_bot_left.gif) no-repeat left bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab div {\n\tbackground : url(images/tab_bot_right.gif) no-repeat right bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab.current {\n\tborder-top : 0;\n\tbackground : url(images/tab_bot_left_curr.gif) no-repeat left bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab.current div {\n\tpadding-top : 4px;\n\tbackground : url(images/tab_bot_right_curr.gif) no-repeat right bottom;\n}\n\n/* right-h tabs */\n\n.dojoTabLabels-right-h {\n\toverflow : visible;\n\tmargin-left : -1px;\n\tz-index: 2;\n}\n\n.dojoTabLabels-right-h .dojoTab {\n\tpadding-left : 0;\n\tborder-left : 1px solid #6290d2;\n\tborder-bottom : 0;\n\tbackground : url(images/tab_bot_right.gif) no-repeat right bottom;\n\tfloat : none;\n}\n\n.dojoTabLabels-right-h .dojoTab div {\n\tpadding : 4px 15px 4px 15px;\n}\n\n.dojoTabLabels-right-h .dojoTab.current {\n\tborder-left : 0;\n\tborder-bottom : 1px solid #6290d2;\n}\n\n/* left-h tabs */\n\n.dojoTabLabels-left-h {\n\toverflow : visible;\n\tmargin-right : -1px;\n\tz-index: 2;\n}\n\n.dojoTabLabels-left-h .dojoTab {\n\tborder-right : 1px solid #6290d2;\n\tborder-bottom : 0;\n\tfloat : none;\n\tbackground : url(images/tab_top_left.gif) no-repeat left top;\n}\n\n.dojoTabLabels-left-h .dojoTab.current {\n\tborder-right : 0;\n\tborder-bottom : 1px solid #6290d2;\n\tpadding-bottom : 0;\n\tbackground : url(images/tab_top_left.gif) no-repeat 0 -150px;\n}\n\n.dojoTabLabels-left-h .dojoTab div {\n\tbackground : 0;\n\tborder-bottom : 1px solid #6290d2;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TabContainer.css"), selectedTab:"", postMixInProperties:function () {
if (this.selectedTab) {
dojo.deprecated("selectedTab deprecated, use selectedChild instead, will be removed in", "0.5");
this.selectedChild = this.selectedTab;
}
if (this.closeButton != "none") {
dojo.deprecated("closeButton deprecated, use closable='true' on each child instead, will be removed in", "0.5");
}
dojo.widget.TabContainer.superclass.postMixInProperties.apply(this, arguments);
}, fillInTemplate:function () {
this.tablist = dojo.widget.createWidget("TabController", {id:this.widgetId + "_tablist", labelPosition:this.labelPosition, doLayout:this.doLayout, containerId:this.widgetId}, this.tablistNode);
dojo.widget.TabContainer.superclass.fillInTemplate.apply(this, arguments);
}, postCreate:function (args, frag) {
dojo.widget.TabContainer.superclass.postCreate.apply(this, arguments);
this.onResized();
}, _setupChild:function (tab) {
if (this.closeButton == "tab" || this.closeButton == "pane") {
tab.closable = true;
}
dojo.html.addClass(tab.domNode, "dojoTabPane");
dojo.widget.TabContainer.superclass._setupChild.apply(this, arguments);
}, onResized:function () {
if (!this.doLayout) {
return;
}
var labelAlign = this.labelPosition.replace(/-h/, "");
var children = [{domNode:this.tablist.domNode, layoutAlign:labelAlign}, {domNode:this.containerNode, layoutAlign:"client"}];
dojo.widget.html.layout(this.domNode, children);
if (this.selectedChildWidget) {
var containerSize = dojo.html.getContentBox(this.containerNode);
this.selectedChildWidget.resizeTo(containerSize.width, containerSize.height);
}
}, selectTab:function (tab, callingWidget) {
dojo.deprecated("use selectChild() rather than selectTab(), selectTab() will be removed in", "0.5");
this.selectChild(tab, callingWidget);
}, onKey:function (e) {
if (e.keyCode == e.KEY_UP_ARROW && e.ctrlKey) {
var button = this.correspondingTabButton || this.selectedTabWidget.tabButton;
button.focus();
dojo.event.browser.stopEvent(e);
} else {
if (e.keyCode == e.KEY_DELETE && e.altKey) {
if (this.selectedChildWidget.closable) {
this.closeChild(this.selectedChildWidget);
dojo.event.browser.stopEvent(e);
}
}
}
}, destroy:function () {
this.tablist.destroy();
dojo.widget.TabContainer.superclass.destroy.apply(this, arguments);
}});
dojo.widget.defineWidget("dojo.widget.TabController", dojo.widget.PageController, {templateString:"<div wairole='tablist' dojoAttachEvent='onKey'></div>", labelPosition:"top", doLayout:true, "class":"", buttonWidget:"TabButton", postMixInProperties:function () {
if (!this["class"]) {
this["class"] = "dojoTabLabels-" + this.labelPosition + (this.doLayout ? "" : " dojoTabNoLayout");
}
dojo.widget.TabController.superclass.postMixInProperties.apply(this, arguments);
}});
dojo.widget.defineWidget("dojo.widget.TabButton", dojo.widget.PageButton, {templateString:"<div class='dojoTab' dojoAttachEvent='onClick'>" + "<div dojoAttachPoint='innerDiv'>" + "<span dojoAttachPoint='titleNode' tabIndex='-1' waiRole='tab'>${this.label}</span>" + "<span dojoAttachPoint='closeButtonNode' class='close closeImage' style='${this.closeButtonStyle}'" + " dojoAttachEvent='onMouseOver:onCloseButtonMouseOver; onMouseOut:onCloseButtonMouseOut; onClick:onCloseButtonClick'></span>" + "</div>" + "</div>", postMixInProperties:function () {
this.closeButtonStyle = this.closeButton ? "" : "display: none";
dojo.widget.TabButton.superclass.postMixInProperties.apply(this, arguments);
}, fillInTemplate:function () {
dojo.html.disableSelection(this.titleNode);
dojo.widget.TabButton.superclass.fillInTemplate.apply(this, arguments);
}, onCloseButtonClick:function (evt) {
evt.stopPropagation();
dojo.widget.TabButton.superclass.onCloseButtonClick.apply(this, arguments);
}});
dojo.widget.defineWidget("dojo.widget.a11y.TabButton", dojo.widget.TabButton, {imgPath:dojo.uri.moduleUri("dojo.widget", "templates/images/tab_close.gif"), templateString:"<div class='dojoTab' dojoAttachEvent='onClick;onKey'>" + "<div dojoAttachPoint='innerDiv'>" + "<span dojoAttachPoint='titleNode' tabIndex='-1' waiRole='tab'>${this.label}</span>" + "<img class='close' src='${this.imgPath}' alt='[x]' style='${this.closeButtonStyle}'" + " dojoAttachEvent='onClick:onCloseButtonClick'>" + "</div>" + "</div>"});
 
/trunk/api/js/dojo/src/widget/DropdownTimePicker.js
New file
0,0 → 1,154
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.DropdownTimePicker");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.DropdownContainer");
dojo.require("dojo.widget.TimePicker");
dojo.require("dojo.event.*");
dojo.require("dojo.html.*");
dojo.require("dojo.date.format");
dojo.require("dojo.date.serialize");
dojo.require("dojo.i18n.common");
dojo.requireLocalization("dojo.widget", "DropdownTimePicker", null, "ROOT");
dojo.widget.defineWidget("dojo.widget.DropdownTimePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/timeIcon.gif"), formatLength:"short", displayFormat:"", timeFormat:"", saveFormat:"", value:"", name:"", postMixInProperties:function () {
dojo.widget.DropdownTimePicker.superclass.postMixInProperties.apply(this, arguments);
var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownTimePicker", this.lang);
this.iconAlt = messages.selectTime;
if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
this.value = new Date();
}
if (this.value && isNaN(this.value)) {
var orig = this.value;
this.value = dojo.date.fromRfc3339(this.value);
if (!this.value) {
var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
var c = orig.split(":");
for (var i = 0; i < c.length; ++i) {
if (c[i].length == 1) {
c[i] = "0" + c[i];
}
}
orig = c.join(":");
this.value = dojo.date.fromRfc3339(d + "T" + orig);
dojo.deprecated("dojo.widget.DropdownTimePicker", "time attributes must be passed in Rfc3339 format", "0.5");
}
}
if (this.value && !isNaN(this.value)) {
this.value = new Date(this.value);
}
}, fillInTemplate:function () {
dojo.widget.DropdownTimePicker.superclass.fillInTemplate.apply(this, arguments);
var value = "";
if (this.value instanceof Date) {
value = this.value;
} else {
if (this.value) {
var orig = this.value;
var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
var c = orig.split(":");
for (var i = 0; i < c.length; ++i) {
if (c[i].length == 1) {
c[i] = "0" + c[i];
}
}
orig = c.join(":");
value = dojo.date.fromRfc3339(d + "T" + orig);
}
}
var tpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:value};
this.timePicker = dojo.widget.createWidget("TimePicker", tpArgs, this.containerNode, "child");
dojo.event.connect(this.timePicker, "onValueChanged", this, "_updateText");
if (this.value) {
this._updateText();
}
this.containerNode.style.zIndex = this.zIndex;
this.containerNode.explodeClassName = "timeContainer";
this.valueNode.name = this.name;
}, getValue:function () {
return this.valueNode.value;
}, getTime:function () {
return this.timePicker.storedTime;
}, setValue:function (rfcDate) {
this.setTime(rfcDate);
}, setTime:function (dateObj) {
var value = "";
if (dateObj instanceof Date) {
value = dateObj;
} else {
if (this.value) {
var orig = this.value;
var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
var c = orig.split(":");
for (var i = 0; i < c.length; ++i) {
if (c[i].length == 1) {
c[i] = "0" + c[i];
}
}
orig = c.join(":");
value = dojo.date.fromRfc3339(d + "T" + orig);
}
}
this.timePicker.setTime(value);
this._syncValueNode();
}, _updateText:function () {
if (this.timePicker.selectedTime.anyTime) {
this.inputNode.value = "";
} else {
if (this.timeFormat) {
dojo.deprecated("dojo.widget.DropdownTimePicker", "Must use displayFormat attribute instead of timeFormat. See dojo.date.format for specification.", "0.5");
this.inputNode.value = dojo.date.strftime(this.timePicker.time, this.timeFormat, this.lang);
} else {
this.inputNode.value = dojo.date.format(this.timePicker.time, {formatLength:this.formatLength, timePattern:this.displayFormat, selector:"timeOnly", locale:this.lang});
}
}
this._syncValueNode();
this.onValueChanged(this.getTime());
this.hideContainer();
}, onValueChanged:function (dateObj) {
}, onInputChange:function () {
if (this.dateFormat) {
dojo.deprecated("dojo.widget.DropdownTimePicker", "Cannot parse user input. Must use displayFormat attribute instead of dateFormat. See dojo.date.format for specification.", "0.5");
} else {
var input = dojo.string.trim(this.inputNode.value);
if (input) {
var inputTime = dojo.date.parse(input, {formatLength:this.formatLength, timePattern:this.displayFormat, selector:"timeOnly", locale:this.lang});
if (inputTime) {
this.setTime(inputTime);
}
} else {
this.valueNode.value = input;
}
}
if (input) {
this._updateText();
}
}, _syncValueNode:function () {
var time = this.timePicker.time;
var value;
switch (this.saveFormat.toLowerCase()) {
case "rfc":
case "iso":
case "":
value = dojo.date.toRfc3339(time, "timeOnly");
break;
case "posix":
case "unix":
value = Number(time);
break;
default:
value = dojo.date.format(time, {datePattern:this.saveFormat, selector:"timeOnly", locale:this.lang});
}
this.valueNode.value = value;
}, destroy:function (finalize) {
this.timePicker.destroy(finalize);
dojo.widget.DropdownTimePicker.superclass.destroy.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/Manager.js
New file
0,0 → 1,286
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Manager");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.func");
dojo.require("dojo.event.*");
dojo.widget.manager = new function () {
this.widgets = [];
this.widgetIds = [];
this.topWidgets = {};
var widgetTypeCtr = {};
var renderPrefixCache = [];
this.getUniqueId = function (widgetType) {
var widgetId;
do {
widgetId = widgetType + "_" + (widgetTypeCtr[widgetType] != undefined ? ++widgetTypeCtr[widgetType] : widgetTypeCtr[widgetType] = 0);
} while (this.getWidgetById(widgetId));
return widgetId;
};
this.add = function (widget) {
this.widgets.push(widget);
if (!widget.extraArgs["id"]) {
widget.extraArgs["id"] = widget.extraArgs["ID"];
}
if (widget.widgetId == "") {
if (widget["id"]) {
widget.widgetId = widget["id"];
} else {
if (widget.extraArgs["id"]) {
widget.widgetId = widget.extraArgs["id"];
} else {
widget.widgetId = this.getUniqueId(widget.ns + "_" + widget.widgetType);
}
}
}
if (this.widgetIds[widget.widgetId]) {
dojo.debug("widget ID collision on ID: " + widget.widgetId);
}
this.widgetIds[widget.widgetId] = widget;
};
this.destroyAll = function () {
for (var x = this.widgets.length - 1; x >= 0; x--) {
try {
this.widgets[x].destroy(true);
delete this.widgets[x];
}
catch (e) {
}
}
};
this.remove = function (widgetIndex) {
if (dojo.lang.isNumber(widgetIndex)) {
var tw = this.widgets[widgetIndex].widgetId;
delete this.topWidgets[tw];
delete this.widgetIds[tw];
this.widgets.splice(widgetIndex, 1);
} else {
this.removeById(widgetIndex);
}
};
this.removeById = function (id) {
if (!dojo.lang.isString(id)) {
id = id["widgetId"];
if (!id) {
dojo.debug("invalid widget or id passed to removeById");
return;
}
}
for (var i = 0; i < this.widgets.length; i++) {
if (this.widgets[i].widgetId == id) {
this.remove(i);
break;
}
}
};
this.getWidgetById = function (id) {
if (dojo.lang.isString(id)) {
return this.widgetIds[id];
}
return id;
};
this.getWidgetsByType = function (type) {
var lt = type.toLowerCase();
var getType = (type.indexOf(":") < 0 ? function (x) {
return x.widgetType.toLowerCase();
} : function (x) {
return x.getNamespacedType();
});
var ret = [];
dojo.lang.forEach(this.widgets, function (x) {
if (getType(x) == lt) {
ret.push(x);
}
});
return ret;
};
this.getWidgetsByFilter = function (unaryFunc, onlyOne) {
var ret = [];
dojo.lang.every(this.widgets, function (x) {
if (unaryFunc(x)) {
ret.push(x);
if (onlyOne) {
return false;
}
}
return true;
});
return (onlyOne ? ret[0] : ret);
};
this.getAllWidgets = function () {
return this.widgets.concat();
};
this.getWidgetByNode = function (node) {
var w = this.getAllWidgets();
node = dojo.byId(node);
for (var i = 0; i < w.length; i++) {
if (w[i].domNode == node) {
return w[i];
}
}
return null;
};
this.byId = this.getWidgetById;
this.byType = this.getWidgetsByType;
this.byFilter = this.getWidgetsByFilter;
this.byNode = this.getWidgetByNode;
var knownWidgetImplementations = {};
var widgetPackages = ["dojo.widget"];
for (var i = 0; i < widgetPackages.length; i++) {
widgetPackages[widgetPackages[i]] = true;
}
this.registerWidgetPackage = function (pname) {
if (!widgetPackages[pname]) {
widgetPackages[pname] = true;
widgetPackages.push(pname);
}
};
this.getWidgetPackageList = function () {
return dojo.lang.map(widgetPackages, function (elt) {
return (elt !== true ? elt : undefined);
});
};
this.getImplementation = function (widgetName, ctorObject, mixins, ns) {
var impl = this.getImplementationName(widgetName, ns);
if (impl) {
var ret = ctorObject ? new impl(ctorObject) : new impl();
return ret;
}
};
function buildPrefixCache() {
for (var renderer in dojo.render) {
if (dojo.render[renderer]["capable"] === true) {
var prefixes = dojo.render[renderer].prefixes;
for (var i = 0; i < prefixes.length; i++) {
renderPrefixCache.push(prefixes[i].toLowerCase());
}
}
}
}
var findImplementationInModule = function (lowerCaseWidgetName, module) {
if (!module) {
return null;
}
for (var i = 0, l = renderPrefixCache.length, widgetModule; i <= l; i++) {
widgetModule = (i < l ? module[renderPrefixCache[i]] : module);
if (!widgetModule) {
continue;
}
for (var name in widgetModule) {
if (name.toLowerCase() == lowerCaseWidgetName) {
return widgetModule[name];
}
}
}
return null;
};
var findImplementation = function (lowerCaseWidgetName, moduleName) {
var module = dojo.evalObjPath(moduleName, false);
return (module ? findImplementationInModule(lowerCaseWidgetName, module) : null);
};
this.getImplementationName = function (widgetName, ns) {
var lowerCaseWidgetName = widgetName.toLowerCase();
ns = ns || "dojo";
var imps = knownWidgetImplementations[ns] || (knownWidgetImplementations[ns] = {});
var impl = imps[lowerCaseWidgetName];
if (impl) {
return impl;
}
if (!renderPrefixCache.length) {
buildPrefixCache();
}
var nsObj = dojo.ns.get(ns);
if (!nsObj) {
dojo.ns.register(ns, ns + ".widget");
nsObj = dojo.ns.get(ns);
}
if (nsObj) {
nsObj.resolve(widgetName);
}
impl = findImplementation(lowerCaseWidgetName, nsObj.module);
if (impl) {
return (imps[lowerCaseWidgetName] = impl);
}
nsObj = dojo.ns.require(ns);
if ((nsObj) && (nsObj.resolver)) {
nsObj.resolve(widgetName);
impl = findImplementation(lowerCaseWidgetName, nsObj.module);
if (impl) {
return (imps[lowerCaseWidgetName] = impl);
}
}
dojo.deprecated("dojo.widget.Manager.getImplementationName", "Could not locate widget implementation for \"" + widgetName + "\" in \"" + nsObj.module + "\" registered to namespace \"" + nsObj.name + "\". " + "Developers must specify correct namespaces for all non-Dojo widgets", "0.5");
for (var i = 0; i < widgetPackages.length; i++) {
impl = findImplementation(lowerCaseWidgetName, widgetPackages[i]);
if (impl) {
return (imps[lowerCaseWidgetName] = impl);
}
}
throw new Error("Could not locate widget implementation for \"" + widgetName + "\" in \"" + nsObj.module + "\" registered to namespace \"" + nsObj.name + "\"");
};
this.resizing = false;
this.onWindowResized = function () {
if (this.resizing) {
return;
}
try {
this.resizing = true;
for (var id in this.topWidgets) {
var child = this.topWidgets[id];
if (child.checkSize) {
child.checkSize();
}
}
}
catch (e) {
}
finally {
this.resizing = false;
}
};
if (typeof window != "undefined") {
dojo.addOnLoad(this, "onWindowResized");
dojo.event.connect(window, "onresize", this, "onWindowResized");
}
};
(function () {
var dw = dojo.widget;
var dwm = dw.manager;
var h = dojo.lang.curry(dojo.lang, "hitch", dwm);
var g = function (oldName, newName) {
dw[(newName || oldName)] = h(oldName);
};
g("add", "addWidget");
g("destroyAll", "destroyAllWidgets");
g("remove", "removeWidget");
g("removeById", "removeWidgetById");
g("getWidgetById");
g("getWidgetById", "byId");
g("getWidgetsByType");
g("getWidgetsByFilter");
g("getWidgetsByType", "byType");
g("getWidgetsByFilter", "byFilter");
g("getWidgetByNode", "byNode");
dw.all = function (n) {
var widgets = dwm.getAllWidgets.apply(dwm, arguments);
if (arguments.length > 0) {
return widgets[n];
}
return widgets;
};
g("registerWidgetPackage");
g("getImplementation", "getWidgetImplementation");
g("getImplementationName", "getWidgetImplementationName");
dw.widgets = dwm.widgets;
dw.widgetIds = dwm.widgetIds;
dw.root = dwm.root;
})();
 
/trunk/api/js/dojo/src/widget/RealNumberTextbox.js
New file
0,0 → 1,48
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.RealNumberTextbox");
dojo.require("dojo.widget.IntegerTextbox");
dojo.require("dojo.validate.common");
dojo.widget.defineWidget("dojo.widget.RealNumberTextbox", dojo.widget.IntegerTextbox, {mixInProperties:function (localProperties, frag) {
dojo.widget.RealNumberTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.places) {
this.flags.places = Number(localProperties.places);
}
if ((localProperties.exponent == "true") || (localProperties.exponent == "always")) {
this.flags.exponent = true;
} else {
if ((localProperties.exponent == "false") || (localProperties.exponent == "never")) {
this.flags.exponent = false;
} else {
this.flags.exponent = [true, false];
}
}
if ((localProperties.esigned == "true") || (localProperties.esigned == "always")) {
this.flags.eSigned = true;
} else {
if ((localProperties.esigned == "false") || (localProperties.esigned == "never")) {
this.flags.eSigned = false;
} else {
this.flags.eSigned = [true, false];
}
}
if (localProperties.min) {
this.flags.min = parseFloat(localProperties.min);
}
if (localProperties.max) {
this.flags.max = parseFloat(localProperties.max);
}
}, isValid:function () {
return dojo.validate.isRealNumber(this.textbox.value, this.flags);
}, isInRange:function () {
return dojo.validate.isInRange(this.textbox.value, this.flags);
}});
 
/trunk/api/js/dojo/src/widget/TreeLinkExtension.js
New file
0,0 → 1,44
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeLinkExtension");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeExtension");
dojo.widget.defineWidget("dojo.widget.TreeLinkExtension", dojo.widget.TreeExtension, function () {
this.params = {};
}, {listenTreeEvents:["afterChangeTree"], listenTree:function (tree) {
dojo.widget.TreeCommon.prototype.listenTree.call(this, tree);
var labelNode = tree.labelNodeTemplate;
var newLabel = this.makeALabel();
dojo.html.setClass(newLabel, dojo.html.getClass(labelNode));
labelNode.parentNode.replaceChild(newLabel, labelNode);
}, makeALabel:function () {
var newLabel = document.createElement("a");
for (var key in this.params) {
if (key in {}) {
continue;
}
newLabel.setAttribute(key, this.params[key]);
}
return newLabel;
}, onAfterChangeTree:function (message) {
var _this = this;
if (!message.oldTree) {
this.listenNode(message.node);
}
}, listenNode:function (node) {
for (var key in node.object) {
if (key in {}) {
continue;
}
node.labelNode.setAttribute(key, node.object[key]);
}
}});
 
/trunk/api/js/dojo/src/widget/ResizeHandle.js
New file
0,0 → 1,66
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ResizeHandle");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.event.*");
dojo.widget.defineWidget("dojo.widget.ResizeHandle", dojo.widget.HtmlWidget, {targetElmId:"", templateCssString:".dojoHtmlResizeHandle {\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\tbottom: 2px;\n\twidth: 13px;\n\theight: 13px;\n\tz-index: 20;\n\tcursor: nw-resize;\n\tbackground-image: url(grabCorner.gif);\n\tline-height: 0px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ResizeHandle.css"), templateString:"<div class=\"dojoHtmlResizeHandle\"><div></div></div>", postCreate:function () {
dojo.event.connect(this.domNode, "onmousedown", this, "_beginSizing");
}, _beginSizing:function (e) {
if (this._isSizing) {
return false;
}
this.targetWidget = dojo.widget.byId(this.targetElmId);
this.targetDomNode = this.targetWidget ? this.targetWidget.domNode : dojo.byId(this.targetElmId);
if (!this.targetDomNode) {
return;
}
this._isSizing = true;
this.startPoint = {"x":e.clientX, "y":e.clientY};
var mb = dojo.html.getMarginBox(this.targetDomNode);
this.startSize = {"w":mb.width, "h":mb.height};
dojo.event.kwConnect({srcObj:dojo.body(), srcFunc:"onmousemove", targetObj:this, targetFunc:"_changeSizing", rate:25});
dojo.event.connect(dojo.body(), "onmouseup", this, "_endSizing");
e.preventDefault();
}, _changeSizing:function (e) {
try {
if (!e.clientX || !e.clientY) {
return;
}
}
catch (e) {
return;
}
var dx = this.startPoint.x - e.clientX;
var dy = this.startPoint.y - e.clientY;
var newW = this.startSize.w - dx;
var newH = this.startSize.h - dy;
if (this.minSize) {
var mb = dojo.html.getMarginBox(this.targetDomNode);
if (newW < this.minSize.w) {
newW = mb.width;
}
if (newH < this.minSize.h) {
newH = mb.height;
}
}
if (this.targetWidget) {
this.targetWidget.resizeTo(newW, newH);
} else {
dojo.html.setMarginBox(this.targetDomNode, {width:newW, height:newH});
}
e.preventDefault();
}, _endSizing:function (e) {
dojo.event.disconnect(dojo.body(), "onmousemove", this, "_changeSizing");
dojo.event.disconnect(dojo.body(), "onmouseup", this, "_endSizing");
this._isSizing = false;
}});
 
/trunk/api/js/dojo/src/widget/Select.js
New file
0,0 → 1,37
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Select");
dojo.require("dojo.widget.ComboBox");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.html.stabile");
dojo.widget.defineWidget("dojo.widget.Select", dojo.widget.ComboBox, {forceValidOption:true, setValue:function (value) {
this.comboBoxValue.value = value;
dojo.widget.html.stabile.setState(this.widgetId, this.getState(), true);
this.onValueChanged(value);
}, setLabel:function (value) {
this.comboBoxSelectionValue.value = value;
if (this.textInputNode.value != value) {
this.textInputNode.value = value;
}
}, getLabel:function () {
return this.comboBoxSelectionValue.value;
}, getState:function () {
return {value:this.getValue(), label:this.getLabel()};
}, onKeyUp:function (evt) {
this.setLabel(this.textInputNode.value);
}, setState:function (state) {
this.setValue(state.value);
this.setLabel(state.label);
}, setAllValues:function (value1, value2) {
this.setLabel(value1);
this.setValue(value2);
}});
 
/trunk/api/js/dojo/src/widget/TreeRpcControllerV3.js
New file
0,0 → 1,180
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeRpcControllerV3");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeLoadingControllerV3");
dojo.widget.defineWidget("dojo.widget.TreeRpcControllerV3", dojo.widget.TreeLoadingControllerV3, {extraRpcOnEdit:false, doMove:function (child, newParent, index, sync) {
var params = {child:this.getInfo(child), childTree:this.getInfo(child.tree), oldParent:this.getInfo(child.parent), oldParentTree:this.getInfo(child.parent.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), newIndex:index};
var deferred = this.runRpc({url:this.getRpcUrl("move"), sync:sync, params:params});
var _this = this;
var args = arguments;
deferred.addCallback(function () {
dojo.widget.TreeBasicControllerV3.prototype.doMove.apply(_this, args);
});
return deferred;
}, prepareDetach:function (node, sync) {
var deferred = this.startProcessing(node);
return deferred;
}, finalizeDetach:function (node) {
this.finishProcessing(node);
}, doDetach:function (node, sync) {
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
var deferred = this.runRpc({url:this.getRpcUrl("detach"), sync:sync, params:params});
var _this = this;
var args = arguments;
deferred.addCallback(function () {
dojo.widget.TreeBasicControllerV3.prototype.doDetach.apply(_this, args);
});
return deferred;
}, requestEditConfirmation:function (node, action, sync) {
if (!this.extraRpcOnEdit) {
return dojo.Deferred.prototype.makeCalled();
}
var _this = this;
var deferred = this.startProcessing(node);
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
deferred.addCallback(function () {
return _this.runRpc({url:_this.getRpcUrl(action), sync:sync, params:params});
});
deferred.addBoth(function (r) {
_this.finishProcessing(node);
return r;
});
return deferred;
}, editLabelSave:function (node, newContent, sync) {
var deferred = this.startProcessing(node);
var _this = this;
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree), newContent:newContent};
deferred.addCallback(function () {
return _this.runRpc({url:_this.getRpcUrl("editLabelSave"), sync:sync, params:params});
});
deferred.addBoth(function (r) {
_this.finishProcessing(node);
return r;
});
return deferred;
}, editLabelStart:function (node, sync) {
if (!this.canEditLabel(node)) {
return false;
}
var _this = this;
if (!this.editor.isClosed()) {
var deferred = this.editLabelFinish(this.editor.saveOnBlur, sync);
deferred.addCallback(function () {
return _this.editLabelStart(node, sync);
});
return deferred;
}
var deferred = this.requestEditConfirmation(node, "editLabelStart", sync);
deferred.addCallback(function () {
_this.doEditLabelStart(node);
});
return deferred;
}, editLabelFinish:function (save, sync) {
var _this = this;
var node = this.editor.node;
var deferred = dojo.Deferred.prototype.makeCalled();
if (!save && !node.isPhantom) {
deferred = this.requestEditConfirmation(this.editor.node, "editLabelFinishCancel", sync);
}
if (save) {
if (node.isPhantom) {
deferred = this.sendCreateChildRequest(node.parent, node.getParentIndex(), {title:this.editor.getContents()}, sync);
} else {
deferred = this.editLabelSave(node, this.editor.getContents(), sync);
}
}
deferred.addCallback(function (server_data) {
_this.doEditLabelFinish(save, server_data);
});
deferred.addErrback(function (r) {
_this.doEditLabelFinish(false);
return false;
});
return deferred;
}, createAndEdit:function (parent, index, sync) {
var data = {title:parent.tree.defaultChildTitle};
if (!this.canCreateChild(parent, index, data)) {
return false;
}
if (!this.editor.isClosed()) {
var deferred = this.editLabelFinish(this.editor.saveOnBlur, sync);
deferred.addCallback(function () {
return _this.createAndEdit(parent, index, sync);
});
return deferred;
}
var _this = this;
var deferred = this.prepareCreateChild(parent, index, data, sync);
deferred.addCallback(function () {
var child = _this.makeDefaultNode(parent, index);
child.isPhantom = true;
return child;
});
deferred.addBoth(function (r) {
_this.finalizeCreateChild(parent, index, data, sync);
return r;
});
deferred.addCallback(function (child) {
var d = _this.exposeCreateChild(parent, index, data, sync);
d.addCallback(function () {
return child;
});
return d;
});
deferred.addCallback(function (child) {
_this.doEditLabelStart(child);
return child;
});
return deferred;
}, prepareDestroyChild:function (node, sync) {
var deferred = this.startProcessing(node);
return deferred;
}, finalizeDestroyChild:function (node) {
this.finishProcessing(node);
}, doDestroyChild:function (node, sync) {
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
var deferred = this.runRpc({url:this.getRpcUrl("destroyChild"), sync:sync, params:params});
var _this = this;
var args = arguments;
deferred.addCallback(function () {
dojo.widget.TreeBasicControllerV3.prototype.doDestroyChild.apply(_this, args);
});
return deferred;
}, sendCreateChildRequest:function (parent, index, data, sync) {
var params = {tree:this.getInfo(parent.tree), parent:this.getInfo(parent), index:index, data:data};
var deferred = this.runRpc({url:this.getRpcUrl("createChild"), sync:sync, params:params});
return deferred;
}, doCreateChild:function (parent, index, data, sync) {
if (dojo.lang.isUndefined(data.title)) {
data.title = parent.tree.defaultChildTitle;
}
var deferred = this.sendCreateChildRequest(parent, index, data, sync);
var _this = this;
var args = arguments;
deferred.addCallback(function (server_data) {
dojo.lang.mixin(data, server_data);
return dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(_this, parent, index, data);
});
return deferred;
}, doClone:function (child, newParent, index, deep, sync) {
var params = {child:this.getInfo(child), oldParent:this.getInfo(child.parent), oldParentTree:this.getInfo(child.parent.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), index:index, deep:deep ? true : false, tree:this.getInfo(child.tree)};
var deferred = this.runRpc({url:this.getRpcUrl("clone"), sync:sync, params:params});
var _this = this;
var args = arguments;
deferred.addCallback(function () {
dojo.widget.TreeBasicControllerV3.prototype.doClone.apply(_this, args);
});
return deferred;
}});
 
/trunk/api/js/dojo/src/widget/SwtWidget.js
New file
0,0 → 1,52
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.SwtWidget");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.SwtWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.Widget");
dojo.require("dojo.uri.*");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.extras");
try {
importPackage(Packages.org.eclipse.swt.widgets);
dojo.declare("dojo.widget.SwtWidget", dojo.widget.Widget, function () {
if ((arguments.length > 0) && (typeof arguments[0] == "object")) {
this.create(arguments[0]);
}
}, {display:null, shell:null, show:function () {
}, hide:function () {
}, addChild:function () {
}, registerChild:function () {
}, addWidgetAsDirectChild:function () {
}, removeChild:function () {
}, destroyRendering:function () {
}, postInitialize:function () {
}});
dojo.widget.SwtWidget.prototype.display = new Display();
dojo.widget.SwtWidget.prototype.shell = new Shell(dojo.widget.SwtWidget.prototype.display);
dojo.widget.manager.startShell = function () {
var sh = dojo.widget.SwtWidget.prototype.shell;
var d = dojo.widget.SwtWidget.prototype.display;
sh.open();
while (!sh.isDisposed()) {
dojo.widget.manager.doNext();
if (!d.readAndDispatch()) {
d.sleep();
}
}
d.dispose();
};
}
catch (e) {
dojo.debug("dojo.widget.SwtWidget not loaded. SWT classes not available");
}
 
/trunk/api/js/dojo/src/widget/Slider.js
New file
0,0 → 1,473
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Slider");
dojo.require("dojo.event.*");
dojo.require("dojo.dnd.*");
dojo.require("dojo.dnd.HtmlDragMove");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.layout");
dojo.widget.defineWidget("dojo.widget.Slider", dojo.widget.HtmlWidget, {minimumX:0, minimumY:0, maximumX:10, maximumY:10, snapValuesX:0, snapValuesY:0, _snapToGrid:true, isEnableX:true, isEnableY:true, _valueSizeX:0, _valueSizeY:0, _minX:0, _minY:0, _constraintWidth:0, _constraintHeight:0, _clipLeft:0, _clipRight:0, _clipTop:0, _clipBottom:0, _clipXdelta:0, _clipYdelta:0, initialValueX:0, initialValueY:0, flipX:false, flipY:false, clickSelect:true, activeDrag:false, templateCssString:".sliderMain {\n border: 0px !important;\n border-spacing: 0px !important;\n line-height: 0px !important;\n padding: 0px !important;\n display: -moz-inline-table !important;\n display: inline !important;\n -moz-user-focus: normal !important;\n}\n\n.sliderComponent {\n border: 0px;\n padding: 0px;\n margin: 0px;\n}\n\n.sliderHandle { \n top: 0px;\n left: 0px;\n z-index: 1000;\n position: absolute !important;\n}\n\n.sliderOutsetButton { \n border-style: outset;\n border-width: 0px 1px 1px 0px;\n border-color: black;\n}\n\n.sliderInsetButton { \n border-style: inset;\n border-width: 1px 0px 0px 1px;\n border-color: black;\n}\n\n.sliderButtonY {\n margin: 0px;\n padding: 0px;\n z-index: 900;\n}\n\n.sliderButtonX {\n margin: 0px;\n padding: 0px;\n z-index: 900;\n}\n\n.sliderBackground { \n z-index: 0;\n display: block !important;\n position: relative !important;\n}\n\n.sliderProgressBackground { \n z-index: 800;\n position: absolute !important;\n clip: rect(0px,0px,0px,0px);\n}\n\n.sliderBackgroundSizeOnly { \n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Slider.css"), templateString:"<table _=\"weird end tag formatting is to prevent whitespace from becoming &nbsp;\" \n\tclass=\"sliderMain\" \n\tdojoAttachPoint=\"focusNode\" \n\tdojoAttachEvent=\"onmousedown:_setFocus; onkey:_handleKeyEvents; onkeyup:_buttonReleased; onmouseup:_buttonReleased; onmousewheel:_mouseWheeled;\"\n\ttabindex=\"0\" cols=3 cellpadding=0 cellspacing=0 style=\"\">\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" colspan=3 dojoAttachPoint=topBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonY\"\n\t\t\t\tdojoAttachPoint=topButtonNode \n\t\t\t\tdojoAttachEvent=\"onmousedown:_topButtonPressed; onmousemove:_discardEvent; ondblclick:_topButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.topButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleY}\"\n\t\t></td>\n\t</tr>\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" dojoAttachPoint=leftBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonX\"\n\t\t\t\tdojoAttachPoint=leftButtonNode\n\t\t\t\tdojoAttachEvent=\"onmousedown:_leftButtonPressed; onmousemove:_discardEvent; ondblclick:_leftButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.leftButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleX}\"\n\t\t></td>\n\t\t<td dojoAttachPoint=constrainingContainerNode \n\t\t\tclass=\"sliderComponent sliderBackground\"\n\t\t\tstyle=\"${this.backgroundStyle}\"\n\t\t\t><img src=\"${this.handleSrc}\" \n\t\t\t\tclass=sliderHandle\n\t\t\t\tdojoAttachPoint=sliderHandleNode\n\t\t\t\tstyle=\"${this.handleStyle}\"\n\t\t\t><img src=\"${this.progressBackgroundSrc}\"\n\t\t\t\tclass=\"sliderBackgroundSizeOnly sliderProgressBackground\"\n\t\t\t\tdojoAttachPoint=progressBackgroundNode\n\t\t\t\tstyle=\"${this.backgroundSize}\"\n\t\t\t><img src=\"${this.backgroundSrc}\" \n\t\t\t\tclass=sliderBackgroundSizeOnly\n\t\t\t\tdojoAttachPoint=sliderBackgroundNode\n\t\t\t\tstyle=\"${this.backgroundSize}\"\n\t\t></td>\n\t\t<td class=\"sliderComponent\" dojoAttachPoint=rightBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonX\"\n\t\t\t\tdojoAttachPoint=rightButtonNode\n\t\t\t\tdojoAttachEvent=\"onmousedown:_rightButtonPressed; onmousemove:_discardEvent; ondblclick:_rightButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.rightButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleX}\"\n\t\t></td>\n\t</tr>\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" colspan=3 dojoAttachPoint=bottomBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonY\"\n\t\t\t\tdojoAttachPoint=bottomButtonNode \n\t\t\t\tdojoAttachEvent=\"onmousedown:_bottomButtonPressed; onmousemove:_discardEvent; ondblclick:_bottomButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.bottomButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleY}\"\n\t\t></td>\n\t</tr>\n</table>\n", _isDragInProgress:false, bottomButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_down_arrow.png"), topButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_up_arrow.png"), leftButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_left_arrow.png"), rightButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_right_arrow.png"), backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), progressBackgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), backgroundSize:"width:200px;height:200px;", backgroundStyle:"", buttonStyleX:"", buttonStyleY:"", handleStyle:"", handleSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-button.png"), showButtons:true, _eventCount:0, _typamaticTimer:null, _typamaticFunction:null, defaultTimeout:500, timeoutChangeRate:0.9, _currentTimeout:this.defaultTimeout, _handleKeyEvents:function (evt) {
if (!evt.key) {
return;
}
if (!evt.ctrlKey && !evt.altKey) {
switch (evt.key) {
case evt.KEY_LEFT_ARROW:
dojo.event.browser.stopEvent(evt);
this._leftButtonPressed(evt);
return;
case evt.KEY_RIGHT_ARROW:
dojo.event.browser.stopEvent(evt);
this._rightButtonPressed(evt);
return;
case evt.KEY_DOWN_ARROW:
dojo.event.browser.stopEvent(evt);
this._bottomButtonPressed(evt);
return;
case evt.KEY_UP_ARROW:
dojo.event.browser.stopEvent(evt);
this._topButtonPressed(evt);
return;
}
}
this._eventCount++;
}, _pressButton:function (buttonNode) {
buttonNode.className = buttonNode.className.replace("Outset", "Inset");
}, _releaseButton:function (buttonNode) {
buttonNode.className = buttonNode.className.replace("Inset", "Outset");
}, _buttonPressed:function (evt, buttonNode) {
this._setFocus();
if (typeof evt == "object") {
if (this._typamaticTimer != null) {
if (this._typamaticNode == buttonNode) {
return;
}
clearTimeout(this._typamaticTimer);
}
this._buttonReleased(null);
this._eventCount++;
this._typamaticTimer = null;
this._currentTimeout = this.defaultTimeout;
dojo.event.browser.stopEvent(evt);
} else {
if (evt != this._eventCount) {
this._buttonReleased(null);
return false;
}
}
if (buttonNode == this.leftButtonNode && this.isEnableX) {
this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") - this._valueSizeX);
} else {
if (buttonNode == this.rightButtonNode && this.isEnableX) {
this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") + this._valueSizeX);
} else {
if (buttonNode == this.topButtonNode && this.isEnableY) {
this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") - this._valueSizeY);
} else {
if (buttonNode == this.bottomButtonNode && this.isEnableY) {
this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") + this._valueSizeY);
} else {
return false;
}
}
}
}
this._pressButton(buttonNode);
this.notifyListeners();
this._typamaticNode = buttonNode;
this._typamaticTimer = dojo.lang.setTimeout(this, "_buttonPressed", this._currentTimeout, this._eventCount, buttonNode);
this._currentTimeout = Math.round(this._currentTimeout * this.timeoutChangeRate);
return false;
}, _bottomButtonPressed:function (evt) {
return this._buttonPressed(evt, this.bottomButtonNode);
}, _bottomButtonDoubleClicked:function (evt) {
var rc = this._bottomButtonPressed(evt);
dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
return rc;
}, _topButtonPressed:function (evt) {
return this._buttonPressed(evt, this.topButtonNode);
}, _topButtonDoubleClicked:function (evt) {
var rc = this._topButtonPressed(evt);
dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
return rc;
}, _leftButtonPressed:function (evt) {
return this._buttonPressed(evt, this.leftButtonNode);
}, _leftButtonDoubleClicked:function (evt) {
var rc = this._leftButtonPressed(evt);
dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
return rc;
}, _rightButtonPressed:function (evt) {
return this._buttonPressed(evt, this.rightButtonNode);
}, _rightButtonDoubleClicked:function (evt) {
var rc = this._rightButtonPressed(evt);
dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
return rc;
}, _buttonReleased:function (evt) {
if (typeof evt == "object" && evt != null && typeof evt.keyCode != "undefined" && evt.keyCode != null) {
var keyCode = evt.keyCode;
switch (keyCode) {
case evt.KEY_LEFT_ARROW:
case evt.KEY_RIGHT_ARROW:
case evt.KEY_DOWN_ARROW:
case evt.KEY_UP_ARROW:
dojo.event.browser.stopEvent(evt);
break;
}
}
this._releaseButton(this.topButtonNode);
this._releaseButton(this.bottomButtonNode);
this._releaseButton(this.leftButtonNode);
this._releaseButton(this.rightButtonNode);
this._eventCount++;
if (this._typamaticTimer != null) {
clearTimeout(this._typamaticTimer);
}
this._typamaticTimer = null;
this._currentTimeout = this.defaultTimeout;
}, _mouseWheeled:function (evt) {
var scrollAmount = 0;
if (typeof evt.wheelDelta == "number") {
scrollAmount = evt.wheelDelta;
} else {
if (typeof evt.detail == "number") {
scrollAmount = -evt.detail;
}
}
if (this.isEnableY) {
if (scrollAmount > 0) {
this._topButtonPressed(evt);
this._buttonReleased(evt);
} else {
if (scrollAmount < 0) {
this._bottomButtonPressed(evt);
this._buttonReleased(evt);
}
}
} else {
if (this.isEnableX) {
if (scrollAmount > 0) {
this._rightButtonPressed(evt);
this._buttonReleased(evt);
} else {
if (scrollAmount < 0) {
this._leftButtonPressed(evt);
this._buttonReleased(evt);
}
}
}
}
}, _discardEvent:function (evt) {
dojo.event.browser.stopEvent(evt);
}, _setFocus:function () {
if (this.focusNode.focus) {
this.focusNode.focus();
}
}, fillInTemplate:function (args, frag) {
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
var padding = this.domNode.style.padding;
if (dojo.lang.isString(padding) && padding != "" && padding != "0px" && padding != "0px 0px 0px 0px") {
this.topBorderNode.style.padding = this.bottomBorderNode.style.padding = padding;
this.topBorderNode.style.paddingBottom = "0px";
this.bottomBorderNode.style.paddingTop = "0px";
this.rightBorderNode.style.paddingRight = this.domNode.style.paddingRight;
this.leftBorderNode.style.paddingLeft = this.domNode.style.paddingLeft;
this.domNode.style.padding = "0px 0px 0px 0px";
}
var borderWidth = this.domNode.style.borderWidth;
if (dojo.lang.isString(borderWidth) && borderWidth != "" && borderWidth != "0px" && borderWidth != "0px 0px 0px 0px") {
this.topBorderNode.style.borderStyle = this.rightBorderNode.style.borderStyle = this.bottomBorderNode.style.borderStyle = this.leftBorderNode.style.borderStyle = this.domNode.style.borderStyle;
this.topBorderNode.style.borderColor = this.rightBorderNode.style.borderColor = this.bottomBorderNode.style.borderColor = this.leftBorderNode.style.borderColor = this.domNode.style.borderColor;
this.topBorderNode.style.borderWidth = this.bottomBorderNode.style.borderWidth = borderWidth;
this.topBorderNode.style.borderBottomWidth = "0px";
this.bottomBorderNode.style.borderTopWidth = "0px";
this.rightBorderNode.style.borderRightWidth = this.domNode.style.borderRightWidth;
this.leftBorderNode.style.borderLeftWidth = this.domNode.style.borderLeftWidth;
this.domNode.style.borderWidth = "0px 0px 0px 0px";
}
this._handleMove = new dojo.widget._SliderDragMoveSource(this.sliderHandleNode);
this._handleMove.setParent(this);
if (this.clickSelect) {
dojo.event.connect(this.constrainingContainerNode, "onmousedown", this, "_onClick");
}
if (this.isEnableX) {
this.setValueX(!isNaN(this.initialValueX) ? this.initialValueX : (!isNaN(this.minimumX) ? this.minimumX : 0));
}
if (!this.isEnableX || !this.showButtons) {
this.rightButtonNode.style.width = "1px";
this.rightButtonNode.style.visibility = "hidden";
this.leftButtonNode.style.width = "1px";
this.leftButtonNode.style.visibility = "hidden";
}
if (this.isEnableY) {
this.setValueY(!isNaN(this.initialValueY) ? this.initialValueY : (!isNaN(this.minimumY) ? this.minimumY : 0));
}
if (!this.isEnableY || !this.showButtons) {
this.bottomButtonNode.style.width = "1px";
this.bottomButtonNode.style.visibility = "hidden";
this.topButtonNode.style.width = "1px";
this.topButtonNode.style.visibility = "hidden";
}
if (this.focusNode.addEventListener) {
this.focusNode.addEventListener("DOMMouseScroll", dojo.lang.hitch(this, "_mouseWheeled"), false);
}
}, _snapX:function (x) {
if (x < 0) {
x = 0;
} else {
if (x > this._constraintWidth) {
x = this._constraintWidth;
} else {
var selectedValue = Math.round(x / this._valueSizeX);
x = Math.round(selectedValue * this._valueSizeX);
}
}
this.sliderHandleNode.style.left = x + "px";
if (this.flipX) {
this._clipLeft = x + this._clipXdelta;
} else {
this._clipRight = x + this._clipXdelta;
}
this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
}, _calc_valueSizeX:function () {
var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
if (isNaN(constrainingCtrBox.width) || isNaN(sliderHandleBox.width) || constrainingCtrBox.width <= 0 || sliderHandleBox.width <= 0) {
return false;
}
this._constraintWidth = constrainingCtrBox.width + dojo.html.getPadding(this.constrainingContainerNode).width - sliderHandleBox.width;
if (this.flipX) {
this._clipLeft = this._clipRight = constrainingCtrBox.width;
} else {
this._clipLeft = this._clipRight = 0;
}
this._clipXdelta = sliderHandleBox.width >> 1;
if (!this.isEnableY) {
this._clipTop = 0;
this._clipBottom = constrainingCtrBox.height;
}
if (this._constraintWidth <= 0) {
return false;
}
if (this.snapValuesX == 0) {
this.snapValuesX = this._constraintWidth + 1;
}
this._valueSizeX = this._constraintWidth / (this.snapValuesX - 1);
return true;
}, setValueX:function (value) {
if (0 == this._valueSizeX) {
if (this._calc_valueSizeX() == false) {
dojo.lang.setTimeout(this, "setValueX", 100, value);
return;
}
}
if (isNaN(value)) {
value = 0;
}
if (value > this.maximumX) {
value = this.maximumX;
} else {
if (value < this.minimumX) {
value = this.minimumX;
}
}
var pixelPercent = (value - this.minimumX) / (this.maximumX - this.minimumX);
if (this.flipX) {
pixelPercent = 1 - pixelPercent;
}
this._snapX(pixelPercent * this._constraintWidth);
this.notifyListeners();
}, getValueX:function () {
var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "left") / this._constraintWidth;
if (this.flipX) {
pixelPercent = 1 - pixelPercent;
}
return Math.round(pixelPercent * (this.snapValuesX - 1)) * ((this.maximumX - this.minimumX) / (this.snapValuesX - 1)) + this.minimumX;
}, _snapY:function (y) {
if (y < 0) {
y = 0;
} else {
if (y > this._constraintHeight) {
y = this._constraintHeight;
} else {
var selectedValue = Math.round(y / this._valueSizeY);
y = Math.round(selectedValue * this._valueSizeY);
}
}
this.sliderHandleNode.style.top = y + "px";
if (this.flipY) {
this._clipTop = y + this._clipYdelta;
} else {
this._clipBottom = y + this._clipYdelta;
}
this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
}, _calc_valueSizeY:function () {
var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
if (isNaN(constrainingCtrBox.height) || isNaN(sliderHandleBox.height) || constrainingCtrBox.height <= 0 || sliderHandleBox.height <= 0) {
return false;
}
this._constraintHeight = constrainingCtrBox.height + dojo.html.getPadding(this.constrainingContainerNode).height - sliderHandleBox.height;
if (this.flipY) {
this._clipTop = this._clipBottom = constrainingCtrBox.height;
} else {
this._clipTop = this._clipBottom = 0;
}
this._clipYdelta = sliderHandleBox.height >> 1;
if (!this.isEnableX) {
this._clipLeft = 0;
this._clipRight = constrainingCtrBox.width;
}
if (this._constraintHeight <= 0) {
return false;
}
if (this.snapValuesY == 0) {
this.snapValuesY = this._constraintHeight + 1;
}
this._valueSizeY = this._constraintHeight / (this.snapValuesY - 1);
return true;
}, setValueY:function (value) {
if (0 == this._valueSizeY) {
if (this._calc_valueSizeY() == false) {
dojo.lang.setTimeout(this, "setValueY", 100, value);
return;
}
}
if (isNaN(value)) {
value = 0;
}
if (value > this.maximumY) {
value = this.maximumY;
} else {
if (value < this.minimumY) {
value = this.minimumY;
}
}
var pixelPercent = (value - this.minimumY) / (this.maximumY - this.minimumY);
if (this.flipY) {
pixelPercent = 1 - pixelPercent;
}
this._snapY(pixelPercent * this._constraintHeight);
this.notifyListeners();
}, getValueY:function () {
var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "top") / this._constraintHeight;
if (this.flipY) {
pixelPercent = 1 - pixelPercent;
}
return Math.round(pixelPercent * (this.snapValuesY - 1)) * ((this.maximumY - this.minimumY) / (this.snapValuesY - 1)) + this.minimumY;
}, _onClick:function (evt) {
if (this._isDragInProgress) {
return;
}
var parent = dojo.html.getAbsolutePosition(this.constrainingContainerNode, true, dojo.html.boxSizing.MARGIN_BOX);
var content = dojo.html.getContentBox(this._handleMove.domNode);
if (this.isEnableX) {
var x = evt.pageX - parent.x - (content.width >> 1);
this._snapX(x);
}
if (this.isEnableY) {
var y = evt.pageY - parent.y - (content.height >> 1);
this._snapY(y);
}
this.notifyListeners();
}, notifyListeners:function () {
this.onValueChanged(this.getValueX(), this.getValueY());
}, onValueChanged:function (x, y) {
}});
dojo.widget.defineWidget("dojo.widget.SliderHorizontal", dojo.widget.Slider, {isEnableX:true, isEnableY:false, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"height:10px;width:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg.gif"), flip:false, postMixInProperties:function () {
dojo.widget.SliderHorizontal.superclass.postMixInProperties.apply(this, arguments);
if (!isNaN(parseFloat(this.initialValue))) {
this.initialValueX = parseFloat(this.initialValue);
}
if (!isNaN(parseFloat(this.minimum))) {
this.minimumX = parseFloat(this.minimum);
}
if (!isNaN(parseFloat(this.maximum))) {
this.maximumX = parseFloat(this.maximum);
}
if (!isNaN(parseInt(this.snapValues))) {
this.snapValuesX = parseInt(this.snapValues);
}
if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
this.buttonStyleX = this.buttonStyle;
}
if (dojo.lang.isBoolean(this.flip)) {
this.flipX = this.flip;
}
}, notifyListeners:function () {
this.onValueChanged(this.getValueX());
}, getValue:function () {
return this.getValueX();
}, setValue:function (value) {
this.setValueX(value);
}, onValueChanged:function (value) {
}});
dojo.widget.defineWidget("dojo.widget.SliderVertical", dojo.widget.Slider, {isEnableX:false, isEnableY:true, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"width:10px;height:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg-vert.gif"), flip:false, postMixInProperties:function () {
dojo.widget.SliderVertical.superclass.postMixInProperties.apply(this, arguments);
if (!isNaN(parseFloat(this.initialValue))) {
this.initialValueY = parseFloat(this.initialValue);
}
if (!isNaN(parseFloat(this.minimum))) {
this.minimumY = parseFloat(this.minimum);
}
if (!isNaN(parseFloat(this.maximum))) {
this.maximumY = parseFloat(this.maximum);
}
if (!isNaN(parseInt(this.snapValues))) {
this.snapValuesY = parseInt(this.snapValues);
}
if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
this.buttonStyleY = this.buttonStyle;
}
if (dojo.lang.isBoolean(this.flip)) {
this.flipY = this.flip;
}
}, notifyListeners:function () {
this.onValueChanged(this.getValueY());
}, getValue:function () {
return this.getValueY();
}, setValue:function (value) {
this.setValueY(value);
}, onValueChanged:function (value) {
}});
dojo.declare("dojo.widget._SliderDragMoveSource", dojo.dnd.HtmlDragMoveSource, {slider:null, onDragStart:function (evt) {
this.slider._isDragInProgress = true;
var dragObj = this.createDragMoveObject();
this.slider.notifyListeners();
return dragObj;
}, onDragEnd:function (evt) {
this.slider._isDragInProgress = false;
this.slider.notifyListeners();
}, createDragMoveObject:function () {
var dragObj = new dojo.widget._SliderDragMoveObject(this.dragObject, this.type);
dragObj.slider = this.slider;
if (this.dragClass) {
dragObj.dragClass = this.dragClass;
}
return dragObj;
}, setParent:function (slider) {
this.slider = slider;
}});
dojo.declare("dojo.widget._SliderDragMoveObject", dojo.dnd.HtmlDragMoveObject, {slider:null, onDragMove:function (evt) {
this.updateDragOffset();
if (this.slider.isEnableX) {
var x = this.dragOffset.x + evt.pageX;
this.slider._snapX(x);
}
if (this.slider.isEnableY) {
var y = this.dragOffset.y + evt.pageY;
this.slider._snapY(y);
}
if (this.slider.activeDrag) {
this.slider.notifyListeners();
}
}});
 
/trunk/api/js/dojo/src/widget/vml/Chart.js
New file
0,0 → 1,525
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.vml.Chart");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Chart");
dojo.require("dojo.math");
dojo.require("dojo.html.layout");
dojo.require("dojo.gfx.color");
dojo.widget.defineWidget("dojo.widget.vml.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () {
this.templatePath = null;
this.templateCssPath = null;
this._isInitialize = false;
this.hasData = false;
this.vectorNode = null;
this.plotArea = null;
this.dataGroup = null;
this.axisGroup = null;
this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}};
}, {parseProperties:function (node) {
var bRangeX = false;
var bRangeY = false;
if (node.getAttribute("width")) {
this.properties.width = node.getAttribute("width");
}
if (node.getAttribute("height")) {
this.properties.height = node.getAttribute("height");
}
if (node.getAttribute("plotType")) {
this.properties.plotType = node.getAttribute("plotType");
}
if (node.getAttribute("padding")) {
if (node.getAttribute("padding").indexOf(",") > -1) {
var p = node.getAttribute("padding").split(",");
} else {
var p = node.getAttribute("padding").split(" ");
}
if (p.length == 1) {
var pad = parseFloat(p[0]);
this.properties.padding.top = pad;
this.properties.padding.right = pad;
this.properties.padding.bottom = pad;
this.properties.padding.left = pad;
} else {
if (p.length == 2) {
var padV = parseFloat(p[0]);
var padH = parseFloat(p[1]);
this.properties.padding.top = padV;
this.properties.padding.right = padH;
this.properties.padding.bottom = padV;
this.properties.padding.left = padH;
} else {
if (p.length == 4) {
this.properties.padding.top = parseFloat(p[0]);
this.properties.padding.right = parseFloat(p[1]);
this.properties.padding.bottom = parseFloat(p[2]);
this.properties.padding.left = parseFloat(p[3]);
}
}
}
}
if (node.getAttribute("rangeX")) {
var p = node.getAttribute("rangeX");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
this.properties.axes.x.range.min = parseFloat(p[0]);
this.properties.axes.x.range.max = parseFloat(p[1]);
bRangeX = true;
}
if (node.getAttribute("rangeY")) {
var p = node.getAttribute("rangeY");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
this.properties.axes.y.range.min = parseFloat(p[0]);
this.properties.axes.y.range.max = parseFloat(p[1]);
bRangeY = true;
}
return {rangeX:bRangeX, rangeY:bRangeY};
}, setAxesPlot:function (table) {
if (table.getAttribute("axisAt")) {
var p = table.getAttribute("axisAt");
if (p.indexOf(",") > -1) {
p = p.split(",");
} else {
p = p.split(" ");
}
if (!isNaN(parseFloat(p[0]))) {
this.properties.axes.x.plotAt = parseFloat(p[0]);
} else {
if (p[0].toLowerCase() == "ymin") {
this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
} else {
if (p[0].toLowerCase() == "ymax") {
this.properties.axes.x.plotAt = this.properties.axes.y.range.max;
}
}
}
if (!isNaN(parseFloat(p[1]))) {
this.properties.axes.y.plotAt = parseFloat(p[1]);
} else {
if (p[1].toLowerCase() == "xmin") {
this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
} else {
if (p[1].toLowerCase() == "xmax") {
this.properties.axes.y.plotAt = this.properties.axes.x.range.max;
}
}
}
} else {
this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
}
}, drawVectorNode:function () {
if (this.vectorNode) {
this.destroy();
}
this.vectorNode = document.createElement("div");
this.vectorNode.style.width = this.properties.width + "px";
this.vectorNode.style.height = this.properties.height + "px";
this.vectorNode.style.position = "relative";
this.domNode.appendChild(this.vectorNode);
}, drawPlotArea:function () {
var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
if (this.plotArea) {
this.plotArea.parentNode.removeChild(this.plotArea);
this.plotArea = null;
}
this.plotArea = document.createElement("div");
this.plotArea.style.position = "absolute";
this.plotArea.style.backgroundColor = "#fff";
this.plotArea.style.top = (this.properties.padding.top) - 2 + "px";
this.plotArea.style.left = (this.properties.padding.left - 1) + "px";
this.plotArea.style.width = plotWidth + "px";
this.plotArea.style.height = plotHeight + "px";
this.plotArea.style.clip = "rect(0 " + plotWidth + " " + plotHeight + " 0)";
this.vectorNode.appendChild(this.plotArea);
}, drawDataGroup:function () {
var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
if (this.dataGroup) {
this.dataGroup.parentNode.removeChild(this.dataGroup);
this.dataGroup = null;
}
this.dataGroup = document.createElement("div");
this.dataGroup.style.position = "absolute";
this.dataGroup.setAttribute("title", "Data Group");
this.dataGroup.style.top = "0px";
this.dataGroup.style.left = "0px";
this.dataGroup.style.width = plotWidth + "px";
this.dataGroup.style.height = plotHeight + "px";
this.plotArea.appendChild(this.dataGroup);
}, drawAxes:function () {
var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
if (this.axisGroup) {
this.axisGroup.parentNode.removeChild(this.axisGroup);
this.axisGroup = null;
}
this.axisGroup = document.createElement("div");
this.axisGroup.style.position = "absolute";
this.axisGroup.setAttribute("title", "Axis Group");
this.axisGroup.style.top = "0px";
this.axisGroup.style.left = "0px";
this.axisGroup.style.width = plotWidth + "px";
this.axisGroup.style.height = plotHeight + "px";
this.plotArea.appendChild(this.axisGroup);
var stroke = 1;
var line = document.createElement("v:line");
var y = dojo.widget.vml.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
line.setAttribute("from", "0px," + y + "px");
line.setAttribute("to", plotWidth + "px," + y + "px");
line.style.position = "absolute";
line.style.top = "0px";
line.style.left = "0px";
line.style.antialias = "false";
line.setAttribute("strokecolor", "#666");
line.setAttribute("strokeweight", stroke * 2 + "px");
this.axisGroup.appendChild(line);
var line = document.createElement("v:line");
var x = dojo.widget.vml.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
line.setAttribute("from", x + "px,0px");
line.setAttribute("to", x + "px," + plotHeight + "px");
line.style.position = "absolute";
line.style.top = "0px";
line.style.left = "0px";
line.style.antialias = "false";
line.setAttribute("strokecolor", "#666");
line.setAttribute("strokeweight", stroke * 2 + "px");
this.axisGroup.appendChild(line);
var size = 10;
var t = document.createElement("div");
t.style.position = "absolute";
t.style.top = (this.properties.height - this.properties.padding.bottom) + "px";
t.style.left = this.properties.padding.left + "px";
t.style.fontFamily = "sans-serif";
t.style.fontSize = size + "px";
t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2);
this.vectorNode.appendChild(t);
t = document.createElement("div");
t.style.position = "absolute";
t.style.top = (this.properties.height - this.properties.padding.bottom) + "px";
t.style.left = (this.properties.width - this.properties.padding.right - size) + "px";
t.style.fontFamily = "sans-serif";
t.style.fontSize = size + "px";
t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2);
this.vectorNode.appendChild(t);
t = document.createElement("div");
t.style.position = "absolute";
t.style.top = (size / 2) + "px";
t.style.left = "0px";
t.style.width = this.properties.padding.left + "px";
t.style.textAlign = "right";
t.style.paddingRight = "4px";
t.style.fontFamily = "sans-serif";
t.style.fontSize = size + "px";
t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2);
this.vectorNode.appendChild(t);
t = document.createElement("div");
t.style.position = "absolute";
t.style.top = (this.properties.height - this.properties.padding.bottom - size) + "px";
t.style.left = "0px";
t.style.width = this.properties.padding.left + "px";
t.style.textAlign = "right";
t.style.paddingRight = "4px";
t.style.fontFamily = "sans-serif";
t.style.fontSize = size + "px";
t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2);
this.vectorNode.appendChild(t);
}, init:function () {
if (!this.properties.width || !this.properties.height) {
var box = dojo.html.getContentBox(this.domNode);
if (!this.properties.width) {
this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width;
}
if (!this.properties.height) {
this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height;
}
}
this.drawVectorNode();
this.drawPlotArea();
this.drawDataGroup();
this.drawAxes();
this.assignColors();
this._isInitialized = true;
}, destroy:function () {
while (this.domNode.childNodes.length > 0) {
this.domNode.removeChild(this.domNode.childNodes[0]);
}
this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null;
}, render:function () {
if (this.dataGroup) {
while (this.dataGroup.childNodes.length > 0) {
this.dataGroup.removeChild(this.dataGroup.childNodes[0]);
}
} else {
this.init();
}
for (var i = 0; i < this.series.length; i++) {
dojo.widget.vml.Chart.Plotter.plot(this.series[i], this);
}
}, postCreate:function () {
var table = this.domNode.getElementsByTagName("table")[0];
if (table) {
var ranges = this.parseProperties(table);
var bRangeX = false;
var bRangeY = false;
var axisValues = this.parseData(table);
if (!bRangeX) {
this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max};
}
if (!bRangeY) {
this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max};
}
this.setAxesPlot(table);
this.domNode.removeChild(table);
}
if (this.series.length > 0) {
this.render();
}
}});
dojo.widget.vml.Chart.Plotter = new function () {
var self = this;
var plotters = {};
var types = dojo.widget.Chart.PlotTypes;
this.getX = function (value, chart) {
var v = parseFloat(value);
var min = chart.properties.axes.x.range.min;
var max = chart.properties.axes.x.range.max;
var ofst = 0 - min;
min += ofst;
max += ofst;
v += ofst;
var xmin = 0;
var xmax = chart.properties.width - chart.properties.padding.left - chart.properties.padding.right;
var x = (v * ((xmax - xmin) / max)) + xmin;
return x;
};
this.getY = function (value, chart) {
var v = parseFloat(value);
var max = chart.properties.axes.y.range.max;
var min = chart.properties.axes.y.range.min;
var ofst = 0;
if (min < 0) {
ofst += Math.abs(min);
}
min += ofst;
max += ofst;
v += ofst;
var ymin = chart.properties.height - chart.properties.padding.top - chart.properties.padding.bottom;
var ymax = 0;
var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax;
return y;
};
this.addPlotter = function (name, func) {
plotters[name] = func;
};
this.plot = function (series, chart) {
if (series.values.length == 0) {
return;
}
if (series.plotType && plotters[series.plotType]) {
return plotters[series.plotType](series, chart);
} else {
if (chart.plotType && plotters[chart.plotType]) {
return plotters[chart.plotType](series, chart);
}
}
};
plotters["bar"] = function (series, chart) {
var space = 1;
var lastW = 0;
var ys = [];
var yAxis = self.getY(chart.properties.axes.x.plotAt, chart);
var yA = yAxis;
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var w;
if (i == series.values.length - 1) {
w = lastW;
} else {
w = self.getX(series.values[i + 1].x, chart) - x - space;
lastW = w;
}
x -= (w / 2);
var y = self.getY(series.values[i].value, chart);
var h = Math.abs(yA - y);
if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) {
y = yA;
}
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
bar.setAttribute("title", series.label + " (" + i + "): " + series.values[i].value);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.9");
bar.appendChild(fill);
chart.dataGroup.appendChild(bar);
}
};
plotters["line"] = function (series, chart) {
var tension = 1.5;
var line = document.createElement("v:shape");
line.setAttribute("strokeweight", "2px");
line.setAttribute("strokecolor", series.color);
line.setAttribute("fillcolor", "none");
line.setAttribute("filled", "false");
line.setAttribute("title", series.label);
line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
line.style.position = "absolute";
line.style.top = "0px";
line.style.left = "0px";
line.style.width = chart.properties.width + "px";
line.style.height = chart.properties.height + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.85");
line.appendChild(stroke);
var path = [];
for (var i = 0; i < series.values.length; i++) {
var x = Math.round(self.getX(series.values[i].x, chart));
var y = Math.round(self.getY(series.values[i].value, chart));
if (i == 0) {
path.push("m");
path.push(x + "," + y);
} else {
var lastx = Math.round(self.getX(series.values[i - 1].x, chart));
var lasty = Math.round(self.getY(series.values[i - 1].value, chart));
var dx = x - lastx;
var dy = y - lasty;
path.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
path.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
path.push(cx + "," + y);
path.push(x + "," + y);
}
}
line.setAttribute("path", path.join(" ") + " e");
chart.dataGroup.appendChild(line);
};
plotters["area"] = function (series, chart) {
var tension = 1.5;
var line = document.createElement("v:shape");
line.setAttribute("strokeweight", "1px");
line.setAttribute("strokecolor", series.color);
line.setAttribute("fillcolor", series.color);
line.setAttribute("title", series.label);
line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
line.style.position = "absolute";
line.style.top = "0px";
line.style.left = "0px";
line.style.width = chart.properties.width + "px";
line.style.height = chart.properties.height + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
line.appendChild(stroke);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.4");
line.appendChild(fill);
var path = [];
for (var i = 0; i < series.values.length; i++) {
var x = Math.round(self.getX(series.values[i].x, chart));
var y = Math.round(self.getY(series.values[i].value, chart));
if (i == 0) {
path.push("m");
path.push(x + "," + y);
} else {
var lastx = Math.round(self.getX(series.values[i - 1].x, chart));
var lasty = Math.round(self.getY(series.values[i - 1].value, chart));
var dx = x - lastx;
var dy = y - lasty;
path.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
path.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
path.push(cx + "," + y);
path.push(x + "," + y);
}
}
path.push("l");
path.push(x + "," + self.getY(0, chart));
path.push("l");
path.push(self.getX(0, chart) + "," + self.getY(0, chart));
line.setAttribute("path", path.join(" ") + " x e");
chart.dataGroup.appendChild(line);
};
plotters["scatter"] = function (series, chart) {
var r = 6;
for (var i = 0; i < series.values.length; i++) {
var x = self.getX(series.values[i].x, chart);
var y = self.getY(series.values[i].value, chart);
var mod = r / 2;
var point = document.createElement("v:rect");
point.setAttribute("fillcolor", series.color);
point.setAttribute("strokecolor", series.color);
point.setAttribute("title", series.label + ": " + series.values[i].value);
point.style.position = "absolute";
point.style.rotation = "45";
point.style.top = (y - mod) + "px";
point.style.left = (x - mod) + "px";
point.style.width = r + "px";
point.style.height = r + "px";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
point.appendChild(fill);
chart.dataGroup.appendChild(point);
}
};
plotters["bubble"] = function (series, chart) {
var minR = 1;
var min = chart.properties.axes.x.range.min;
var max = chart.properties.axes.x.range.max;
var ofst = 0 - min;
min += ofst;
max += ofst;
var xmin = chart.properties.padding.left;
var xmax = chart.properties.width - chart.properties.padding.right;
var factor = (max - min) / (xmax - xmin) * 25;
for (var i = 0; i < series.values.length; i++) {
var size = series.values[i].size;
if (isNaN(parseFloat(size))) {
size = minR;
}
var radius = (parseFloat(size) * factor) / 2;
var diameter = radius * 2;
var cx = self.getX(series.values[i].x, chart);
var cy = self.getY(series.values[i].value, chart);
var top = cy - radius;
var left = cx - radius;
var point = document.createElement("v:oval");
point.setAttribute("fillcolor", series.color);
point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
point.setAttribute("stroked", "false");
point.style.position = "absolute";
point.style.top = top + "px";
point.style.left = left + "px";
point.style.width = diameter + "px";
point.style.height = diameter + "px";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.8");
point.appendChild(fill);
chart.dataGroup.appendChild(point);
}
};
}();
 
/trunk/api/js/dojo/src/widget/RemoteTabController.js
New file
0,0 → 1,26
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.RemoteTabController");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.TabContainer");
dojo.require("dojo.event.*");
dojo.deprecated("dojo.widget.RemoteTabController is slated for removal in 0.5; use PageController or TabController instead.", "0.5");
dojo.widget.defineWidget("dojo.widget.RemoteTabController", dojo.widget.TabController, {templateCssString:".dojoRemoteTabController {\n\tposition: relative;\n}\n\n.dojoRemoteTab {\n\tposition : relative;\n\tfloat : left;\n\tpadding-left : 9px;\n\tborder-bottom : 1px solid #6290d2;\n\tbackground : url(images/tab_left.gif) no-repeat left top;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tz-index: 3;\n}\n\n.dojoRemoteTab div {\n\tdisplay : block;\n\tpadding : 4px 15px 4px 6px;\n\tbackground : url(images/tab_top_right.gif) no-repeat right top;\n\tcolor : #333;\n\tfont-size : 90%;\n}\n\n.dojoRemoteTabPaneClose {\n\tposition : absolute;\n\tbottom : 0px;\n\tright : 6px;\n\theight : 12px;\n\twidth : 12px;\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n}\n\n.dojoRemoteTabPaneCloseHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoRemoteTabClose {\n\tdisplay : inline-block;\n\theight : 12px;\n\twidth : 12px;\n\tpadding : 0 12px 0 0;\n\tmargin : 0 -10px 0 10px;\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n\tcursor : default;\n}\n\n.dojoRemoteTabCloseHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoRemoteTab.current {\n\tpadding-bottom : 1px;\n\tborder-bottom : 0;\n\tbackground-position : 0 -150px;\n}\n\n.dojoRemoteTab.current div {\n\tpadding-bottom : 5px;\n\tmargin-bottom : -1px;\n\tbackground-position : 100% -150px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/RemoteTabControl.css"), templateString:"<div dojoAttachPoint=\"domNode\" wairole=\"tablist\"></div>", "class":"dojoRemoteTabController", tabContainer:"", postMixInProperties:function () {
this.containerId = this.tabContainer;
dojo.widget.RemoteTabController.superclass.postMixInProperties.apply(this, arguments);
}, fillInTemplate:function () {
dojo.html.addClass(this.domNode, this["class"]);
if (this.tabContainer) {
dojo.addOnLoad(dojo.lang.hitch(this, "setupTabs"));
}
dojo.widget.RemoteTabController.superclass.fillInTemplate.apply(this, arguments);
}});
 
/trunk/api/js/dojo/src/widget/Editor.js
New file
0,0 → 1,388
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Editor");
dojo.deprecated("dojo.widget.Editor", "is replaced by dojo.widget.Editor2", "0.5");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Toolbar");
dojo.require("dojo.widget.RichText");
dojo.require("dojo.widget.ColorPalette");
dojo.require("dojo.string.extras");
dojo.widget.tags.addParseTreeHandler("dojo:Editor");
dojo.widget.Editor = function () {
dojo.widget.HtmlWidget.call(this);
this.contentFilters = [];
this._toolbars = [];
};
dojo.inherits(dojo.widget.Editor, dojo.widget.HtmlWidget);
dojo.widget.Editor.itemGroups = {textGroup:["bold", "italic", "underline", "strikethrough"], blockGroup:["formatBlock", "fontName", "fontSize"], justifyGroup:["justifyleft", "justifycenter", "justifyright"], commandGroup:["save", "cancel"], colorGroup:["forecolor", "hilitecolor"], listGroup:["insertorderedlist", "insertunorderedlist"], indentGroup:["outdent", "indent"], linkGroup:["createlink", "insertimage", "inserthorizontalrule"]};
dojo.widget.Editor.formatBlockValues = {"Normal":"p", "Main heading":"h2", "Sub heading":"h3", "Sub sub heading":"h4", "Preformatted":"pre"};
dojo.widget.Editor.fontNameValues = {"Arial":"Arial, Helvetica, sans-serif", "Verdana":"Verdana, sans-serif", "Times New Roman":"Times New Roman, serif", "Courier":"Courier New, monospace"};
dojo.widget.Editor.fontSizeValues = {"1 (8 pt)":"1", "2 (10 pt)":"2", "3 (12 pt)":"3", "4 (14 pt)":"4", "5 (18 pt)":"5", "6 (24 pt)":"6", "7 (36 pt)":"7"};
dojo.widget.Editor.defaultItems = ["commandGroup", "|", "blockGroup", "|", "textGroup", "|", "colorGroup", "|", "justifyGroup", "|", "listGroup", "indentGroup", "|", "linkGroup"];
dojo.widget.Editor.supportedCommands = ["save", "cancel", "|", "-", "/", " "];
dojo.lang.extend(dojo.widget.Editor, {widgetType:"Editor", saveUrl:"", saveMethod:"post", saveArgName:"editorContent", closeOnSave:false, items:dojo.widget.Editor.defaultItems, formatBlockItems:dojo.lang.shallowCopy(dojo.widget.Editor.formatBlockValues), fontNameItems:dojo.lang.shallowCopy(dojo.widget.Editor.fontNameValues), fontSizeItems:dojo.lang.shallowCopy(dojo.widget.Editor.fontSizeValues), getItemProperties:function (name) {
var props = {};
switch (name.toLowerCase()) {
case "bold":
case "italic":
case "underline":
case "strikethrough":
props.toggleItem = true;
break;
case "justifygroup":
props.defaultButton = "justifyleft";
props.preventDeselect = true;
props.buttonGroup = true;
break;
case "listgroup":
props.buttonGroup = true;
break;
case "save":
case "cancel":
props.label = dojo.string.capitalize(name);
break;
case "forecolor":
case "hilitecolor":
props.name = name;
props.toggleItem = true;
props.icon = this.getCommandImage(name);
break;
case "formatblock":
props.name = "formatBlock";
props.values = this.formatBlockItems;
break;
case "fontname":
props.name = "fontName";
props.values = this.fontNameItems;
case "fontsize":
props.name = "fontSize";
props.values = this.fontSizeItems;
}
return props;
}, validateItems:true, focusOnLoad:true, minHeight:"1em", _richText:null, _richTextType:"RichText", _toolbarContainer:null, _toolbarContainerType:"ToolbarContainer", _toolbars:[], _toolbarType:"Toolbar", _toolbarItemType:"ToolbarItem", buildRendering:function (args, frag) {
var node = frag["dojo:" + this.widgetType.toLowerCase()]["nodeRef"];
var trt = dojo.widget.createWidget(this._richTextType, {focusOnLoad:this.focusOnLoad, minHeight:this.minHeight}, node);
var _this = this;
setTimeout(function () {
_this.setRichText(trt);
_this.initToolbar();
_this.fillInTemplate(args, frag);
}, 0);
}, setRichText:function (richText) {
if (this._richText && this._richText == richText) {
dojo.debug("Already set the richText to this richText!");
return;
}
if (this._richText && !this._richText.isClosed) {
dojo.debug("You are switching richTexts yet you haven't closed the current one. Losing reference!");
}
this._richText = richText;
dojo.event.connect(this._richText, "close", this, "onClose");
dojo.event.connect(this._richText, "onLoad", this, "onLoad");
dojo.event.connect(this._richText, "onDisplayChanged", this, "updateToolbar");
if (this._toolbarContainer) {
this._toolbarContainer.enable();
this.updateToolbar(true);
}
}, initToolbar:function () {
if (this._toolbarContainer) {
return;
}
this._toolbarContainer = dojo.widget.createWidget(this._toolbarContainerType);
var tb = this.addToolbar();
var last = true;
for (var i = 0; i < this.items.length; i++) {
if (this.items[i] == "\n") {
tb = this.addToolbar();
} else {
if ((this.items[i] == "|") && (!last)) {
last = true;
} else {
last = this.addItem(this.items[i], tb);
}
}
}
this.insertToolbar(this._toolbarContainer.domNode, this._richText.domNode);
}, insertToolbar:function (tbNode, richTextNode) {
dojo.html.insertBefore(tbNode, richTextNode);
}, addToolbar:function (toolbar) {
this.initToolbar();
if (!(toolbar instanceof dojo.widget.Toolbar)) {
toolbar = dojo.widget.createWidget(this._toolbarType);
}
this._toolbarContainer.addChild(toolbar);
this._toolbars.push(toolbar);
return toolbar;
}, addItem:function (item, tb, dontValidate) {
if (!tb) {
tb = this._toolbars[0];
}
var cmd = ((item) && (!dojo.lang.isUndefined(item["getValue"]))) ? cmd = item["getValue"]() : item;
var groups = dojo.widget.Editor.itemGroups;
if (item instanceof dojo.widget.ToolbarItem) {
tb.addChild(item);
} else {
if (groups[cmd]) {
var group = groups[cmd];
var worked = true;
if (cmd == "justifyGroup" || cmd == "listGroup") {
var btnGroup = [cmd];
for (var i = 0; i < group.length; i++) {
if (dontValidate || this.isSupportedCommand(group[i])) {
btnGroup.push(this.getCommandImage(group[i]));
} else {
worked = false;
}
}
if (btnGroup.length) {
var btn = tb.addChild(btnGroup, null, this.getItemProperties(cmd));
dojo.event.connect(btn, "onClick", this, "_action");
dojo.event.connect(btn, "onChangeSelect", this, "_action");
}
return worked;
} else {
for (var i = 0; i < group.length; i++) {
if (!this.addItem(group[i], tb)) {
worked = false;
}
}
return worked;
}
} else {
if ((!dontValidate) && (!this.isSupportedCommand(cmd))) {
return false;
}
if (dontValidate || this.isSupportedCommand(cmd)) {
cmd = cmd.toLowerCase();
if (cmd == "formatblock") {
var select = dojo.widget.createWidget("ToolbarSelect", {name:"formatBlock", values:this.formatBlockItems});
tb.addChild(select);
var _this = this;
dojo.event.connect(select, "onSetValue", function (item, value) {
_this.onAction("formatBlock", value);
});
} else {
if (cmd == "fontname") {
var select = dojo.widget.createWidget("ToolbarSelect", {name:"fontName", values:this.fontNameItems});
tb.addChild(select);
dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function (item, value) {
this.onAction("fontName", value);
}));
} else {
if (cmd == "fontsize") {
var select = dojo.widget.createWidget("ToolbarSelect", {name:"fontSize", values:this.fontSizeItems});
tb.addChild(select);
dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function (item, value) {
this.onAction("fontSize", value);
}));
} else {
if (dojo.lang.inArray(cmd, ["forecolor", "hilitecolor"])) {
var btn = tb.addChild(dojo.widget.createWidget("ToolbarColorDialog", this.getItemProperties(cmd)));
dojo.event.connect(btn, "onSetValue", this, "_setValue");
} else {
var btn = tb.addChild(this.getCommandImage(cmd), null, this.getItemProperties(cmd));
if (cmd == "save") {
dojo.event.connect(btn, "onClick", this, "_save");
} else {
if (cmd == "cancel") {
dojo.event.connect(btn, "onClick", this, "_close");
} else {
dojo.event.connect(btn, "onClick", this, "_action");
dojo.event.connect(btn, "onChangeSelect", this, "_action");
}
}
}
}
}
}
}
}
}
return true;
}, enableToolbar:function () {
if (this._toolbarContainer) {
this._toolbarContainer.domNode.style.display = "";
this._toolbarContainer.enable();
}
}, disableToolbar:function (hide) {
if (hide) {
if (this._toolbarContainer) {
this._toolbarContainer.domNode.style.display = "none";
}
} else {
if (this._toolbarContainer) {
this._toolbarContainer.disable();
}
}
}, _updateToolbarLastRan:null, _updateToolbarTimer:null, _updateToolbarFrequency:500, updateToolbar:function (force) {
if (!this._toolbarContainer) {
return;
}
var diff = new Date() - this._updateToolbarLastRan;
if (!force && this._updateToolbarLastRan && (diff < this._updateToolbarFrequency)) {
clearTimeout(this._updateToolbarTimer);
var _this = this;
this._updateToolbarTimer = setTimeout(function () {
_this.updateToolbar();
}, this._updateToolbarFrequency / 2);
return;
} else {
this._updateToolbarLastRan = new Date();
}
var items = this._toolbarContainer.getItems();
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (item instanceof dojo.widget.ToolbarSeparator) {
continue;
}
var cmd = item._name;
if (cmd == "save" || cmd == "cancel") {
continue;
} else {
if (cmd == "justifyGroup") {
try {
if (!this._richText.queryCommandEnabled("justifyleft")) {
item.disable(false, true);
} else {
item.enable(false, true);
var jitems = item.getItems();
for (var j = 0; j < jitems.length; j++) {
var name = jitems[j]._name;
var value = this._richText.queryCommandValue(name);
if (typeof value == "boolean" && value) {
value = name;
break;
} else {
if (typeof value == "string") {
value = "justify" + value;
} else {
value = null;
}
}
}
if (!value) {
value = "justifyleft";
}
item.setValue(value, false, true);
}
}
catch (err) {
}
} else {
if (cmd == "listGroup") {
var litems = item.getItems();
for (var j = 0; j < litems.length; j++) {
this.updateItem(litems[j]);
}
} else {
this.updateItem(item);
}
}
}
}
}, updateItem:function (item) {
try {
var cmd = item._name;
var enabled = this._richText.queryCommandEnabled(cmd);
item.setEnabled(enabled, false, true);
var active = this._richText.queryCommandState(cmd);
if (active && cmd == "underline") {
active = !this._richText.queryCommandEnabled("unlink");
}
item.setSelected(active, false, true);
return true;
}
catch (err) {
return false;
}
}, supportedCommands:dojo.widget.Editor.supportedCommands.concat(), isSupportedCommand:function (cmd) {
var yes = dojo.lang.inArray(cmd, this.supportedCommands);
if (!yes) {
try {
var richText = this._richText || dojo.widget.HtmlRichText.prototype;
yes = richText.queryCommandAvailable(cmd);
}
catch (E) {
}
}
return yes;
}, getCommandImage:function (cmd) {
if (cmd == "|") {
return cmd;
} else {
return dojo.uri.moduleUri("dojo.widget", "templates/buttons/" + cmd + ".gif");
}
}, _action:function (e) {
this._fire("onAction", e.getValue());
}, _setValue:function (a, b) {
this._fire("onAction", a.getValue(), b);
}, _save:function (e) {
if (!this._richText.isClosed) {
if (this.saveUrl.length) {
var content = {};
content[this.saveArgName] = this.getHtml();
dojo.io.bind({method:this.saveMethod, url:this.saveUrl, content:content});
} else {
dojo.debug("please set a saveUrl for the editor");
}
if (this.closeOnSave) {
this._richText.close(e.getName().toLowerCase() == "save");
}
}
}, _close:function (e) {
if (!this._richText.isClosed) {
this._richText.close(e.getName().toLowerCase() == "save");
}
}, onAction:function (cmd, value) {
switch (cmd) {
case "createlink":
if (!(value = prompt("Please enter the URL of the link:", "http://"))) {
return;
}
break;
case "insertimage":
if (!(value = prompt("Please enter the URL of the image:", "http://"))) {
return;
}
break;
}
this._richText.execCommand(cmd, value);
}, fillInTemplate:function (args, frag) {
}, _fire:function (eventName) {
if (dojo.lang.isFunction(this[eventName])) {
var args = [];
if (arguments.length == 1) {
args.push(this);
} else {
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
}
this[eventName].apply(this, args);
}
}, getHtml:function () {
this._richText.contentFilters = this._richText.contentFilters.concat(this.contentFilters);
return this._richText.getEditorContent();
}, getEditorContent:function () {
return this.getHtml();
}, onClose:function (save, hide) {
this.disableToolbar(hide);
if (save) {
this._fire("onSave");
} else {
this._fire("onCancel");
}
}, onLoad:function () {
}, onSave:function () {
}, onCancel:function () {
}});
 
/trunk/api/js/dojo/src/widget/TaskBar.js
New file
0,0 → 1,47
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TaskBar");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.FloatingPane");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.TaskBarItem", dojo.widget.HtmlWidget, {iconSrc:"", caption:"Untitled", templateString:"<div class=\"dojoTaskBarItem\" dojoAttachEvent=\"onClick\">\n</div>\n", templateCssString:".dojoTaskBarItem {\n\tdisplay: inline-block;\n\tbackground-color: ThreeDFace;\n\tborder: outset 2px;\n\tmargin-right: 5px;\n\tcursor: pointer;\n\theight: 35px;\n\twidth: 100px;\n\tfont-size: 10pt;\n\twhite-space: nowrap;\n\ttext-align: center;\n\tfloat: left;\n\toverflow: hidden;\n}\n\n.dojoTaskBarItem img {\n\tvertical-align: middle;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\t\n\theight: 32px;\n\twidth: 32px;\n}\n\n.dojoTaskBarItem a {\n\t color: black;\n\ttext-decoration: none;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TaskBar.css"), fillInTemplate:function () {
if (this.iconSrc) {
var img = document.createElement("img");
img.src = this.iconSrc;
this.domNode.appendChild(img);
}
this.domNode.appendChild(document.createTextNode(this.caption));
dojo.html.disableSelection(this.domNode);
}, postCreate:function () {
this.window = dojo.widget.getWidgetById(this.windowId);
this.window.explodeSrc = this.domNode;
dojo.event.connect(this.window, "destroy", this, "destroy");
}, onClick:function () {
this.window.toggleDisplay();
}});
dojo.widget.defineWidget("dojo.widget.TaskBar", dojo.widget.FloatingPane, function () {
this._addChildStack = [];
}, {resizable:false, titleBarDisplay:false, addChild:function (child) {
if (!this.containerNode) {
this._addChildStack.push(child);
} else {
if (this._addChildStack.length > 0) {
var oarr = this._addChildStack;
this._addChildStack = [];
dojo.lang.forEach(oarr, this.addChild, this);
}
}
var tbi = dojo.widget.createWidget("TaskBarItem", {windowId:child.widgetId, caption:child.title, iconSrc:child.iconSrc});
dojo.widget.TaskBar.superclass.addChild.call(this, tbi);
}});
 
/trunk/api/js/dojo/src/widget/TreeDeselectOnDblselect.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeDeselectOnDblselect");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeSelectorV3");
dojo.deprecated("Does anyone still need this extension? (TreeDeselectOnDblselect)");
dojo.widget.defineWidget("dojo.widget.TreeDeselectOnDblselect", [dojo.widget.HtmlWidget], {selector:"", initialize:function () {
this.selector = dojo.widget.byId(this.selector);
dojo.event.topic.subscribe(this.selector.eventNames.dblselect, this, "onDblselect");
}, onDblselect:function (message) {
this.selector.deselect(message.node);
}});
 
/trunk/api/js/dojo/src/widget/Tooltip.js
New file
0,0 → 1,105
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Tooltip");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.widget.PopupContainer");
dojo.require("dojo.uri.Uri");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html.style");
dojo.require("dojo.html.util");
dojo.widget.defineWidget("dojo.widget.Tooltip", [dojo.widget.ContentPane, dojo.widget.PopupContainerBase], {caption:"", showDelay:500, hideDelay:100, connectId:"", templateCssString:".dojoTooltip {\n\tborder: solid black 1px;\n\tbackground: beige;\n\tcolor: black;\n\tposition: absolute;\n\tfont-size: small;\n\tpadding: 2px 2px 2px 2px;\n\tz-index: 10;\n\tdisplay: block;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TooltipTemplate.css"), fillInTemplate:function (args, frag) {
if (this.caption != "") {
this.domNode.appendChild(document.createTextNode(this.caption));
}
this._connectNode = dojo.byId(this.connectId);
dojo.widget.Tooltip.superclass.fillInTemplate.call(this, args, frag);
this.addOnLoad(this, "_loadedContent");
dojo.html.addClass(this.domNode, "dojoTooltip");
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
this.applyPopupBasicStyle();
}, postCreate:function (args, frag) {
dojo.event.connect(this._connectNode, "onmouseover", this, "_onMouseOver");
dojo.widget.Tooltip.superclass.postCreate.call(this, args, frag);
}, _onMouseOver:function (e) {
this._mouse = {x:e.pageX, y:e.pageY};
if (!this._tracking) {
dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
this._tracking = true;
}
this._onHover(e);
}, _onMouseMove:function (e) {
this._mouse = {x:e.pageX, y:e.pageY};
if (dojo.html.overElement(this._connectNode, e) || dojo.html.overElement(this.domNode, e)) {
this._onHover(e);
} else {
this._onUnHover(e);
}
}, _onHover:function (e) {
if (this._hover) {
return;
}
this._hover = true;
if (this._hideTimer) {
clearTimeout(this._hideTimer);
delete this._hideTimer;
}
if (!this.isShowingNow && !this._showTimer) {
this._showTimer = setTimeout(dojo.lang.hitch(this, "open"), this.showDelay);
}
}, _onUnHover:function (e) {
if (!this._hover) {
return;
}
this._hover = false;
if (this._showTimer) {
clearTimeout(this._showTimer);
delete this._showTimer;
}
if (this.isShowingNow && !this._hideTimer) {
this._hideTimer = setTimeout(dojo.lang.hitch(this, "close"), this.hideDelay);
}
if (!this.isShowingNow) {
dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
this._tracking = false;
}
}, open:function () {
if (this.isShowingNow) {
return;
}
dojo.widget.PopupContainerBase.prototype.open.call(this, this._mouse.x, this._mouse.y, null, [this._mouse.x, this._mouse.y], "TL,TR,BL,BR", [10, 15]);
}, close:function () {
if (this.isShowingNow) {
if (this._showTimer) {
clearTimeout(this._showTimer);
delete this._showTimer;
}
if (this._hideTimer) {
clearTimeout(this._hideTimer);
delete this._hideTimer;
}
dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
this._tracking = false;
dojo.widget.PopupContainerBase.prototype.close.call(this);
}
}, _position:function () {
this.move(this._mouse.x, this._mouse.y, [10, 15], "TL,TR,BL,BR");
}, _loadedContent:function () {
if (this.isShowingNow) {
this._position();
}
}, checkSize:function () {
}, uninitialize:function () {
this.close();
dojo.event.disconnect(this._connectNode, "onmouseover", this, "_onMouseOver");
}});
 
/trunk/api/js/dojo/src/widget/TreeDocIconExtension.js
New file
0,0 → 1,52
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeDocIconExtension");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeExtension");
dojo.widget.defineWidget("dojo.widget.TreeDocIconExtension", [dojo.widget.TreeExtension], {templateCssString:"\n/* CSS for TreeDocIconExtension */\n\n\n/* long vertical line under docIcon, connecting w/ children */\n.TreeStateChildrenYes-ExpandOpen .TreeIconContent {\n background-image : url('../templates/images/TreeV3/i_long.gif');\n background-repeat : no-repeat;\n background-position: 18px 9px;\n}\n\n/* close has higher priority */\n.TreeStateChildrenYes-ExpandClosed .TreeIconContent {\n background-image : url();\n}\n\n/* higher priotity: same length and appear after background-definition */\n.TreeStateChildrenNo-ExpandLeaf .TreeIconContent {\n background-image : url();\n}\n\n.TreeStateChildrenNo-ExpandClosed .TreeIconContent {\n background-image : url();\n}\n\n.TreeStateChildrenNo-ExpandOpen .TreeIconContent {\n background-image : url();\n}\n\n\n/* highest priority */\n.TreeIconDocument {\n background-image: url('../templates/images/TreeV3/document.gif');\n}\n\n.TreeExpandOpen .TreeIconFolder {\n background-image: url('../templates/images/TreeV3/open.gif');\n}\n\n.TreeExpandClosed .TreeIconFolder {\n background-image: url('../templates/images/TreeV3/closed.gif');\n}\n\n/* generic class for docIcon */\n.TreeIcon {\n width: 18px;\n height: 18px;\n float: left;\n display: inline;\n background-repeat : no-repeat;\n}\n\ndiv.TreeContent {\n margin-left: 36px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDocIcon.css"), listenTreeEvents:["afterChangeTree", "afterSetFolder", "afterUnsetFolder"], listenNodeFilter:function (elem) {
return elem instanceof dojo.widget.Widget;
}, getnodeDocType:function (node) {
var nodeDocType = node.getnodeDocType();
if (!nodeDocType) {
nodeDocType = node.isFolder ? "Folder" : "Document";
}
return nodeDocType;
}, setnodeDocTypeClass:function (node) {
var reg = new RegExp("(^|\\s)" + node.tree.classPrefix + "Icon\\w+", "g");
var clazz = dojo.html.getClass(node.iconNode).replace(reg, "") + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node);
dojo.html.setClass(node.iconNode, clazz);
}, onAfterSetFolder:function (message) {
if (message.source.iconNode) {
this.setnodeDocTypeClass(message.source);
}
}, onAfterUnsetFolder:function (message) {
this.setnodeDocTypeClass(message.source);
}, listenNode:function (node) {
node.contentIconNode = document.createElement("div");
var clazz = node.tree.classPrefix + "IconContent";
if (dojo.render.html.ie) {
clazz = clazz + " " + node.tree.classPrefix + "IEIconContent";
}
dojo.html.setClass(node.contentIconNode, clazz);
node.contentNode.parentNode.replaceChild(node.contentIconNode, node.expandNode);
node.iconNode = document.createElement("div");
dojo.html.setClass(node.iconNode, node.tree.classPrefix + "Icon" + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node));
node.contentIconNode.appendChild(node.expandNode);
node.contentIconNode.appendChild(node.iconNode);
dojo.dom.removeNode(node.contentNode);
node.contentIconNode.appendChild(node.contentNode);
}, onAfterChangeTree:function (message) {
var _this = this;
if (!message.oldTree || !this.listenedTrees[message.oldTree.widgetId]) {
this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);
}
}});
 
/trunk/api/js/dojo/src/widget/SvgButton.js
New file
0,0 → 1,98
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.SvgButton");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.SvgButton");
dojo.widget.SvgButton = function () {
dojo.widget.DomButton.call(this);
dojo.widget.SvgWidget.call(this);
this.onFoo = function () {
alert("bar");
};
this.label = "huzzah!";
this.setLabel = function (x, y, textSize, label, shape) {
var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
var textString = "";
switch (shape) {
case "ellipse":
textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
break;
case "rectangle":
textString = "";
break;
case "circle":
textString = "";
break;
}
return textString;
};
this.fillInTemplate = function (x, y, textSize, label, shape) {
this.textSize = textSize || 12;
this.label = label;
var textWidth = this.label.length * this.textSize;
};
};
dojo.inherits(dojo.widget.SvgButton, dojo.widget.DomButton);
dojo.widget.SvgButton.prototype.shapeString = function (x, y, textSize, label, shape) {
switch (shape) {
case "ellipse":
var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
return "<ellipse cx='" + coords[4] + "' cy='" + coords[5] + "' rx='" + coords[2] + "' ry='" + coords[3] + "'/>";
break;
case "rect":
return "";
break;
case "circle":
return "";
break;
}
};
dojo.widget.SvgButton.prototype.coordinates = function (x, y, textSize, label, shape) {
switch (shape) {
case "ellipse":
var buttonWidth = label.length * textSize;
var buttonHeight = textSize * 2.5;
var rx = buttonWidth / 2;
var ry = buttonHeight / 2;
var cx = rx + x;
var cy = ry + y;
var textX = cx - rx * textSize / 25;
var textY = cy * 1.1;
return [buttonWidth, buttonHeight, rx, ry, cx, cy, textX, textY];
break;
case "rectangle":
return "";
break;
case "circle":
return "";
break;
}
};
dojo.widget.SvgButton.prototype.labelString = function (x, y, textSize, label, shape) {
var textString = "";
var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
switch (shape) {
case "ellipse":
textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
break;
case "rectangle":
textString = "";
break;
case "circle":
textString = "";
break;
}
return textString;
};
dojo.widget.SvgButton.prototype.templateString = function (x, y, textSize, label, shape) {
return "<g class='dojoButton' dojoAttachEvent='onClick; onMouseMove: onFoo;' dojoAttachPoint='labelNode'>" + dojo.widgets.SVGButton.prototype.shapeString(x, y, textSize, label, shape) + dojo.widget.SVGButton.prototype.labelString(x, y, textSize, label, shape) + "</g>";
};
 
/trunk/api/js/dojo/src/widget/TimePicker.js
New file
0,0 → 1,276
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TimePicker");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.event.*");
dojo.require("dojo.date.serialize");
dojo.require("dojo.date.format");
dojo.require("dojo.dom");
dojo.require("dojo.html.style");
dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "de,en,es,fi,fr,hu,ja,it,ko,nl,pt,sv,zh,pt-br,zh-cn,zh-hk,zh-tw,ROOT");
dojo.requireLocalization("dojo.widget", "TimePicker", null, "ROOT");
dojo.widget.defineWidget("dojo.widget.TimePicker", dojo.widget.HtmlWidget, function () {
this.time = "";
this.useDefaultTime = false;
this.useDefaultMinutes = false;
this.storedTime = "";
this.currentTime = {};
this.classNames = {selectedTime:"selectedItem"};
this.any = "any";
this.selectedTime = {hour:"", minute:"", amPm:"", anyTime:false};
this.hourIndexMap = ["", 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 11, 0];
this.minuteIndexMap = [0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 11];
}, {isContainer:false, templateString:"<div class=\"timePickerContainer\" dojoAttachPoint=\"timePickerContainerNode\">\n\t<table class=\"timeContainer\" cellspacing=\"0\" >\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"timeCorner cornerTopLeft\" valign=\"top\">&nbsp;</td>\n\t\t\t\t<td class=\"timeLabelContainer hourSelector\">${this.calendar.field-hour}</td>\n\t\t\t\t<td class=\"timeLabelContainer minutesHeading\">${this.calendar.field-minute}</td>\n\t\t\t\t<td class=\"timeCorner cornerTopRight\" valign=\"top\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td valign=\"top\" colspan=\"2\" class=\"hours\">\n\t\t\t\t\t<table align=\"center\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"hourContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedHour;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>12</td>\n\t\t\t\t\t\t\t\t<td>6</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>1</td>\n\t\t\t\t\t\t\t\t<td>7</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>2</td>\n\t\t\t\t\t\t\t\t<td>8</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>3</td>\n\t\t\t\t\t\t\t\t<td>9</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>4</td>\n\t\t\t\t\t\t\t\t<td>10</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>5</td>\n\t\t\t\t\t\t\t\t<td>11</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"minutes\" colspan=\"2\">\n\t\t\t\t\t<table align=\"center\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"minuteContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedMinute;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>00</td>\n\t\t\t\t\t\t\t\t<td>30</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>05</td>\n\t\t\t\t\t\t\t\t<td>35</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>10</td>\n\t\t\t\t\t\t\t\t<td>40</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>15</td>\n\t\t\t\t\t\t\t\t<td>45</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>20</td>\n\t\t\t\t\t\t\t\t<td>50</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>25</td>\n\t\t\t\t\t\t\t\t<td>55</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=\"cornerBottomLeft\">&nbsp;</td>\n\t\t\t\t<td valign=\"top\" class=\"timeOptions\">\n\t\t\t\t\t<table class=\"amPmContainer\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"amPmContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedAmPm;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td id=\"am\">${this.calendar.am}</td>\n\t\t\t\t\t\t\t\t<td id=\"pm\">${this.calendar.pm}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"timeOptions\">\n\t\t\t\t\t<div dojoAttachPoint=\"anyTimeContainerNode\" \n\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedAnyTime;\" \n\t\t\t\t\t\tclass=\"anyTimeContainer\">${this.widgetStrings.any}</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"cornerBottomRight\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:"/*Time Picker */\n.timePickerContainer {\n\twidth:122px;\n\tfont-family:Tahoma, Myriad, Helvetica, Arial, Verdana, sans-serif;\n\tfont-size:16px;\n}\n\n.timeContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n}\n\n.timeContainer thead {\n\tcolor:#293a4b;\n\tfont-size:0.9em;\n\tfont-weight:700;\n}\n\n.timeContainer thead td {\n\tpadding:0.25em;\n\tfont-size:0.80em;\n\tborder-bottom:1px solid #6782A8;\n}\n\n.timeCorner {\n\twidth:10px;\n}\n\n.cornerTopLeft {\n\tbackground: url(\"images/dpCurveTL.png\") top left no-repeat;\n}\n\n.cornerTopRight {\n\tbackground: url(\"images/dpCurveTR.png\") top right no-repeat;\n}\n\n.timeLabelContainer {\n\tbackground: url(\"images/dpMonthBg.png\") top left repeat-x;\n}\n\n.hours, .minutes, .timeBorder {\n\tbackground: #7591bc url(\"images/dpBg.gif\") top left repeat-x;\n\n}\n\n.hours td, .minutes td {\n\tpadding:0.2em;\n\ttext-align:center;\n\tfont-size:0.7em;\n\tfont-weight:bold;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff;\n}\n\n.minutes {\n\tborder-left:1px solid #f5d1db;\n}\n\n.hours {\n\tborder-right:1px solid #6782A8;\n}\n\n.hourSelector {\n\tborder-right:1px solid #6782A8;\n\tpadding:5px;\n\tpadding-right:10px;\n}\n\n.minutesSelector {\n\tpadding:5px;\n\tborder-left:1px solid #f5c7d4;\n\ttext-align:center;\n}\n\n.minutesHeading {\n\tpadding-left:9px !important;\n}\n\n.timeOptions {\n\tbackground-color:#F9C9D7;\n}\n\n.timeContainer .cornerBottomLeft, .timeContainer .cornerBottomRight, .timeContainer .timeOptions {\n\tborder-top:1px solid #6782A8;\n}\n\n.timeContainer .cornerBottomLeft {\n\tbackground: url(\"images/dpCurveBL.png\") bottom left no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.timeContainer .cornerBottomRight {\n\tbackground: url(\"images/dpCurveBR.png\") bottom right no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.timeOptions {\n\tcolor:#fff;\n\tbackground:url(\"images/dpYearBg.png\") top left repeat-x;\n\n}\n\n.selectedItem {\n\tbackground-color:#fff;\n\tcolor:#6782a8 !important;\n}\n\n.timeOptions .selectedItem {\n\tcolor:#fff !important;\n\tbackground-color:#9ec3fb !important;\n}\n\n.anyTimeContainer {\n\ttext-align:center;\n\tfont-weight:bold;\n\tfont-size:0.7em;\n\tpadding:0.1em;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff !important;\n}\n\n.amPmContainer {\n\twidth:100%;\n}\n\n.amPmContainer td {\n\ttext-align:center;\n\tfont-size:0.7em;\n\tfont-weight:bold;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff;\n}\n\n\n\n/*.timePickerContainer {\n\tmargin:1.75em 0 0.5em 0;\n\twidth:10em;\n\tfloat:left;\n}\n\n.timeContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n}\n\n.timeContainer thead td{\n\tborder-bottom:1px solid #e6e6e6;\n\tpadding:0 0.4em 0.2em 0.4em;\n}\n\n.timeContainer td {\n\tfont-size:0.9em;\n\tpadding:0 0.25em 0 0.25em;\n\ttext-align:left;\n\tcursor:pointer;cursor:hand;\n}\n\n.timeContainer td.minutesHeading {\n\tborder-left:1px solid #e6e6e6;\n\tborder-right:1px solid #e6e6e6;\t\n}\n\n.timeContainer .minutes {\n\tborder-left:1px solid #e6e6e6;\n\tborder-right:1px solid #e6e6e6;\n}\n\n.selectedItem {\n\tbackground-color:#3a3a3a;\n\tcolor:#ffffff;\n}*/\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TimePicker.css"), postMixInProperties:function (localProperties, frag) {
dojo.widget.TimePicker.superclass.postMixInProperties.apply(this, arguments);
this.calendar = dojo.i18n.getLocalization("dojo.i18n.calendar", "gregorian", this.lang);
this.widgetStrings = dojo.i18n.getLocalization("dojo.widget", "TimePicker", this.lang);
}, fillInTemplate:function (args, frag) {
var source = this.getFragNodeRef(frag);
dojo.html.copyStyle(this.domNode, source);
if (args.value) {
if (args.value instanceof Date) {
this.storedTime = dojo.date.toRfc3339(args.value);
} else {
this.storedTime = args.value;
}
}
this.initData();
this.initUI();
}, initData:function () {
if (this.storedTime.indexOf("T") != -1 && this.storedTime.split("T")[1] && this.storedTime != " " && this.storedTime.split("T")[1] != "any") {
this.time = dojo.widget.TimePicker.util.fromRfcDateTime(this.storedTime, this.useDefaultMinutes, this.selectedTime.anyTime);
} else {
if (this.useDefaultTime) {
this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", this.useDefaultMinutes, this.selectedTime.anyTime);
} else {
this.selectedTime.anyTime = true;
this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", 0, 1);
}
}
}, initUI:function () {
if (!this.selectedTime.anyTime && this.time) {
var amPmHour = dojo.widget.TimePicker.util.toAmPmHour(this.time.getHours());
var hour = amPmHour[0];
var isAm = amPmHour[1];
var minute = this.time.getMinutes();
var minuteIndex = parseInt(minute / 5);
this.onSetSelectedHour(this.hourIndexMap[hour]);
this.onSetSelectedMinute(this.minuteIndexMap[minuteIndex]);
this.onSetSelectedAmPm(isAm);
} else {
this.onSetSelectedAnyTime();
}
}, setTime:function (date) {
if (date) {
this.selectedTime.anyTime = false;
this.setDateTime(dojo.date.toRfc3339(date));
} else {
this.selectedTime.anyTime = true;
}
this.initData();
this.initUI();
}, setDateTime:function (rfcDate) {
this.storedTime = rfcDate;
}, onClearSelectedHour:function (evt) {
this.clearSelectedHour();
}, onClearSelectedMinute:function (evt) {
this.clearSelectedMinute();
}, onClearSelectedAmPm:function (evt) {
this.clearSelectedAmPm();
}, onClearSelectedAnyTime:function (evt) {
this.clearSelectedAnyTime();
if (this.selectedTime.anyTime) {
this.selectedTime.anyTime = false;
this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", this.useDefaultMinutes);
this.initUI();
}
}, clearSelectedHour:function () {
var hourNodes = this.hourContainerNode.getElementsByTagName("td");
for (var i = 0; i < hourNodes.length; i++) {
dojo.html.setClass(hourNodes.item(i), "");
}
}, clearSelectedMinute:function () {
var minuteNodes = this.minuteContainerNode.getElementsByTagName("td");
for (var i = 0; i < minuteNodes.length; i++) {
dojo.html.setClass(minuteNodes.item(i), "");
}
}, clearSelectedAmPm:function () {
var amPmNodes = this.amPmContainerNode.getElementsByTagName("td");
for (var i = 0; i < amPmNodes.length; i++) {
dojo.html.setClass(amPmNodes.item(i), "");
}
}, clearSelectedAnyTime:function () {
dojo.html.setClass(this.anyTimeContainerNode, "anyTimeContainer");
}, onSetSelectedHour:function (evt) {
this.onClearSelectedAnyTime();
this.onClearSelectedHour();
this.setSelectedHour(evt);
this.onSetTime();
}, setSelectedHour:function (evt) {
if (evt && evt.target) {
if (evt.target.nodeType == dojo.dom.ELEMENT_NODE) {
var eventTarget = evt.target;
} else {
var eventTarget = evt.target.parentNode;
}
dojo.event.browser.stopEvent(evt);
dojo.html.setClass(eventTarget, this.classNames.selectedTime);
this.selectedTime["hour"] = eventTarget.innerHTML;
} else {
if (!isNaN(evt)) {
var hourNodes = this.hourContainerNode.getElementsByTagName("td");
if (hourNodes.item(evt)) {
dojo.html.setClass(hourNodes.item(evt), this.classNames.selectedTime);
this.selectedTime["hour"] = hourNodes.item(evt).innerHTML;
}
}
}
this.selectedTime.anyTime = false;
}, onSetSelectedMinute:function (evt) {
this.onClearSelectedAnyTime();
this.onClearSelectedMinute();
this.setSelectedMinute(evt);
this.selectedTime.anyTime = false;
this.onSetTime();
}, setSelectedMinute:function (evt) {
if (evt && evt.target) {
if (evt.target.nodeType == dojo.dom.ELEMENT_NODE) {
var eventTarget = evt.target;
} else {
var eventTarget = evt.target.parentNode;
}
dojo.event.browser.stopEvent(evt);
dojo.html.setClass(eventTarget, this.classNames.selectedTime);
this.selectedTime["minute"] = eventTarget.innerHTML;
} else {
if (!isNaN(evt)) {
var minuteNodes = this.minuteContainerNode.getElementsByTagName("td");
if (minuteNodes.item(evt)) {
dojo.html.setClass(minuteNodes.item(evt), this.classNames.selectedTime);
this.selectedTime["minute"] = minuteNodes.item(evt).innerHTML;
}
}
}
}, onSetSelectedAmPm:function (evt) {
this.onClearSelectedAnyTime();
this.onClearSelectedAmPm();
this.setSelectedAmPm(evt);
this.selectedTime.anyTime = false;
this.onSetTime();
}, setSelectedAmPm:function (evt) {
var eventTarget = evt.target;
if (evt && eventTarget) {
if (eventTarget.nodeType != dojo.dom.ELEMENT_NODE) {
eventTarget = eventTarget.parentNode;
}
dojo.event.browser.stopEvent(evt);
this.selectedTime.amPm = eventTarget.id;
dojo.html.setClass(eventTarget, this.classNames.selectedTime);
} else {
evt = evt ? 0 : 1;
var amPmNodes = this.amPmContainerNode.getElementsByTagName("td");
if (amPmNodes.item(evt)) {
this.selectedTime.amPm = amPmNodes.item(evt).id;
dojo.html.setClass(amPmNodes.item(evt), this.classNames.selectedTime);
}
}
}, onSetSelectedAnyTime:function (evt) {
this.onClearSelectedHour();
this.onClearSelectedMinute();
this.onClearSelectedAmPm();
this.setSelectedAnyTime();
this.onSetTime();
}, setSelectedAnyTime:function (evt) {
this.selectedTime.anyTime = true;
dojo.html.setClass(this.anyTimeContainerNode, this.classNames.selectedTime + " " + "anyTimeContainer");
}, onClick:function (evt) {
dojo.event.browser.stopEvent(evt);
}, onSetTime:function () {
if (this.selectedTime.anyTime) {
this.time = new Date();
var tempDateTime = dojo.widget.TimePicker.util.toRfcDateTime(this.time);
this.setDateTime(tempDateTime.split("T")[0]);
} else {
var hour = 12;
var minute = 0;
var isAm = false;
if (this.selectedTime["hour"]) {
hour = parseInt(this.selectedTime["hour"], 10);
}
if (this.selectedTime["minute"]) {
minute = parseInt(this.selectedTime["minute"], 10);
}
if (this.selectedTime["amPm"]) {
isAm = (this.selectedTime["amPm"].toLowerCase() == "am");
}
this.time = new Date();
this.time.setHours(dojo.widget.TimePicker.util.fromAmPmHour(hour, isAm));
this.time.setMinutes(minute);
this.setDateTime(dojo.widget.TimePicker.util.toRfcDateTime(this.time));
}
this.onValueChanged(this.time);
}, onValueChanged:function (date) {
}});
dojo.widget.TimePicker.util = new function () {
this.toRfcDateTime = function (jsDate) {
if (!jsDate) {
jsDate = new Date();
}
jsDate.setSeconds(0);
return dojo.date.strftime(jsDate, "%Y-%m-%dT%H:%M:00%z");
};
this.fromRfcDateTime = function (rfcDate, useDefaultMinutes, isAnyTime) {
var tempDate = new Date();
if (!rfcDate || rfcDate.indexOf("T") == -1) {
if (useDefaultMinutes) {
tempDate.setMinutes(Math.floor(tempDate.getMinutes() / 5) * 5);
} else {
tempDate.setMinutes(0);
}
} else {
var tempTime = rfcDate.split("T")[1].split(":");
var tempDate = new Date();
tempDate.setHours(tempTime[0]);
tempDate.setMinutes(tempTime[1]);
}
return tempDate;
};
this.toAmPmHour = function (hour) {
var amPmHour = hour;
var isAm = true;
if (amPmHour == 0) {
amPmHour = 12;
} else {
if (amPmHour > 12) {
amPmHour = amPmHour - 12;
isAm = false;
} else {
if (amPmHour == 12) {
isAm = false;
}
}
}
return [amPmHour, isAm];
};
this.fromAmPmHour = function (amPmHour, isAm) {
var hour = parseInt(amPmHour, 10);
if (isAm && hour == 12) {
hour = 0;
} else {
if (!isAm && hour < 12) {
hour = hour + 12;
}
}
return hour;
};
};
 
/trunk/api/js/dojo/src/widget/ColorPalette.js
New file
0,0 → 1,58
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.ColorPalette");
dojo.require("dojo.widget.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.html.display");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.ColorPalette", dojo.widget.HtmlWidget, {palette:"7x10", _palettes:{"7x10":[["fff", "fcc", "fc9", "ff9", "ffc", "9f9", "9ff", "cff", "ccf", "fcf"], ["ccc", "f66", "f96", "ff6", "ff3", "6f9", "3ff", "6ff", "99f", "f9f"], ["c0c0c0", "f00", "f90", "fc6", "ff0", "3f3", "6cc", "3cf", "66c", "c6c"], ["999", "c00", "f60", "fc3", "fc0", "3c0", "0cc", "36f", "63f", "c3c"], ["666", "900", "c60", "c93", "990", "090", "399", "33f", "60c", "939"], ["333", "600", "930", "963", "660", "060", "366", "009", "339", "636"], ["000", "300", "630", "633", "330", "030", "033", "006", "309", "303"]], "3x4":[["ffffff", "00ff00", "008000", "0000ff"], ["c0c0c0", "ffff00", "ff00ff", "000080"], ["808080", "ff0000", "800080", "000000"]]}, buildRendering:function () {
this.domNode = document.createElement("table");
dojo.html.disableSelection(this.domNode);
dojo.event.connect(this.domNode, "onmousedown", function (e) {
e.preventDefault();
});
with (this.domNode) {
cellPadding = "0";
cellSpacing = "1";
border = "1";
style.backgroundColor = "white";
}
var colors = this._palettes[this.palette];
for (var i = 0; i < colors.length; i++) {
var tr = this.domNode.insertRow(-1);
for (var j = 0; j < colors[i].length; j++) {
if (colors[i][j].length == 3) {
colors[i][j] = colors[i][j].replace(/(.)(.)(.)/, "$1$1$2$2$3$3");
}
var td = tr.insertCell(-1);
with (td.style) {
backgroundColor = "#" + colors[i][j];
border = "1px solid gray";
width = height = "15px";
fontSize = "1px";
}
td.color = "#" + colors[i][j];
td.onmouseover = function (e) {
this.style.borderColor = "white";
};
td.onmouseout = function (e) {
this.style.borderColor = "gray";
};
dojo.event.connect(td, "onmousedown", this, "onClick");
td.innerHTML = "&nbsp;";
}
}
}, onClick:function (e) {
this.onColorSelect(e.currentTarget.color);
e.currentTarget.style.borderColor = "gray";
}, onColorSelect:function (color) {
}});
 
/trunk/api/js/dojo/src/widget/demoEngine/DemoItem.js
New file
0,0 → 1,50
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.demoEngine.DemoItem");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("my.widget.demoEngine.DemoItem", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<div dojoAttachPoint=\"summaryBoxNode\">\n\t\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t<tbody>\n\t\t\t\t<tr>\n\t\t\t\t\t<td dojoAttachPoint=\"screenshotTdNode\" valign=\"top\" width=\"1%\">\n\t\t\t\t\t\t<img dojoAttachPoint=\"thumbnailImageNode\" dojoAttachEvent=\"onclick: onSelectDemo\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td dojoAttachPoint=\"summaryContainerNode\" valign=\"top\">\n\t\t\t\t\t\t<h1 dojoAttachPoint=\"nameNode\">\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t<div dojoAttachPoint=\"summaryNode\">\n\t\t\t\t\t\t\t<p dojoAttachPoint=\"descriptionNode\"></p>\n\t\t\t\t\t\t\t<div dojoAttachPoint=\"viewDemoLinkNode\"><img dojoAttachPoint=\"viewDemoImageNode\"/ dojoAttachEvent=\"onclick: onSelectDemo\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", templateCssString:".demoItemSummaryBox {\n\tbackground: #efefef;\n\tborder:1px solid #dae3ee;\n}\n\n.demoItemScreenshot {\n\tpadding:0.65em;\n\twidth:175px;\n\tborder-right:1px solid #fafafa;\n\ttext-align:center;\n\tcursor: pointer;\n}\n\n.demoItemWrapper{\n\tmargin-bottom:1em;\n}\n\n.demoItemWrapper a:link, .demoItemWrapper a:visited {\n\tcolor:#a6238f;\n\ttext-decoration:none;\n}\n\n.demoItemSummaryContainer {\n\tborder-left:1px solid #ddd;\n}\n\n.demoItemSummaryContainer h1 {\n\tbackground-color:#e8e8e8;\n\tborder-bottom: 1px solid #e6e6e6;\n\tcolor:#738fb9;\n\tmargin:1px;\n\tpadding:0.5em;\n\tfont-family:\"Lucida Grande\", \"Tahoma\", serif;\n\tfont-size:1.25em;\n\tfont-weight:normal;\n}\n\n.demoItemSummaryContainer h1 .packageSummary {\n\tdisplay:block;\n\tcolor:#000;\n\tfont-size:10px;\n\tmargin-top:2px;\n}\n\n.demoItemSummaryContainer .demoItemSummary{\n\tpadding:1em;\n}\n\n.demoItemSummaryContainer .demoItemSummary p {\n\tfont-size:0.85em;\n\tpadding:0;\n\tmargin:0;\n}\n\n.demoItemView {\n\ttext-align:right;\n\tcursor: pointer;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoItem.css"), postCreate:function () {
dojo.html.addClass(this.domNode, this.domNodeClass);
dojo.html.addClass(this.summaryBoxNode, this.summaryBoxClass);
dojo.html.addClass(this.screenshotTdNode, this.screenshotTdClass);
dojo.html.addClass(this.summaryContainerNode, this.summaryContainerClass);
dojo.html.addClass(this.summaryNode, this.summaryClass);
dojo.html.addClass(this.viewDemoLinkNode, this.viewDemoLinkClass);
this.nameNode.appendChild(document.createTextNode(this.name));
this.descriptionNode.appendChild(document.createTextNode(this.description));
this.thumbnailImageNode.src = this.thumbnail;
this.thumbnailImageNode.name = this.name;
this.viewDemoImageNode.src = this.viewDemoImage;
this.viewDemoImageNode.name = this.name;
}, onSelectDemo:function () {
}}, "", function () {
this.demo = "";
this.domNodeClass = "demoItemWrapper";
this.summaryBoxNode = "";
this.summaryBoxClass = "demoItemSummaryBox";
this.nameNode = "";
this.thumbnailImageNode = "";
this.viewDemoImageNode = "";
this.screenshotTdNode = "";
this.screenshotTdClass = "demoItemScreenshot";
this.summaryContainerNode = "";
this.summaryContainerClass = "demoItemSummaryContainer";
this.summaryNode = "";
this.summaryClass = "demoItemSummary";
this.viewDemoLinkNode = "";
this.viewDemoLinkClass = "demoItemView";
this.descriptionNode = "";
this.name = "Some Demo";
this.description = "This is the description of this demo.";
this.thumbnail = "images/test_thumb.gif";
this.viewDemoImage = "images/viewDemo.png";
});
 
/trunk/api/js/dojo/src/widget/demoEngine/templates/SourcePane.html
New file
0,0 → 1,3
<div dojoAttachPoint="domNode">
<textarea dojoAttachPoint="sourceNode" rows="100%"></textarea>
</div>
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoContainer.html
New file
0,0 → 1,25
<div dojoAttachPoint="domNode">
<table width="100%" cellspacing="0" cellpadding="5">
<tbody>
<tr dojoAttachPoint="headerNode">
<td dojoAttachPoint="returnNode" valign="middle" width="1%">
<img dojoAttachPoint="returnImageNode" dojoAttachEvent="onclick: returnToDemos"/>
</td>
<td>
<h1 dojoAttachPoint="demoNameNode"></h1>
<p dojoAttachPoint="summaryNode"></p>
</td>
<td dojoAttachPoint="tabControlNode" valign="middle" align="right" nowrap>
<span dojoAttachPoint="sourceButtonNode" dojoAttachEvent="onclick: showSource">source</span>
<span dojoAttachPoint="demoButtonNode" dojoAttachEvent="onclick: showDemo">demo</span>
</td>
</tr>
<tr>
<td colspan="3">
<div dojoAttachPoint="tabNode">
</div>
</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoItem.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoItem.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoPane.html
New file
0,0 → 1,3
<div dojoAttachPoint="domNode">
<iframe dojoAttachPoint="demoNode"></iframe>
</div>
/trunk/api/js/dojo/src/widget/demoEngine/templates/SourcePane.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/SourcePane.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoContainer.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoContainer.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoPane.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoPane.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoNavigator.html
New file
0,0 → 1,24
<div dojoAttachPoint="domNode">
<table width="100%" cellspacing="0" cellpadding="5">
<tbody>
<tr dojoAttachPoint="navigationContainer">
<td dojoAttachPoint="categoriesNode" valign="top" width="1%">
<h1>Categories</h1>
<div dojoAttachPoint="categoriesButtonsNode"></div>
</td>
 
<td dojoAttachPoint="demoListNode" valign="top">
<div dojoAttachPoint="demoListWrapperNode">
<div dojoAttachPoint="demoListContainerNode">
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div dojoAttachPoint="demoNode"></div>
</td>
</tr>
</tbody>
</table>
</div>
/trunk/api/js/dojo/src/widget/demoEngine/templates/general.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/general.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/images/test_thumb.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/images/test_thumb.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/images/viewDemo.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/images/viewDemo.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoItem.html
New file
0,0 → 1,21
<div dojoAttachPoint="domNode">
<div dojoAttachPoint="summaryBoxNode">
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td dojoAttachPoint="screenshotTdNode" valign="top" width="1%">
<img dojoAttachPoint="thumbnailImageNode" dojoAttachEvent="onclick: onSelectDemo" />
</td>
<td dojoAttachPoint="summaryContainerNode" valign="top">
<h1 dojoAttachPoint="nameNode">
</h1>
<div dojoAttachPoint="summaryNode">
<p dojoAttachPoint="descriptionNode"></p>
<div dojoAttachPoint="viewDemoLinkNode"><img dojoAttachPoint="viewDemoImageNode"/ dojoAttachEvent="onclick: onSelectDemo"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoNavigator.css
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/widget/demoEngine/templates/DemoNavigator.css
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/widget/demoEngine/SourcePane.js
New file
0,0 → 1,33
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.demoEngine.SourcePane");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.io.*");
dojo.widget.defineWidget("my.widget.demoEngine.SourcePane", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<textarea dojoAttachPoint=\"sourceNode\" rows=\"100%\"></textarea>\n</div>\n", templateCssString:".sourcePane {\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n\toverflow: hidden;\n}\n\n.sourcePane textarea{\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0px;\n\toverflow: auto;\n\tpadding: 0px;\n\tmargin:0px;\n}\n\n* html .sourcePane {\n\toverflow: auto;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/SourcePane.css"), postCreate:function () {
dojo.html.addClass(this.domNode, this.domNodeClass);
dojo.debug("PostCreate");
}, getSource:function () {
if (this.href) {
dojo.io.bind({url:this.href, load:dojo.lang.hitch(this, "fillInSource"), mimetype:"text/plain"});
}
}, fillInSource:function (type, source, e) {
this.sourceNode.value = source;
}, setHref:function (url) {
this.href = url;
this.getSource();
}}, "", function () {
dojo.debug("SourcePane Init");
this.domNodeClass = "sourcePane";
this.sourceNode = "";
this.href = "";
});
 
/trunk/api/js/dojo/src/widget/demoEngine/DemoContainer.js
New file
0,0 → 1,73
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.demoEngine.DemoContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.demoEngine.DemoPane");
dojo.require("dojo.widget.demoEngine.SourcePane");
dojo.require("dojo.widget.TabContainer");
dojo.widget.defineWidget("my.widget.demoEngine.DemoContainer", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">\n\t\t<tbody>\n\t\t\t<tr dojoAttachPoint=\"headerNode\">\n\t\t\t\t<td dojoAttachPoint=\"returnNode\" valign=\"middle\" width=\"1%\">\n\t\t\t\t\t<img dojoAttachPoint=\"returnImageNode\" dojoAttachEvent=\"onclick: returnToDemos\"/>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<h1 dojoAttachPoint=\"demoNameNode\"></h1>\n\t\t\t\t\t<p dojoAttachPoint=\"summaryNode\"></p>\n\t\t\t\t</td>\n\t\t\t\t<td dojoAttachPoint=\"tabControlNode\" valign=\"middle\" align=\"right\" nowrap>\n\t\t\t\t\t<span dojoAttachPoint=\"sourceButtonNode\" dojoAttachEvent=\"onclick: showSource\">source</span>\n\t\t\t\t\t<span dojoAttachPoint=\"demoButtonNode\" dojoAttachEvent=\"onclick: showDemo\">demo</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<div dojoAttachPoint=\"tabNode\">\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".demoContainer{\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n}\n\n.demoContainer .return {\n\tcursor: pointer;\n}\n\n.demoContainer span {\n\tmargin-right: 10px;\n\tcursor: pointer;\n}\n\n.demoContainer .selected {\n\tborder-bottom: 5px solid #95bfff;\n}\n\n.demoContainer table {\n\tbackground: #f5f5f5;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.demoContainerTabs {\n\twidth: 100%;\n\theight: 400px;\n}\n\n.demoContainerTabs .dojoTabLabels-top {\n\tdisplay: none;\n}\n\n.demoContainerTabs .dojoTabPaneWrapper {\n\tborder: 0px;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoContainer.css"), postCreate:function () {
dojo.html.addClass(this.domNode, this.domNodeClass);
dojo.html.addClass(this.tabNode, this.tabClass);
dojo.html.addClass(this.returnImageNode, this.returnClass);
this.returnImageNode.src = this.returnImage;
this.tabContainer = dojo.widget.createWidget("TabContainer", {}, this.tabNode);
this.demoTab = dojo.widget.createWidget("DemoPane", {});
this.tabContainer.addChild(this.demoTab);
this.sourceTab = dojo.widget.createWidget("SourcePane", {});
this.tabContainer.addChild(this.sourceTab);
dojo.html.setOpacity(this.domNode, 0);
dojo.html.hide(this.domNode);
}, loadDemo:function (url) {
this.demoTab.setHref(url);
this.sourceTab.setHref(url);
this.showDemo();
}, setName:function (name) {
dojo.html.removeChildren(this.demoNameNode);
this.demoNameNode.appendChild(document.createTextNode(name));
}, setSummary:function (summary) {
dojo.html.removeChildren(this.summaryNode);
this.summaryNode.appendChild(document.createTextNode(summary));
}, showSource:function () {
dojo.html.removeClass(this.demoButtonNode, this.selectedButtonClass);
dojo.html.addClass(this.sourceButtonNode, this.selectedButtonClass);
this.tabContainer.selectTab(this.sourceTab);
}, showDemo:function () {
dojo.html.removeClass(this.sourceButtonNode, this.selectedButtonClass);
dojo.html.addClass(this.demoButtonNode, this.selectedButtonClass);
this.tabContainer.selectTab(this.demoTab);
}, returnToDemos:function () {
dojo.debug("Return To Demos");
}, show:function () {
dojo.html.setOpacity(this.domNode, 1);
dojo.html.show(this.domNode);
this.tabContainer.checkSize();
}}, "", function () {
dojo.debug("DemoPane Init");
this.domNodeClass = "demoContainer";
this.tabContainer = "";
this.sourceTab = "";
this.demoTab = "";
this.headerNode = "";
this.returnNode = "";
this.returnImageNode = "";
this.returnImage = "images/dojoDemos.gif";
this.returnClass = "return";
this.summaryNode = "";
this.demoNameNode = "";
this.tabControlNode = "";
this.tabNode = "";
this.tabClass = "demoContainerTabs";
this.sourceButtonNode = "";
this.demoButtonNode = "";
this.selectedButtonClass = "selected";
});
 
/trunk/api/js/dojo/src/widget/demoEngine/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({browser:["dojo.widget.demoEngine.DemoItem", "dojo.widget.demoEngine.DemoNavigator", "dojo.widget.demoEngine.DemoPane", "dojo.widget.demoEngine.SourcePane", "dojo.widget.demoEngine.DemoContainer"]});
dojo.provide("dojo.widget.demoEngine.*");
 
/trunk/api/js/dojo/src/widget/demoEngine/DemoPane.js
New file
0,0 → 1,31
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.demoEngine.DemoPane");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("my.widget.demoEngine.DemoPane", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<iframe dojoAttachPoint=\"demoNode\"></iframe>\n</div>\n", templateCssString:".demoPane {\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n\toverflow: hidden;\n}\n\n.demoPane iframe {\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0px;\n\tborder: none;\n\toverflow: auto;\n\tpadding: 0px;\n\tmargin:0px;\n\tbackground: #ffffff;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoPane.css"), postCreate:function () {
dojo.html.addClass(this.domNode, this.domNodeClass);
dojo.debug("PostCreate");
this._launchDemo();
}, _launchDemo:function () {
dojo.debug("Launching Demo");
dojo.debug(this.demoNode);
this.demoNode.src = this.href;
}, setHref:function (url) {
this.href = url;
this._launchDemo();
}}, "", function () {
dojo.debug("DemoPane Init");
this.domNodeClass = "demoPane";
this.demoNode = "";
this.href = "";
});
 
/trunk/api/js/dojo/src/widget/demoEngine/DemoNavigator.js
New file
0,0 → 1,132
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.demoEngine.DemoNavigator");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.demoEngine.DemoItem");
dojo.require("dojo.io.*");
dojo.require("dojo.lfx.*");
dojo.require("dojo.lang.common");
dojo.widget.defineWidget("my.widget.demoEngine.DemoNavigator", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">\n\t\t<tbody>\n\t\t\t<tr dojoAttachPoint=\"navigationContainer\">\n\t\t\t\t<td dojoAttachPoint=\"categoriesNode\" valign=\"top\" width=\"1%\">\n\t\t\t\t\t<h1>Categories</h1>\n\t\t\t\t\t<div dojoAttachPoint=\"categoriesButtonsNode\"></div>\n\t\t\t\t</td>\n\n\t\t\t\t<td dojoAttachPoint=\"demoListNode\" valign=\"top\">\n\t\t\t\t\t<div dojoAttachPoint=\"demoListWrapperNode\">\n\t\t\t\t\t\t<div dojoAttachPoint=\"demoListContainerNode\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t<div dojoAttachPoint=\"demoNode\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".demoNavigatorListWrapper {\n\tborder:1px solid #dcdbdb;\n\tbackground-color:#f8f8f8;\n\tpadding:2px;\n}\n\n.demoNavigatorListContainer {\n\tborder:1px solid #f0f0f0;\n\tbackground-color:#fff;\n\tpadding:1em;\n}\n\n.demoNavigator h1 {\n\tmargin-top: 0px;\n\tmargin-bottom: 10px;\n\tfont-size: 1.2em;\n\tborder-bottom:1px dotted #a9ccf5;\n}\n\n.demoNavigator .dojoButton {\n\tmargin-bottom: 5px;\n}\n\n.demoNavigator .dojoButton .dojoButtonContents {\n\tfont-size: 1.1em;\n\twidth: 100px;\n\tcolor: black;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoNavigator.css"), postCreate:function () {
dojo.html.addClass(this.domNode, this.domNodeClass);
dojo.html.addClass(this.demoListWrapperNode, this.demoListWrapperClass);
dojo.html.addClass(this.demoListContainerNode, this.demoListContainerClass);
if (dojo.render.html.ie) {
dojo.debug("render ie");
dojo.html.hide(this.demoListWrapperNode);
} else {
dojo.debug("render non-ie");
dojo.lfx.html.fadeHide(this.demoListWrapperNode, 0).play();
}
this.getRegistry(this.demoRegistryUrl);
this.demoContainer = dojo.widget.createWidget("DemoContainer", {returnImage:this.returnImage}, this.demoNode);
dojo.event.connect(this.demoContainer, "returnToDemos", this, "returnToDemos");
this.demoContainer.hide();
}, returnToDemos:function () {
this.demoContainer.hide();
if (dojo.render.html.ie) {
dojo.debug("render ie");
dojo.html.show(this.navigationContainer);
} else {
dojo.debug("render non-ie");
dojo.lfx.html.fadeShow(this.navigationContainer, 250).play();
}
dojo.lang.forEach(this.categoriesChildren, dojo.lang.hitch(this, function (child) {
child.checkSize();
}));
dojo.lang.forEach(this.demoListChildren, dojo.lang.hitch(this, function (child) {
child.checkSize();
}));
}, show:function () {
dojo.html.show(this.domNode);
dojo.html.setOpacity(this.domNode, 1);
dojo.html.setOpacity(this.navigationContainer, 1);
dojo.lang.forEach(this.categoriesChildren, dojo.lang.hitch(this, function (child) {
child.checkSize();
}));
dojo.lang.forEach(this.demoListChildren, dojo.lang.hitch(this, function (child) {
child.checkSize();
}));
}, getRegistry:function (url) {
dojo.io.bind({url:url, load:dojo.lang.hitch(this, this.processRegistry), mimetype:"text/json"});
}, processRegistry:function (type, registry, e) {
dojo.debug("Processing Registry");
this.registry = registry;
dojo.lang.forEach(this.registry.navigation, dojo.lang.hitch(this, this.addCategory));
}, addCategory:function (category) {
var newCat = dojo.widget.createWidget("Button", {caption:category.name});
if (!dojo.lang.isObject(this.registry.categories)) {
this.registry.categories = function () {
};
}
this.registry.categories[category.name] = category;
this.categoriesChildren.push(newCat);
this.categoriesButtonsNode.appendChild(newCat.domNode);
newCat.domNode.categoryName = category.name;
dojo.event.connect(newCat, "onClick", this, "onSelectCategory");
}, addDemo:function (demoName) {
var demo = this.registry.definitions[demoName];
if (dojo.render.html.ie) {
dojo.html.show(this.demoListWrapperNode);
} else {
dojo.lfx.html.fadeShow(this.demoListWrapperNode, 250).play();
}
var newDemo = dojo.widget.createWidget("DemoItem", {viewDemoImage:this.viewDemoImage, name:demoName, description:demo.description, thumbnail:demo.thumbnail});
this.demoListChildren.push(newDemo);
this.demoListContainerNode.appendChild(newDemo.domNode);
dojo.event.connect(newDemo, "onSelectDemo", this, "onSelectDemo");
}, onSelectCategory:function (e) {
catName = e.currentTarget.categoryName;
dojo.debug("Selected Category: " + catName);
dojo.lang.forEach(this.demoListChildren, function (child) {
child.destroy();
});
this.demoListChildren = [];
dojo.lang.forEach(this.registry.categories[catName].demos, dojo.lang.hitch(this, function (demoName) {
this.addDemo(demoName);
}));
}, onSelectDemo:function (e) {
dojo.debug("Demo Selected: " + e.target.name);
if (dojo.render.html.ie) {
dojo.debug("render ie");
dojo.html.hide(this.navigationContainer);
this.demoContainer.show();
this.demoContainer.showDemo();
} else {
dojo.debug("render non-ie");
dojo.lfx.html.fadeHide(this.navigationContainer, 250, null, dojo.lang.hitch(this, function () {
this.demoContainer.show();
this.demoContainer.showDemo();
})).play();
}
this.demoContainer.loadDemo(this.registry.definitions[e.target.name].url);
this.demoContainer.setName(e.target.name);
this.demoContainer.setSummary(this.registry.definitions[e.target.name].description);
}}, "", function () {
this.demoRegistryUrl = "demoRegistry.json";
this.registry = function () {
};
this.categoriesNode = "";
this.categoriesButtonsNode = "";
this.navigationContainer = "";
this.domNodeClass = "demoNavigator";
this.demoNode = "";
this.demoContainer = "";
this.demoListWrapperNode = "";
this.demoListWrapperClass = "demoNavigatorListWrapper";
this.demoListContainerClass = "demoNavigatorListContainer";
this.returnImage = "images/dojoDemos.gif";
this.viewDemoImage = "images/viewDemo.png";
this.demoListChildren = [];
this.categoriesChildren = [];
});
 
/trunk/api/js/dojo/src/widget/Tree.js
New file
0,0 → 1,234
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Tree");
dojo.require("dojo.widget.*");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.TreeNode");
dojo.require("dojo.html.common");
dojo.require("dojo.html.selection");
dojo.widget.defineWidget("dojo.widget.Tree", dojo.widget.HtmlWidget, function () {
this.eventNames = {};
this.tree = this;
this.DNDAcceptTypes = [];
this.actionsDisabled = [];
}, {widgetType:"Tree", eventNamesDefault:{createDOMNode:"createDOMNode", treeCreate:"treeCreate", treeDestroy:"treeDestroy", treeClick:"treeClick", iconClick:"iconClick", titleClick:"titleClick", moveFrom:"moveFrom", moveTo:"moveTo", addChild:"addChild", removeNode:"removeNode", expand:"expand", collapse:"collapse"}, isContainer:true, DNDMode:"off", lockLevel:0, strictFolders:true, DNDModes:{BETWEEN:1, ONTO:2}, DNDAcceptTypes:"", templateCssString:"\n.dojoTree {\n\tfont: caption;\n\tfont-size: 11px;\n\tfont-weight: normal;\n\toverflow: auto;\n}\n\n\n.dojoTreeNodeLabelTitle {\n\tpadding-left: 2px;\n\tcolor: WindowText;\n}\n\n.dojoTreeNodeLabel {\n\tcursor:hand;\n\tcursor:pointer;\n}\n\n.dojoTreeNodeLabelTitle:hover {\n\ttext-decoration: underline;\n}\n\n.dojoTreeNodeLabelSelected {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n}\n\n.dojoTree div {\n\twhite-space: nowrap;\n}\n\n.dojoTree img, .dojoTreeNodeLabel img {\n\tvertical-align: middle;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/Tree.css"), templateString:"<div class=\"dojoTree\"></div>", isExpanded:true, isTree:true, objectId:"", controller:"", selector:"", menu:"", expandLevel:"", blankIconSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_blank.gif"), gridIconSrcT:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_t.gif"), gridIconSrcL:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_l.gif"), gridIconSrcV:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_v.gif"), gridIconSrcP:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_p.gif"), gridIconSrcC:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_c.gif"), gridIconSrcX:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_x.gif"), gridIconSrcY:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_y.gif"), gridIconSrcZ:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_z.gif"), expandIconSrcPlus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_plus.gif"), expandIconSrcMinus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_minus.gif"), expandIconSrcLoading:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_loading.gif"), iconWidth:18, iconHeight:18, showGrid:true, showRootGrid:true, actionIsDisabled:function (action) {
var _this = this;
return dojo.lang.inArray(_this.actionsDisabled, action);
}, actions:{ADDCHILD:"ADDCHILD"}, getInfo:function () {
var info = {widgetId:this.widgetId, objectId:this.objectId};
return info;
}, initializeController:function () {
if (this.controller != "off") {
if (this.controller) {
this.controller = dojo.widget.byId(this.controller);
} else {
dojo.require("dojo.widget.TreeBasicController");
this.controller = dojo.widget.createWidget("TreeBasicController", {DNDController:(this.DNDMode ? "create" : ""), dieWithTree:true});
}
this.controller.listenTree(this);
} else {
this.controller = null;
}
}, initializeSelector:function () {
if (this.selector != "off") {
if (this.selector) {
this.selector = dojo.widget.byId(this.selector);
} else {
dojo.require("dojo.widget.TreeSelector");
this.selector = dojo.widget.createWidget("TreeSelector", {dieWithTree:true});
}
this.selector.listenTree(this);
} else {
this.selector = null;
}
}, initialize:function (args, frag) {
var _this = this;
for (name in this.eventNamesDefault) {
if (dojo.lang.isUndefined(this.eventNames[name])) {
this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
}
}
for (var i = 0; i < this.actionsDisabled.length; i++) {
this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
}
if (this.DNDMode == "off") {
this.DNDMode = 0;
} else {
if (this.DNDMode == "between") {
this.DNDMode = this.DNDModes.ONTO | this.DNDModes.BETWEEN;
} else {
if (this.DNDMode == "onto") {
this.DNDMode = this.DNDModes.ONTO;
}
}
}
this.expandLevel = parseInt(this.expandLevel);
this.initializeSelector();
this.initializeController();
if (this.menu) {
this.menu = dojo.widget.byId(this.menu);
this.menu.listenTree(this);
}
this.containerNode = this.domNode;
}, postCreate:function () {
this.createDOMNode();
}, createDOMNode:function () {
dojo.html.disableSelection(this.domNode);
for (var i = 0; i < this.children.length; i++) {
this.children[i].parent = this;
var node = this.children[i].createDOMNode(this, 0);
this.domNode.appendChild(node);
}
if (!this.showRootGrid) {
for (var i = 0; i < this.children.length; i++) {
this.children[i].expand();
}
}
dojo.event.topic.publish(this.eventNames.treeCreate, {source:this});
}, destroy:function () {
dojo.event.topic.publish(this.tree.eventNames.treeDestroy, {source:this});
return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
}, addChild:function (child, index) {
var message = {child:child, index:index, parent:this, domNodeInitialized:child.domNodeInitialized};
this.doAddChild.apply(this, arguments);
dojo.event.topic.publish(this.tree.eventNames.addChild, message);
}, doAddChild:function (child, index) {
if (dojo.lang.isUndefined(index)) {
index = this.children.length;
}
if (!child.isTreeNode) {
dojo.raise("You can only add TreeNode widgets to a " + this.widgetType + " widget!");
return;
}
if (this.isTreeNode) {
if (!this.isFolder) {
this.setFolder();
}
}
var _this = this;
dojo.lang.forEach(child.getDescendants(), function (elem) {
elem.tree = _this.tree;
});
child.parent = this;
if (this.isTreeNode) {
this.state = this.loadStates.LOADED;
}
if (index < this.children.length) {
dojo.html.insertBefore(child.domNode, this.children[index].domNode);
} else {
this.containerNode.appendChild(child.domNode);
if (this.isExpanded && this.isTreeNode) {
this.showChildren();
}
}
this.children.splice(index, 0, child);
if (child.domNodeInitialized) {
var d = this.isTreeNode ? this.depth : -1;
child.adjustDepth(d - child.depth + 1);
child.updateIconTree();
} else {
child.depth = this.isTreeNode ? this.depth + 1 : 0;
child.createDOMNode(child.tree, child.depth);
}
var prevSibling = child.getPreviousSibling();
if (child.isLastChild() && prevSibling) {
prevSibling.updateExpandGridColumn();
}
}, makeBlankImg:function () {
var img = document.createElement("img");
img.style.width = this.iconWidth + "px";
img.style.height = this.iconHeight + "px";
img.src = this.blankIconSrc;
img.style.verticalAlign = "middle";
return img;
}, updateIconTree:function () {
if (!this.isTree) {
this.updateIcons();
}
for (var i = 0; i < this.children.length; i++) {
this.children[i].updateIconTree();
}
}, toString:function () {
return "[" + this.widgetType + " ID:" + this.widgetId + "]";
}, move:function (child, newParent, index) {
var oldParent = child.parent;
var oldTree = child.tree;
this.doMove.apply(this, arguments);
var newParent = child.parent;
var newTree = child.tree;
var message = {oldParent:oldParent, oldTree:oldTree, newParent:newParent, newTree:newTree, child:child};
dojo.event.topic.publish(oldTree.eventNames.moveFrom, message);
dojo.event.topic.publish(newTree.eventNames.moveTo, message);
}, doMove:function (child, newParent, index) {
child.parent.doRemoveNode(child);
newParent.doAddChild(child, index);
}, removeNode:function (child) {
if (!child.parent) {
return;
}
var oldTree = child.tree;
var oldParent = child.parent;
var removedChild = this.doRemoveNode.apply(this, arguments);
dojo.event.topic.publish(this.tree.eventNames.removeNode, {child:removedChild, tree:oldTree, parent:oldParent});
return removedChild;
}, doRemoveNode:function (child) {
if (!child.parent) {
return;
}
var parent = child.parent;
var children = parent.children;
var index = child.getParentIndex();
if (index < 0) {
dojo.raise("Couldn't find node " + child + " for removal");
}
children.splice(index, 1);
dojo.html.removeNode(child.domNode);
if (parent.children.length == 0 && !parent.isTree) {
parent.containerNode.style.display = "none";
}
if (index == children.length && index > 0) {
children[index - 1].updateExpandGridColumn();
}
if (parent instanceof dojo.widget.Tree && index == 0 && children.length > 0) {
children[0].updateExpandGrid();
}
child.parent = child.tree = null;
return child;
}, markLoading:function () {
}, unMarkLoading:function () {
}, lock:function () {
!this.lockLevel && this.markLoading();
this.lockLevel++;
}, unlock:function () {
if (!this.lockLevel) {
dojo.raise("unlock: not locked");
}
this.lockLevel--;
!this.lockLevel && this.unMarkLoading();
}, isLocked:function () {
var node = this;
while (true) {
if (node.lockLevel) {
return true;
}
if (node instanceof dojo.widget.Tree) {
break;
}
node = node.parent;
}
return false;
}, flushLock:function () {
this.lockLevel = 0;
this.unMarkLoading();
}});
 
/trunk/api/js/dojo/src/widget/Wizard.js
New file
0,0 → 1,125
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Wizard");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.LayoutContainer");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.event.*");
dojo.require("dojo.html.style");
dojo.widget.defineWidget("dojo.widget.WizardContainer", dojo.widget.LayoutContainer, {templateString:"<div class=\"WizardContainer\" dojoAttachPoint=\"wizardNode\">\n <div class=\"WizardText\" dojoAttachPoint=\"wizardPanelContainerNode\">\n </div>\n <div class=\"WizardButtonHolder\" dojoAttachPoint=\"wizardControlContainerNode\">\n <input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"previousButton\"/>\n <input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"nextButton\"/>\n <input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"doneButton\" style=\"display:none\"/>\n <input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"cancelButton\"/>\n </div>\n</div>\n", templateCssString:".WizardContainer {\n\tbackground: #EEEEEE;\n\tborder: #798EC5 1px solid;\n\tpadding: 2px;\n}\n\n.WizardTitle {\n\tcolor: #003366;\n\tpadding: 8px 5px 15px 2px;\n\tfont-weight: bold;\n\tfont-size: x-small;\n\tfont-style: normal;\n\tfont-family: Verdana, Arial, Helvetica;\n\ttext-align: left;\n}\n\n.WizardText {\n\tcolor: #000033;\n\tfont-weight: normal;\n\tfont-size: xx-small;\n\tfont-family: Verdana, Arial, Helvetica;\n\tpadding: 2 50; text-align: justify;\n}\n\n.WizardLightText {\n\tcolor: #666666;\n\tfont-weight: normal;\n\tfont-size: xx-small;\n\tfont-family: verdana, arial, helvetica;\n\tpadding: 2px 50px;\n\ttext-align: justify;\n}\n\n.WizardButtonHolder {\n\ttext-align: right;\n\tpadding: 10px 5px;\n}\n\n.WizardButton {\n\tcolor: #ffffff;\n\tbackground: #798EC5;\n\tfont-size: xx-small;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tborder-right: #000000 1px solid;\n\tborder-bottom: #000000 1px solid;\n\tborder-left: #666666 1px solid;\n\tborder-top: #666666 1px solid;\n\tpadding-right: 4px;\n\tpadding-left: 4px;\n\ttext-decoration: none; height: 18px;\n}\n\n.WizardButton:hover {\n\tcursor: pointer;\n}\n\n.WizardButtonDisabled {\n\tcolor: #eeeeee;\n\tbackground-color: #999999;\n\tfont-size: xx-small;\n\tFONT-FAMILY: verdana, arial, helvetica, sans-serif;\n\tborder-right: #000000 1px solid;\n\tborder-bottom: #000000 1px solid;\n\tborder-left: #798EC5 1px solid;\n\tborder-top: #798EC5 1px solid;\n\tpadding-right: 4px;\n\tpadding-left: 4px;\n\ttext-decoration: none;\n\theight: 18px;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Wizard.css"), selected:null, nextButtonLabel:"next", previousButtonLabel:"previous", cancelButtonLabel:"cancel", doneButtonLabel:"done", cancelFunction:"", hideDisabledButtons:false, fillInTemplate:function (args, frag) {
dojo.event.connect(this.nextButton, "onclick", this, "_onNextButtonClick");
dojo.event.connect(this.previousButton, "onclick", this, "_onPreviousButtonClick");
if (this.cancelFunction) {
dojo.event.connect(this.cancelButton, "onclick", this.cancelFunction);
} else {
this.cancelButton.style.display = "none";
}
dojo.event.connect(this.doneButton, "onclick", this, "done");
this.nextButton.value = this.nextButtonLabel;
this.previousButton.value = this.previousButtonLabel;
this.cancelButton.value = this.cancelButtonLabel;
this.doneButton.value = this.doneButtonLabel;
}, _checkButtons:function () {
var lastStep = !this.hasNextPanel();
this.nextButton.disabled = lastStep;
this._setButtonClass(this.nextButton);
if (this.selected.doneFunction) {
this.doneButton.style.display = "";
if (lastStep) {
this.nextButton.style.display = "none";
}
} else {
this.doneButton.style.display = "none";
}
this.previousButton.disabled = ((!this.hasPreviousPanel()) || (!this.selected.canGoBack));
this._setButtonClass(this.previousButton);
}, _setButtonClass:function (button) {
if (!this.hideDisabledButtons) {
button.style.display = "";
dojo.html.setClass(button, button.disabled ? "WizardButtonDisabled" : "WizardButton");
} else {
button.style.display = button.disabled ? "none" : "";
}
}, registerChild:function (panel, insertionIndex) {
dojo.widget.WizardContainer.superclass.registerChild.call(this, panel, insertionIndex);
this.wizardPanelContainerNode.appendChild(panel.domNode);
panel.hide();
if (!this.selected) {
this.onSelected(panel);
}
this._checkButtons();
}, onSelected:function (panel) {
if (this.selected) {
if (this.selected._checkPass()) {
this.selected.hide();
} else {
return;
}
}
panel.show();
this.selected = panel;
}, getPanels:function () {
return this.getChildrenOfType("WizardPane", false);
}, selectedIndex:function () {
if (this.selected) {
return dojo.lang.indexOf(this.getPanels(), this.selected);
}
return -1;
}, _onNextButtonClick:function () {
var selectedIndex = this.selectedIndex();
if (selectedIndex > -1) {
var childPanels = this.getPanels();
if (childPanels[selectedIndex + 1]) {
this.onSelected(childPanels[selectedIndex + 1]);
}
}
this._checkButtons();
}, _onPreviousButtonClick:function () {
var selectedIndex = this.selectedIndex();
if (selectedIndex > -1) {
var childPanels = this.getPanels();
if (childPanels[selectedIndex - 1]) {
this.onSelected(childPanels[selectedIndex - 1]);
}
}
this._checkButtons();
}, hasNextPanel:function () {
var selectedIndex = this.selectedIndex();
return (selectedIndex < (this.getPanels().length - 1));
}, hasPreviousPanel:function () {
var selectedIndex = this.selectedIndex();
return (selectedIndex > 0);
}, done:function () {
this.selected.done();
}});
dojo.widget.defineWidget("dojo.widget.WizardPane", dojo.widget.ContentPane, {canGoBack:true, passFunction:"", doneFunction:"", postMixInProperties:function (args, frag) {
if (this.passFunction) {
this.passFunction = dj_global[this.passFunction];
}
if (this.doneFunction) {
this.doneFunction = dj_global[this.doneFunction];
}
dojo.widget.WizardPane.superclass.postMixInProperties.apply(this, arguments);
}, _checkPass:function () {
if (this.passFunction && dojo.lang.isFunction(this.passFunction)) {
var failMessage = this.passFunction();
if (failMessage) {
alert(failMessage);
return false;
}
}
return true;
}, done:function () {
if (this.doneFunction && dojo.lang.isFunction(this.doneFunction)) {
this.doneFunction();
}
}});
 
/trunk/api/js/dojo/src/widget/TreeSelector.js
New file
0,0 → 1,100
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeSelector");
dojo.require("dojo.widget.HtmlWidget");
dojo.widget.defineWidget("dojo.widget.TreeSelector", dojo.widget.HtmlWidget, function () {
this.eventNames = {};
this.listenedTrees = [];
}, {widgetType:"TreeSelector", selectedNode:null, dieWithTree:false, eventNamesDefault:{select:"select", destroy:"destroy", deselect:"deselect", dblselect:"dblselect"}, initialize:function () {
for (name in this.eventNamesDefault) {
if (dojo.lang.isUndefined(this.eventNames[name])) {
this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
}
}
}, destroy:function () {
dojo.event.topic.publish(this.eventNames.destroy, {source:this});
return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
}, listenTree:function (tree) {
dojo.event.topic.subscribe(tree.eventNames.titleClick, this, "select");
dojo.event.topic.subscribe(tree.eventNames.iconClick, this, "select");
dojo.event.topic.subscribe(tree.eventNames.collapse, this, "onCollapse");
dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
this.listenedTrees.push(tree);
}, unlistenTree:function (tree) {
dojo.event.topic.unsubscribe(tree.eventNames.titleClick, this, "select");
dojo.event.topic.unsubscribe(tree.eventNames.iconClick, this, "select");
dojo.event.topic.unsubscribe(tree.eventNames.collapse, this, "onCollapse");
dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
for (var i = 0; i < this.listenedTrees.length; i++) {
if (this.listenedTrees[i] === tree) {
this.listenedTrees.splice(i, 1);
break;
}
}
}, onTreeDestroy:function (message) {
this.unlistenTree(message.source);
if (this.dieWithTree) {
this.destroy();
}
}, onCollapse:function (message) {
if (!this.selectedNode) {
return;
}
var node = message.source;
var parent = this.selectedNode.parent;
while (parent !== node && parent.isTreeNode) {
parent = parent.parent;
}
if (parent.isTreeNode) {
this.deselect();
}
}, select:function (message) {
var node = message.source;
var e = message.event;
if (this.selectedNode === node) {
if (e.ctrlKey || e.shiftKey || e.metaKey) {
this.deselect();
return;
}
dojo.event.topic.publish(this.eventNames.dblselect, {node:node});
return;
}
if (this.selectedNode) {
this.deselect();
}
this.doSelect(node);
dojo.event.topic.publish(this.eventNames.select, {node:node});
}, onMoveFrom:function (message) {
if (message.child !== this.selectedNode) {
return;
}
if (!dojo.lang.inArray(this.listenedTrees, message.newTree)) {
this.deselect();
}
}, onRemoveNode:function (message) {
if (message.child !== this.selectedNode) {
return;
}
this.deselect();
}, doSelect:function (node) {
node.markSelected();
this.selectedNode = node;
}, deselect:function () {
var node = this.selectedNode;
this.selectedNode = null;
node.unMarkSelected();
dojo.event.topic.publish(this.eventNames.deselect, {node:node});
}});
 
/trunk/api/js/dojo/src/widget/TreeDndControllerV3.js
New file
0,0 → 1,69
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeDndControllerV3");
dojo.require("dojo.dnd.TreeDragAndDropV3");
dojo.require("dojo.experimental");
dojo.experimental("Tree drag'n'drop' has lots of problems/bugs, it requires dojo drag'n'drop overhaul to work, probably in 0.5");
dojo.widget.defineWidget("dojo.widget.TreeDndControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
this.dragSources = {};
this.dropTargets = {};
this.listenedTrees = {};
}, {listenTreeEvents:["afterChangeTree", "beforeTreeDestroy", "afterAddChild"], listenNodeFilter:function (elem) {
return elem instanceof dojo.widget.Widget;
}, initialize:function (args) {
this.treeController = dojo.lang.isString(args.controller) ? dojo.widget.byId(args.controller) : args.controller;
if (!this.treeController) {
dojo.raise("treeController must be declared");
}
}, onBeforeTreeDestroy:function (message) {
this.unlistenTree(message.source);
}, onAfterAddChild:function (message) {
this.listenNode(message.child);
}, onAfterChangeTree:function (message) {
if (!message.oldTree) {
return;
}
if (!message.newTree || !this.listenedTrees[message.newTree.widgetId]) {
this.processDescendants(message.node, this.listenNodeFilter, this.unlistenNode);
}
if (!this.listenedTrees[message.oldTree.widgetId]) {
this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);
}
}, listenNode:function (node) {
if (!node.tree.DndMode) {
return;
}
if (this.dragSources[node.widgetId] || this.dropTargets[node.widgetId]) {
return;
}
var source = null;
var target = null;
if (!node.actionIsDisabled(node.actions.MOVE)) {
var source = this.makeDragSource(node);
this.dragSources[node.widgetId] = source;
}
var target = this.makeDropTarget(node);
this.dropTargets[node.widgetId] = target;
}, makeDragSource:function (node) {
return new dojo.dnd.TreeDragSourceV3(node.contentNode, this, node.tree.widgetId, node);
}, makeDropTarget:function (node) {
return new dojo.dnd.TreeDropTargetV3(node.contentNode, this.treeController, node.tree.DndAcceptTypes, node);
}, unlistenNode:function (node) {
if (this.dragSources[node.widgetId]) {
dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);
delete this.dragSources[node.widgetId];
}
if (this.dropTargets[node.widgetId]) {
dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);
delete this.dropTargets[node.widgetId];
}
}});
 
/trunk/api/js/dojo/src/widget/TreeContextMenuV3.js
New file
0,0 → 1,72
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeContextMenuV3");
dojo.require("dojo.event.*");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Menu2");
dojo.require("dojo.widget.TreeCommon");
dojo.widget.defineWidget("dojo.widget.TreeContextMenuV3", [dojo.widget.PopupMenu2, dojo.widget.TreeCommon], function () {
this.listenedTrees = {};
}, {listenTreeEvents:["afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
return elem instanceof dojo.widget.Widget;
}, onAfterTreeCreate:function (message) {
var tree = message.source;
this.bindDomNode(tree.domNode);
}, onBeforeTreeDestroy:function (message) {
this.unBindDomNode(message.source.domNode);
}, getTreeNode:function () {
var source = this.getTopOpenEvent().target;
var treeNode = this.domElement2TreeNode(source);
return treeNode;
}, open:function () {
var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);
for (var i = 0; i < this.children.length; i++) {
if (this.children[i].menuOpen) {
this.children[i].menuOpen(this.getTreeNode());
}
}
return result;
}, close:function () {
for (var i = 0; i < this.children.length; i++) {
if (this.children[i].menuClose) {
this.children[i].menuClose(this.getTreeNode());
}
}
var result = dojo.widget.PopupMenu2.prototype.close.apply(this, arguments);
return result;
}});
dojo.widget.defineWidget("dojo.widget.TreeMenuItemV3", [dojo.widget.MenuItem2, dojo.widget.TreeCommon], function () {
this.treeActions = [];
}, {treeActions:"", initialize:function (args, frag) {
for (var i = 0; i < this.treeActions.length; i++) {
this.treeActions[i] = this.treeActions[i].toUpperCase();
}
}, getTreeNode:function () {
var menu = this;
while (!(menu instanceof dojo.widget.TreeContextMenuV3)) {
menu = menu.parent;
}
var treeNode = menu.getTreeNode();
return treeNode;
}, menuOpen:function (treeNode) {
treeNode.viewEmphasize();
this.setDisabled(false);
var _this = this;
dojo.lang.forEach(_this.treeActions, function (action) {
_this.setDisabled(treeNode.actionIsDisabledNow(action));
});
}, menuClose:function (treeNode) {
treeNode.viewUnemphasize();
}, toString:function () {
return "[" + this.widgetType + " node " + this.getTreeNode() + "]";
}});
 
/trunk/api/js/dojo/src/widget/SvgWidget.js
New file
0,0 → 1,69
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.widget.DomWidget");
dojo.provide("dojo.widget.SvgWidget");
dojo.provide("dojo.widget.SVGWidget");
dojo.require("dojo.dom");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.SvgWidget");
dojo.widget.declare("dojo.widget.SvgWidget", dojo.widget.DomWidget, {createNodesFromText:function (txt, wrap) {
return dojo.svg.createNodesFromText(txt, wrap);
}});
dojo.widget.SVGWidget = dojo.widget.SvgWidget;
try {
(function () {
var tf = function () {
var rw = new function () {
dojo.widget.SvgWidget.call(this);
this.buildRendering = function () {
return;
};
this.destroyRendering = function () {
return;
};
this.postInitialize = function () {
return;
};
this.widgetType = "SVGRootWidget";
this.domNode = document.documentElement;
};
var wm = dojo.widget.manager;
wm.root = rw;
wm.add(rw);
wm.getWidgetFromNode = function (node) {
var filter = function (x) {
if (x.domNode == node) {
return true;
}
};
var widgets = [];
while ((node) && (widgets.length < 1)) {
widgets = this.getWidgetsByFilter(filter);
node = node.parentNode;
}
if (widgets.length > 0) {
return widgets[0];
} else {
return null;
}
};
wm.getWidgetFromEvent = function (domEvt) {
return this.getWidgetFromNode(domEvt.target);
};
wm.getWidgetFromPrimitive = wm.getWidgetFromNode;
};
dojo.event.connect(dojo.hostenv, "loaded", tf);
})();
}
catch (e) {
alert(e);
}
 
/trunk/api/js/dojo/src/widget/Repeater.js
New file
0,0 → 1,126
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.Repeater");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.string");
dojo.require("dojo.event.*");
dojo.require("dojo.experimental");
dojo.experimental("dojo.widget.Repeater");
dojo.widget.defineWidget("dojo.widget.Repeater", dojo.widget.HtmlWidget, {name:"", rowTemplate:"", myObject:null, pattern:"", useDnd:false, isContainer:true, initialize:function (args, frag) {
var node = this.getFragNodeRef(frag);
node.removeAttribute("dojotype");
this.setRow(dojo.string.trim(node.innerHTML), {});
node.innerHTML = "";
frag = null;
}, postCreate:function (args, frag) {
if (this.useDnd) {
dojo.require("dojo.dnd.*");
var dnd = new dojo.dnd.HtmlDropTarget(this.domNode, [this.widgetId]);
}
}, _reIndexRows:function () {
for (var i = 0, len = this.domNode.childNodes.length; i < len; i++) {
var elems = ["INPUT", "SELECT", "TEXTAREA"];
for (var k = 0; k < elems.length; k++) {
var list = this.domNode.childNodes[i].getElementsByTagName(elems[k]);
for (var j = 0, len2 = list.length; j < len2; j++) {
var name = list[j].name;
var index = dojo.string.escape("regexp", this.pattern);
index = index.replace(/(%\\\{index\\\})/g, "%{index}");
var nameRegexp = dojo.string.substituteParams(index, {"index":"[0-9]*"});
var newName = dojo.string.substituteParams(this.pattern, {"index":"" + i});
var re = new RegExp(nameRegexp, "g");
list[j].name = name.replace(re, newName);
}
}
}
}, onDeleteRow:function (e) {
var index = dojo.string.escape("regexp", this.pattern);
index = index.replace(/%\\\{index\\\}/g, "%{index}");
var nameRegexp = dojo.string.substituteParams(index, {"index":"([0-9]*)"});
var re = new RegExp(nameRegexp, "g");
this.deleteRow(re.exec(e.target.name)[1]);
}, hasRows:function () {
if (this.domNode.childNodes.length > 0) {
return true;
}
return false;
}, getRowCount:function () {
return this.domNode.childNodes.length;
}, deleteRow:function (idx) {
this.domNode.removeChild(this.domNode.childNodes[idx]);
this._reIndexRows();
}, _changeRowPosition:function (e) {
if (e.dragStatus == "dropFailure") {
this.domNode.removeChild(e["dragSource"].domNode);
} else {
if (e.dragStatus == "dropSuccess") {
}
}
this._reIndexRows();
}, setRow:function (template, myObject) {
template = template.replace(/\%\{(index)\}/g, "0");
this.rowTemplate = template;
this.myObject = myObject;
}, getRow:function () {
return this.rowTemplate;
}, _initRow:function (node) {
if (typeof (node) == "number") {
node = this.domNode.childNodes[node];
}
var elems = ["INPUT", "SELECT", "IMG"];
for (var k = 0; k < elems.length; k++) {
var list = node.getElementsByTagName(elems[k]);
for (var i = 0, len = list.length; i < len; i++) {
var child = list[i];
if (child.nodeType != 1) {
continue;
}
if (child.getAttribute("rowFunction") != null) {
if (typeof (this.myObject[child.getAttribute("rowFunction")]) == "undefined") {
dojo.debug("Function " + child.getAttribute("rowFunction") + " not found");
} else {
this.myObject[child.getAttribute("rowFunction")](child);
}
} else {
if (child.getAttribute("rowAction") != null) {
if (child.getAttribute("rowAction") == "delete") {
child.name = dojo.string.substituteParams(this.pattern, {"index":"" + (this.getRowCount() - 1)});
dojo.event.connect(child, "onclick", this, "onDeleteRow");
}
}
}
}
}
}, onAddRow:function (e) {
}, addRow:function (doInit) {
if (typeof (doInit) == "undefined") {
doInit = true;
}
var node = document.createElement("span");
node.innerHTML = this.getRow();
if (node.childNodes.length == 1) {
node = node.childNodes[0];
}
this.domNode.appendChild(node);
var parser = new dojo.xml.Parse();
var frag = parser.parseElement(node, null, true);
dojo.widget.getParser().createSubComponents(frag, this);
this._reIndexRows();
if (doInit) {
this._initRow(node);
}
if (this.useDnd) {
node = new dojo.dnd.HtmlDragSource(node, this.widgetId);
dojo.event.connect(node, "onDragEnd", this, "_changeRowPosition");
}
this.onAddRow(node);
}});
 
/trunk/api/js/dojo/src/widget/CurrencyTextbox.js
New file
0,0 → 1,38
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.CurrencyTextbox");
dojo.require("dojo.widget.IntegerTextbox");
dojo.require("dojo.validate.common");
dojo.widget.defineWidget("dojo.widget.CurrencyTextbox", dojo.widget.IntegerTextbox, {mixInProperties:function (localProperties, frag) {
dojo.widget.CurrencyTextbox.superclass.mixInProperties.apply(this, arguments);
if (localProperties.fractional) {
this.flags.fractional = (localProperties.fractional == "true");
} else {
if (localProperties.cents) {
dojo.deprecated("dojo.widget.IntegerTextbox", "use fractional attr instead of cents", "0.5");
this.flags.fractional = (localProperties.cents == "true");
}
}
if (localProperties.symbol) {
this.flags.symbol = localProperties.symbol;
}
if (localProperties.min) {
this.flags.min = parseFloat(localProperties.min);
}
if (localProperties.max) {
this.flags.max = parseFloat(localProperties.max);
}
}, isValid:function () {
return dojo.validate.isCurrency(this.textbox.value, this.flags);
}, isInRange:function () {
return dojo.validate.isInRange(this.textbox.value, this.flags);
}});
 
/trunk/api/js/dojo/src/widget/HtmlWidget.js
New file
0,0 → 1,99
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.DomWidget");
dojo.require("dojo.html.util");
dojo.require("dojo.html.display");
dojo.require("dojo.html.layout");
dojo.require("dojo.lang.extras");
dojo.require("dojo.lang.func");
dojo.require("dojo.lfx.toggle");
dojo.declare("dojo.widget.HtmlWidget", dojo.widget.DomWidget, {templateCssPath:null, templatePath:null, lang:"", toggle:"plain", toggleDuration:150, initialize:function (args, frag) {
}, postMixInProperties:function (args, frag) {
if (this.lang === "") {
this.lang = null;
}
this.toggleObj = dojo.lfx.toggle[this.toggle.toLowerCase()] || dojo.lfx.toggle.plain;
}, createNodesFromText:function (txt, wrap) {
return dojo.html.createNodesFromText(txt, wrap);
}, destroyRendering:function (finalize) {
try {
if (this.bgIframe) {
this.bgIframe.remove();
delete this.bgIframe;
}
if (!finalize && this.domNode) {
dojo.event.browser.clean(this.domNode);
}
dojo.widget.HtmlWidget.superclass.destroyRendering.call(this);
}
catch (e) {
}
}, isShowing:function () {
return dojo.html.isShowing(this.domNode);
}, toggleShowing:function () {
if (this.isShowing()) {
this.hide();
} else {
this.show();
}
}, show:function () {
if (this.isShowing()) {
return;
}
this.animationInProgress = true;
this.toggleObj.show(this.domNode, this.toggleDuration, null, dojo.lang.hitch(this, this.onShow), this.explodeSrc);
}, onShow:function () {
this.animationInProgress = false;
this.checkSize();
}, hide:function () {
if (!this.isShowing()) {
return;
}
this.animationInProgress = true;
this.toggleObj.hide(this.domNode, this.toggleDuration, null, dojo.lang.hitch(this, this.onHide), this.explodeSrc);
}, onHide:function () {
this.animationInProgress = false;
}, _isResized:function (w, h) {
if (!this.isShowing()) {
return false;
}
var wh = dojo.html.getMarginBox(this.domNode);
var width = w || wh.width;
var height = h || wh.height;
if (this.width == width && this.height == height) {
return false;
}
this.width = width;
this.height = height;
return true;
}, checkSize:function () {
if (!this._isResized()) {
return;
}
this.onResized();
}, resizeTo:function (w, h) {
dojo.html.setMarginBox(this.domNode, {width:w, height:h});
if (this.isShowing()) {
this.onResized();
}
}, resizeSoon:function () {
if (this.isShowing()) {
dojo.lang.setTimeout(this, this.onResized, 0);
}
}, onResized:function () {
dojo.lang.forEach(this.children, function (child) {
if (child.checkSize) {
child.checkSize();
}
});
}});
 
/trunk/api/js/dojo/src/widget/TreeRPCController.js
New file
0,0 → 1,70
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.widget.TreeRPCController");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeLoadingController");
dojo.widget.defineWidget("dojo.widget.TreeRPCController", dojo.widget.TreeLoadingController, {doMove:function (child, newParent, index) {
var params = {child:this.getInfo(child), childTree:this.getInfo(child.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), newIndex:index};
var success;
this.runRPC({url:this.getRPCUrl("move"), load:function (response) {
success = this.doMoveProcessResponse(response, child, newParent, index);
}, sync:true, lock:[child, newParent], params:params});
return success;
}, doMoveProcessResponse:function (response, child, newParent, index) {
if (!dojo.lang.isUndefined(response.error)) {
this.RPCErrorHandler("server", response.error);
return false;
}
var args = [child, newParent, index];
return dojo.widget.TreeLoadingController.prototype.doMove.apply(this, args);
}, doRemoveNode:function (node, callObj, callFunc) {
var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
this.runRPC({url:this.getRPCUrl("removeNode"), load:function (response) {
this.doRemoveNodeProcessResponse(response, node, callObj, callFunc);
}, params:params, lock:[node]});
}, doRemoveNodeProcessResponse:function (response, node, callObj, callFunc) {
if (!dojo.lang.isUndefined(response.error)) {
this.RPCErrorHandler("server", response.error);
return false;
}
if (!response) {
return false;
}
if (response == true) {
var args = [node, callObj, callFunc];
dojo.widget.TreeLoadingController.prototype.doRemoveNode.apply(this, args);
return;
} else {
if (dojo.lang.isObject(response)) {
dojo.raise(response.error);
} else {
dojo.raise("Invalid response " + response);
}
}
}, doCreateChild:function (parent, index, output, callObj, callFunc) {
var params = {tree:this.getInfo(parent.tree), parent:this.getInfo(parent), index:index, data:output};
this.runRPC({url:this.getRPCUrl("createChild"), load:function (response) {
this.doCreateChildProcessResponse(response, parent, index, callObj, callFunc);
}, params:params, lock:[parent]});
}, doCreateChildProcessResponse:function (response, parent, index, callObj, callFunc) {
if (!dojo.lang.isUndefined(response.error)) {
this.RPCErrorHandler("server", response.error);
return false;
}
if (!dojo.lang.isObject(response)) {
dojo.raise("Invalid result " + response);
}
var args = [parent, index, response, callObj, callFunc];
dojo.widget.TreeLoadingController.prototype.doCreateChild.apply(this, args);
}});
 
/trunk/api/js/dojo/src/AdapterRegistry.js
New file
0,0 → 1,42
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.AdapterRegistry");
dojo.require("dojo.lang.func");
dojo.AdapterRegistry = function (returnWrappers) {
this.pairs = [];
this.returnWrappers = returnWrappers || false;
};
dojo.lang.extend(dojo.AdapterRegistry, {register:function (name, check, wrap, directReturn, override) {
var type = (override) ? "unshift" : "push";
this.pairs[type]([name, check, wrap, directReturn]);
}, match:function () {
for (var i = 0; i < this.pairs.length; i++) {
var pair = this.pairs[i];
if (pair[1].apply(this, arguments)) {
if ((pair[3]) || (this.returnWrappers)) {
return pair[2];
} else {
return pair[2].apply(this, arguments);
}
}
}
throw new Error("No match found");
}, unregister:function (name) {
for (var i = 0; i < this.pairs.length; i++) {
var pair = this.pairs[i];
if (pair[0] == name) {
this.pairs.splice(i, 1);
return true;
}
}
return false;
}});
 
/trunk/api/js/dojo/src/text/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.text.String", "dojo.text.Builder"]});
dojo.deprecated("dojo.text", "textDirectory moved to cal, text.String and text.Builder havne't been here for awhile", "0.5");
 
/trunk/api/js/dojo/src/text/textDirectory.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.cal.textDirectory");
dojo.deprecate("dojo.text.textDirectory", "use dojo.cal.textDirectory", "0.5");
 
/trunk/api/js/dojo/src/json.js
New file
0,0 → 1,96
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.json");
dojo.require("dojo.lang.func");
dojo.require("dojo.string.extras");
dojo.require("dojo.AdapterRegistry");
dojo.json = {jsonRegistry:new dojo.AdapterRegistry(), register:function (name, check, wrap, override) {
dojo.json.jsonRegistry.register(name, check, wrap, override);
}, evalJson:function (json) {
try {
return eval("(" + json + ")");
}
catch (e) {
dojo.debug(e);
return json;
}
}, serialize:function (o) {
var objtype = typeof (o);
if (objtype == "undefined") {
return "undefined";
} else {
if ((objtype == "number") || (objtype == "boolean")) {
return o + "";
} else {
if (o === null) {
return "null";
}
}
}
if (objtype == "string") {
return dojo.string.escapeString(o);
}
var me = arguments.callee;
var newObj;
if (typeof (o.__json__) == "function") {
newObj = o.__json__();
if (o !== newObj) {
return me(newObj);
}
}
if (typeof (o.json) == "function") {
newObj = o.json();
if (o !== newObj) {
return me(newObj);
}
}
if (objtype != "function" && typeof (o.length) == "number") {
var res = [];
for (var i = 0; i < o.length; i++) {
var val = me(o[i]);
if (typeof (val) != "string") {
val = "undefined";
}
res.push(val);
}
return "[" + res.join(",") + "]";
}
try {
window.o = o;
newObj = dojo.json.jsonRegistry.match(o);
return me(newObj);
}
catch (e) {
}
if (objtype == "function") {
return null;
}
res = [];
for (var k in o) {
var useKey;
if (typeof (k) == "number") {
useKey = "\"" + k + "\"";
} else {
if (typeof (k) == "string") {
useKey = dojo.string.escapeString(k);
} else {
continue;
}
}
val = me(o[k]);
if (typeof (val) != "string") {
continue;
}
res.push(useKey + ":" + val);
}
return "{" + res.join(",") + "}";
}};
 
/trunk/api/js/dojo/src/selection/Selection.js
New file
0,0 → 1,314
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.selection.Selection");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.common");
dojo.require("dojo.math");
dojo.declare("dojo.selection.Selection", null, {initializer:function (items, isCollection) {
this.items = [];
this.selection = [];
this._pivotItems = [];
this.clearItems();
if (items) {
if (isCollection) {
this.setItemsCollection(items);
} else {
this.setItems(items);
}
}
}, items:null, selection:null, lastSelected:null, allowImplicit:true, length:0, isGrowable:true, _pivotItems:null, _pivotItem:null, onSelect:function (item) {
}, onDeselect:function (item) {
}, onSelectChange:function (item, selected) {
}, _find:function (item, inSelection) {
if (inSelection) {
return dojo.lang.find(this.selection, item);
} else {
return dojo.lang.find(this.items, item);
}
}, isSelectable:function (item) {
return true;
}, setItems:function () {
this.clearItems();
this.addItems.call(this, arguments);
}, setItemsCollection:function (collection) {
this.items = collection;
}, addItems:function () {
var args = dojo.lang.unnest(arguments);
for (var i = 0; i < args.length; i++) {
this.items.push(args[i]);
}
}, addItemsAt:function (item, before) {
if (this.items.length == 0) {
return this.addItems(dojo.lang.toArray(arguments, 2));
}
if (!this.isItem(item)) {
item = this.items[item];
}
if (!item) {
throw new Error("addItemsAt: item doesn't exist");
}
var idx = this._find(item);
if (idx > 0 && before) {
idx--;
}
for (var i = 2; i < arguments.length; i++) {
if (!this.isItem(arguments[i])) {
this.items.splice(idx++, 0, arguments[i]);
}
}
}, removeItem:function (item) {
var idx = this._find(item);
if (idx > -1) {
this.items.splice(idx, 1);
}
idx = this._find(item, true);
if (idx > -1) {
this.selection.splice(idx, 1);
}
}, clearItems:function () {
this.items = [];
this.deselectAll();
}, isItem:function (item) {
return this._find(item) > -1;
}, isSelected:function (item) {
return this._find(item, true) > -1;
}, selectFilter:function (item, selection, add, grow) {
return true;
}, update:function (item, add, grow, noToggle) {
if (!this.isItem(item)) {
return false;
}
if (this.isGrowable && grow) {
if ((!this.isSelected(item)) && this.selectFilter(item, this.selection, false, true)) {
this.grow(item);
this.lastSelected = item;
}
} else {
if (add) {
if (this.selectFilter(item, this.selection, true, false)) {
if (noToggle) {
if (this.select(item)) {
this.lastSelected = item;
}
} else {
if (this.toggleSelected(item)) {
this.lastSelected = item;
}
}
}
} else {
this.deselectAll();
this.select(item);
}
}
this.length = this.selection.length;
return true;
}, grow:function (toItem, fromItem) {
if (!this.isGrowable) {
return;
}
if (arguments.length == 1) {
fromItem = this._pivotItem;
if (!fromItem && this.allowImplicit) {
fromItem = this.items[0];
}
}
if (!toItem || !fromItem) {
return false;
}
var fromIdx = this._find(fromItem);
var toDeselect = {};
var lastIdx = -1;
if (this.lastSelected) {
lastIdx = this._find(this.lastSelected);
var step = fromIdx < lastIdx ? -1 : 1;
var range = dojo.math.range(lastIdx, fromIdx, step);
for (var i = 0; i < range.length; i++) {
toDeselect[range[i]] = true;
}
}
var toIdx = this._find(toItem);
var step = fromIdx < toIdx ? -1 : 1;
var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;
var range = dojo.math.range(toIdx, fromIdx, step);
if (range.length) {
for (var i = range.length - 1; i >= 0; i--) {
var item = this.items[range[i]];
if (this.selectFilter(item, this.selection, false, true)) {
if (this.select(item, true) || shrink) {
this.lastSelected = item;
}
if (range[i] in toDeselect) {
delete toDeselect[range[i]];
}
}
}
} else {
this.lastSelected = fromItem;
}
for (var i in toDeselect) {
if (this.items[i] == this.lastSelected) {
}
this.deselect(this.items[i]);
}
this._updatePivot();
}, growUp:function () {
if (!this.isGrowable) {
return;
}
var idx = this._find(this.lastSelected) - 1;
while (idx >= 0) {
if (this.selectFilter(this.items[idx], this.selection, false, true)) {
this.grow(this.items[idx]);
break;
}
idx--;
}
}, growDown:function () {
if (!this.isGrowable) {
return;
}
var idx = this._find(this.lastSelected);
if (idx < 0 && this.allowImplicit) {
this.select(this.items[0]);
idx = 0;
}
idx++;
while (idx > 0 && idx < this.items.length) {
if (this.selectFilter(this.items[idx], this.selection, false, true)) {
this.grow(this.items[idx]);
break;
}
idx++;
}
}, toggleSelected:function (item, noPivot) {
if (this.isItem(item)) {
if (this.select(item, noPivot)) {
return 1;
}
if (this.deselect(item)) {
return -1;
}
}
return 0;
}, select:function (item, noPivot) {
if (this.isItem(item) && !this.isSelected(item) && this.isSelectable(item)) {
this.selection.push(item);
this.lastSelected = item;
this.onSelect(item);
this.onSelectChange(item, true);
if (!noPivot) {
this._addPivot(item);
}
this.length = this.selection.length;
return true;
}
return false;
}, deselect:function (item) {
var idx = this._find(item, true);
if (idx > -1) {
this.selection.splice(idx, 1);
this.onDeselect(item);
this.onSelectChange(item, false);
if (item == this.lastSelected) {
this.lastSelected = null;
}
this._removePivot(item);
this.length = this.selection.length;
return true;
}
return false;
}, selectAll:function () {
for (var i = 0; i < this.items.length; i++) {
this.select(this.items[i]);
}
}, deselectAll:function () {
while (this.selection && this.selection.length) {
this.deselect(this.selection[0]);
}
}, selectNext:function () {
var idx = this._find(this.lastSelected);
while (idx > -1 && ++idx < this.items.length) {
if (this.isSelectable(this.items[idx])) {
this.deselectAll();
this.select(this.items[idx]);
return true;
}
}
return false;
}, selectPrevious:function () {
var idx = this._find(this.lastSelected);
while (idx-- > 0) {
if (this.isSelectable(this.items[idx])) {
this.deselectAll();
this.select(this.items[idx]);
return true;
}
}
return false;
}, selectFirst:function () {
this.deselectAll();
var idx = 0;
while (this.items[idx] && !this.select(this.items[idx])) {
idx++;
}
return this.items[idx] ? true : false;
}, selectLast:function () {
this.deselectAll();
var idx = this.items.length - 1;
while (this.items[idx] && !this.select(this.items[idx])) {
idx--;
}
return this.items[idx] ? true : false;
}, _addPivot:function (item, andClear) {
this._pivotItem = item;
if (andClear) {
this._pivotItems = [item];
} else {
this._pivotItems.push(item);
}
}, _removePivot:function (item) {
var i = dojo.lang.find(this._pivotItems, item);
if (i > -1) {
this._pivotItems.splice(i, 1);
this._pivotItem = this._pivotItems[this._pivotItems.length - 1];
}
this._updatePivot();
}, _updatePivot:function () {
if (this._pivotItems.length == 0) {
if (this.lastSelected) {
this._addPivot(this.lastSelected);
}
}
}, sorted:function () {
return dojo.lang.toArray(this.selection).sort(dojo.lang.hitch(this, function (a, b) {
var A = this._find(a), B = this._find(b);
if (A > B) {
return 1;
} else {
if (A < B) {
return -1;
} else {
return 0;
}
}
}));
}, updateSelected:function () {
for (var i = 0; i < this.selection.length; i++) {
if (this._find(this.selection[i]) < 0) {
var removed = this.selection.splice(i, 1);
this._removePivot(removed[0]);
}
}
this.length = this.selection.length;
}});
 
/trunk/api/js/dojo/src/validate/common.js
New file
0,0 → 1,94
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.common");
dojo.require("dojo.regexp");
dojo.validate.isText = function (value, flags) {
flags = (typeof flags == "object") ? flags : {};
if (/^\s*$/.test(value)) {
return false;
}
if (typeof flags.length == "number" && flags.length != value.length) {
return false;
}
if (typeof flags.minlength == "number" && flags.minlength > value.length) {
return false;
}
if (typeof flags.maxlength == "number" && flags.maxlength < value.length) {
return false;
}
return true;
};
dojo.validate.isInteger = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
return re.test(value);
};
dojo.validate.isRealNumber = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
return re.test(value);
};
dojo.validate.isCurrency = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
return re.test(value);
};
dojo.validate._isInRangeCache = {};
dojo.validate.isInRange = function (value, flags) {
value = value.replace(dojo.lang.has(flags, "separator") ? flags.separator : ",", "", "g").replace(dojo.lang.has(flags, "symbol") ? flags.symbol : "$", "");
if (isNaN(value)) {
return false;
}
flags = (typeof flags == "object") ? flags : {};
var max = (typeof flags.max == "number") ? flags.max : Infinity;
var min = (typeof flags.min == "number") ? flags.min : -Infinity;
var dec = (typeof flags.decimal == "string") ? flags.decimal : ".";
var cache = dojo.validate._isInRangeCache;
var cacheIdx = value + "max" + max + "min" + min + "dec" + dec;
if (typeof cache[cacheIdx] != "undefined") {
return cache[cacheIdx];
}
var pattern = "[^" + dec + "\\deE+-]";
value = value.replace(RegExp(pattern, "g"), "");
value = value.replace(/^([+-]?)(\D*)/, "$1");
value = value.replace(/(\D*)$/, "");
pattern = "(\\d)[" + dec + "](\\d)";
value = value.replace(RegExp(pattern, "g"), "$1.$2");
value = Number(value);
if (value < min || value > max) {
cache[cacheIdx] = false;
return false;
}
cache[cacheIdx] = true;
return true;
};
dojo.validate.isNumberFormat = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.numberFormat(flags) + "$", "i");
return re.test(value);
};
dojo.validate.isValidLuhn = function (value) {
var sum, parity, curDigit;
if (typeof value != "string") {
value = String(value);
}
value = value.replace(/[- ]/g, "");
parity = value.length % 2;
sum = 0;
for (var i = 0; i < value.length; i++) {
curDigit = parseInt(value.charAt(i));
if (i % 2 == parity) {
curDigit *= 2;
}
if (curDigit > 9) {
curDigit -= 9;
}
sum += curDigit;
}
return !(sum % 10);
};
 
/trunk/api/js/dojo/src/validate/de.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.de");
dojo.require("dojo.validate.common");
dojo.validate.isGermanCurrency = function (value) {
var flags = {symbol:"\u20ac", placement:"after", signPlacement:"begin", decimal:",", separator:"."};
return dojo.validate.isCurrency(value, flags);
};
 
/trunk/api/js/dojo/src/validate/jp.js
New file
0,0 → 1,17
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.jp");
dojo.require("dojo.validate.common");
dojo.validate.isJapaneseCurrency = function (value) {
var flags = {symbol:"\xa5", fractional:false};
return dojo.validate.isCurrency(value, flags);
};
 
/trunk/api/js/dojo/src/validate/datetime.js
New file
0,0 → 1,90
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.datetime");
dojo.require("dojo.validate.common");
dojo.validate.isValidTime = function (value, flags) {
dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
var re = new RegExp("^" + dojo.regexp.time(flags) + "$", "i");
return re.test(value);
};
dojo.validate.is12HourTime = function (value) {
dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
return dojo.validate.isValidTime(value, {format:["h:mm:ss t", "h:mm t"]});
};
dojo.validate.is24HourTime = function (value) {
dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
return dojo.validate.isValidTime(value, {format:["HH:mm:ss", "HH:mm"]});
};
dojo.validate.isValidDate = function (dateValue, format) {
dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
if (typeof format == "object" && typeof format.format == "string") {
format = format.format;
}
if (typeof format != "string") {
format = "MM/DD/YYYY";
}
var reLiteral = format.replace(/([$^.*+?=!:|\/\\\(\)\[\]\{\}])/g, "\\$1");
reLiteral = reLiteral.replace("YYYY", "([0-9]{4})");
reLiteral = reLiteral.replace("MM", "(0[1-9]|10|11|12)");
reLiteral = reLiteral.replace("M", "([1-9]|10|11|12)");
reLiteral = reLiteral.replace("DDD", "(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])");
reLiteral = reLiteral.replace("DD", "(0[1-9]|[12][0-9]|30|31)");
reLiteral = reLiteral.replace("D", "([1-9]|[12][0-9]|30|31)");
reLiteral = reLiteral.replace("ww", "(0[1-9]|[1-4][0-9]|5[0-3])");
reLiteral = reLiteral.replace("d", "([1-7])");
reLiteral = "^" + reLiteral + "$";
var re = new RegExp(reLiteral);
if (!re.test(dateValue)) {
return false;
}
var year = 0, month = 1, date = 1, dayofyear = 1, week = 1, day = 1;
var tokens = format.match(/(YYYY|MM|M|DDD|DD|D|ww|d)/g);
var values = re.exec(dateValue);
for (var i = 0; i < tokens.length; i++) {
switch (tokens[i]) {
case "YYYY":
year = Number(values[i + 1]);
break;
case "M":
case "MM":
month = Number(values[i + 1]);
break;
case "D":
case "DD":
date = Number(values[i + 1]);
break;
case "DDD":
dayofyear = Number(values[i + 1]);
break;
case "ww":
week = Number(values[i + 1]);
break;
case "d":
day = Number(values[i + 1]);
break;
}
}
var leapyear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (date == 31 && (month == 4 || month == 6 || month == 9 || month == 11)) {
return false;
}
if (date >= 30 && month == 2) {
return false;
}
if (date == 29 && month == 2 && !leapyear) {
return false;
}
if (dayofyear == 366 && !leapyear) {
return false;
}
return true;
};
 
/trunk/api/js/dojo/src/validate/check.js
New file
0,0 → 1,232
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.check");
dojo.require("dojo.validate.common");
dojo.require("dojo.lang.common");
dojo.validate.check = function (form, profile) {
var missing = [];
var invalid = [];
var results = {isSuccessful:function () {
return (!this.hasInvalid() && !this.hasMissing());
}, hasMissing:function () {
return (missing.length > 0);
}, getMissing:function () {
return missing;
}, isMissing:function (elemname) {
for (var i = 0; i < missing.length; i++) {
if (elemname == missing[i]) {
return true;
}
}
return false;
}, hasInvalid:function () {
return (invalid.length > 0);
}, getInvalid:function () {
return invalid;
}, isInvalid:function (elemname) {
for (var i = 0; i < invalid.length; i++) {
if (elemname == invalid[i]) {
return true;
}
}
return false;
}};
if (profile.trim instanceof Array) {
for (var i = 0; i < profile.trim.length; i++) {
var elem = form[profile.trim[i]];
if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
elem.value = elem.value.replace(/(^\s*|\s*$)/g, "");
}
}
if (profile.uppercase instanceof Array) {
for (var i = 0; i < profile.uppercase.length; i++) {
var elem = form[profile.uppercase[i]];
if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
elem.value = elem.value.toUpperCase();
}
}
if (profile.lowercase instanceof Array) {
for (var i = 0; i < profile.lowercase.length; i++) {
var elem = form[profile.lowercase[i]];
if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
elem.value = elem.value.toLowerCase();
}
}
if (profile.ucfirst instanceof Array) {
for (var i = 0; i < profile.ucfirst.length; i++) {
var elem = form[profile.ucfirst[i]];
if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
elem.value = elem.value.replace(/\b\w+\b/g, function (word) {
return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
});
}
}
if (profile.digit instanceof Array) {
for (var i = 0; i < profile.digit.length; i++) {
var elem = form[profile.digit[i]];
if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
elem.value = elem.value.replace(/\D/g, "");
}
}
if (profile.required instanceof Array) {
for (var i = 0; i < profile.required.length; i++) {
if (!dojo.lang.isString(profile.required[i])) {
continue;
}
var elem = form[profile.required[i]];
if (!dj_undef("type", elem) && (elem.type == "text" || elem.type == "textarea" || elem.type == "password") && /^\s*$/.test(elem.value)) {
missing[missing.length] = elem.name;
} else {
if (!dj_undef("type", elem) && (elem.type == "select-one" || elem.type == "select-multiple") && (elem.selectedIndex == -1 || /^\s*$/.test(elem.options[elem.selectedIndex].value))) {
missing[missing.length] = elem.name;
} else {
if (elem instanceof Array) {
var checked = false;
for (var j = 0; j < elem.length; j++) {
if (elem[j].checked) {
checked = true;
}
}
if (!checked) {
missing[missing.length] = elem[0].name;
}
}
}
}
}
}
if (profile.required instanceof Array) {
for (var i = 0; i < profile.required.length; i++) {
if (!dojo.lang.isObject(profile.required[i])) {
continue;
}
var elem, numRequired;
for (var name in profile.required[i]) {
elem = form[name];
numRequired = profile.required[i][name];
}
if (elem instanceof Array) {
var checked = 0;
for (var j = 0; j < elem.length; j++) {
if (elem[j].checked) {
checked++;
}
}
if (checked < numRequired) {
missing[missing.length] = elem[0].name;
}
} else {
if (!dj_undef("type", elem) && elem.type == "select-multiple") {
var selected = 0;
for (var j = 0; j < elem.options.length; j++) {
if (elem.options[j].selected && !/^\s*$/.test(elem.options[j].value)) {
selected++;
}
}
if (selected < numRequired) {
missing[missing.length] = elem.name;
}
}
}
}
}
if (dojo.lang.isObject(profile.dependencies) || dojo.lang.isObject(profile.dependancies)) {
if (profile["dependancies"]) {
dojo.deprecated("dojo.validate.check", "profile 'dependancies' is deprecated, please use " + "'dependencies'", "0.5");
profile.dependencies = profile.dependancies;
}
for (name in profile.dependencies) {
var elem = form[name];
if (dj_undef("type", elem)) {
continue;
}
if (elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
continue;
}
if (/\S+/.test(elem.value)) {
continue;
}
if (results.isMissing(elem.name)) {
continue;
}
var target = form[profile.dependencies[name]];
if (target.type != "text" && target.type != "textarea" && target.type != "password") {
continue;
}
if (/^\s*$/.test(target.value)) {
continue;
}
missing[missing.length] = elem.name;
}
}
if (dojo.lang.isObject(profile.constraints)) {
for (name in profile.constraints) {
var elem = form[name];
if (!elem) {
continue;
}
if (!dj_undef("tagName", elem) && (elem.tagName.toLowerCase().indexOf("input") >= 0 || elem.tagName.toLowerCase().indexOf("textarea") >= 0) && /^\s*$/.test(elem.value)) {
continue;
}
var isValid = true;
if (dojo.lang.isFunction(profile.constraints[name])) {
isValid = profile.constraints[name](elem.value);
} else {
if (dojo.lang.isArray(profile.constraints[name])) {
if (dojo.lang.isArray(profile.constraints[name][0])) {
for (var i = 0; i < profile.constraints[name].length; i++) {
isValid = dojo.validate.evaluateConstraint(profile, profile.constraints[name][i], name, elem);
if (!isValid) {
break;
}
}
} else {
isValid = dojo.validate.evaluateConstraint(profile, profile.constraints[name], name, elem);
}
}
}
if (!isValid) {
invalid[invalid.length] = elem.name;
}
}
}
if (dojo.lang.isObject(profile.confirm)) {
for (name in profile.confirm) {
var elem = form[name];
var target = form[profile.confirm[name]];
if (dj_undef("type", elem) || dj_undef("type", target) || (elem.type != "text" && elem.type != "textarea" && elem.type != "password") || (target.type != elem.type) || (target.value == elem.value) || (results.isInvalid(elem.name)) || (/^\s*$/.test(target.value))) {
continue;
}
invalid[invalid.length] = elem.name;
}
}
return results;
};
dojo.validate.evaluateConstraint = function (profile, constraint, fieldName, elem) {
var isValidSomething = constraint[0];
var params = constraint.slice(1);
params.unshift(elem.value);
if (typeof isValidSomething != "undefined") {
return isValidSomething.apply(null, params);
}
return false;
};
 
/trunk/api/js/dojo/src/validate/web.js
New file
0,0 → 1,41
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.web");
dojo.require("dojo.validate.common");
dojo.validate.isIpAddress = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.ipAddress(flags) + "$", "i");
return re.test(value);
};
dojo.validate.isUrl = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.url(flags) + "$", "i");
return re.test(value);
};
dojo.validate.isEmailAddress = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.emailAddress(flags) + "$", "i");
return re.test(value);
};
dojo.validate.isEmailAddressList = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.emailAddressList(flags) + "$", "i");
return re.test(value);
};
dojo.validate.getEmailAddressList = function (value, flags) {
if (!flags) {
flags = {};
}
if (!flags.listSeparator) {
flags.listSeparator = "\\s;,";
}
if (dojo.validate.isEmailAddressList(value, flags)) {
return value.split(new RegExp("\\s*[" + flags.listSeparator + "]\\s*"));
}
return [];
};
 
/trunk/api/js/dojo/src/validate/creditCard.js
New file
0,0 → 1,62
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.creditCard");
dojo.require("dojo.lang.common");
dojo.require("dojo.validate.common");
dojo.validate.isValidCreditCard = function (value, ccType) {
if (value && ccType && ((ccType.toLowerCase() == "er" || dojo.validate.isValidLuhn(value)) && (dojo.validate.isValidCreditCardNumber(value, ccType.toLowerCase())))) {
return true;
}
return false;
};
dojo.validate.isValidCreditCardNumber = function (value, ccType) {
if (typeof value != "string") {
value = String(value);
}
value = value.replace(/[- ]/g, "");
var results = [];
var cardinfo = {"mc":"5[1-5][0-9]{14}", "ec":"5[1-5][0-9]{14}", "vi":"4([0-9]{12}|[0-9]{15})", "ax":"3[47][0-9]{13}", "dc":"3(0[0-5][0-9]{11}|[68][0-9]{12})", "bl":"3(0[0-5][0-9]{11}|[68][0-9]{12})", "di":"6011[0-9]{12}", "jcb":"(3[0-9]{15}|(2131|1800)[0-9]{11})", "er":"2(014|149)[0-9]{11}"};
if (ccType && dojo.lang.has(cardinfo, ccType.toLowerCase())) {
return Boolean(value.match(cardinfo[ccType.toLowerCase()]));
} else {
for (var p in cardinfo) {
if (value.match("^" + cardinfo[p] + "$") != null) {
results.push(p);
}
}
return (results.length) ? results.join("|") : false;
}
};
dojo.validate.isValidCvv = function (value, ccType) {
if (typeof value != "string") {
value = String(value);
}
var format;
switch (ccType.toLowerCase()) {
case "mc":
case "ec":
case "vi":
case "di":
format = "###";
break;
case "ax":
format = "####";
break;
default:
return false;
}
var flags = {format:format};
if ((value.length == format.length) && (dojo.validate.isNumberFormat(value, flags))) {
return true;
}
return false;
};
 
/trunk/api/js/dojo/src/validate/__package__.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.validate");
dojo.kwCompoundRequire({common:["dojo.validate.check", "dojo.validate.datetime", "dojo.validate.de", "dojo.validate.jp", "dojo.validate.us", "dojo.validate.web"]});
dojo.provide("dojo.validate.*");
 
/trunk/api/js/dojo/src/validate/us.js
New file
0,0 → 1,32
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.validate.us");
dojo.require("dojo.validate.common");
dojo.validate.us.isCurrency = function (value, flags) {
return dojo.validate.isCurrency(value, flags);
};
dojo.validate.us.isState = function (value, flags) {
var re = new RegExp("^" + dojo.regexp.us.state(flags) + "$", "i");
return re.test(value);
};
dojo.validate.us.isPhoneNumber = function (value) {
var flags = {format:["###-###-####", "(###) ###-####", "(###) ### ####", "###.###.####", "###/###-####", "### ### ####", "###-###-#### x#???", "(###) ###-#### x#???", "(###) ### #### x#???", "###.###.#### x#???", "###/###-#### x#???", "### ### #### x#???", "##########"]};
return dojo.validate.isNumberFormat(value, flags);
};
dojo.validate.us.isSocialSecurityNumber = function (value) {
var flags = {format:["###-##-####", "### ## ####", "#########"]};
return dojo.validate.isNumberFormat(value, flags);
};
dojo.validate.us.isZipCode = function (value) {
var flags = {format:["#####-####", "##### ####", "#########", "#####"]};
return dojo.validate.isNumberFormat(value, flags);
};
 
/trunk/api/js/dojo/src/Deferred.js
New file
0,0 → 1,163
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.Deferred");
dojo.require("dojo.lang.func");
dojo.Deferred = function (canceller) {
this.chain = [];
this.id = this._nextId();
this.fired = -1;
this.paused = 0;
this.results = [null, null];
this.canceller = canceller;
this.silentlyCancelled = false;
};
dojo.lang.extend(dojo.Deferred, {getFunctionFromArgs:function () {
var a = arguments;
if ((a[0]) && (!a[1])) {
if (dojo.lang.isFunction(a[0])) {
return a[0];
} else {
if (dojo.lang.isString(a[0])) {
return dj_global[a[0]];
}
}
} else {
if ((a[0]) && (a[1])) {
return dojo.lang.hitch(a[0], a[1]);
}
}
return null;
}, makeCalled:function () {
var deferred = new dojo.Deferred();
deferred.callback();
return deferred;
}, repr:function () {
var state;
if (this.fired == -1) {
state = "unfired";
} else {
if (this.fired == 0) {
state = "success";
} else {
state = "error";
}
}
return "Deferred(" + this.id + ", " + state + ")";
}, toString:dojo.lang.forward("repr"), _nextId:(function () {
var n = 1;
return function () {
return n++;
};
})(), cancel:function () {
if (this.fired == -1) {
if (this.canceller) {
this.canceller(this);
} else {
this.silentlyCancelled = true;
}
if (this.fired == -1) {
this.errback(new Error(this.repr()));
}
} else {
if ((this.fired == 0) && (this.results[0] instanceof dojo.Deferred)) {
this.results[0].cancel();
}
}
}, _pause:function () {
this.paused++;
}, _unpause:function () {
this.paused--;
if ((this.paused == 0) && (this.fired >= 0)) {
this._fire();
}
}, _continue:function (res) {
this._resback(res);
this._unpause();
}, _resback:function (res) {
this.fired = ((res instanceof Error) ? 1 : 0);
this.results[this.fired] = res;
this._fire();
}, _check:function () {
if (this.fired != -1) {
if (!this.silentlyCancelled) {
dojo.raise("already called!");
}
this.silentlyCancelled = false;
return;
}
}, callback:function (res) {
this._check();
this._resback(res);
}, errback:function (res) {
this._check();
if (!(res instanceof Error)) {
res = new Error(res);
}
this._resback(res);
}, addBoth:function (cb, cbfn) {
var enclosed = this.getFunctionFromArgs(cb, cbfn);
if (arguments.length > 2) {
enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
}
return this.addCallbacks(enclosed, enclosed);
}, addCallback:function (cb, cbfn) {
var enclosed = this.getFunctionFromArgs(cb, cbfn);
if (arguments.length > 2) {
enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
}
return this.addCallbacks(enclosed, null);
}, addErrback:function (cb, cbfn) {
var enclosed = this.getFunctionFromArgs(cb, cbfn);
if (arguments.length > 2) {
enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
}
return this.addCallbacks(null, enclosed);
return this.addCallbacks(null, cbfn);
}, addCallbacks:function (cb, eb) {
this.chain.push([cb, eb]);
if (this.fired >= 0) {
this._fire();
}
return this;
}, _fire:function () {
var chain = this.chain;
var fired = this.fired;
var res = this.results[fired];
var self = this;
var cb = null;
while (chain.length > 0 && this.paused == 0) {
var pair = chain.shift();
var f = pair[fired];
if (f == null) {
continue;
}
try {
res = f(res);
fired = ((res instanceof Error) ? 1 : 0);
if (res instanceof dojo.Deferred) {
cb = function (res) {
self._continue(res);
};
this._pause();
}
}
catch (err) {
fired = 1;
res = err;
}
}
this.fired = fired;
this.results[fired] = res;
if ((cb) && (this.paused)) {
res.addBoth(cb);
}
}});
 
/trunk/api/js/dojo/src/lang.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang");
dojo.require("dojo.lang.common");
dojo.deprecated("dojo.lang", "replaced by dojo.lang.common", "0.5");
 
/trunk/api/js/dojo/src/charting/PlotArea.js
New file
0,0 → 1,135
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.PlotArea");
dojo.require("dojo.lang.common");
dojo.require("dojo.gfx.color");
dojo.require("dojo.gfx.color.hsl");
dojo.require("dojo.charting.Plot");
dojo.charting.PlotArea = function () {
var id = "dojo-charting-plotarea-" + dojo.charting.PlotArea.count++;
this.getId = function () {
return id;
};
this.setId = function (key) {
id = key;
};
this.areaType = "standard";
this.plots = [];
this.size = {width:600, height:400};
this.padding = {top:10, right:10, bottom:20, left:20};
this.nodes = {main:null, area:null, background:null, axes:null, plots:null};
this._color = {h:140, s:120, l:120, step:27};
};
dojo.charting.PlotArea.count = 0;
dojo.extend(dojo.charting.PlotArea, {nextColor:function () {
var rgb = dojo.gfx.color.hsl2rgb(this._color.h, this._color.s, this._color.l);
this._color.h = (this._color.h + this._color.step) % 360;
while (this._color.h < 140) {
this._color.h += this._color.step;
}
return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]);
}, getArea:function () {
return {left:this.padding.left, right:this.size.width - this.padding.right, top:this.padding.top, bottom:this.size.height - this.padding.bottom, toString:function () {
var a = [this.top, this.right, this.bottom, this.left];
return "[" + a.join() + "]";
}};
}, getAxes:function () {
var axes = {};
for (var i = 0; i < this.plots.length; i++) {
var plot = this.plots[i];
axes[plot.axisX.getId()] = {axis:plot.axisX, drawAgainst:plot.axisY, plot:plot, plane:"x"};
axes[plot.axisY.getId()] = {axis:plot.axisY, drawAgainst:plot.axisX, plot:plot, plane:"y"};
}
return axes;
}, getLegendInfo:function () {
var a = [];
for (var i = 0; i < this.plots.length; i++) {
for (var j = 0; j < this.plots[i].series.length; j++) {
var data = this.plots[i].series[j].data;
a.push({label:data.label, color:data.color});
}
}
return a;
}, setAxesRanges:function () {
var ranges = {};
var axes = {};
for (var i = 0; i < this.plots.length; i++) {
var plot = this.plots[i];
var ranges = plot.getRanges();
var x = ranges.x;
var y = ranges.y;
var ax, ay;
if (!axes[plot.axisX.getId()]) {
axes[plot.axisX.getId()] = plot.axisX;
ranges[plot.axisX.getId()] = {upper:x.upper, lower:x.lower};
}
ax = ranges[plot.axisX.getId()];
ax.upper = Math.max(ax.upper, x.upper);
ax.lower = Math.min(ax.lower, x.lower);
if (!axes[plot.axisY.getId()]) {
axes[plot.axisY.getId()] = plot.axisY;
ranges[plot.axisY.getId()] = {upper:y.upper, lower:y.lower};
}
ay = ranges[plot.axisY.getId()];
ay.upper = Math.max(ay.upper, y.upper);
ay.lower = Math.min(ay.lower, y.lower);
}
for (var p in axes) {
axes[p].range = ranges[p];
}
}, render:function (kwArgs, applyToData) {
if (!this.nodes.main || !this.nodes.area || !this.nodes.background || !this.nodes.plots || !this.nodes.axes) {
this.initialize();
}
this.resize();
for (var i = 0; i < this.plots.length; i++) {
var plot = this.plots[i];
if (plot.dataNode) {
this.nodes.plots.removeChild(plot.dataNode);
}
var target = this.initializePlot(plot);
switch (plot.renderType) {
case dojo.charting.RenderPlotSeries.Grouped:
if (plot.series[0]) {
target.appendChild(plot.series[0].plotter(this, plot, kwArgs, applyToData));
}
break;
case dojo.charting.RenderPlotSeries.Singly:
default:
for (var j = 0; j < plot.series.length; j++) {
var series = plot.series[j];
var data = series.data.evaluate(kwArgs);
target.appendChild(series.plotter(data, this, plot, applyToData));
}
}
this.nodes.plots.appendChild(target);
}
}, destroy:function () {
for (var i = 0; i < this.plots.length; i++) {
this.plots[i].destroy();
}
for (var p in this.nodes) {
var node = this.nodes[p];
if (!node) {
continue;
}
if (!node.childNodes) {
continue;
}
while (node.childNodes.length > 0) {
node.removeChild(node.childNodes[0]);
}
this.nodes[p] = null;
}
}});
dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.PlotArea");
dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.PlotArea");
 
/trunk/api/js/dojo/src/charting/__package__.js
New file
0,0 → 1,12
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.*");
 
/trunk/api/js/dojo/src/charting/Series.js
New file
0,0 → 1,192
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.Series");
dojo.require("dojo.lang.common");
dojo.require("dojo.charting.Plotters");
dojo.charting.Series = function (kwArgs) {
var args = kwArgs || {length:1};
this.dataSource = args.dataSource || null;
this.bindings = {};
this.color = args.color;
this.label = args.label;
if (args.bindings) {
for (var p in args.bindings) {
this.addBinding(p, args.bindings[p]);
}
}
};
dojo.extend(dojo.charting.Series, {bind:function (src, bindings) {
this.dataSource = src;
this.bindings = bindings;
}, addBinding:function (name, binding) {
this.bindings[name] = binding;
}, evaluate:function (kwArgs) {
var ret = [];
var a = this.dataSource.getData();
var l = a.length;
var start = 0;
var end = l;
if (kwArgs) {
if (kwArgs.between) {
for (var i = 0; i < l; i++) {
var fld = this.dataSource.getField(a[i], kwArgs.between.field);
if (fld >= kwArgs.between.low && fld <= kwArgs.between.high) {
var o = {src:a[i], series:this};
for (var p in this.bindings) {
o[p] = this.dataSource.getField(a[i], this.bindings[p]);
}
ret.push(o);
}
}
} else {
if (kwArgs.from || kwArgs.length) {
if (kwArgs.from) {
start = Math.max(kwArgs.from, 0);
if (kwArgs.to) {
end = Math.min(kwArgs.to, end);
}
} else {
if (kwArgs.length < 0) {
start = Math.max((end + length), 0);
} else {
end = Math.min((start + length), end);
}
}
for (var i = start; i < end; i++) {
var o = {src:a[i], series:this};
for (var p in this.bindings) {
o[p] = this.dataSource.getField(a[i], this.bindings[p]);
}
ret.push(o);
}
}
}
} else {
for (var i = start; i < end; i++) {
var o = {src:a[i], series:this};
for (var p in this.bindings) {
o[p] = this.dataSource.getField(a[i], this.bindings[p]);
}
ret.push(o);
}
}
if (ret.length > 0 && typeof (ret[0].x) != "undefined") {
ret.sort(function (a, b) {
if (a.x > b.x) {
return 1;
}
if (a.x < b.x) {
return -1;
}
return 0;
});
}
return ret;
}, trends:{createRange:function (values, len) {
var idx = values.length - 1;
var length = (len || values.length);
return {"index":idx, "length":length, "start":Math.max(idx - length, 0)};
}, mean:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var total = 0;
var count = 0;
for (var i = range.index; i >= range.start; i--) {
total += values[i].y;
count++;
}
total /= Math.max(count, 1);
return total;
}, variance:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var total = 0;
var square = 0;
var count = 0;
for (var i = range.index; i >= range.start; i--) {
total += values[i].y;
square += Math.pow(values[i].y, 2);
count++;
}
return (square / count) - Math.pow(total / count, 2);
}, standardDeviation:function (values, len) {
return Math.sqrt(this.getVariance(values, len));
}, max:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var max = Number.MIN_VALUE;
for (var i = range.index; i >= range.start; i--) {
max = Math.max(values[i].y, max);
}
return max;
}, min:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var min = Number.MAX_VALUE;
for (var i = range.index; i >= range.start; i--) {
min = Math.min(values[i].y, min);
}
return min;
}, median:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var a = [];
for (var i = range.index; i >= range.start; i--) {
var b = false;
for (var j = 0; j < a.length; j++) {
if (values[i].y == a[j]) {
b = true;
break;
}
}
if (!b) {
a.push(values[i].y);
}
}
a.sort();
if (a.length > 0) {
return a[Math.ceil(a.length / 2)];
}
return 0;
}, mode:function (values, len) {
var range = this.createRange(values, len);
if (range.index < 0) {
return 0;
}
var o = {};
var ret = 0;
var median = Number.MIN_VALUE;
for (var i = range.index; i >= range.start; i--) {
if (!o[values[i].y]) {
o[values[i].y] = 1;
} else {
o[values[i].y]++;
}
}
for (var p in o) {
if (median < o[p]) {
median = o[p];
ret = p;
}
}
return ret;
}}});
 
/trunk/api/js/dojo/src/charting/Plotters.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.Plotters");
dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Plotters");
dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Plotters");
 
/trunk/api/js/dojo/src/charting/Plot.js
New file
0,0 → 1,80
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.Plot");
dojo.require("dojo.lang.common");
dojo.require("dojo.charting.Axis");
dojo.require("dojo.charting.Series");
dojo.charting.RenderPlotSeries = {Singly:"single", Grouped:"grouped"};
dojo.charting.Plot = function (xaxis, yaxis, series) {
var id = "dojo-charting-plot-" + dojo.charting.Plot.count++;
this.getId = function () {
return id;
};
this.setId = function (key) {
id = key;
};
this.axisX = null;
this.axisY = null;
this.series = [];
this.dataNode = null;
this.renderType = dojo.charting.RenderPlotSeries.Singly;
if (xaxis) {
this.setAxis(xaxis, "x");
}
if (yaxis) {
this.setAxis(yaxis, "y");
}
if (series) {
for (var i = 0; i < series.length; i++) {
this.addSeries(series[i]);
}
}
};
dojo.charting.Plot.count = 0;
dojo.extend(dojo.charting.Plot, {addSeries:function (series, plotter) {
if (series.plotter) {
this.series.push(series);
} else {
this.series.push({data:series, plotter:plotter || dojo.charting.Plotters["Default"]});
}
}, setAxis:function (axis, which) {
if (which.toLowerCase() == "x") {
this.axisX = axis;
} else {
if (which.toLowerCase() == "y") {
this.axisY = axis;
}
}
}, getRanges:function () {
var xmin, xmax, ymin, ymax;
xmin = ymin = Number.MAX_VALUE;
xmax = ymax = Number.MIN_VALUE;
for (var i = 0; i < this.series.length; i++) {
var values = this.series[i].data.evaluate();
for (var j = 0; j < values.length; j++) {
var comp = values[j];
xmin = Math.min(comp.x, xmin);
ymin = Math.min(comp.y, ymin);
xmax = Math.max(comp.x, xmax);
ymax = Math.max(comp.y, ymax);
}
}
return {x:{upper:xmax, lower:xmin}, y:{upper:ymax, lower:ymin}, toString:function () {
return "[ x:" + xmax + " - " + xmin + ", y:" + ymax + " - " + ymin + "]";
}};
}, destroy:function () {
var node = this.dataNode;
while (node && node.childNodes && node.childNodes.length > 0) {
node.removeChild(node.childNodes[0]);
}
this.dataNode = null;
}});
 
/trunk/api/js/dojo/src/charting/README.txt
New file
0,0 → 1,46
Dojo Charting Engine
=========================================================================
The Dojo Charting Engine is a (fairly) complex object structure, designed
to provide as much flexibility as possible in terms of chart construction.
To this end, the engine details the following structure:
 
Chart
---PlotArea[]
------Plot[]
---------Axis (axisX)
---------Axis (axisY)
---------Series[]
 
 
A Chart object is the main entity; it is the entire graphic. A Chart may
have any number of PlotArea objects, which are the basic canvas against
which data is plotted. A PlotArea may have any number of Plot objects,
which is a container representing up to 2 axes and any number of series
to be plotted against those axes; a Series represents a binding against
two fields from a data source (initial rev, this data source is always of
type dojo.collections.Store but this will probably change once dojo.data
is in production).
 
The point of this structure is to allow for as much flexibility as possible
in terms of what kinds of charts can be represented by the engine. The
current plan is to accomodate up to analytical financial charts, which tend
to have 3 plot areas and any number of different types of axes on each one.
 
The main exception to this is the pie chart, which will have it's own
custom codebase. Also, 3D charts are not accounted for at this time,
although the only thing that will probably need to be altered to make
that work would be Plot and Series (to accomodate the additional Z axis).
 
Finally, a Plot will render its series[] through the use of Plotters, which
are custom methods to render specific types of charts.
-------------------------------------------------------------------------
In terms of widgets, the basic concept is that there is a central, super-
flexible Chart widget (Chart, oddly enough), and then any number of preset
chart type widgets, that are basically built to serve a simple, easy
purpose. For instance, if someone just needs to plot a series of lines,
they would be better off using the LineChart widget; but if someone needed
to plot a combo chart, that has 2 Y Axes (one linear, one log) against the
same X Axis, using lines and areas, then they will want to use a Chart widget.
Note also that unlike other widgets, the Charting engine *can* be called
directly from script *without* the need for the actual widget engine to be
loaded; the Chart widgets are thin wrappers around the charting engine.
/trunk/api/js/dojo/src/charting/Chart.js
New file
0,0 → 1,62
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.Chart");
dojo.require("dojo.lang.common");
dojo.require("dojo.charting.PlotArea");
dojo.charting.Chart = function (node, title, description) {
this.node = node || null;
this.title = title || "Chart";
this.description = description || "";
this.plotAreas = [];
};
dojo.extend(dojo.charting.Chart, {addPlotArea:function (obj, doRender) {
if (obj.x != null && obj.left == null) {
obj.left = obj.x;
}
if (obj.y != null && obj.top == null) {
obj.top = obj.y;
}
this.plotAreas.push(obj);
if (doRender) {
this.render();
}
}, onInitialize:function (chart) {
}, onRender:function (chart) {
}, onDestroy:function (chart) {
}, initialize:function () {
if (!this.node) {
dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart.");
}
this.destroy();
this.render();
this.onInitialize(this);
}, render:function () {
if (this.node.style.position != "absolute") {
this.node.style.position = "relative";
}
for (var i = 0; i < this.plotAreas.length; i++) {
var area = this.plotAreas[i].plotArea;
var node = area.initialize();
node.style.position = "absolute";
node.style.top = this.plotAreas[i].top + "px";
node.style.left = this.plotAreas[i].left + "px";
this.node.appendChild(node);
area.render();
}
}, destroy:function () {
for (var i = 0; i < this.plotAreas.length; i++) {
this.plotAreas[i].plotArea.destroy();
}
while (this.node && this.node.childNodes && this.node.childNodes.length > 0) {
this.node.removeChild(this.node.childNodes[0]);
}
}});
 
/trunk/api/js/dojo/src/charting/vml/Axis.js
New file
0,0 → 1,237
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.vml.Axis");
dojo.require("dojo.lang.common");
if (dojo.render.vml.capable) {
dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) {
if (this.nodes.lines) {
while (this.nodes.lines.childNodes.length > 0) {
this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
}
if (this.nodes.lines.parentNode) {
this.nodes.lines.parentNode.removeChild(this.nodes.lines);
this.nodes.lines = null;
}
}
var area = plotArea.getArea();
var g = this.nodes.lines = document.createElement("div");
g.setAttribute("id", this.getId() + "-lines");
for (var i = 0; i < this._labels.length; i++) {
if (this._labels[i].value == this.origin) {
continue;
}
var v = this.getCoord(this._labels[i].value, plotArea, plot);
var l = document.createElement("v:line");
var str = document.createElement("v:stroke");
str.dashstyle = "dot";
l.appendChild(str);
l.setAttribute("strokecolor", "#666");
l.setAttribute("strokeweight", "1px");
var s = l.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
if (plane == "x") {
l.setAttribute("from", v + "px," + area.top + "px");
l.setAttribute("to", v + "px," + area.bottom + "px");
} else {
if (plane == "y") {
l.setAttribute("from", area.left + "px," + v + "px");
l.setAttribute("to", area.right + "px," + v + "px");
}
}
g.appendChild(l);
}
return g;
}, renderTicks:function (plotArea, plot, plane, coord) {
if (this.nodes.ticks) {
while (this.nodes.ticks.childNodes.length > 0) {
this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
}
if (this.nodes.ticks.parentNode) {
this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);
this.nodes.ticks = null;
}
}
var g = this.nodes.ticks = document.createElement("div");
g.setAttribute("id", this.getId() + "-ticks");
for (var i = 0; i < this._labels.length; i++) {
var v = this.getCoord(this._labels[i].value, plotArea, plot);
var l = document.createElement("v:line");
l.setAttribute("strokecolor", "#000");
l.setAttribute("strokeweight", "1px");
var s = l.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
if (plane == "x") {
l.setAttribute("from", v + "px," + coord + "px");
l.setAttribute("to", v + "px," + (coord + 3) + "px");
} else {
if (plane == "y") {
l.setAttribute("from", (coord - 2) + "px," + v + "px");
l.setAttribute("to", (coord + 2) + "px," + v + "px");
}
}
g.appendChild(l);
}
return g;
}, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {
function createLabel(label, x, y, textSize, anchor) {
var text = document.createElement("div");
var s = text.style;
text.innerHTML = label;
s.fontSize = textSize + "px";
s.fontFamily = "sans-serif";
s.position = "absolute";
s.top = y + "px";
if (anchor == "center") {
s.left = x + "px";
s.textAlign = "center";
} else {
if (anchor == "left") {
s.left = x + "px";
s.textAlign = "left";
} else {
if (anchor == "right") {
s.right = x + "px";
s.textAlign = "right";
}
}
}
return text;
}
if (this.nodes.labels) {
while (this.nodes.labels.childNodes.length > 0) {
this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);
}
if (this.nodes.labels.parentNode) {
this.nodes.labels.parentNode.removeChild(this.nodes.labels);
this.nodes.labels = null;
}
}
var g = this.nodes.labels = document.createElement("div");
g.setAttribute("id", this.getId() + "-labels");
for (var i = 0; i < this._labels.length; i++) {
var v = this.getCoord(this._labels[i].value, plotArea, plot);
if (plane == "x") {
var node = createLabel(this._labels[i].label, v, coord, textSize, anchor);
document.body.appendChild(node);
node.style.left = v - (node.offsetWidth / 2) + "px";
g.appendChild(node);
} else {
if (plane == "y") {
var node = createLabel(this._labels[i].label, coord, v, textSize, anchor);
document.body.appendChild(node);
node.style.top = v - (node.offsetHeight / 2) + "px";
g.appendChild(node);
}
}
}
return g;
}, render:function (plotArea, plot, drawAgainst, plane) {
if (!this._rerender && this.nodes.main) {
return this.nodes.main;
}
this._rerender = false;
var area = plotArea.getArea();
var stroke = 1;
var style = "stroke:#000;stroke-width:" + stroke + "px;";
var textSize = 10;
var coord = drawAgainst.getCoord(this.origin, plotArea, plot);
var g = this.nodes.main = document.createElement("div");
g.setAttribute("id", this.getId());
var line = this.nodes.axis = document.createElement("v:line");
line.setAttribute("strokecolor", "#000");
line.setAttribute("strokeweight", stroke + "px");
var s = line.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
if (plane == "x") {
line.setAttribute("from", area.left + "px," + coord + "px");
line.setAttribute("to", area.right + "px," + coord + "px");
var y = coord + Math.floor(textSize / 2);
if (this.showLines) {
g.appendChild(this.renderLines(plotArea, plot, plane, y));
}
if (this.showTicks) {
g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
}
if (this.showLabels) {
g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center"));
}
if (this.showLabel && this.label) {
var x = plotArea.size.width / 2;
var y = coord + Math.round(textSize * 1.5);
var text = document.createElement("div");
var s = text.style;
text.innerHTML = this.label;
s.fontSize = (textSize + 2) + "px";
s.fontFamily = "sans-serif";
s.fontWeight = "bold";
s.position = "absolute";
s.top = y + "px";
s.left = x + "px";
s.textAlign = "center";
document.body.appendChild(text);
text.style.left = x - (text.offsetWidth / 2) + "px";
g.appendChild(text);
}
} else {
line.setAttribute("from", coord + "px," + area.top + "px");
line.setAttribute("to", coord + "px," + area.bottom + "px");
var isMax = this.origin == drawAgainst.range.upper;
var x = coord + 4;
var anchor = "left";
if (!isMax) {
x = area.right - coord + textSize + 4;
anchor = "right";
if (coord == area.left) {
x += (textSize * 2) - (textSize / 2);
}
}
if (this.showLines) {
g.appendChild(this.renderLines(plotArea, plot, plane, x));
}
if (this.showTicks) {
g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
}
if (this.showLabels) {
g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));
}
if (this.showLabel && this.label) {
x += (textSize * 2) - 2;
var y = plotArea.size.height / 2;
var text = document.createElement("div");
var s = text.style;
text.innerHTML = this.label;
s.fontSize = (textSize + 2) + "px";
s.fontFamily = "sans-serif";
s.fontWeight = "bold";
s.position = "absolute";
s.height = plotArea.size.height + "px";
s.writingMode = "tb-rl";
s.textAlign = "center";
s[anchor] = x + "px";
document.body.appendChild(text);
s.top = y - (text.offsetHeight / 2) + "px";
g.appendChild(text);
}
}
g.appendChild(line);
return g;
}});
}
 
/trunk/api/js/dojo/src/charting/vml/PlotArea.js
New file
0,0 → 1,67
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.vml.PlotArea");
dojo.require("dojo.lang.common");
if (dojo.render.vml.capable) {
dojo.extend(dojo.charting.PlotArea, {resize:function () {
var a = this.getArea();
this.nodes.area.style.width = this.size.width + "px";
this.nodes.area.style.height = this.size.height + "px";
this.nodes.background.style.width = this.size.width + "px";
this.nodes.background.style.height = this.size.height + "px";
this.nodes.plots.width = this.size.width + "px";
this.nodes.plots.height = this.size.height + "px";
this.nodes.plots.style.clip = "rect(" + a.top + " " + a.right + " " + a.bottom + " " + a.left + ")";
if (this.nodes.axes) {
this.nodes.area.removeChild(this.nodes.axes);
}
var axes = this.nodes.axes = document.createElement("div");
axes.id = this.getId() + "-axes";
this.nodes.area.appendChild(axes);
var ax = this.getAxes();
for (var p in ax) {
var obj = ax[p];
axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));
}
}, initializePlot:function (plot) {
plot.destroy();
plot.dataNode = document.createElement("div");
plot.dataNode.id = plot.getId();
return plot.dataNode;
}, initialize:function () {
this.destroy();
var main = this.nodes.main = document.createElement("div");
var area = this.nodes.area = document.createElement("div");
area.id = this.getId();
area.style.position = "absolute";
main.appendChild(area);
var bg = this.nodes.background = document.createElement("div");
bg.id = this.getId() + "-background";
bg.style.position = "absolute";
bg.style.top = "0px";
bg.style.left = "0px";
bg.style.backgroundColor = "#fff";
area.appendChild(bg);
var a = this.getArea();
var plots = this.nodes.plots = document.createElement("div");
plots.id = this.getId() + "-plots";
plots.style.position = "absolute";
plots.style.top = "0px";
plots.style.left = "0px";
area.appendChild(plots);
for (var i = 0; i < this.plots.length; i++) {
plots.appendChild(this.initializePlot(this.plots[i]));
}
this.resize();
return main;
}});
}
 
/trunk/api/js/dojo/src/charting/vml/Plotters.js
New file
0,0 → 1,887
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.vml.Plotters");
dojo.require("dojo.lang.common");
if (dojo.render.vml.capable) {
dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) {
var group = document.createElement("div");
group.style.position = "absolute";
group.style.top = "0px";
group.style.left = "0px";
group.style.width = plotarea.size.width + "px";
group.style.height = plotarea.size.height + "px";
return group;
}, Bar:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 8;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
var barWidth = Math.round(width / n);
var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
for (var i = 0; i < nPoints; i++) {
var xStart = area.left + (width * i) + (space * i);
for (var j = 0; j < n; j++) {
var value = data[j][i].y;
var yA = yOrigin;
var x = xStart + (barWidth * j);
var y = plot.axisY.getCoord(value, plotarea, plot);
var h = Math.abs(yA - y);
if (value < plot.axisX.origin) {
yA = y;
y = yOrigin;
}
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = barWidth + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", data[j][i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
return group;
}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 6;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
var barH = h / n;
var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
for (var i = 0; i < nPoints; i++) {
var yStart = area.top + (h * i) + (space * i);
for (var j = 0; j < n; j++) {
var value = data[j][i].y;
var y = yStart + (barH * j);
var xA = xOrigin;
var x = plot.axisX.getCoord(value, plotarea, plot);
var w = Math.abs(x - xA);
if (value > 0) {
x = xOrigin;
}
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = xA + "px";
bar.style.width = w + "px";
bar.style.height = barH + "px";
bar.setAttribute("fillColor", data[j][i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
var space = 4;
var n = plot.series.length;
var h = ((area.bottom - area.top) - (space * (n - 1))) / n;
var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
for (var i = 0; i < n; i++) {
var series = plot.series[i];
var data = series.data.evaluate(kwArgs);
var y = area.top + (h * i) + (space * i);
var value = data[data.length - 1].y;
var xA = xOrigin;
var x = plot.axisX.getCoord(value, plotarea, plot);
var w = Math.abs(xA - x);
if (value > 0) {
xA = x;
x = xOrigin;
}
}
return group;
}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 2;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
var barH = h / n;
for (var i = 0; i < nPoints; i++) {
var yStart = area.top + (h * i) + (space * i);
for (var j = 0; j < n; j++) {
var high = data[j][i].high;
var low = data[j][i].low;
if (low > high) {
var t = high;
high = low;
low = t;
}
var x = plot.axisX.getCoord(low, plotarea, plot);
var w = plot.axisX.getCoord(high, plotarea, plot) - x;
var y = yStart + (barH * j);
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = barH + "px";
bar.setAttribute("fillColor", data[j][i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
return group;
}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = plot.series.length;
var data = [];
var totals = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
for (var j = 0; j < tmp.length; j++) {
if (i == 0) {
totals.push(tmp[j].y);
} else {
totals[j] += tmp[j].y;
}
tmp[j].y = totals[j];
}
data.push(tmp);
}
for (var i = n - 1; i >= 0; i--) {
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "1px");
path.setAttribute("strokecolor", data[i][0].series.color);
path.setAttribute("fillcolor", data[i][0].series.color);
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.4");
path.appendChild(fill);
var cmd = [];
var r = 3;
for (var j = 0; j < data[i].length; j++) {
var values = data[i];
var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
if (j == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
cmd.push("l");
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", values[j].series.color);
c.setAttribute("fillcolor", values[j].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[j].src);
}
}
if (i == 0) {
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
cmd.push("l");
cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
} else {
var values = data[i - 1];
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
for (var j = values.length - 2; j >= 0; j--) {
var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
cmd.push("l");
cmd.push(x + "," + y);
}
}
path.setAttribute("path", cmd.join(" ") + " x e");
group.appendChild(path);
}
return group;
}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = plot.series.length;
var data = [];
var totals = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
for (var j = 0; j < tmp.length; j++) {
if (i == 0) {
totals.push(tmp[j].y);
} else {
totals[j] += tmp[j].y;
}
tmp[j].y = totals[j];
}
data.push(tmp);
}
for (var i = n - 1; i >= 0; i--) {
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "1px");
path.setAttribute("strokecolor", data[i][0].series.color);
path.setAttribute("fillcolor", data[i][0].series.color);
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.4");
path.appendChild(fill);
var cmd = [];
var r = 3;
for (var j = 0; j < data[i].length; j++) {
var values = data[i];
var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
if (j == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot));
var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot));
var dx = x - lastx;
var dy = y - lasty;
cmd.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
cmd.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
cmd.push(cx + "," + y);
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", values[j].series.color);
c.setAttribute("fillcolor", values[j].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[j].src);
}
}
if (i == 0) {
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
cmd.push("l");
cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
} else {
var values = data[i - 1];
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
for (var j = values.length - 2; j >= 0; j--) {
var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot));
var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot));
var dx = x - lastx;
var dy = y - lasty;
cmd.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
cmd.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
cmd.push(cx + "," + y);
cmd.push(x + "," + y);
}
}
path.setAttribute("path", cmd.join(" ") + " x e");
group.appendChild(path);
}
return group;
}, DataBar:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = data.length;
var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
for (var i = 0; i < n; i++) {
var value = data[i].y;
var yA = yOrigin;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1;
var y = plot.axisY.getCoord(value, plotarea, plot);
var h = Math.abs(yA - y);
if (value < plot.axisX.origin) {
yA = y;
y = yOrigin;
}
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", data[i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
if (applyTo) {
applyTo(bar, data[i].src);
}
group.appendChild(bar);
}
return group;
}, Line:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
if (data.length == 0) {
return group;
}
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "2px");
path.setAttribute("strokecolor", data[0].series.color);
path.setAttribute("fillcolor", "none");
path.setAttribute("filled", "false");
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var cmd = [];
var r = 3;
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
if (i == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
cmd.push("l");
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", data[i].series.color);
c.setAttribute("fillcolor", data[i].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
path.setAttribute("path", cmd.join(" ") + " e");
group.appendChild(path);
return group;
}, CurvedLine:function (data, plotarea, plot, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
if (data.length == 0) {
return group;
}
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "2px");
path.setAttribute("strokecolor", data[0].series.color);
path.setAttribute("fillcolor", "none");
path.setAttribute("filled", "false");
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var cmd = [];
var r = 3;
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
if (i == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
var dx = x - lastx;
var dy = y - lasty;
cmd.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
cmd.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
cmd.push(cx + "," + y);
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", data[i].series.color);
c.setAttribute("fillcolor", data[i].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
path.setAttribute("path", cmd.join(" ") + " e");
group.appendChild(path);
return group;
}, Area:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
if (data.length == 0) {
return group;
}
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "1px");
path.setAttribute("strokecolor", data[0].series.color);
path.setAttribute("fillcolor", data[0].series.color);
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.4");
path.appendChild(fill);
var cmd = [];
var r = 3;
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
if (i == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
cmd.push("l");
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", data[i].series.color);
c.setAttribute("fillcolor", data[i].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
cmd.push("l");
cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
path.setAttribute("path", cmd.join(" ") + " x e");
group.appendChild(path);
return group;
}, CurvedArea:function (data, plotarea, plot, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
if (data.length == 0) {
return group;
}
var path = document.createElement("v:shape");
path.setAttribute("strokeweight", "1px");
path.setAttribute("strokecolor", data[0].series.color);
path.setAttribute("fillcolor", data[0].series.color);
path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
path.style.position = "absolute";
path.style.top = "0px";
path.style.left = "0px";
path.style.width = area.right - area.left + "px";
path.style.height = area.bottom - area.top + "px";
var stroke = document.createElement("v:stroke");
stroke.setAttribute("opacity", "0.8");
path.appendChild(stroke);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.4");
path.appendChild(fill);
var cmd = [];
var r = 3;
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
if (i == 0) {
cmd.push("m");
cmd.push(x + "," + y);
} else {
var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
var dx = x - lastx;
var dy = y - lasty;
cmd.push("c");
var cx = Math.round((x - (tension - 1) * (dx / tension)));
cmd.push(cx + "," + lasty);
cx = Math.round((x - (dx / tension)));
cmd.push(cx + "," + y);
cmd.push(x + "," + y);
}
var c = document.createElement("v:oval");
c.setAttribute("strokeweight", "1px");
c.setAttribute("strokecolor", data[i].series.color);
c.setAttribute("fillcolor", data[i].series.color);
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.8");
c.appendChild(str);
str = document.createElement("v:fill");
str.setAttribute("opacity", "0.6");
c.appendChild(str);
var s = c.style;
s.position = "absolute";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
cmd.push("l");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
cmd.push("l");
cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
path.setAttribute("path", cmd.join(" ") + " x e");
group.appendChild(path);
return group;
}, HighLow:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", data[i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
if (applyTo) {
applyTo(bar, data[i].src);
}
group.appendChild(bar);
}
return group;
}, HighLowClose:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var c = data[i].close;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var close = plot.axisY.getCoord(c, plotarea, plot);
var g = document.createElement("div");
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", data[i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
g.appendChild(bar);
var line = document.createElement("v:line");
line.setAttribute("strokecolor", data[i].series.color);
line.setAttribute("strokeweight", "1px");
line.setAttribute("from", x + "px," + close + "px");
line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
var s = line.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.6");
line.appendChild(str);
g.appendChild(line);
if (applyTo) {
applyTo(g, data[i].src);
}
group.appendChild(g);
}
return group;
}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var o = data[i].open;
var c = data[i].close;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var open = plot.axisY.getCoord(o, plotarea, plot);
var close = plot.axisY.getCoord(c, plotarea, plot);
var g = document.createElement("div");
var bar = document.createElement("v:rect");
bar.style.position = "absolute";
bar.style.top = y + 1 + "px";
bar.style.left = x + "px";
bar.style.width = w + "px";
bar.style.height = h + "px";
bar.setAttribute("fillColor", data[i].series.color);
bar.setAttribute("stroked", "false");
bar.style.antialias = "false";
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
bar.appendChild(fill);
g.appendChild(bar);
var line = document.createElement("v:line");
line.setAttribute("strokecolor", data[i].series.color);
line.setAttribute("strokeweight", "1px");
line.setAttribute("from", (x - (part * 2)) + "px," + open + "px");
line.setAttribute("to", (x + w - 2) + "px," + open + "px");
var s = line.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.6");
line.appendChild(str);
g.appendChild(line);
var line = document.createElement("v:line");
line.setAttribute("strokecolor", data[i].series.color);
line.setAttribute("strokeweight", "1px");
line.setAttribute("from", x + "px," + close + "px");
line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
var s = line.style;
s.position = "absolute";
s.top = "0px";
s.left = "0px";
s.antialias = "false";
var str = document.createElement("v:stroke");
str.setAttribute("opacity", "0.6");
line.appendChild(str);
g.appendChild(line);
if (applyTo) {
applyTo(g, data[i].src);
}
group.appendChild(g);
}
return group;
}, Scatter:function (data, plotarea, plot, applyTo) {
var r = 6;
var mod = r / 2;
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
var point = document.createElement("v:rect");
point.setAttribute("strokecolor", data[i].series.color);
point.setAttribute("fillcolor", data[i].series.color);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
point.appendChild(fill);
var s = point.style;
s.position = "absolute";
s.rotation = "45";
s.top = (y - mod) + "px";
s.left = (x - mod) + "px";
s.width = r + "px";
s.height = r + "px";
group.appendChild(point);
if (applyTo) {
applyTo(point, data[i].src);
}
}
return group;
}, Bubble:function (data, plotarea, plot, applyTo) {
var sizeFactor = 1;
var area = plotarea.getArea();
var group = dojo.charting.Plotters._group(plotarea);
for (var i = 0; i < data.length; i++) {
var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
if (i == 0) {
var raw = data[i].size;
var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
sizeFactor = dy / raw;
}
if (sizeFactor < 1) {
sizeFactor = 1;
}
var r = (data[i].size / 2) * sizeFactor;
var point = document.createElement("v:oval");
point.setAttribute("strokecolor", data[i].series.color);
point.setAttribute("fillcolor", data[i].series.color);
var fill = document.createElement("v:fill");
fill.setAttribute("opacity", "0.6");
point.appendChild(fill);
var s = point.style;
s.position = "absolute";
s.rotation = "45";
s.top = (y - r) + "px";
s.left = (x - r) + "px";
s.width = (r * 2) + "px";
s.height = (r * 2) + "px";
group.appendChild(point);
if (applyTo) {
applyTo(point, data[i].src);
}
}
return group;
}});
dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
}
 
/trunk/api/js/dojo/src/charting/Axis.js
New file
0,0 → 1,130
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.Axis");
dojo.require("dojo.lang.common");
dojo.charting.Axis = function (label, scale, labels) {
var id = "dojo-charting-axis-" + dojo.charting.Axis.count++;
this.getId = function () {
return id;
};
this.setId = function (key) {
id = key;
};
this.scale = scale || "linear";
this.label = label || "";
this.showLabel = true;
this.showLabels = true;
this.showLines = false;
this.showTicks = false;
this.range = {upper:100, lower:0};
this.origin = "min";
this._origin = null;
this.labels = labels || [];
this._labels = [];
this.nodes = {main:null, axis:null, label:null, labels:null, lines:null, ticks:null};
this._rerender = false;
};
dojo.charting.Axis.count = 0;
dojo.extend(dojo.charting.Axis, {getCoord:function (val, plotArea, plot) {
val = parseFloat(val, 10);
var area = plotArea.getArea();
if (plot.axisX == this) {
var offset = 0 - this.range.lower;
var min = this.range.lower + offset;
var max = this.range.upper + offset;
val += offset;
return (val * ((area.right - area.left) / max)) + area.left;
} else {
var max = this.range.upper;
var min = this.range.lower;
var offset = 0;
if (min < 0) {
offset += Math.abs(min);
}
max += offset;
min += offset;
val += offset;
var pmin = area.bottom;
var pmax = area.top;
return (((pmin - pmax) / (max - min)) * (max - val)) + pmax;
}
}, initializeOrigin:function (drawAgainst, plane) {
if (this._origin == null) {
this._origin = this.origin;
}
if (isNaN(this._origin)) {
if (this._origin.toLowerCase() == "max") {
this.origin = drawAgainst.range[(plane == "y") ? "upper" : "lower"];
} else {
if (this._origin.toLowerCase() == "min") {
this.origin = drawAgainst.range[(plane == "y") ? "lower" : "upper"];
} else {
this.origin = 0;
}
}
}
}, initializeLabels:function () {
this._labels = [];
if (this.labels.length == 0) {
this.showLabels = false;
this.showLines = false;
this.showTicks = false;
} else {
if (this.labels[0].label && this.labels[0].value != null) {
for (var i = 0; i < this.labels.length; i++) {
this._labels.push(this.labels[i]);
}
} else {
if (!isNaN(this.labels[0])) {
for (var i = 0; i < this.labels.length; i++) {
this._labels.push({label:this.labels[i], value:this.labels[i]});
}
} else {
var a = [];
for (var i = 0; i < this.labels.length; i++) {
a.push(this.labels[i]);
}
var s = a.shift();
this._labels.push({label:s, value:this.range.lower});
if (a.length > 0) {
var s = a.pop();
this._labels.push({label:s, value:this.range.upper});
}
if (a.length > 0) {
var range = this.range.upper - this.range.lower;
var step = range / (this.labels.length - 1);
for (var i = 1; i <= a.length; i++) {
this._labels.push({label:a[i - 1], value:this.range.lower + (step * i)});
}
}
}
}
}
}, initialize:function (plotArea, plot, drawAgainst, plane) {
this.destroy();
this.initializeOrigin(drawAgainst, plane);
this.initializeLabels();
var node = this.render(plotArea, plot, drawAgainst, plane);
return node;
}, destroy:function () {
for (var p in this.nodes) {
while (this.nodes[p] && this.nodes[p].childNodes.length > 0) {
this.nodes[p].removeChild(this.nodes[p].childNodes[0]);
}
if (this.nodes[p] && this.nodes[p].parentNode) {
this.nodes[p].parentNode.removeChild(this.nodes[p]);
}
this.nodes[p] = null;
}
}});
dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Axis");
dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis");
 
/trunk/api/js/dojo/src/charting/svg/Axis.js
New file
0,0 → 1,186
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.svg.Axis");
dojo.require("dojo.lang.common");
if (dojo.render.svg.capable) {
dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) {
if (this.nodes.lines) {
while (this.nodes.lines.childNodes.length > 0) {
this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
}
if (this.nodes.lines.parentNode) {
this.nodes.lines.parentNode.removeChild(this.nodes.lines);
this.nodes.lines = null;
}
}
var area = plotArea.getArea();
var g = this.nodes.lines = document.createElementNS(dojo.svg.xmlns.svg, "g");
g.setAttribute("id", this.getId() + "-lines");
for (var i = 0; i < this._labels.length; i++) {
if (this._labels[i].value == this.origin) {
continue;
}
var v = this.getCoord(this._labels[i].value, plotArea, plot);
var l = document.createElementNS(dojo.svg.xmlns.svg, "line");
l.setAttribute("style", "stroke:#999;stroke-width:1px;stroke-dasharray:1,4;");
if (plane == "x") {
l.setAttribute("y1", area.top);
l.setAttribute("y2", area.bottom);
l.setAttribute("x1", v);
l.setAttribute("x2", v);
} else {
if (plane == "y") {
l.setAttribute("y1", v);
l.setAttribute("y2", v);
l.setAttribute("x1", area.left);
l.setAttribute("x2", area.right);
}
}
g.appendChild(l);
}
return g;
}, renderTicks:function (plotArea, plot, plane, coord) {
if (this.nodes.ticks) {
while (this.nodes.ticks.childNodes.length > 0) {
this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
}
if (this.nodes.ticks.parentNode) {
this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);
this.nodes.ticks = null;
}
}
var g = this.nodes.ticks = document.createElementNS(dojo.svg.xmlns.svg, "g");
g.setAttribute("id", this.getId() + "-ticks");
for (var i = 0; i < this._labels.length; i++) {
var v = this.getCoord(this._labels[i].value, plotArea, plot);
var l = document.createElementNS(dojo.svg.xmlns.svg, "line");
l.setAttribute("style", "stroke:#000;stroke-width:1pt;");
if (plane == "x") {
l.setAttribute("y1", coord);
l.setAttribute("y2", coord + 3);
l.setAttribute("x1", v);
l.setAttribute("x2", v);
} else {
if (plane == "y") {
l.setAttribute("y1", v);
l.setAttribute("y2", v);
l.setAttribute("x1", coord - 2);
l.setAttribute("x2", coord + 2);
}
}
g.appendChild(l);
}
return g;
}, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {
function createLabel(label, x, y, textSize, anchor) {
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", x);
text.setAttribute("y", (plane == "x" ? y : y + 2));
text.setAttribute("style", "text-anchor:" + anchor + ";font-family:sans-serif;font-size:" + textSize + "px;fill:#000;");
text.appendChild(document.createTextNode(label));
return text;
}
if (this.nodes.labels) {
while (this.nodes.labels.childNodes.length > 0) {
this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);
}
if (this.nodes.labels.parentNode) {
this.nodes.labels.parentNode.removeChild(this.nodes.labels);
this.nodes.labels = null;
}
}
var g = this.nodes.labels = document.createElementNS(dojo.svg.xmlns.svg, "g");
g.setAttribute("id", this.getId() + "-labels");
for (var i = 0; i < this._labels.length; i++) {
var v = this.getCoord(this._labels[i].value, plotArea, plot);
if (plane == "x") {
g.appendChild(createLabel(this._labels[i].label, v, coord, textSize, anchor));
} else {
if (plane == "y") {
g.appendChild(createLabel(this._labels[i].label, coord, v, textSize, anchor));
}
}
}
return g;
}, render:function (plotArea, plot, drawAgainst, plane) {
if (!this._rerender && this.nodes.main) {
return this.nodes.main;
}
this._rerender = false;
var area = plotArea.getArea();
var stroke = 1;
var style = "stroke:#000;stroke-width:" + stroke + "px;";
var textSize = 10;
var coord = drawAgainst.getCoord(this.origin, plotArea, plot);
this.nodes.main = document.createElementNS(dojo.svg.xmlns.svg, "g");
var g = this.nodes.main;
g.setAttribute("id", this.getId());
var line = this.nodes.axis = document.createElementNS(dojo.svg.xmlns.svg, "line");
if (plane == "x") {
line.setAttribute("y1", coord);
line.setAttribute("y2", coord);
line.setAttribute("x1", area.left - stroke);
line.setAttribute("x2", area.right + stroke);
line.setAttribute("style", style);
var y = coord + textSize + 2;
if (this.showLines) {
g.appendChild(this.renderLines(plotArea, plot, plane, y));
}
if (this.showTicks) {
g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
}
if (this.showLabels) {
g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "middle"));
}
if (this.showLabel && this.label) {
var x = plotArea.size.width / 2;
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", x);
text.setAttribute("y", (coord + (textSize * 2) + (textSize / 2)));
text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;");
text.appendChild(document.createTextNode(this.label));
g.appendChild(text);
}
} else {
line.setAttribute("x1", coord);
line.setAttribute("x2", coord);
line.setAttribute("y1", area.top);
line.setAttribute("y2", area.bottom);
line.setAttribute("style", style);
var isMax = this.origin == drawAgainst.range.upper;
var x = coord + (isMax ? 4 : -4);
var anchor = isMax ? "start" : "end";
if (this.showLines) {
g.appendChild(this.renderLines(plotArea, plot, plane, x));
}
if (this.showTicks) {
g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
}
if (this.showLabels) {
g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));
}
if (this.showLabel && this.label) {
var x = isMax ? (coord + (textSize * 2) + (textSize / 2)) : (coord - (textSize * 4));
var y = plotArea.size.height / 2;
var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
text.setAttribute("x", x);
text.setAttribute("y", y);
text.setAttribute("transform", "rotate(90, " + x + ", " + y + ")");
text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;");
text.appendChild(document.createTextNode(this.label));
g.appendChild(text);
}
}
g.appendChild(line);
return g;
}});
}
 
/trunk/api/js/dojo/src/charting/svg/PlotArea.js
New file
0,0 → 1,75
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.svg.PlotArea");
dojo.require("dojo.lang.common");
if (dojo.render.svg.capable) {
dojo.require("dojo.svg");
dojo.extend(dojo.charting.PlotArea, {resize:function () {
var area = this.getArea();
this.nodes.area.setAttribute("width", this.size.width);
this.nodes.area.setAttribute("height", this.size.height);
var rect = this.nodes.area.getElementsByTagName("rect")[0];
rect.setAttribute("x", area.left);
rect.setAttribute("y", area.top);
rect.setAttribute("width", area.right - area.left);
rect.setAttribute("height", area.bottom - area.top);
this.nodes.background.setAttribute("width", this.size.width);
this.nodes.background.setAttribute("height", this.size.height);
if (this.nodes.plots) {
this.nodes.area.removeChild(this.nodes.plots);
this.nodes.plots = null;
}
this.nodes.plots = document.createElementNS(dojo.svg.xmlns.svg, "g");
this.nodes.plots.setAttribute("id", this.getId() + "-plots");
this.nodes.plots.setAttribute("style", "clip-path:url(#" + this.getId() + "-clip);");
this.nodes.area.appendChild(this.nodes.plots);
for (var i = 0; i < this.plots.length; i++) {
this.nodes.plots.appendChild(this.initializePlot(this.plots[i]));
}
if (this.nodes.axes) {
this.nodes.area.removeChild(this.nodes.axes);
this.nodes.axes = null;
}
this.nodes.axes = document.createElementNS(dojo.svg.xmlns.svg, "g");
this.nodes.axes.setAttribute("id", this.getId() + "-axes");
this.nodes.area.appendChild(this.nodes.axes);
var axes = this.getAxes();
for (var p in axes) {
var obj = axes[p];
this.nodes.axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));
}
}, initializePlot:function (plot) {
plot.destroy();
plot.dataNode = document.createElementNS(dojo.svg.xmlns.svg, "g");
plot.dataNode.setAttribute("id", plot.getId());
return plot.dataNode;
}, initialize:function () {
this.destroy();
this.nodes.main = document.createElement("div");
this.nodes.area = document.createElementNS(dojo.svg.xmlns.svg, "svg");
this.nodes.area.setAttribute("id", this.getId());
this.nodes.main.appendChild(this.nodes.area);
var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs");
var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath");
clip.setAttribute("id", this.getId() + "-clip");
var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
clip.appendChild(rect);
defs.appendChild(clip);
this.nodes.area.appendChild(defs);
this.nodes.background = document.createElementNS(dojo.svg.xmlns.svg, "rect");
this.nodes.background.setAttribute("id", this.getId() + "-background");
this.nodes.background.setAttribute("fill", "#fff");
this.nodes.area.appendChild(this.nodes.background);
this.resize();
return this.nodes.main;
}});
}
 
/trunk/api/js/dojo/src/charting/svg/Plotters.js
New file
0,0 → 1,700
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.charting.svg.Plotters");
dojo.require("dojo.lang.common");
if (dojo.render.svg.capable) {
dojo.require("dojo.svg");
dojo.mixin(dojo.charting.Plotters, {Bar:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 8;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
var barWidth = width / n;
var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
for (var i = 0; i < nPoints; i++) {
var xStart = area.left + (width * i) + (space * i);
for (var j = 0; j < n; j++) {
var value = data[j][i].y;
var yA = yOrigin;
var x = xStart + (barWidth * j);
var y = plot.axisY.getCoord(value, plotarea, plot);
var h = Math.abs(yA - y);
if (value < plot.axisX.origin) {
yA = y;
y = yOrigin;
}
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[j][i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", barWidth);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.6");
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
return group;
}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 6;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
var barH = h / n;
var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
for (var i = 0; i < nPoints; i++) {
var yStart = area.top + (h * i) + (space * i);
for (var j = 0; j < n; j++) {
var value = data[j][i].y;
var y = yStart + (barH * j);
var xA = xOrigin;
var x = plot.axisX.getCoord(value, plotarea, plot);
var w = Math.abs(x - xA);
if (value > 0) {
x = xOrigin;
}
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[j][i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", xA);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", barH);
bar.setAttribute("fill-opacity", "0.6");
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
return group;
}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = plot.series.length;
var data = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
data.push(tmp);
}
var space = 2;
var nPoints = data[0].length;
if (nPoints == 0) {
return group;
}
var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
var barH = h / n;
for (var i = 0; i < nPoints; i++) {
var yStart = area.top + (h * i) + (space * i);
for (var j = 0; j < n; j++) {
var high = data[j][i].high;
var low = data[j][i].low;
if (low > high) {
var t = high;
high = low;
low = t;
}
var x = plot.axisX.getCoord(low, plotarea, plot);
var w = plot.axisX.getCoord(high, plotarea, plot) - x;
var y = yStart + (barH * j);
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[j][i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", barH);
bar.setAttribute("fill-opacity", "0.6");
if (applyTo) {
applyTo(bar, data[j][i].src);
}
group.appendChild(bar);
}
}
return group;
}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = plot.series.length;
var data = [];
var totals = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
for (var j = 0; j < tmp.length; j++) {
if (i == 0) {
totals.push(tmp[j].y);
} else {
totals[j] += tmp[j].y;
}
tmp[j].y = totals[j];
}
data.push(tmp);
}
for (var i = n - 1; i >= 0; i--) {
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
path.setAttribute("fill", data[i][0].series.color);
path.setAttribute("fill-opacity", "0.4");
path.setAttribute("stroke", data[i][0].series.color);
path.setAttribute("stroke-width", "1");
path.setAttribute("stroke-opacity", "0.85");
var cmd = [];
var r = 3;
for (var j = 0; j < data[i].length; j++) {
var values = data[i];
var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
if (j == 0) {
cmd.push("M");
} else {
cmd.push("L");
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", values[j].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
if (i == 0) {
cmd.push("L");
cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("L");
cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("Z");
} else {
var values = data[i - 1];
cmd.push("L");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
for (var j = values.length - 2; j >= 0; j--) {
var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
cmd.push("L");
cmd.push(x + "," + y);
}
}
path.setAttribute("d", cmd.join(" ") + " Z");
group.appendChild(path);
}
return group;
}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = plot.series.length;
var data = [];
var totals = [];
for (var i = 0; i < n; i++) {
var tmp = plot.series[i].data.evaluate(kwArgs);
for (var j = 0; j < tmp.length; j++) {
if (i == 0) {
totals.push(tmp[j].y);
} else {
totals[j] += tmp[j].y;
}
tmp[j].y = totals[j];
}
data.push(tmp);
}
for (var i = n - 1; i >= 0; i--) {
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
path.setAttribute("fill", data[i][0].series.color);
path.setAttribute("fill-opacity", "0.4");
path.setAttribute("stroke", data[i][0].series.color);
path.setAttribute("stroke-width", "1");
path.setAttribute("stroke-opacity", "0.85");
var cmd = [];
var r = 3;
for (var j = 0; j < data[i].length; j++) {
var values = data[i];
var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
var dx = area.left + 1;
var dy = area.bottom;
if (j > 0) {
dx = x - plot.axisX.getCoord(values[j - 1].x, plotarea, plot);
dy = plot.axisY.getCoord(values[j - 1].y, plotarea, plot);
}
if (j == 0) {
cmd.push("M");
} else {
cmd.push("C");
var cx = x - (tension - 1) * (dx / tension);
cmd.push(cx + "," + dy);
cx = x - (dx / tension);
cmd.push(cx + "," + y);
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", values[j].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
group.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
if (i == 0) {
cmd.push("L");
cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("L");
cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("Z");
} else {
var values = data[i - 1];
cmd.push("L");
cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
for (var j = values.length - 2; j >= 0; j--) {
var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
var dx = x - plot.axisX.getCoord(values[j + 1].x, plotarea, plot);
var dy = plot.axisY.getCoord(values[j + 1].y, plotarea, plot);
cmd.push("C");
var cx = x - (tension - 1) * (dx / tension);
cmd.push(cx + "," + dy);
cx = x - (dx / tension);
cmd.push(cx + "," + y);
cmd.push(x + "," + y);
}
}
path.setAttribute("d", cmd.join(" ") + " Z");
group.appendChild(path);
}
return group;
}, DataBar:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = data.length;
var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
for (var i = 0; i < n; i++) {
var value = data[i].y;
var yA = yOrigin;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(value, plotarea, plot);
var h = Math.abs(yA - y);
if (value < plot.axisX.origin) {
yA = y;
y = yOrigin;
}
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.6");
if (applyTo) {
applyTo(bar, data[i].src);
}
group.appendChild(bar);
}
return group;
}, Line:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
if (data.length == 0) {
return line;
}
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.appendChild(path);
path.setAttribute("fill", "none");
path.setAttribute("stroke", data[0].series.color);
path.setAttribute("stroke-width", "2");
path.setAttribute("stroke-opacity", "0.85");
if (data[0].series.label != null) {
path.setAttribute("title", data[0].series.label);
}
var cmd = [];
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
if (i == 0) {
cmd.push("M");
} else {
cmd.push("L");
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", data[i].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
line.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
path.setAttribute("d", cmd.join(" "));
return line;
}, CurvedLine:function (data, plotarea, plot, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
if (data.length == 0) {
return line;
}
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.appendChild(path);
path.setAttribute("fill", "none");
path.setAttribute("stroke", data[0].series.color);
path.setAttribute("stroke-width", "2");
path.setAttribute("stroke-opacity", "0.85");
if (data[0].series.label != null) {
path.setAttribute("title", data[0].series.label);
}
var cmd = [];
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
var dx = area.left + 1;
var dy = area.bottom;
if (i > 0) {
dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);
dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);
}
if (i == 0) {
cmd.push("M");
} else {
cmd.push("C");
var cx = x - (tension - 1) * (dx / tension);
cmd.push(cx + "," + dy);
cx = x - (dx / tension);
cmd.push(cx + "," + y);
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", data[i].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
line.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
path.setAttribute("d", cmd.join(" "));
return line;
}, Area:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
if (data.length == 0) {
return line;
}
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.appendChild(path);
path.setAttribute("fill", data[0].series.color);
path.setAttribute("fill-opacity", "0.4");
path.setAttribute("stroke", data[0].series.color);
path.setAttribute("stroke-width", "1");
path.setAttribute("stroke-opacity", "0.85");
if (data[0].series.label != null) {
path.setAttribute("title", data[0].series.label);
}
var cmd = [];
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
if (i == 0) {
cmd.push("M");
} else {
cmd.push("L");
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", data[i].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
line.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
cmd.push("L");
cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("L");
cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("Z");
path.setAttribute("d", cmd.join(" "));
return line;
}, CurvedArea:function (data, plotarea, plot, applyTo) {
var tension = 3;
var area = plotarea.getArea();
var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
if (data.length == 0) {
return line;
}
var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
line.appendChild(path);
path.setAttribute("fill", data[0].series.color);
path.setAttribute("fill-opacity", "0.4");
path.setAttribute("stroke", data[0].series.color);
path.setAttribute("stroke-width", "1");
path.setAttribute("stroke-opacity", "0.85");
if (data[0].series.label != null) {
path.setAttribute("title", data[0].series.label);
}
var cmd = [];
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
var dx = area.left + 1;
var dy = area.bottom;
if (i > 0) {
dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);
dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);
}
if (i == 0) {
cmd.push("M");
} else {
cmd.push("C");
var cx = x - (tension - 1) * (dx / tension);
cmd.push(cx + "," + dy);
cx = x - (dx / tension);
cmd.push(cx + "," + y);
}
cmd.push(x + "," + y);
var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
c.setAttribute("cx", x);
c.setAttribute("cy", y);
c.setAttribute("r", "3");
c.setAttribute("fill", data[i].series.color);
c.setAttribute("fill-opacity", "0.6");
c.setAttribute("stroke-width", "1");
c.setAttribute("stroke-opacity", "0.85");
line.appendChild(c);
if (applyTo) {
applyTo(c, data[i].src);
}
}
cmd.push("L");
cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("L");
cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
cmd.push("Z");
path.setAttribute("d", cmd.join(" "));
return line;
}, HighLow:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.6");
if (applyTo) {
applyTo(bar, data[i].src);
}
group.appendChild(bar);
}
return group;
}, HighLowClose:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var c = data[i].close;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var close = plot.axisY.getCoord(c, plotarea, plot);
var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.6");
g.appendChild(bar);
var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
line.setAttribute("x1", x);
line.setAttribute("x2", x + w + (part * 2));
line.setAttribute("y1", close);
line.setAttribute("y2", close);
line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
g.appendChild(line);
if (applyTo) {
applyTo(g, data[i].src);
}
group.appendChild(g);
}
return group;
}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
var area = plotarea.getArea();
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var n = data.length;
var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
var w = part * 2;
for (var i = 0; i < n; i++) {
var high = data[i].high;
var low = data[i].low;
if (low > high) {
var t = low;
low = high;
high = t;
}
var o = data[i].open;
var c = data[i].close;
var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
var y = plot.axisY.getCoord(high, plotarea, plot);
var h = plot.axisY.getCoord(low, plotarea, plot) - y;
var open = plot.axisY.getCoord(o, plotarea, plot);
var close = plot.axisY.getCoord(c, plotarea, plot);
var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
bar.setAttribute("fill", data[i].series.color);
bar.setAttribute("stroke-width", "0");
bar.setAttribute("x", x);
bar.setAttribute("y", y);
bar.setAttribute("width", w);
bar.setAttribute("height", h);
bar.setAttribute("fill-opacity", "0.6");
g.appendChild(bar);
var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
line.setAttribute("x1", x - (part * 2));
line.setAttribute("x2", x + w);
line.setAttribute("y1", open);
line.setAttribute("y2", open);
line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
g.appendChild(line);
var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
line.setAttribute("x1", x);
line.setAttribute("x2", x + w + (part * 2));
line.setAttribute("y1", close);
line.setAttribute("y2", close);
line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
g.appendChild(line);
if (applyTo) {
applyTo(g, data[i].src);
}
group.appendChild(g);
}
return group;
}, Scatter:function (data, plotarea, plot, applyTo) {
var r = 7;
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
point.setAttribute("fill", data[i].series.color);
point.setAttribute("stroke-width", "0");
point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z");
if (applyTo) {
applyTo(point, data[i].src);
}
group.appendChild(point);
}
return group;
}, Bubble:function (data, plotarea, plot, applyTo) {
var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
var sizeFactor = 1;
for (var i = 0; i < data.length; i++) {
var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
if (i == 0) {
var raw = data[i].size;
var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
sizeFactor = dy / raw;
}
if (sizeFactor < 1) {
sizeFactor = 1;
}
var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");
point.setAttribute("fill", data[i].series.color);
point.setAttribute("fill-opacity", "0.8");
point.setAttribute("stroke", data[i].series.color);
point.setAttribute("stroke-width", "1");
point.setAttribute("cx", x);
point.setAttribute("cy", y);
point.setAttribute("r", (data[i].size / 2) * sizeFactor);
if (applyTo) {
applyTo(point, data[i].src);
}
group.appendChild(point);
}
return group;
}});
dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
}
 
/trunk/api/js/dojo/src/hostenv_rhino.js
New file
0,0 → 1,161
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.hostenv.println = function (line) {
if (arguments.length > 0) {
print(arguments[0]);
for (var i = 1; i < arguments.length; i++) {
var valid = false;
for (var p in arguments[i]) {
valid = true;
break;
}
if (valid) {
dojo.debugShallow(arguments[i]);
}
}
} else {
print(line);
}
};
dojo.locale = dojo.locale || java.util.Locale.getDefault().toString().replace("_", "-").toLowerCase();
dojo.render.name = dojo.hostenv.name_ = "rhino";
dojo.hostenv.getVersion = function () {
return version();
};
if (dj_undef("byId")) {
dojo.byId = function (id, doc) {
if (id && (typeof id == "string" || id instanceof String)) {
if (!doc) {
doc = document;
}
return doc.getElementById(id);
}
return id;
};
}
dojo.hostenv.loadUri = function (uri, cb) {
try {
var local = (new java.io.File(uri)).exists();
if (!local) {
try {
var stream = (new java.net.URL(uri)).openStream();
stream.close();
}
catch (e) {
return false;
}
}
if (cb) {
var contents = (local ? readText : readUri)(uri, "UTF-8");
cb(eval("(" + contents + ")"));
} else {
load(uri);
}
return true;
}
catch (e) {
dojo.debug("rhino load('" + uri + "') failed. Exception: " + e);
return false;
}
};
dojo.hostenv.exit = function (exitcode) {
quit(exitcode);
};
function dj_rhino_current_script_via_java(depth) {
var optLevel = Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel();
var caw = new java.io.CharArrayWriter();
var pw = new java.io.PrintWriter(caw);
var exc = new java.lang.Exception();
var s = caw.toString();
var matches = s.match(/[^\(]*\.js\)/gi);
if (!matches) {
throw Error("cannot parse printStackTrace output: " + s);
}
var fname = ((typeof depth != "undefined") && (depth)) ? matches[depth + 1] : matches[matches.length - 1];
var fname = matches[3];
if (!fname) {
fname = matches[1];
}
if (!fname) {
throw Error("could not find js file in printStackTrace output: " + s);
}
return fname;
}
function readText(path, encoding) {
encoding = encoding || "utf-8";
var jf = new java.io.File(path);
var is = new java.io.FileInputStream(jf);
return dj_readInputStream(is, encoding);
}
function readUri(uri, encoding) {
var conn = (new java.net.URL(uri)).openConnection();
encoding = encoding || conn.getContentEncoding() || "utf-8";
var is = conn.getInputStream();
return dj_readInputStream(is, encoding);
}
function dj_readInputStream(is, encoding) {
var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding));
try {
var sb = new java.lang.StringBuffer();
var line = "";
while ((line = input.readLine()) !== null) {
sb.append(line);
sb.append(java.lang.System.getProperty("line.separator"));
}
return sb.toString();
}
finally {
input.close();
}
}
if (!djConfig.libraryScriptUri.length) {
try {
djConfig.libraryScriptUri = dj_rhino_current_script_via_java(1);
}
catch (e) {
if (djConfig["isDebug"]) {
print("\n");
print("we have no idea where Dojo is located.");
print("Please try loading rhino in a non-interpreted mode or set a");
print("\n\tdjConfig.libraryScriptUri\n");
print("Setting the dojo path to './'");
print("This is probably wrong!");
print("\n");
print("Dojo will try to load anyway");
}
djConfig.libraryScriptUri = "./";
}
}
dojo.doc = function () {
return document;
};
dojo.body = function () {
return document.body;
};
function setTimeout(func, delay) {
var def = {sleepTime:delay, hasSlept:false, run:function () {
if (!this.hasSlept) {
this.hasSlept = true;
java.lang.Thread.currentThread().sleep(this.sleepTime);
}
try {
func();
}
catch (e) {
dojo.debug("Error running setTimeout thread:" + e);
}
}};
var runnable = new java.lang.Runnable(def);
var thread = new java.lang.Thread(runnable);
thread.start();
}
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
/trunk/api/js/dojo/src/browser_debug.js
New file
0,0 → 1,133
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.browser_debug");
dojo.hostenv.loadedUris.push("../src/bootstrap1.js");
dojo.hostenv.loadedUris.push("../src/loader.js");
dojo.hostenv.loadedUris.push("../src/hostenv_browser.js");
dojo.hostenv._loadedUrisListStart = dojo.hostenv.loadedUris.length;
function removeComments(contents) {
contents = new String((!contents) ? "" : contents);
contents = contents.replace(/^(.*?)\/\/(.*)$/mg, "$1");
contents = contents.replace(/(\n)/mg, "__DOJONEWLINE");
contents = contents.replace(/\/\*(.*?)\*\//g, "");
return contents.replace(/__DOJONEWLINE/mg, "\n");
}
dojo.hostenv.getRequiresAndProvides = function (contents) {
if (!contents) {
return [];
}
var deps = [];
var tmp;
RegExp.lastIndex = 0;
var testExp = /dojo.(hostenv.loadModule|hostenv.require|require|requireIf|kwCompoundRequire|hostenv.conditionalLoadModule|hostenv.startPackage|provide)\([\w\W]*?\)/mg;
while ((tmp = testExp.exec(contents)) != null) {
deps.push(tmp[0]);
}
return deps;
};
dojo.hostenv.getDelayRequiresAndProvides = function (contents) {
if (!contents) {
return [];
}
var deps = [];
var tmp;
RegExp.lastIndex = 0;
var testExp = /dojo.(requireAfterIf)\([\w\W]*?\)/mg;
while ((tmp = testExp.exec(contents)) != null) {
deps.push(tmp[0]);
}
return deps;
};
dojo.clobberLastObject = function (objpath) {
if (objpath.indexOf(".") == -1) {
if (!dj_undef(objpath, dj_global)) {
delete dj_global[objpath];
}
return true;
}
var syms = objpath.split(/\./);
var base = dojo.evalObjPath(syms.slice(0, -1).join("."), false);
var child = syms[syms.length - 1];
if (!dj_undef(child, base)) {
delete base[child];
return true;
}
return false;
};
var removals = [];
function zip(arr) {
var ret = [];
var seen = {};
for (var x = 0; x < arr.length; x++) {
if (!seen[arr[x]]) {
ret.push(arr[x]);
seen[arr[x]] = true;
}
}
return ret;
}
var old_dj_eval = dj_eval;
dj_eval = function () {
return true;
};
dojo.hostenv.oldLoadUri = dojo.hostenv.loadUri;
dojo.hostenv.loadUri = function (uri, cb) {
if (dojo.hostenv.loadedUris[uri]) {
return true;
}
try {
var text = this.getText(uri, null, true);
if (!text) {
return false;
}
if (cb) {
var expr = old_dj_eval("(" + text + ")");
cb(expr);
} else {
var requires = dojo.hostenv.getRequiresAndProvides(text);
eval(requires.join(";"));
dojo.hostenv.loadedUris.push(uri);
dojo.hostenv.loadedUris[uri] = true;
var delayRequires = dojo.hostenv.getDelayRequiresAndProvides(text);
eval(delayRequires.join(";"));
}
}
catch (e) {
alert(e);
}
return true;
};
dojo.hostenv._writtenIncludes = {};
dojo.hostenv.writeIncludes = function (willCallAgain) {
for (var x = removals.length - 1; x >= 0; x--) {
dojo.clobberLastObject(removals[x]);
}
var depList = [];
var seen = dojo.hostenv._writtenIncludes;
for (var x = 0; x < dojo.hostenv.loadedUris.length; x++) {
var curi = dojo.hostenv.loadedUris[x];
if (!seen[curi]) {
seen[curi] = true;
depList.push(curi);
}
}
dojo.hostenv._global_omit_module_check = true;
for (var x = dojo.hostenv._loadedUrisListStart; x < depList.length; x++) {
document.write("<script type='text/javascript' src='" + depList[x] + "'></script>");
}
document.write("<script type='text/javascript'>dojo.hostenv._global_omit_module_check = false;</script>");
dojo.hostenv._loadedUrisListStart = 0;
if (!willCallAgain) {
dj_eval = old_dj_eval;
dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri;
}
};
 
/trunk/api/js/dojo/src/undo/browser.js
New file
0,0 → 1,201
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.undo.browser");
dojo.require("dojo.io.common");
try {
if ((!djConfig["preventBackButtonFix"]) && (!dojo.hostenv.post_load_)) {
document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='" + (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "'></iframe>");
}
}
catch (e) {
}
if (dojo.render.html.opera) {
dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work.");
}
dojo.undo.browser = {initialHref:(!dj_undef("window")) ? window.location.href : "", initialHash:(!dj_undef("window")) ? window.location.hash : "", moveForward:false, historyStack:[], forwardStack:[], historyIframe:null, bookmarkAnchor:null, locationTimer:null, setInitialState:function (args) {
this.initialState = this._createState(this.initialHref, args, this.initialHash);
}, addToHistory:function (args) {
this.forwardStack = [];
var hash = null;
var url = null;
if (!this.historyIframe) {
if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) {
dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html");
}
this.historyIframe = window.frames["djhistory"];
}
if (!this.bookmarkAnchor) {
this.bookmarkAnchor = document.createElement("a");
dojo.body().appendChild(this.bookmarkAnchor);
this.bookmarkAnchor.style.display = "none";
}
if (args["changeUrl"]) {
hash = "#" + ((args["changeUrl"] !== true) ? args["changeUrl"] : (new Date()).getTime());
if (this.historyStack.length == 0 && this.initialState.urlHash == hash) {
this.initialState = this._createState(url, args, hash);
return;
} else {
if (this.historyStack.length > 0 && this.historyStack[this.historyStack.length - 1].urlHash == hash) {
this.historyStack[this.historyStack.length - 1] = this._createState(url, args, hash);
return;
}
}
this.changingUrl = true;
setTimeout("window.location.href = '" + hash + "'; dojo.undo.browser.changingUrl = false;", 1);
this.bookmarkAnchor.href = hash;
if (dojo.render.html.ie) {
url = this._loadIframeHistory();
var oldCB = args["back"] || args["backButton"] || args["handle"];
var tcb = function (handleName) {
if (window.location.hash != "") {
setTimeout("window.location.href = '" + hash + "';", 1);
}
oldCB.apply(this, [handleName]);
};
if (args["back"]) {
args.back = tcb;
} else {
if (args["backButton"]) {
args.backButton = tcb;
} else {
if (args["handle"]) {
args.handle = tcb;
}
}
}
var oldFW = args["forward"] || args["forwardButton"] || args["handle"];
var tfw = function (handleName) {
if (window.location.hash != "") {
window.location.href = hash;
}
if (oldFW) {
oldFW.apply(this, [handleName]);
}
};
if (args["forward"]) {
args.forward = tfw;
} else {
if (args["forwardButton"]) {
args.forwardButton = tfw;
} else {
if (args["handle"]) {
args.handle = tfw;
}
}
}
} else {
if (dojo.render.html.moz) {
if (!this.locationTimer) {
this.locationTimer = setInterval("dojo.undo.browser.checkLocation();", 200);
}
}
}
} else {
url = this._loadIframeHistory();
}
this.historyStack.push(this._createState(url, args, hash));
}, checkLocation:function () {
if (!this.changingUrl) {
var hsl = this.historyStack.length;
if ((window.location.hash == this.initialHash || window.location.href == this.initialHref) && (hsl == 1)) {
this.handleBackButton();
return;
}
if (this.forwardStack.length > 0) {
if (this.forwardStack[this.forwardStack.length - 1].urlHash == window.location.hash) {
this.handleForwardButton();
return;
}
}
if ((hsl >= 2) && (this.historyStack[hsl - 2])) {
if (this.historyStack[hsl - 2].urlHash == window.location.hash) {
this.handleBackButton();
return;
}
}
}
}, iframeLoaded:function (evt, ifrLoc) {
if (!dojo.render.html.opera) {
var query = this._getUrlQuery(ifrLoc.href);
if (query == null) {
if (this.historyStack.length == 1) {
this.handleBackButton();
}
return;
}
if (this.moveForward) {
this.moveForward = false;
return;
}
if (this.historyStack.length >= 2 && query == this._getUrlQuery(this.historyStack[this.historyStack.length - 2].url)) {
this.handleBackButton();
} else {
if (this.forwardStack.length > 0 && query == this._getUrlQuery(this.forwardStack[this.forwardStack.length - 1].url)) {
this.handleForwardButton();
}
}
}
}, handleBackButton:function () {
var current = this.historyStack.pop();
if (!current) {
return;
}
var last = this.historyStack[this.historyStack.length - 1];
if (!last && this.historyStack.length == 0) {
last = this.initialState;
}
if (last) {
if (last.kwArgs["back"]) {
last.kwArgs["back"]();
} else {
if (last.kwArgs["backButton"]) {
last.kwArgs["backButton"]();
} else {
if (last.kwArgs["handle"]) {
last.kwArgs.handle("back");
}
}
}
}
this.forwardStack.push(current);
}, handleForwardButton:function () {
var last = this.forwardStack.pop();
if (!last) {
return;
}
if (last.kwArgs["forward"]) {
last.kwArgs.forward();
} else {
if (last.kwArgs["forwardButton"]) {
last.kwArgs.forwardButton();
} else {
if (last.kwArgs["handle"]) {
last.kwArgs.handle("forward");
}
}
}
this.historyStack.push(last);
}, _createState:function (url, args, hash) {
return {"url":url, "kwArgs":args, "urlHash":hash};
}, _getUrlQuery:function (url) {
var segments = url.split("?");
if (segments.length < 2) {
return null;
} else {
return segments[1];
}
}, _loadIframeHistory:function () {
var url = (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "?" + (new Date()).getTime();
this.moveForward = true;
dojo.io.setIFrameSrc(this.historyIframe, url, false);
return url;
}};
 
/trunk/api/js/dojo/src/undo/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.undo.Manager");
dojo.provide("dojo.undo.*");
 
/trunk/api/js/dojo/src/undo/Manager.js
New file
0,0 → 1,148
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.undo.Manager");
dojo.require("dojo.lang.common");
dojo.undo.Manager = function (parent) {
this.clear();
this._parent = parent;
};
dojo.extend(dojo.undo.Manager, {_parent:null, _undoStack:null, _redoStack:null, _currentManager:null, canUndo:false, canRedo:false, isUndoing:false, isRedoing:false, onUndo:function (manager, item) {
}, onRedo:function (manager, item) {
}, onUndoAny:function (manager, item) {
}, onRedoAny:function (manager, item) {
}, _updateStatus:function () {
this.canUndo = this._undoStack.length > 0;
this.canRedo = this._redoStack.length > 0;
}, clear:function () {
this._undoStack = [];
this._redoStack = [];
this._currentManager = this;
this.isUndoing = false;
this.isRedoing = false;
this._updateStatus();
}, undo:function () {
if (!this.canUndo) {
return false;
}
this.endAllTransactions();
this.isUndoing = true;
var top = this._undoStack.pop();
if (top instanceof dojo.undo.Manager) {
top.undoAll();
} else {
top.undo();
}
if (top.redo) {
this._redoStack.push(top);
}
this.isUndoing = false;
this._updateStatus();
this.onUndo(this, top);
if (!(top instanceof dojo.undo.Manager)) {
this.getTop().onUndoAny(this, top);
}
return true;
}, redo:function () {
if (!this.canRedo) {
return false;
}
this.isRedoing = true;
var top = this._redoStack.pop();
if (top instanceof dojo.undo.Manager) {
top.redoAll();
} else {
top.redo();
}
this._undoStack.push(top);
this.isRedoing = false;
this._updateStatus();
this.onRedo(this, top);
if (!(top instanceof dojo.undo.Manager)) {
this.getTop().onRedoAny(this, top);
}
return true;
}, undoAll:function () {
while (this._undoStack.length > 0) {
this.undo();
}
}, redoAll:function () {
while (this._redoStack.length > 0) {
this.redo();
}
}, push:function (undo, redo, description) {
if (!undo) {
return;
}
if (this._currentManager == this) {
this._undoStack.push({undo:undo, redo:redo, description:description});
} else {
this._currentManager.push.apply(this._currentManager, arguments);
}
this._redoStack = [];
this._updateStatus();
}, concat:function (manager) {
if (!manager) {
return;
}
if (this._currentManager == this) {
for (var x = 0; x < manager._undoStack.length; x++) {
this._undoStack.push(manager._undoStack[x]);
}
if (manager._undoStack.length > 0) {
this._redoStack = [];
}
this._updateStatus();
} else {
this._currentManager.concat.apply(this._currentManager, arguments);
}
}, beginTransaction:function (description) {
if (this._currentManager == this) {
var mgr = new dojo.undo.Manager(this);
mgr.description = description ? description : "";
this._undoStack.push(mgr);
this._currentManager = mgr;
return mgr;
} else {
this._currentManager = this._currentManager.beginTransaction.apply(this._currentManager, arguments);
}
}, endTransaction:function (flatten) {
if (this._currentManager == this) {
if (this._parent) {
this._parent._currentManager = this._parent;
if (this._undoStack.length == 0 || flatten) {
var idx = dojo.lang.find(this._parent._undoStack, this);
if (idx >= 0) {
this._parent._undoStack.splice(idx, 1);
if (flatten) {
for (var x = 0; x < this._undoStack.length; x++) {
this._parent._undoStack.splice(idx++, 0, this._undoStack[x]);
}
this._updateStatus();
}
}
}
return this._parent;
}
} else {
this._currentManager = this._currentManager.endTransaction.apply(this._currentManager, arguments);
}
}, endAllTransactions:function () {
while (this._currentManager != this) {
this.endTransaction();
}
}, getTop:function () {
if (this._parent) {
return this._parent.getTop();
} else {
return this;
}
}});
 
/trunk/api/js/dojo/src/profile.js
New file
0,0 → 1,102
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.profile");
dojo.profile = {_profiles:{}, _pns:[], start:function (name) {
if (!this._profiles[name]) {
this._profiles[name] = {iters:0, total:0};
this._pns[this._pns.length] = name;
} else {
if (this._profiles[name]["start"]) {
this.end(name);
}
}
this._profiles[name].end = null;
this._profiles[name].start = new Date();
}, end:function (name) {
var ed = new Date();
if ((this._profiles[name]) && (this._profiles[name]["start"])) {
with (this._profiles[name]) {
end = ed;
total += (end - start);
start = null;
iters++;
}
} else {
return true;
}
}, dump:function (appendToDoc) {
var tbl = document.createElement("table");
with (tbl.style) {
border = "1px solid black";
borderCollapse = "collapse";
}
var hdr = tbl.createTHead();
var hdrtr = hdr.insertRow(0);
var cols = ["Identifier", "Calls", "Total", "Avg"];
for (var x = 0; x < cols.length; x++) {
var ntd = hdrtr.insertCell(x);
with (ntd.style) {
backgroundColor = "#225d94";
color = "white";
borderBottom = "1px solid black";
borderRight = "1px solid black";
fontFamily = "tahoma";
fontWeight = "bolder";
paddingLeft = paddingRight = "5px";
}
ntd.appendChild(document.createTextNode(cols[x]));
}
for (var x = 0; x < this._pns.length; x++) {
var prf = this._profiles[this._pns[x]];
this.end(this._pns[x]);
if (prf.iters > 0) {
var bdytr = tbl.insertRow(true);
var vals = [this._pns[x], prf.iters, prf.total, parseInt(prf.total / prf.iters)];
for (var y = 0; y < vals.length; y++) {
var cc = bdytr.insertCell(y);
cc.appendChild(document.createTextNode(vals[y]));
with (cc.style) {
borderBottom = "1px solid gray";
paddingLeft = paddingRight = "5px";
if (x % 2) {
backgroundColor = "#e1f1ff";
}
if (y > 0) {
textAlign = "right";
borderRight = "1px solid gray";
} else {
borderRight = "1px solid black";
}
}
}
}
}
if (appendToDoc) {
var ne = document.createElement("div");
ne.id = "profileOutputTable";
with (ne.style) {
fontFamily = "Courier New, monospace";
fontSize = "12px";
lineHeight = "16px";
borderTop = "1px solid black";
padding = "10px";
}
if (document.getElementById("profileOutputTable")) {
dojo.body().replaceChild(ne, document.getElementById("profileOutputTable"));
} else {
dojo.body().appendChild(ne);
}
ne.appendChild(tbl);
}
return tbl;
}};
dojo.profile.stop = dojo.profile.end;
 
/trunk/api/js/dojo/src/hostenv_adobesvg.js
New file
0,0 → 1,378
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
if (typeof window == "undefined") {
dojo.raise("attempt to use adobe svg hostenv when no window object");
}
with (dojo.render) {
name = navigator.appName;
ver = parseFloat(navigator.appVersion, 10);
switch (navigator.platform) {
case "MacOS":
os.osx = true;
break;
case "Linux":
os.linux = true;
break;
case "Windows":
os.win = true;
break;
default:
os.linux = true;
break;
}
svg.capable = true;
svg.support.builtin = true;
svg.adobe = true;
}
dojo.hostenv.println = function (s) {
try {
var ti = document.createElement("text");
ti.setAttribute("x", "50");
var yPos = 25 + 15 * document.getElementsByTagName("text").length;
ti.setAttribute("y", yPos);
var tn = document.createTextNode(s);
ti.appendChild(tn);
document.documentElement.appendChild(ti);
}
catch (e) {
}
};
dojo.debug = function () {
if (!djConfig.isDebug) {
return;
}
var args = arguments;
if (typeof dojo.hostenv.println != "function") {
dojo.raise("attempt to call dojo.debug when there is no dojo.hostenv println implementation (yet?)");
}
var isJUM = dj_global["jum"];
var s = isJUM ? "" : "DEBUG: ";
for (var i = 0; i < args.length; ++i) {
s += args[i];
}
if (isJUM) {
jum.debug(s);
} else {
dojo.hostenv.println(s);
}
};
dojo.hostenv.startPackage("dojo.hostenv");
dojo.hostenv.name_ = "adobesvg";
dojo.hostenv.anonCtr = 0;
dojo.hostenv.anon = {};
dojo.hostenv.nameAnonFunc = function (anonFuncPtr, namespaceObj) {
var ret = "_" + this.anonCtr++;
var nso = (namespaceObj || this.anon);
while (typeof nso[ret] != "undefined") {
ret = "_" + this.anonCtr++;
}
nso[ret] = anonFuncPtr;
return ret;
};
dojo.hostenv.modulesLoadedFired = false;
dojo.hostenv.modulesLoadedListeners = [];
dojo.hostenv.getTextStack = [];
dojo.hostenv.loadUriStack = [];
dojo.hostenv.loadedUris = [];
dojo.hostenv.modulesLoaded = function () {
if (this.modulesLoadedFired) {
return;
}
if ((this.loadUriStack.length == 0) && (this.getTextStack.length == 0)) {
if (this.inFlightCount > 0) {
dojo.debug("couldn't initialize, there are files still in flight");
return;
}
this.modulesLoadedFired = true;
var mll = this.modulesLoadedListeners;
for (var x = 0; x < mll.length; x++) {
mll[x]();
}
}
};
dojo.hostenv.getNewAnonFunc = function () {
var ret = "_" + this.anonCtr++;
while (typeof this.anon[ret] != "undefined") {
ret = "_" + this.anonCtr++;
}
eval("dojo.nostenv.anon." + ret + " = function(){};");
return [ret, this.anon[ret]];
};
dojo.hostenv.displayStack = function () {
var oa = [];
var stack = this.loadUriStack;
for (var x = 0; x < stack.length; x++) {
oa.unshift([stack[x][0], (typeof stack[x][2])]);
}
dojo.debug("<pre>" + oa.join("\n") + "</pre>");
};
dojo.hostenv.unwindUriStack = function () {
var stack = this.loadUriStack;
for (var x in dojo.hostenv.loadedUris) {
for (var y = stack.length - 1; y >= 0; y--) {
if (stack[y][0] == x) {
stack.splice(y, 1);
}
}
}
var next = stack.pop();
if ((!next) && (stack.length == 0)) {
return;
}
for (var x = 0; x < stack.length; x++) {
if ((stack[x][0] == next[0]) && (stack[x][2])) {
next[2] == stack[x][2];
}
}
var last = next;
while (dojo.hostenv.loadedUris[next[0]]) {
last = next;
next = stack.pop();
}
while (typeof next[2] == "string") {
try {
dj_eval(next[2]);
next[1](true);
}
catch (e) {
dojo.debug("we got an error when loading " + next[0]);
dojo.debug("error: " + e);
}
dojo.hostenv.loadedUris[next[0]] = true;
dojo.hostenv.loadedUris.push(next[0]);
last = next;
next = stack.pop();
if ((!next) && (stack.length == 0)) {
break;
}
while (dojo.hostenv.loadedUris[next[0]]) {
last = next;
next = stack.pop();
}
}
if (next) {
stack.push(next);
dojo.debug("### CHOKED ON: " + next[0]);
}
};
dojo.hostenv.loadUri = function (uri, cb) {
if (dojo.hostenv.loadedUris[uri]) {
return;
}
var stack = this.loadUriStack;
stack.push([uri, cb, null]);
var tcb = function (contents) {
if (contents.content) {
contents = contents.content;
}
var next = stack.pop();
if ((!next) && (stack.length == 0)) {
dojo.hostenv.modulesLoaded();
return;
}
if (typeof contents == "string") {
stack.push(next);
for (var x = 0; x < stack.length; x++) {
if (stack[x][0] == uri) {
stack[x][2] = contents;
}
}
next = stack.pop();
}
if (dojo.hostenv.loadedUris[next[0]]) {
dojo.hostenv.unwindUriStack();
return;
}
stack.push(next);
if (next[0] != uri) {
if (typeof next[2] == "string") {
dojo.hostenv.unwindUriStack();
}
} else {
if (!contents) {
next[1](false);
} else {
var deps = dojo.hostenv.getDepsForEval(next[2]);
if (deps.length > 0) {
eval(deps.join(";"));
} else {
dojo.hostenv.unwindUriStack();
}
}
}
};
this.getText(uri, tcb, true);
};
dojo.hostenv.loadModule = function (modulename, exact_only, omit_module_check) {
var module = this.findModule(modulename, 0);
if (module) {
return module;
}
if (typeof this.loading_modules_[modulename] !== "undefined") {
dojo.debug("recursive attempt to load module '" + modulename + "'");
} else {
this.addedToLoadingCount.push(modulename);
}
this.loading_modules_[modulename] = 1;
var relpath = modulename.replace(/\./g, "/") + ".js";
var syms = modulename.split(".");
var nsyms = modulename.split(".");
if (syms[0] == "dojo") {
syms[0] = "src";
}
var last = syms.pop();
syms.push(last);
var _this = this;
var pfn = this.pkgFileName;
if (last == "*") {
modulename = (nsyms.slice(0, -1)).join(".");
var module = this.findModule(modulename, 0);
if (module) {
_this.removedFromLoadingCount.push(modulename);
return module;
}
var nextTry = function (lastStatus) {
if (lastStatus) {
module = _this.findModule(modulename, false);
if ((!module) && (syms[syms.length - 1] != pfn)) {
dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'");
}
if (module) {
_this.removedFromLoadingCount.push(modulename);
dojo.hostenv.modulesLoaded();
return;
}
}
syms.pop();
syms.push(pfn);
relpath = syms.join("/") + ".js";
if (relpath.charAt(0) == "/") {
relpath = relpath.slice(1);
}
_this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
};
nextTry();
} else {
relpath = syms.join("/") + ".js";
modulename = nsyms.join(".");
var nextTry = function (lastStatus) {
if (lastStatus) {
module = _this.findModule(modulename, false);
if ((!module) && (syms[syms.length - 1] != pfn)) {
dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'");
}
if (module) {
_this.removedFromLoadingCount.push(modulename);
dojo.hostenv.modulesLoaded();
return;
}
}
var setPKG = (syms[syms.length - 1] == pfn) ? false : true;
syms.pop();
if (setPKG) {
syms.push(pfn);
}
relpath = syms.join("/") + ".js";
if (relpath.charAt(0) == "/") {
relpath = relpath.slice(1);
}
_this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
};
this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
}
return;
};
dojo.hostenv.async_cb = null;
dojo.hostenv.unWindGetTextStack = function () {
if (dojo.hostenv.inFlightCount > 0) {
setTimeout("dojo.hostenv.unWindGetTextStack()", 100);
return;
}
dojo.hostenv.inFlightCount++;
var next = dojo.hostenv.getTextStack.pop();
if ((!next) && (dojo.hostenv.getTextStack.length == 0)) {
dojo.hostenv.inFlightCount--;
dojo.hostenv.async_cb = function () {
};
return;
}
dojo.hostenv.async_cb = next[1];
window.getURL(next[0], function (result) {
dojo.hostenv.inFlightCount--;
dojo.hostenv.async_cb(result.content);
dojo.hostenv.unWindGetTextStack();
});
};
dojo.hostenv.getText = function (uri, async_cb, fail_ok) {
try {
if (async_cb) {
dojo.hostenv.getTextStack.push([uri, async_cb, fail_ok]);
dojo.hostenv.unWindGetTextStack();
} else {
return dojo.raise("No synchronous XMLHTTP implementation available, for uri " + uri);
}
}
catch (e) {
return dojo.raise("No XMLHTTP implementation available, for uri " + uri);
}
};
dojo.hostenv.postText = function (uri, async_cb, text, fail_ok, mime_type, encoding) {
var http = null;
var async_callback = function (httpResponse) {
if (!httpResponse.success) {
dojo.raise("Request for uri '" + uri + "' resulted in " + httpResponse.status);
}
if (!httpResponse.content) {
if (!fail_ok) {
dojo.raise("Request for uri '" + uri + "' resulted in no content");
}
return null;
}
async_cb(httpResponse.content);
};
try {
if (async_cb) {
http = window.postURL(uri, text, async_callback, mimeType, encoding);
} else {
return dojo.raise("No synchronous XMLHTTP post implementation available, for uri " + uri);
}
}
catch (e) {
return dojo.raise("No XMLHTTP post implementation available, for uri " + uri);
}
};
function dj_last_script_src() {
var scripts = window.document.getElementsByTagName("script");
if (scripts.length < 1) {
dojo.raise("No script elements in window.document, so can't figure out my script src");
}
var li = scripts.length - 1;
var xlinkNS = "http://www.w3.org/1999/xlink";
var src = null;
var script = null;
while (!src) {
script = scripts.item(li);
src = script.getAttributeNS(xlinkNS, "href");
li--;
if (li < 0) {
break;
}
}
if (!src) {
dojo.raise("Last script element (out of " + scripts.length + ") has no src");
}
return src;
}
if (!dojo.hostenv["library_script_uri_"]) {
dojo.hostenv.library_script_uri_ = dj_last_script_src();
}
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
/trunk/api/js/dojo/src/style.js
New file
0,0 → 1,16
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.style");
dojo.require("dojo.lang.common");
dojo.kwCompoundRequire({browser:["dojo.html.style"]});
dojo.deprecated("dojo.style", "replaced by dojo.html.style", "0.5");
dojo.lang.mixin(dojo.style, dojo.html);
 
/trunk/api/js/dojo/src/loader_xd.js
New file
0,0 → 1,401
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.hostenv.resetXd = function () {
this.isXDomain = djConfig.useXDomain || false;
this.xdTimer = 0;
this.xdInFlight = {};
this.xdOrderedReqs = [];
this.xdDepMap = {};
this.xdContents = [];
this.xdDefList = [];
};
dojo.hostenv.resetXd();
dojo.hostenv.createXdPackage = function (contents, resourceName, resourcePath) {
var deps = [];
var depRegExp = /dojo.(require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
var match;
while ((match = depRegExp.exec(contents)) != null) {
deps.push("\"" + match[1] + "\", " + match[2]);
}
var output = [];
output.push("dojo.hostenv.packageLoaded({\n");
if (deps.length > 0) {
output.push("depends: [");
for (var i = 0; i < deps.length; i++) {
if (i > 0) {
output.push(",\n");
}
output.push("[" + deps[i] + "]");
}
output.push("],");
}
output.push("\ndefinePackage: function(dojo){");
output.push(contents);
output.push("\n}, resourceName: '" + resourceName + "', resourcePath: '" + resourcePath + "'});");
return output.join("");
};
dojo.hostenv.loadPath = function (relpath, module, cb) {
var colonIndex = relpath.indexOf(":");
var slashIndex = relpath.indexOf("/");
var uri;
var currentIsXDomain = false;
if (colonIndex > 0 && colonIndex < slashIndex) {
uri = relpath;
this.isXDomain = currentIsXDomain = true;
} else {
uri = this.getBaseScriptUri() + relpath;
colonIndex = uri.indexOf(":");
slashIndex = uri.indexOf("/");
if (colonIndex > 0 && colonIndex < slashIndex && (!location.host || uri.indexOf("http://" + location.host) != 0)) {
this.isXDomain = currentIsXDomain = true;
}
}
if (djConfig.cacheBust && dojo.render.html.capable) {
uri += "?" + String(djConfig.cacheBust).replace(/\W+/g, "");
}
try {
return ((!module || this.isXDomain) ? this.loadUri(uri, cb, currentIsXDomain, module) : this.loadUriAndCheck(uri, module, cb));
}
catch (e) {
dojo.debug(e);
return false;
}
};
dojo.hostenv.loadUri = function (uri, cb, currentIsXDomain, module) {
if (this.loadedUris[uri]) {
return 1;
}
if (this.isXDomain) {
if (uri.indexOf("__package__") != -1) {
module += ".*";
}
this.xdOrderedReqs.push(module);
if (currentIsXDomain) {
this.xdInFlight[module] = true;
this.inFlightCount++;
}
if (!this.xdTimer) {
this.xdTimer = setInterval("dojo.hostenv.watchInFlightXDomain();", 100);
}
this.xdStartTime = (new Date()).getTime();
}
if (currentIsXDomain) {
var lastIndex = uri.lastIndexOf(".");
if (lastIndex <= 0) {
lastIndex = uri.length - 1;
}
var xdUri = uri.substring(0, lastIndex) + ".xd";
if (lastIndex != uri.length - 1) {
xdUri += uri.substring(lastIndex, uri.length);
}
var element = document.createElement("script");
element.type = "text/javascript";
element.src = xdUri;
if (!this.headElement) {
this.headElement = document.getElementsByTagName("head")[0];
if (!this.headElement) {
this.headElement = document.getElementsByTagName("html")[0];
}
}
this.headElement.appendChild(element);
} else {
var contents = this.getText(uri, null, true);
if (contents == null) {
return 0;
}
if (this.isXDomain && uri.indexOf("/nls/") == -1) {
var pkg = this.createXdPackage(contents, module, uri);
dj_eval(pkg);
} else {
if (cb) {
contents = "(" + contents + ")";
}
var value = dj_eval(contents);
if (cb) {
cb(value);
}
}
}
this.loadedUris[uri] = true;
return 1;
};
dojo.hostenv.packageLoaded = function (pkg) {
var deps = pkg.depends;
var requireList = null;
var requireAfterList = null;
var provideList = [];
if (deps && deps.length > 0) {
var dep = null;
var insertHint = 0;
var attachedPackage = false;
for (var i = 0; i < deps.length; i++) {
dep = deps[i];
if (dep[0] == "provide" || dep[0] == "hostenv.moduleLoaded") {
provideList.push(dep[1]);
} else {
if (!requireList) {
requireList = [];
}
if (!requireAfterList) {
requireAfterList = [];
}
var unpackedDeps = this.unpackXdDependency(dep);
if (unpackedDeps.requires) {
requireList = requireList.concat(unpackedDeps.requires);
}
if (unpackedDeps.requiresAfter) {
requireAfterList = requireAfterList.concat(unpackedDeps.requiresAfter);
}
}
var depType = dep[0];
var objPath = depType.split(".");
if (objPath.length == 2) {
dojo[objPath[0]][objPath[1]].apply(dojo[objPath[0]], dep.slice(1));
} else {
dojo[depType].apply(dojo, dep.slice(1));
}
}
var contentIndex = this.xdContents.push({content:pkg.definePackage, resourceName:pkg["resourceName"], resourcePath:pkg["resourcePath"], isDefined:false}) - 1;
for (var i = 0; i < provideList.length; i++) {
this.xdDepMap[provideList[i]] = {requires:requireList, requiresAfter:requireAfterList, contentIndex:contentIndex};
}
for (var i = 0; i < provideList.length; i++) {
this.xdInFlight[provideList[i]] = false;
}
}
};
dojo.hostenv.xdLoadFlattenedBundle = function (moduleName, bundleName, locale, bundleData) {
locale = locale || "root";
var jsLoc = dojo.hostenv.normalizeLocale(locale).replace("-", "_");
var bundlePackage = [moduleName, "nls", bundleName].join(".");
var bundle = dojo.hostenv.startPackage(bundlePackage);
bundle[jsLoc] = bundleData;
var mapName = [moduleName, jsLoc, bundleName].join(".");
var bundleMap = dojo.hostenv.xdBundleMap[mapName];
if (bundleMap) {
for (var param in bundleMap) {
bundle[param] = bundleData;
}
}
};
dojo.hostenv.xdBundleMap = {};
dojo.xdRequireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
var locales = availableFlatLocales.split(",");
var jsLoc = dojo.hostenv.normalizeLocale(locale);
var bestLocale = "";
for (var i = 0; i < locales.length; i++) {
if (jsLoc.indexOf(locales[i]) == 0) {
if (locales[i].length > bestLocale.length) {
bestLocale = locales[i];
}
}
}
var fixedBestLocale = bestLocale.replace("-", "_");
var bundlePackage = dojo.evalObjPath([moduleName, "nls", bundleName].join("."));
if (bundlePackage && bundlePackage[fixedBestLocale]) {
bundle[jsLoc.replace("-", "_")] = bundlePackage[fixedBestLocale];
} else {
var mapName = [moduleName, (fixedBestLocale || "root"), bundleName].join(".");
var bundleMap = dojo.hostenv.xdBundleMap[mapName];
if (!bundleMap) {
bundleMap = dojo.hostenv.xdBundleMap[mapName] = {};
}
bundleMap[jsLoc.replace("-", "_")] = true;
dojo.require(moduleName + ".nls" + (bestLocale ? "." + bestLocale : "") + "." + bundleName);
}
};
(function () {
var extra = djConfig.extraLocale;
if (extra) {
if (!extra instanceof Array) {
extra = [extra];
}
dojo._xdReqLoc = dojo.xdRequireLocalization;
dojo.xdRequireLocalization = function (m, b, locale, fLocales) {
dojo._xdReqLoc(m, b, locale, fLocales);
if (locale) {
return;
}
for (var i = 0; i < extra.length; i++) {
dojo._xdReqLoc(m, b, extra[i], fLocales);
}
};
}
})();
dojo.hostenv.unpackXdDependency = function (dep) {
var newDeps = null;
var newAfterDeps = null;
switch (dep[0]) {
case "requireIf":
case "requireAfterIf":
case "conditionalRequire":
if ((dep[1] === true) || (dep[1] == "common") || (dep[1] && dojo.render[dep[1]].capable)) {
newDeps = [{name:dep[2], content:null}];
}
break;
case "requireAll":
dep.shift();
newDeps = dep;
dojo.hostenv.flattenRequireArray(newDeps);
break;
case "kwCompoundRequire":
case "hostenv.conditionalLoadModule":
var modMap = dep[1];
var common = modMap["common"] || [];
var newDeps = (modMap[dojo.hostenv.name_]) ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
dojo.hostenv.flattenRequireArray(newDeps);
break;
case "require":
case "requireAfter":
case "hostenv.loadModule":
newDeps = [{name:dep[1], content:null}];
break;
}
if (dep[0] == "requireAfterIf" || dep[0] == "requireIf") {
newAfterDeps = newDeps;
newDeps = null;
}
return {requires:newDeps, requiresAfter:newAfterDeps};
};
dojo.hostenv.xdWalkReqs = function () {
var reqChain = null;
var req;
for (var i = 0; i < this.xdOrderedReqs.length; i++) {
req = this.xdOrderedReqs[i];
if (this.xdDepMap[req]) {
reqChain = [req];
reqChain[req] = true;
this.xdEvalReqs(reqChain);
}
}
};
dojo.hostenv.xdEvalReqs = function (reqChain) {
while (reqChain.length > 0) {
var req = reqChain[reqChain.length - 1];
var pkg = this.xdDepMap[req];
if (pkg) {
var reqs = pkg.requires;
if (reqs && reqs.length > 0) {
var nextReq;
for (var i = 0; i < reqs.length; i++) {
nextReq = reqs[i].name;
if (nextReq && !reqChain[nextReq]) {
reqChain.push(nextReq);
reqChain[nextReq] = true;
this.xdEvalReqs(reqChain);
}
}
}
var contents = this.xdContents[pkg.contentIndex];
if (!contents.isDefined) {
var content = contents.content;
content["resourceName"] = contents["resourceName"];
content["resourcePath"] = contents["resourcePath"];
this.xdDefList.push(content);
contents.isDefined = true;
}
this.xdDepMap[req] = null;
var reqs = pkg.requiresAfter;
if (reqs && reqs.length > 0) {
var nextReq;
for (var i = 0; i < reqs.length; i++) {
nextReq = reqs[i].name;
if (nextReq && !reqChain[nextReq]) {
reqChain.push(nextReq);
reqChain[nextReq] = true;
this.xdEvalReqs(reqChain);
}
}
}
}
reqChain.pop();
}
};
dojo.hostenv.clearXdInterval = function () {
clearInterval(this.xdTimer);
this.xdTimer = 0;
};
dojo.hostenv.watchInFlightXDomain = function () {
var waitInterval = (djConfig.xdWaitSeconds || 15) * 1000;
if (this.xdStartTime + waitInterval < (new Date()).getTime()) {
this.clearXdInterval();
var noLoads = "";
for (var param in this.xdInFlight) {
if (this.xdInFlight[param]) {
noLoads += param + " ";
}
}
dojo.raise("Could not load cross-domain packages: " + noLoads);
}
for (var param in this.xdInFlight) {
if (this.xdInFlight[param]) {
return;
}
}
this.clearXdInterval();
this.xdWalkReqs();
var defLength = this.xdDefList.length;
for (var i = 0; i < defLength; i++) {
var content = dojo.hostenv.xdDefList[i];
if (djConfig["debugAtAllCosts"] && content["resourceName"]) {
if (!this["xdDebugQueue"]) {
this.xdDebugQueue = [];
}
this.xdDebugQueue.push({resourceName:content.resourceName, resourcePath:content.resourcePath});
} else {
content(dojo);
}
}
for (var i = 0; i < this.xdContents.length; i++) {
var current = this.xdContents[i];
if (current.content && !current.isDefined) {
current.content(dojo);
}
}
this.resetXd();
if (this["xdDebugQueue"] && this.xdDebugQueue.length > 0) {
this.xdDebugFileLoaded();
} else {
this.xdNotifyLoaded();
}
};
dojo.hostenv.xdNotifyLoaded = function () {
this.inFlightCount = 0;
this.callLoaded();
};
dojo.hostenv.flattenRequireArray = function (target) {
if (target) {
for (var i = 0; i < target.length; i++) {
if (target[i] instanceof Array) {
target[i] = {name:target[i][0], content:null};
} else {
target[i] = {name:target[i], content:null};
}
}
}
};
dojo.hostenv.xdHasCalledPreload = false;
dojo.hostenv.xdRealCallLoaded = dojo.hostenv.callLoaded;
dojo.hostenv.callLoaded = function () {
if (this.xdHasCalledPreload || dojo.hostenv.getModulePrefix("dojo") == "src" || !this.localesGenerated) {
this.xdRealCallLoaded();
this.xdHasCalledPreload = true;
} else {
if (this.localesGenerated) {
this.registerNlsPrefix = function () {
dojo.registerModulePath("nls", dojo.hostenv.getModulePrefix("dojo") + "/../nls");
};
this.preloadLocalizations();
}
this.xdHasCalledPreload = true;
}
};
 
/trunk/api/js/dojo/src/collections/Graph.js
New file
0,0 → 1,149
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Graph");
dojo.require("dojo.collections.Collections");
dojo.experimental("dojo.collections.Graph");
dojo.collections.Graph = function (nodes) {
function node(key, data, neighbors) {
this.key = key;
this.data = data;
this.neighbors = neighbors || new adjacencyList();
this.addDirected = function () {
if (arguments[0].constructor == edgeToNeighbor) {
this.neighbors.add(arguments[0]);
} else {
var n = arguments[0];
var cost = arguments[1] || 0;
this.neighbors.add(new edgeToNeighbor(n, cost));
}
};
}
function nodeList() {
var d = new dojo.collections.Dictionary();
function nodelistiterator() {
var o = [];
var e = d.getIterator();
while (e.get()) {
o[o.length] = e.element;
}
var position = 0;
this.element = o[position] || null;
this.atEnd = function () {
return (position >= o.length);
};
this.get = function () {
if (this.atEnd()) {
return null;
}
this.element = o[position++];
return this.element;
};
this.map = function (fn, scope) {
var s = scope || dj_global;
if (Array.map) {
return Array.map(o, fn, s);
} else {
var arr = [];
for (var i = 0; i < o.length; i++) {
arr.push(fn.call(s, o[i]));
}
return arr;
}
};
this.reset = function () {
position = 0;
this.element = o[position];
};
}
this.add = function (node) {
d.add(node.key, node);
};
this.clear = function () {
d.clear();
};
this.containsKey = function (key) {
return d.containsKey(key);
};
this.getIterator = function () {
return new nodelistiterator(this);
};
this.item = function (key) {
return d.item(key);
};
this.remove = function (node) {
d.remove(node.key);
};
}
function edgeToNeighbor(node, cost) {
this.neighbor = node;
this.cost = cost;
}
function adjacencyList() {
var d = [];
this.add = function (o) {
d.push(o);
};
this.item = function (i) {
return d[i];
};
this.getIterator = function () {
return new dojo.collections.Iterator([].concat(d));
};
}
this.nodes = nodes || new nodeList();
this.count = this.nodes.count;
this.clear = function () {
this.nodes.clear();
this.count = 0;
};
this.addNode = function () {
var n = arguments[0];
if (arguments.length > 1) {
n = new node(arguments[0], arguments[1]);
}
if (!this.nodes.containsKey(n.key)) {
this.nodes.add(n);
this.count++;
}
};
this.addDirectedEdge = function (uKey, vKey, cost) {
var uNode, vNode;
if (uKey.constructor != node) {
uNode = this.nodes.item(uKey);
vNode = this.nodes.item(vKey);
} else {
uNode = uKey;
vNode = vKey;
}
var c = cost || 0;
uNode.addDirected(vNode, c);
};
this.addUndirectedEdge = function (uKey, vKey, cost) {
var uNode, vNode;
if (uKey.constructor != node) {
uNode = this.nodes.item(uKey);
vNode = this.nodes.item(vKey);
} else {
uNode = uKey;
vNode = vKey;
}
var c = cost || 0;
uNode.addDirected(vNode, c);
vNode.addDirected(uNode, c);
};
this.contains = function (n) {
return this.nodes.containsKey(n.key);
};
this.containsKey = function (k) {
return this.nodes.containsKey(k);
};
};
 
/trunk/api/js/dojo/src/collections/SkipList.js
New file
0,0 → 1,167
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.SkipList");
dojo.require("dojo.collections.Collections");
dojo.require("dojo.experimental");
dojo.experimental("dojo.collections.SkipList");
dojo.collections.SkipList = function () {
function node(height, val) {
this.value = val;
this.height = height;
this.nodes = new nodeList(height);
this.compare = function (val) {
if (this.value > val) {
return 1;
}
if (this.value < val) {
return -1;
}
return 0;
};
this.incrementHeight = function () {
this.nodes.incrementHeight();
this.height++;
};
this.decrementHeight = function () {
this.nodes.decrementHeight();
this.height--;
};
}
function nodeList(height) {
var arr = [];
this.height = height;
for (var i = 0; i < height; i++) {
arr[i] = null;
}
this.item = function (i) {
return arr[i];
};
this.incrementHeight = function () {
this.height++;
arr[this.height] = null;
};
this.decrementHeight = function () {
arr.splice(arr.length - 1, 1);
this.height--;
};
}
function iterator(list) {
this.element = list.head;
this.atEnd = function () {
return (this.element == null);
};
this.get = function () {
if (this.atEnd()) {
return null;
}
this.element = this.element.nodes[0];
return this.element;
};
this.reset = function () {
this.element = list.head;
};
}
function chooseRandomHeight(max) {
var level = 1;
while (Math.random() < PROB && level < max) {
level++;
}
return level;
}
var PROB = 0.5;
var comparisons = 0;
this.head = new node(1);
this.count = 0;
this.add = function (val) {
var updates = [];
var current = this.head;
for (var i = this.head.height; i >= 0; i--) {
if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {
comparisons++;
}
while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {
current = current.nodes[i];
comparisons++;
}
updates[i] = current;
}
if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) {
return;
}
var n = new node(val, chooseRandomHeight(this.head.height + 1));
this.count++;
if (n.height > this.head.height) {
this.head.incrementHeight();
this.head.nodes[this.head.height - 1] = n;
}
for (i = 0; i < n.height; i++) {
if (i < updates.length) {
n.nodes[i] = updates[i].nodes[i];
updates[i].nodes[i] = n;
}
}
};
this.contains = function (val) {
var current = this.head;
var i;
for (i = this.head.height - 1; i >= 0; i--) {
while (current.item(i) != null) {
comparisons++;
var result = current.nodes[i].compare(val);
if (result == 0) {
return true;
} else {
if (result < 0) {
current = current.nodes[i];
} else {
break;
}
}
}
}
return false;
};
this.getIterator = function () {
return new iterator(this);
};
this.remove = function (val) {
var updates = [];
var current = this.head;
for (var i = this.head.height - 1; i >= 0; i--) {
if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {
comparisons++;
}
while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {
current = current.nodes[i];
comparisons++;
}
updates[i] = current;
}
current = current.nodes[0];
if (current != null && current.compare(val) == 0) {
this.count--;
for (var i = 0; i < this.head.height; i++) {
if (updates[i].nodes[i] != current) {
break;
} else {
updates[i].nodes[i] = current.nodes[i];
}
}
if (this.head.nodes[this.head.height - 1] == null) {
this.head.decrementHeight();
}
}
};
this.resetComparisons = function () {
comparisons = 0;
};
};
 
/trunk/api/js/dojo/src/collections/BinaryTree.js
New file
0,0 → 1,255
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.BinaryTree");
dojo.require("dojo.collections.Collections");
dojo.require("dojo.experimental");
dojo.experimental("dojo.collections.BinaryTree");
dojo.collections.BinaryTree = function (data) {
function node(data, rnode, lnode) {
this.value = data || null;
this.right = rnode || null;
this.left = lnode || null;
this.clone = function () {
var c = new node();
if (this.value.value) {
c.value = this.value.clone();
} else {
c.value = this.value;
}
if (this.left) {
c.left = this.left.clone();
}
if (this.right) {
c.right = this.right.clone();
}
};
this.compare = function (n) {
if (this.value > n.value) {
return 1;
}
if (this.value < n.value) {
return -1;
}
return 0;
};
this.compareData = function (d) {
if (this.value > d) {
return 1;
}
if (this.value < d) {
return -1;
}
return 0;
};
}
function inorderTraversalBuildup(current, a) {
if (current) {
inorderTraversalBuildup(current.left, a);
a.add(current);
inorderTraversalBuildup(current.right, a);
}
}
function preorderTraversal(current, sep) {
var s = "";
if (current) {
s = current.value.toString() + sep;
s += preorderTraversal(current.left, sep);
s += preorderTraversal(current.right, sep);
}
return s;
}
function inorderTraversal(current, sep) {
var s = "";
if (current) {
s = inorderTraversal(current.left, sep);
s += current.value.toString() + sep;
s += inorderTraversal(current.right, sep);
}
return s;
}
function postorderTraversal(current, sep) {
var s = "";
if (current) {
s = postorderTraversal(current.left, sep);
s += postorderTraversal(current.right, sep);
s += current.value.toString() + sep;
}
return s;
}
function searchHelper(current, data) {
if (!current) {
return null;
}
var i = current.compareData(data);
if (i == 0) {
return current;
}
if (i > 0) {
return searchHelper(current.left, data);
} else {
return searchHelper(current.right, data);
}
}
this.add = function (data) {
var n = new node(data);
var i;
var current = root;
var parent = null;
while (current) {
i = current.compare(n);
if (i == 0) {
return;
}
parent = current;
if (i > 0) {
current = current.left;
} else {
current = current.right;
}
}
this.count++;
if (!parent) {
root = n;
} else {
i = parent.compare(n);
if (i > 0) {
parent.left = n;
} else {
parent.right = n;
}
}
};
this.clear = function () {
root = null;
this.count = 0;
};
this.clone = function () {
var c = new dojo.collections.BinaryTree();
c.root = root.clone();
c.count = this.count;
return c;
};
this.contains = function (data) {
return this.search(data) != null;
};
this.deleteData = function (data) {
var current = root;
var parent = null;
var i = current.compareData(data);
while (i != 0 && current != null) {
if (i > 0) {
parent = current;
current = current.left;
} else {
if (i < 0) {
parent = current;
current = current.right;
}
}
i = current.compareData(data);
}
if (!current) {
return;
}
this.count--;
if (!current.right) {
if (!parent) {
root = current.left;
} else {
i = parent.compare(current);
if (i > 0) {
parent.left = current.left;
} else {
if (i < 0) {
parent.right = current.left;
}
}
}
} else {
if (!current.right.left) {
if (!parent) {
root = current.right;
} else {
i = parent.compare(current);
if (i > 0) {
parent.left = current.right;
} else {
if (i < 0) {
parent.right = current.right;
}
}
}
} else {
var leftmost = current.right.left;
var lmParent = current.right;
while (leftmost.left != null) {
lmParent = leftmost;
leftmost = leftmost.left;
}
lmParent.left = leftmost.right;
leftmost.left = current.left;
leftmost.right = current.right;
if (!parent) {
root = leftmost;
} else {
i = parent.compare(current);
if (i > 0) {
parent.left = leftmost;
} else {
if (i < 0) {
parent.right = leftmost;
}
}
}
}
}
};
this.getIterator = function () {
var a = [];
inorderTraversalBuildup(root, a);
return new dojo.collections.Iterator(a);
};
this.search = function (data) {
return searchHelper(root, data);
};
this.toString = function (order, sep) {
if (!order) {
var order = dojo.collections.BinaryTree.TraversalMethods.Inorder;
}
if (!sep) {
var sep = " ";
}
var s = "";
switch (order) {
case dojo.collections.BinaryTree.TraversalMethods.Preorder:
s = preorderTraversal(root, sep);
break;
case dojo.collections.BinaryTree.TraversalMethods.Inorder:
s = inorderTraversal(root, sep);
break;
case dojo.collections.BinaryTree.TraversalMethods.Postorder:
s = postorderTraversal(root, sep);
break;
}
if (s.length == 0) {
return "";
} else {
return s.substring(0, s.length - sep.length);
}
};
this.count = 0;
var root = this.root = null;
if (data) {
this.add(data);
}
};
dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3};
 
/trunk/api/js/dojo/src/collections/Queue.js
New file
0,0 → 1,65
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Queue");
dojo.require("dojo.collections.Collections");
dojo.collections.Queue = function (arr) {
var q = [];
if (arr) {
q = q.concat(arr);
}
this.count = q.length;
this.clear = function () {
q = [];
this.count = q.length;
};
this.clone = function () {
return new dojo.collections.Queue(q);
};
this.contains = function (o) {
for (var i = 0; i < q.length; i++) {
if (q[i] == o) {
return true;
}
}
return false;
};
this.copyTo = function (arr, i) {
arr.splice(i, 0, q);
};
this.dequeue = function () {
var r = q.shift();
this.count = q.length;
return r;
};
this.enqueue = function (o) {
this.count = q.push(o);
};
this.forEach = function (fn, scope) {
var s = scope || dj_global;
if (Array.forEach) {
Array.forEach(q, fn, s);
} else {
for (var i = 0; i < q.length; i++) {
fn.call(s, q[i], i, q);
}
}
};
this.getIterator = function () {
return new dojo.collections.Iterator(q);
};
this.peek = function () {
return q[0];
};
this.toArray = function () {
return [].concat(q);
};
};
 
/trunk/api/js/dojo/src/collections/Dictionary.js
New file
0,0 → 1,99
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Dictionary");
dojo.require("dojo.collections.Collections");
dojo.collections.Dictionary = function (dictionary) {
var items = {};
this.count = 0;
var testObject = {};
this.add = function (k, v) {
var b = (k in items);
items[k] = new dojo.collections.DictionaryEntry(k, v);
if (!b) {
this.count++;
}
};
this.clear = function () {
items = {};
this.count = 0;
};
this.clone = function () {
return new dojo.collections.Dictionary(this);
};
this.contains = this.containsKey = function (k) {
if (testObject[k]) {
return false;
}
return (items[k] != null);
};
this.containsValue = function (v) {
var e = this.getIterator();
while (e.get()) {
if (e.element.value == v) {
return true;
}
}
return false;
};
this.entry = function (k) {
return items[k];
};
this.forEach = function (fn, scope) {
var a = [];
for (var p in items) {
if (!testObject[p]) {
a.push(items[p]);
}
}
var s = scope || dj_global;
if (Array.forEach) {
Array.forEach(a, fn, s);
} else {
for (var i = 0; i < a.length; i++) {
fn.call(s, a[i], i, a);
}
}
};
this.getKeyList = function () {
return (this.getIterator()).map(function (entry) {
return entry.key;
});
};
this.getValueList = function () {
return (this.getIterator()).map(function (entry) {
return entry.value;
});
};
this.item = function (k) {
if (k in items) {
return items[k].valueOf();
}
return undefined;
};
this.getIterator = function () {
return new dojo.collections.DictionaryIterator(items);
};
this.remove = function (k) {
if (k in items && !testObject[k]) {
delete items[k];
this.count--;
return true;
}
return false;
};
if (dictionary) {
var e = dictionary.getIterator();
while (e.get()) {
this.add(e.element.key, e.element.value);
}
}
};
 
/trunk/api/js/dojo/src/collections/Stack.js
New file
0,0 → 1,65
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Stack");
dojo.require("dojo.collections.Collections");
dojo.collections.Stack = function (arr) {
var q = [];
if (arr) {
q = q.concat(arr);
}
this.count = q.length;
this.clear = function () {
q = [];
this.count = q.length;
};
this.clone = function () {
return new dojo.collections.Stack(q);
};
this.contains = function (o) {
for (var i = 0; i < q.length; i++) {
if (q[i] == o) {
return true;
}
}
return false;
};
this.copyTo = function (arr, i) {
arr.splice(i, 0, q);
};
this.forEach = function (fn, scope) {
var s = scope || dj_global;
if (Array.forEach) {
Array.forEach(q, fn, s);
} else {
for (var i = 0; i < q.length; i++) {
fn.call(s, q[i], i, q);
}
}
};
this.getIterator = function () {
return new dojo.collections.Iterator(q);
};
this.peek = function () {
return q[(q.length - 1)];
};
this.pop = function () {
var r = q.pop();
this.count = q.length;
return r;
};
this.push = function (o) {
this.count = q.push(o);
};
this.toArray = function () {
return [].concat(q);
};
};
 
/trunk/api/js/dojo/src/collections/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]});
dojo.provide("dojo.collections.*");
 
/trunk/api/js/dojo/src/collections/ArrayList.js
New file
0,0 → 1,112
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.ArrayList");
dojo.require("dojo.collections.Collections");
dojo.collections.ArrayList = function (arr) {
var items = [];
if (arr) {
items = items.concat(arr);
}
this.count = items.length;
this.add = function (obj) {
items.push(obj);
this.count = items.length;
};
this.addRange = function (a) {
if (a.getIterator) {
var e = a.getIterator();
while (!e.atEnd()) {
this.add(e.get());
}
this.count = items.length;
} else {
for (var i = 0; i < a.length; i++) {
items.push(a[i]);
}
this.count = items.length;
}
};
this.clear = function () {
items.splice(0, items.length);
this.count = 0;
};
this.clone = function () {
return new dojo.collections.ArrayList(items);
};
this.contains = function (obj) {
for (var i = 0; i < items.length; i++) {
if (items[i] == obj) {
return true;
}
}
return false;
};
this.forEach = function (fn, scope) {
var s = scope || dj_global;
if (Array.forEach) {
Array.forEach(items, fn, s);
} else {
for (var i = 0; i < items.length; i++) {
fn.call(s, items[i], i, items);
}
}
};
this.getIterator = function () {
return new dojo.collections.Iterator(items);
};
this.indexOf = function (obj) {
for (var i = 0; i < items.length; i++) {
if (items[i] == obj) {
return i;
}
}
return -1;
};
this.insert = function (i, obj) {
items.splice(i, 0, obj);
this.count = items.length;
};
this.item = function (i) {
return items[i];
};
this.remove = function (obj) {
var i = this.indexOf(obj);
if (i >= 0) {
items.splice(i, 1);
}
this.count = items.length;
};
this.removeAt = function (i) {
items.splice(i, 1);
this.count = items.length;
};
this.reverse = function () {
items.reverse();
};
this.sort = function (fn) {
if (fn) {
items.sort(fn);
} else {
items.sort();
}
};
this.setByIndex = function (i, obj) {
items[i] = obj;
this.count = items.length;
};
this.toArray = function () {
return [].concat(items);
};
this.toString = function (delim) {
return items.join((delim || ","));
};
};
 
/trunk/api/js/dojo/src/collections/Set.js
New file
0,0 → 1,112
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Set");
dojo.require("dojo.collections.Collections");
dojo.require("dojo.collections.ArrayList");
dojo.collections.Set = new function () {
this.union = function (setA, setB) {
if (setA.constructor == Array) {
var setA = new dojo.collections.ArrayList(setA);
}
if (setB.constructor == Array) {
var setB = new dojo.collections.ArrayList(setB);
}
if (!setA.toArray || !setB.toArray) {
dojo.raise("Set operations can only be performed on array-based collections.");
}
var result = new dojo.collections.ArrayList(setA.toArray());
var e = setB.getIterator();
while (!e.atEnd()) {
var item = e.get();
if (!result.contains(item)) {
result.add(item);
}
}
return result;
};
this.intersection = function (setA, setB) {
if (setA.constructor == Array) {
var setA = new dojo.collections.ArrayList(setA);
}
if (setB.constructor == Array) {
var setB = new dojo.collections.ArrayList(setB);
}
if (!setA.toArray || !setB.toArray) {
dojo.raise("Set operations can only be performed on array-based collections.");
}
var result = new dojo.collections.ArrayList();
var e = setB.getIterator();
while (!e.atEnd()) {
var item = e.get();
if (setA.contains(item)) {
result.add(item);
}
}
return result;
};
this.difference = function (setA, setB) {
if (setA.constructor == Array) {
var setA = new dojo.collections.ArrayList(setA);
}
if (setB.constructor == Array) {
var setB = new dojo.collections.ArrayList(setB);
}
if (!setA.toArray || !setB.toArray) {
dojo.raise("Set operations can only be performed on array-based collections.");
}
var result = new dojo.collections.ArrayList();
var e = setA.getIterator();
while (!e.atEnd()) {
var item = e.get();
if (!setB.contains(item)) {
result.add(item);
}
}
return result;
};
this.isSubSet = function (setA, setB) {
if (setA.constructor == Array) {
var setA = new dojo.collections.ArrayList(setA);
}
if (setB.constructor == Array) {
var setB = new dojo.collections.ArrayList(setB);
}
if (!setA.toArray || !setB.toArray) {
dojo.raise("Set operations can only be performed on array-based collections.");
}
var e = setA.getIterator();
while (!e.atEnd()) {
if (!setB.contains(e.get())) {
return false;
}
}
return true;
};
this.isSuperSet = function (setA, setB) {
if (setA.constructor == Array) {
var setA = new dojo.collections.ArrayList(setA);
}
if (setB.constructor == Array) {
var setB = new dojo.collections.ArrayList(setB);
}
if (!setA.toArray || !setB.toArray) {
dojo.raise("Set operations can only be performed on array-based collections.");
}
var e = setB.getIterator();
while (!e.atEnd()) {
if (!setA.contains(e.get())) {
return false;
}
}
return true;
};
}();
 
/trunk/api/js/dojo/src/collections/SortedList.js
New file
0,0 → 1,169
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.SortedList");
dojo.require("dojo.collections.Collections");
dojo.collections.SortedList = function (dictionary) {
var _this = this;
var items = {};
var q = [];
var sorter = function (a, b) {
if (a.key > b.key) {
return 1;
}
if (a.key < b.key) {
return -1;
}
return 0;
};
var build = function () {
q = [];
var e = _this.getIterator();
while (!e.atEnd()) {
q.push(e.get());
}
q.sort(sorter);
};
var testObject = {};
this.count = q.length;
this.add = function (k, v) {
if (!items[k]) {
items[k] = new dojo.collections.DictionaryEntry(k, v);
this.count = q.push(items[k]);
q.sort(sorter);
}
};
this.clear = function () {
items = {};
q = [];
this.count = q.length;
};
this.clone = function () {
return new dojo.collections.SortedList(this);
};
this.contains = this.containsKey = function (k) {
if (testObject[k]) {
return false;
}
return (items[k] != null);
};
this.containsValue = function (o) {
var e = this.getIterator();
while (!e.atEnd()) {
var item = e.get();
if (item.value == o) {
return true;
}
}
return false;
};
this.copyTo = function (arr, i) {
var e = this.getIterator();
var idx = i;
while (!e.atEnd()) {
arr.splice(idx, 0, e.get());
idx++;
}
};
this.entry = function (k) {
return items[k];
};
this.forEach = function (fn, scope) {
var s = scope || dj_global;
if (Array.forEach) {
Array.forEach(q, fn, s);
} else {
for (var i = 0; i < q.length; i++) {
fn.call(s, q[i], i, q);
}
}
};
this.getByIndex = function (i) {
return q[i].valueOf();
};
this.getIterator = function () {
return new dojo.collections.DictionaryIterator(items);
};
this.getKey = function (i) {
return q[i].key;
};
this.getKeyList = function () {
var arr = [];
var e = this.getIterator();
while (!e.atEnd()) {
arr.push(e.get().key);
}
return arr;
};
this.getValueList = function () {
var arr = [];
var e = this.getIterator();
while (!e.atEnd()) {
arr.push(e.get().value);
}
return arr;
};
this.indexOfKey = function (k) {
for (var i = 0; i < q.length; i++) {
if (q[i].key == k) {
return i;
}
}
return -1;
};
this.indexOfValue = function (o) {
for (var i = 0; i < q.length; i++) {
if (q[i].value == o) {
return i;
}
}
return -1;
};
this.item = function (k) {
if (k in items && !testObject[k]) {
return items[k].valueOf();
}
return undefined;
};
this.remove = function (k) {
delete items[k];
build();
this.count = q.length;
};
this.removeAt = function (i) {
delete items[q[i].key];
build();
this.count = q.length;
};
this.replace = function (k, v) {
if (!items[k]) {
this.add(k, v);
return false;
} else {
items[k] = new dojo.collections.DictionaryEntry(k, v);
q.sort(sorter);
return true;
}
};
this.setByIndex = function (i, o) {
items[q[i].key].value = o;
build();
this.count = q.length;
};
if (dictionary) {
var e = dictionary.getIterator();
while (!e.atEnd()) {
var item = e.get();
q[q.length] = items[item.key] = new dojo.collections.DictionaryEntry(item.key, item.value);
}
q.sort(sorter);
}
};
 
/trunk/api/js/dojo/src/collections/Store.js
New file
0,0 → 1,291
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Store");
dojo.require("dojo.lang.common");
dojo.collections.Store = function (jsonArray) {
var data = [];
var items = {};
this.keyField = "Id";
this.get = function () {
return data;
};
this.getByKey = function (key) {
return items[key];
};
this.getByIndex = function (idx) {
return data[idx];
};
this.getIndexOf = function (key) {
for (var i = 0; i < data.length; i++) {
if (data[i].key == key) {
return i;
}
}
return -1;
};
this.getData = function () {
var arr = [];
for (var i = 0; i < data.length; i++) {
arr.push(data[i].src);
}
return arr;
};
this.getDataByKey = function (key) {
if (items[key] != null) {
return items[key].src;
}
return null;
};
this.getIndexOfData = function (obj) {
for (var i = 0; i < data.length; i++) {
if (data[i].src == obj) {
return i;
}
}
return -1;
};
this.getDataByIndex = function (idx) {
if (data[idx]) {
return data[idx].src;
}
return null;
};
this.update = function (obj, fieldPath, val, bDontFire) {
var parts = fieldPath.split("."), i = 0, o = obj, field;
if (parts.length > 1) {
field = parts.pop();
do {
if (parts[i].indexOf("()") > -1) {
var temp = parts[i++].split("()")[0];
if (!o[temp]) {
dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");
} else {
o = o[temp]();
}
} else {
o = o[parts[i++]];
}
} while (i < parts.length && o != null);
} else {
field = parts[0];
}
obj[field] = val;
if (!bDontFire) {
this.onUpdateField(obj, fieldPath, val);
}
};
this.forEach = function (fn) {
if (Array.forEach) {
Array.forEach(data, fn, this);
} else {
for (var i = 0; i < data.length; i++) {
fn.call(this, data[i]);
}
}
};
this.forEachData = function (fn) {
if (Array.forEach) {
Array.forEach(this.getData(), fn, this);
} else {
var a = this.getData();
for (var i = 0; i < a.length; i++) {
fn.call(this, a[i]);
}
}
};
this.setData = function (arr, bDontFire) {
data = [];
for (var i = 0; i < arr.length; i++) {
var o = {key:arr[i][this.keyField], src:arr[i]};
data.push(o);
items[o.key] = o;
}
if (!bDontFire) {
this.onSetData();
}
};
this.clearData = function (bDontFire) {
data = [];
items = {};
if (!bDontFire) {
this.onClearData();
}
};
this.addData = function (obj, key, bDontFire) {
var k = key || obj[this.keyField];
if (items[k] != null) {
var o = items[k];
o.src = obj;
} else {
var o = {key:k, src:obj};
data.push(o);
items[o.key] = o;
}
if (!bDontFire) {
this.onAddData(o);
}
};
this.addDataRange = function (arr, bDontFire) {
var objects = [];
for (var i = 0; i < arr.length; i++) {
var k = arr[i][this.keyField];
if (items[k] != null) {
var o = items[k];
o.src = arr[i];
} else {
var o = {key:k, src:arr[i]};
data.push(o);
items[k] = o;
}
objects.push(o);
}
if (!bDontFire) {
this.onAddDataRange(objects);
}
};
this.addDataByIndex = function (obj, idx, key, bDontFire) {
var k = key || obj[this.keyField];
if (items[k] != null) {
var i = this.getIndexOf(k);
var o = data.splice(i, 1);
o.src = obj;
} else {
var o = {key:k, src:obj};
items[k] = o;
}
data.splice(idx, 0, o);
if (!bDontFire) {
this.onAddData(o);
}
};
this.addDataRangeByIndex = function (arr, idx, bDontFire) {
var objects = [];
for (var i = 0; i < arr.length; i++) {
var k = arr[i][this.keyField];
if (items[k] != null) {
var j = this.getIndexOf(k);
var o = data.splice(j, 1);
o.src = arr[i];
} else {
var o = {key:k, src:arr[i]};
items[k] = o;
}
objects.push(o);
}
data.splice(idx, 0, objects);
if (!bDontFire) {
this.onAddDataRange(objects);
}
};
this.removeData = function (obj, bDontFire) {
var idx = -1;
var o = null;
for (var i = 0; i < data.length; i++) {
if (data[i].src == obj) {
idx = i;
o = data[i];
break;
}
}
if (!bDontFire) {
this.onRemoveData(o);
}
if (idx > -1) {
data.splice(idx, 1);
delete items[o.key];
}
};
this.removeDataRange = function (idx, range, bDontFire) {
var ret = data.splice(idx, range);
for (var i = 0; i < ret.length; i++) {
delete items[ret[i].key];
}
if (!bDontFire) {
this.onRemoveDataRange(ret);
}
return ret;
};
this.removeDataByKey = function (key, bDontFire) {
this.removeData(this.getDataByKey(key), bDontFire);
};
this.removeDataByIndex = function (idx, bDontFire) {
this.removeData(this.getDataByIndex(idx), bDontFire);
};
if (jsonArray && jsonArray.length && jsonArray[0]) {
this.setData(jsonArray, true);
}
};
dojo.extend(dojo.collections.Store, {getField:function (obj, field) {
var parts = field.split("."), i = 0, o = obj;
do {
if (parts[i].indexOf("()") > -1) {
var temp = parts[i++].split("()")[0];
if (!o[temp]) {
dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");
} else {
o = o[temp]();
}
} else {
o = o[parts[i++]];
}
} while (i < parts.length && o != null);
if (i < parts.length) {
dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object.");
}
return o;
}, getFromHtml:function (meta, body, fnMod) {
var rows = body.rows;
var ctor = function (row) {
var obj = {};
for (var i = 0; i < meta.length; i++) {
var o = obj;
var data = row.cells[i].innerHTML;
var p = meta[i].getField();
if (p.indexOf(".") > -1) {
p = p.split(".");
while (p.length > 1) {
var pr = p.shift();
o[pr] = {};
o = o[pr];
}
p = p[0];
}
var type = meta[i].getType();
if (type == String) {
o[p] = data;
} else {
if (data) {
o[p] = new type(data);
} else {
o[p] = new type();
}
}
}
return obj;
};
var arr = [];
for (var i = 0; i < rows.length; i++) {
var o = ctor(rows[i]);
if (fnMod) {
fnMod(o, rows[i]);
}
arr.push(o);
}
return arr;
}, onSetData:function () {
}, onClearData:function () {
}, onAddData:function (obj) {
}, onAddDataRange:function (arr) {
}, onRemoveData:function (obj) {
}, onRemoveDataRange:function (arr) {
}, onUpdateField:function (obj, field, val) {
}});
 
/trunk/api/js/dojo/src/collections/Collections.js
New file
0,0 → 1,90
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.collections.Collections");
dojo.collections.DictionaryEntry = function (k, v) {
this.key = k;
this.value = v;
this.valueOf = function () {
return this.value;
};
this.toString = function () {
return String(this.value);
};
};
dojo.collections.Iterator = function (arr) {
var a = arr;
var position = 0;
this.element = a[position] || null;
this.atEnd = function () {
return (position >= a.length);
};
this.get = function () {
if (this.atEnd()) {
return null;
}
this.element = a[position++];
return this.element;
};
this.map = function (fn, scope) {
var s = scope || dj_global;
if (Array.map) {
return Array.map(a, fn, s);
} else {
var arr = [];
for (var i = 0; i < a.length; i++) {
arr.push(fn.call(s, a[i]));
}
return arr;
}
};
this.reset = function () {
position = 0;
this.element = a[position];
};
};
dojo.collections.DictionaryIterator = function (obj) {
var a = [];
var testObject = {};
for (var p in obj) {
if (!testObject[p]) {
a.push(obj[p]);
}
}
var position = 0;
this.element = a[position] || null;
this.atEnd = function () {
return (position >= a.length);
};
this.get = function () {
if (this.atEnd()) {
return null;
}
this.element = a[position++];
return this.element;
};
this.map = function (fn, scope) {
var s = scope || dj_global;
if (Array.map) {
return Array.map(a, fn, s);
} else {
var arr = [];
for (var i = 0; i < a.length; i++) {
arr.push(fn.call(s, a[i]));
}
return arr;
}
};
this.reset = function () {
position = 0;
this.element = a[position];
};
};
 
/trunk/api/js/dojo/src/animation/Animation.js
New file
0,0 → 1,178
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.animation.Animation");
dojo.require("dojo.animation.AnimationEvent");
dojo.require("dojo.lang.func");
dojo.require("dojo.math");
dojo.require("dojo.math.curves");
dojo.deprecated("dojo.animation.Animation is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
dojo.animation.Animation = function (curve, duration, accel, repeatCount, rate) {
if (dojo.lang.isArray(curve)) {
curve = new dojo.math.curves.Line(curve[0], curve[1]);
}
this.curve = curve;
this.duration = duration;
this.repeatCount = repeatCount || 0;
this.rate = rate || 25;
if (accel) {
if (dojo.lang.isFunction(accel.getValue)) {
this.accel = accel;
} else {
var i = 0.35 * accel + 0.5;
this.accel = new dojo.math.curves.CatmullRom([[0], [i], [1]], 0.45);
}
}
};
dojo.lang.extend(dojo.animation.Animation, {curve:null, duration:0, repeatCount:0, accel:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, handler:null, _animSequence:null, _startTime:null, _endTime:null, _lastFrame:null, _timer:null, _percent:0, _active:false, _paused:false, _startRepeatCount:0, play:function (gotoStart) {
if (gotoStart) {
clearTimeout(this._timer);
this._active = false;
this._paused = false;
this._percent = 0;
} else {
if (this._active && !this._paused) {
return;
}
}
this._startTime = new Date().valueOf();
if (this._paused) {
this._startTime -= (this.duration * this._percent / 100);
}
this._endTime = this._startTime + this.duration;
this._lastFrame = this._startTime;
var e = new dojo.animation.AnimationEvent(this, null, this.curve.getValue(this._percent), this._startTime, this._startTime, this._endTime, this.duration, this._percent, 0);
this._active = true;
this._paused = false;
if (this._percent == 0) {
if (!this._startRepeatCount) {
this._startRepeatCount = this.repeatCount;
}
e.type = "begin";
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onBegin == "function") {
this.onBegin(e);
}
}
e.type = "play";
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onPlay == "function") {
this.onPlay(e);
}
if (this._animSequence) {
this._animSequence._setCurrent(this);
}
this._cycle();
}, pause:function () {
clearTimeout(this._timer);
if (!this._active) {
return;
}
this._paused = true;
var e = new dojo.animation.AnimationEvent(this, "pause", this.curve.getValue(this._percent), this._startTime, new Date().valueOf(), this._endTime, this.duration, this._percent, 0);
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onPause == "function") {
this.onPause(e);
}
}, playPause:function () {
if (!this._active || this._paused) {
this.play();
} else {
this.pause();
}
}, gotoPercent:function (pct, andPlay) {
clearTimeout(this._timer);
this._active = true;
this._paused = true;
this._percent = pct;
if (andPlay) {
this.play();
}
}, stop:function (gotoEnd) {
clearTimeout(this._timer);
var step = this._percent / 100;
if (gotoEnd) {
step = 1;
}
var e = new dojo.animation.AnimationEvent(this, "stop", this.curve.getValue(step), this._startTime, new Date().valueOf(), this._endTime, this.duration, this._percent);
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onStop == "function") {
this.onStop(e);
}
this._active = false;
this._paused = false;
}, status:function () {
if (this._active) {
return this._paused ? "paused" : "playing";
} else {
return "stopped";
}
}, _cycle:function () {
clearTimeout(this._timer);
if (this._active) {
var curr = new Date().valueOf();
var step = (curr - this._startTime) / (this._endTime - this._startTime);
var fps = 1000 / (curr - this._lastFrame);
this._lastFrame = curr;
if (step >= 1) {
step = 1;
this._percent = 100;
} else {
this._percent = step * 100;
}
if (this.accel && this.accel.getValue) {
step = this.accel.getValue(step);
}
var e = new dojo.animation.AnimationEvent(this, "animate", this.curve.getValue(step), this._startTime, curr, this._endTime, this.duration, this._percent, Math.round(fps));
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onAnimate == "function") {
this.onAnimate(e);
}
if (step < 1) {
this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate);
} else {
e.type = "end";
this._active = false;
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onEnd == "function") {
this.onEnd(e);
}
if (this.repeatCount > 0) {
this.repeatCount--;
this.play(true);
} else {
if (this.repeatCount == -1) {
this.play(true);
} else {
if (this._startRepeatCount) {
this.repeatCount = this._startRepeatCount;
this._startRepeatCount = 0;
}
if (this._animSequence) {
this._animSequence._playNext();
}
}
}
}
}
}});
 
/trunk/api/js/dojo/src/animation/Timer.js
New file
0,0 → 1,15
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.animation.Timer");
dojo.require("dojo.lang.timing.Timer");
dojo.deprecated("dojo.animation.Timer is now dojo.lang.timing.Timer", "0.5");
dojo.animation.Timer = dojo.lang.timing.Timer;
 
/trunk/api/js/dojo/src/animation/AnimationEvent.js
New file
0,0 → 1,35
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.animation.AnimationEvent");
dojo.require("dojo.lang.common");
dojo.deprecated("dojo.animation.AnimationEvent is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
dojo.animation.AnimationEvent = function (animation, type, coords, startTime, currentTime, endTime, duration, percent, fps) {
this.type = type;
this.animation = animation;
this.coords = coords;
this.x = coords[0];
this.y = coords[1];
this.z = coords[2];
this.startTime = startTime;
this.currentTime = currentTime;
this.endTime = endTime;
this.duration = duration;
this.percent = percent;
this.fps = fps;
};
dojo.extend(dojo.animation.AnimationEvent, {coordsAsInts:function () {
var cints = new Array(this.coords.length);
for (var i = 0; i < this.coords.length; i++) {
cints[i] = Math.round(this.coords[i]);
}
return cints;
}});
 
/trunk/api/js/dojo/src/animation/__package__.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.animation.AnimationEvent", "dojo.animation.Animation", "dojo.animation.AnimationSequence"]});
dojo.provide("dojo.animation.*");
dojo.deprecated("dojo.Animation.* is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
 
/trunk/api/js/dojo/src/animation/AnimationSequence.js
New file
0,0 → 1,126
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.animation.AnimationSequence");
dojo.require("dojo.animation.AnimationEvent");
dojo.require("dojo.animation.Animation");
dojo.deprecated("dojo.animation.AnimationSequence is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
dojo.animation.AnimationSequence = function (repeatCount) {
this._anims = [];
this.repeatCount = repeatCount || 0;
};
dojo.lang.extend(dojo.animation.AnimationSequence, {repeatCount:0, _anims:[], _currAnim:-1, onBegin:null, onEnd:null, onNext:null, handler:null, add:function () {
for (var i = 0; i < arguments.length; i++) {
this._anims.push(arguments[i]);
arguments[i]._animSequence = this;
}
}, remove:function (anim) {
for (var i = 0; i < this._anims.length; i++) {
if (this._anims[i] == anim) {
this._anims[i]._animSequence = null;
this._anims.splice(i, 1);
break;
}
}
}, removeAll:function () {
for (var i = 0; i < this._anims.length; i++) {
this._anims[i]._animSequence = null;
}
this._anims = [];
this._currAnim = -1;
}, clear:function () {
this.removeAll();
}, play:function (gotoStart) {
if (this._anims.length == 0) {
return;
}
if (gotoStart || !this._anims[this._currAnim]) {
this._currAnim = 0;
}
if (this._anims[this._currAnim]) {
if (this._currAnim == 0) {
var e = {type:"begin", animation:this._anims[this._currAnim]};
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onBegin == "function") {
this.onBegin(e);
}
}
this._anims[this._currAnim].play(gotoStart);
}
}, pause:function () {
if (this._anims[this._currAnim]) {
this._anims[this._currAnim].pause();
}
}, playPause:function () {
if (this._anims.length == 0) {
return;
}
if (this._currAnim == -1) {
this._currAnim = 0;
}
if (this._anims[this._currAnim]) {
this._anims[this._currAnim].playPause();
}
}, stop:function () {
if (this._anims[this._currAnim]) {
this._anims[this._currAnim].stop();
}
}, status:function () {
if (this._anims[this._currAnim]) {
return this._anims[this._currAnim].status();
} else {
return "stopped";
}
}, _setCurrent:function (anim) {
for (var i = 0; i < this._anims.length; i++) {
if (this._anims[i] == anim) {
this._currAnim = i;
break;
}
}
}, _playNext:function () {
if (this._currAnim == -1 || this._anims.length == 0) {
return;
}
this._currAnim++;
if (this._anims[this._currAnim]) {
var e = {type:"next", animation:this._anims[this._currAnim]};
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onNext == "function") {
this.onNext(e);
}
this._anims[this._currAnim].play(true);
} else {
var e = {type:"end", animation:this._anims[this._anims.length - 1]};
if (typeof this.handler == "function") {
this.handler(e);
}
if (typeof this.onEnd == "function") {
this.onEnd(e);
}
if (this.repeatCount > 0) {
this._currAnim = 0;
this.repeatCount--;
this._anims[this._currAnim].play(true);
} else {
if (this.repeatCount == -1) {
this._currAnim = 0;
this._anims[this._currAnim].play(true);
} else {
this._currAnim = -1;
}
}
}
}});
 
/trunk/api/js/dojo/src/crypto/SHA1.js
New file
0,0 → 1,171
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
*
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*
* Dojo port by Tom Trenka
*/
 
dojo.require("dojo.crypto");
dojo.provide("dojo.crypto.SHA1");
dojo.require("dojo.experimental");
dojo.experimental("dojo.crypto.SHA1");
dojo.crypto.SHA1 = new function () {
var chrsz = 8;
var mask = (1 << chrsz) - 1;
function toWord(s) {
var wa = [];
for (var i = 0; i < s.length * chrsz; i += chrsz) {
wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32);
}
return wa;
}
function toString(wa) {
var s = [];
for (var i = 0; i < wa.length * 32; i += chrsz) {
s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask));
}
return s.join("");
}
function toHex(wa) {
var h = "0123456789abcdef";
var s = [];
for (var i = 0; i < wa.length * 4; i++) {
s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15));
}
return s.join("");
}
function toBase64(wa) {
var p = "=";
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var s = [];
for (var i = 0; i < wa.length * 4; i += 3) {
var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
for (var j = 0; j < 4; j++) {
if (i * 8 + j * 6 > wa.length * 32) {
s.push(p);
} else {
s.push(tab.charAt((t >> 6 * (3 - j)) & 63));
}
}
}
return s.join("");
}
function add(x, y) {
var l = (x & 65535) + (y & 65535);
var m = (x >> 16) + (y >> 16) + (l >> 16);
return (m << 16) | (l & 65535);
}
function r(x, n) {
return (x << n) | (x >>> (32 - n));
}
function f(u, v, w) {
return ((u & v) | (~u & w));
}
function g(u, v, w) {
return ((u & v) | (u & w) | (v & w));
}
function h(u, v, w) {
return (u ^ v ^ w);
}
function fn(i, u, v, w) {
if (i < 20) {
return f(u, v, w);
}
if (i < 40) {
return h(u, v, w);
}
if (i < 60) {
return g(u, v, w);
}
return h(u, v, w);
}
function cnst(i) {
if (i < 20) {
return 1518500249;
}
if (i < 40) {
return 1859775393;
}
if (i < 60) {
return -1894007588;
}
return -899497514;
}
function core(x, len) {
x[len >> 5] |= 128 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
var w = [];
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;
for (var i = 0; i < x.length; i += 16) {
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
for (var j = 0; j < 80; j++) {
if (j < 16) {
w[j] = x[i + j];
} else {
w[j] = r(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
}
var t = add(add(r(a, 5), fn(j, b, c, d)), add(add(e, w[j]), cnst(j)));
e = d;
d = c;
c = r(b, 30);
b = a;
a = t;
}
a = add(a, olda);
b = add(b, oldb);
c = add(c, oldc);
d = add(d, oldd);
e = add(e, olde);
}
return [a, b, c, d, e];
}
function hmac(data, key) {
var wa = toWord(key);
if (wa.length > 16) {
wa = core(wa, key.length * chrsz);
}
var l = [], r = [];
for (var i = 0; i < 16; i++) {
l[i] = wa[i] ^ 909522486;
r[i] = wa[i] ^ 1549556828;
}
var h = core(l.concat(toWord(data)), 512 + data.length * chrsz);
return core(r.concat(h), 640);
}
this.compute = function (data, outputType) {
var out = outputType || dojo.crypto.outputTypes.Base64;
switch (out) {
case dojo.crypto.outputTypes.Hex:
return toHex(core(toWord(data), data.length * chrsz));
case dojo.crypto.outputTypes.String:
return toString(core(toWord(data), data.length * chrsz));
default:
return toBase64(core(toWord(data), data.length * chrsz));
}
};
this.getHMAC = function (data, key, outputType) {
var out = outputType || dojo.crypto.outputTypes.Base64;
switch (out) {
case dojo.crypto.outputTypes.Hex:
return toHex(hmac(data, key));
case dojo.crypto.outputTypes.String:
return toString(hmac(data, key));
default:
return toBase64(hmac(data, key));
}
};
}();
 
/trunk/api/js/dojo/src/crypto/Blowfish.js
New file
0,0 → 1,382
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.crypto");
dojo.provide("dojo.crypto.Blowfish");
dojo.crypto.Blowfish = new function () {
var POW2 = Math.pow(2, 2);
var POW3 = Math.pow(2, 3);
var POW4 = Math.pow(2, 4);
var POW8 = Math.pow(2, 8);
var POW16 = Math.pow(2, 16);
var POW24 = Math.pow(2, 24);
var iv = null;
var boxes = {p:[608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], s0:[3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], s1:[1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], s2:[3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], s3:[976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]};
function add(x, y) {
var sum = (x + y) & 4294967295;
if (sum < 0) {
sum = -sum;
return (65536 * ((sum >> 16) ^ 65535)) + (((sum & 65535) ^ 65535) + 1);
}
return sum;
}
function split(x) {
var r = x & 4294967295;
if (r < 0) {
r = -r;
return [((r & 65535) ^ 65535) + 1, (r >> 16) ^ 65535];
}
return [r & 65535, (r >> 16)];
}
function xor(x, y) {
var xs = split(x);
var ys = split(y);
return (65536 * (xs[1] ^ ys[1])) + (xs[0] ^ ys[0]);
}
function $(v, box) {
var d = v & 255;
v >>= 8;
var c = v & 255;
v >>= 8;
var b = v & 255;
v >>= 8;
var a = v & 255;
var r = add(box.s0[a], box.s1[b]);
r = xor(r, box.s2[c]);
return add(r, box.s3[d]);
}
function eb(o, box) {
var l = o.left;
var r = o.right;
l = xor(l, box.p[0]);
r = xor(r, xor($(l, box), box.p[1]));
l = xor(l, xor($(r, box), box.p[2]));
r = xor(r, xor($(l, box), box.p[3]));
l = xor(l, xor($(r, box), box.p[4]));
r = xor(r, xor($(l, box), box.p[5]));
l = xor(l, xor($(r, box), box.p[6]));
r = xor(r, xor($(l, box), box.p[7]));
l = xor(l, xor($(r, box), box.p[8]));
r = xor(r, xor($(l, box), box.p[9]));
l = xor(l, xor($(r, box), box.p[10]));
r = xor(r, xor($(l, box), box.p[11]));
l = xor(l, xor($(r, box), box.p[12]));
r = xor(r, xor($(l, box), box.p[13]));
l = xor(l, xor($(r, box), box.p[14]));
r = xor(r, xor($(l, box), box.p[15]));
l = xor(l, xor($(r, box), box.p[16]));
o.right = l;
o.left = xor(r, box.p[17]);
}
function db(o, box) {
var l = o.left;
var r = o.right;
l = xor(l, box.p[17]);
r = xor(r, xor($(l, box), box.p[16]));
l = xor(l, xor($(r, box), box.p[15]));
r = xor(r, xor($(l, box), box.p[14]));
l = xor(l, xor($(r, box), box.p[13]));
r = xor(r, xor($(l, box), box.p[12]));
l = xor(l, xor($(r, box), box.p[11]));
r = xor(r, xor($(l, box), box.p[10]));
l = xor(l, xor($(r, box), box.p[9]));
r = xor(r, xor($(l, box), box.p[8]));
l = xor(l, xor($(r, box), box.p[7]));
r = xor(r, xor($(l, box), box.p[6]));
l = xor(l, xor($(r, box), box.p[5]));
r = xor(r, xor($(l, box), box.p[4]));
l = xor(l, xor($(r, box), box.p[3]));
r = xor(r, xor($(l, box), box.p[2]));
l = xor(l, xor($(r, box), box.p[1]));
o.right = l;
o.left = xor(r, box.p[0]);
}
function init(key) {
var k = key;
if (typeof (k) == "string") {
var a = [];
for (var i = 0; i < k.length; i++) {
a.push(k.charCodeAt(i) & 255);
}
k = a;
}
var box = {p:[], s0:[], s1:[], s2:[], s3:[]};
for (var i = 0; i < boxes.p.length; i++) {
box.p.push(boxes.p[i]);
}
for (var i = 0; i < boxes.s0.length; i++) {
box.s0.push(boxes.s0[i]);
}
for (var i = 0; i < boxes.s1.length; i++) {
box.s1.push(boxes.s1[i]);
}
for (var i = 0; i < boxes.s2.length; i++) {
box.s2.push(boxes.s2[i]);
}
for (var i = 0; i < boxes.s3.length; i++) {
box.s3.push(boxes.s3[i]);
}
var pos = 0;
var data = 0;
for (var i = 0; i < box.p.length; i++) {
for (var j = 0; j < 4; j++) {
data = (data * POW8) | k[pos];
if (++pos == k.length) {
pos = 0;
}
}
box.p[i] = xor(box.p[i], data);
}
var res = {left:0, right:0};
for (var i = 0; i < box.p.length; ) {
eb(res, box);
box.p[i++] = res.left;
box.p[i++] = res.right;
}
for (var i = 0; i < 4; i++) {
for (var j = 0; j < box["s" + i].length; ) {
eb(res, box);
box["s" + i][j++] = res.left;
box["s" + i][j++] = res.right;
}
}
return box;
}
function toBase64(ba) {
var p = "=";
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var s = [];
var l = ba.length;
var rm = l % 3;
var x = l - rm;
for (var i = 0; i < x; ) {
var t = ba[i++] << 16 | ba[i++] << 8 | ba[i++];
s.push(tab.charAt((t >>> 18) & 63));
s.push(tab.charAt((t >>> 12) & 63));
s.push(tab.charAt((t >>> 6) & 63));
s.push(tab.charAt(t & 63));
}
switch (rm) {
case 2:
var t = ba[i++] << 16 | ba[i++] << 8;
s.push(tab.charAt((t >>> 18) & 63));
s.push(tab.charAt((t >>> 12) & 63));
s.push(tab.charAt((t >>> 6) & 63));
s.push(p);
break;
case 1:
var t = ba[i++] << 16;
s.push(tab.charAt((t >>> 18) & 63));
s.push(tab.charAt((t >>> 12) & 63));
s.push(p);
s.push(p);
break;
}
return s.join("");
}
function fromBase64(str) {
var s = str.split("");
var p = "=";
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var out = [];
var l = s.length;
while (s[--l] == p) {
}
for (var i = 0; i < l; ) {
var t = tab.indexOf(s[i++]) << 18 | tab.indexOf(s[i++]) << 12 | tab.indexOf(s[i++]) << 6 | tab.indexOf(s[i++]);
out.push((t >>> 16) & 255);
out.push((t >>> 8) & 255);
out.push(t & 255);
}
return out;
}
this.getIV = function (outputType) {
var out = outputType || dojo.crypto.outputTypes.Base64;
switch (out) {
case dojo.crypto.outputTypes.Hex:
var s = [];
for (var i = 0; i < iv.length; i++) {
s.push((iv[i]).toString(16));
}
return s.join("");
case dojo.crypto.outputTypes.String:
return iv.join("");
case dojo.crypto.outputTypes.Raw:
return iv;
default:
return toBase64(iv);
}
};
this.setIV = function (data, inputType) {
var ip = inputType || dojo.crypto.outputTypes.Base64;
var ba = null;
switch (ip) {
case dojo.crypto.outputTypes.String:
ba = [];
for (var i = 0; i < data.length; i++) {
ba.push(data.charCodeAt(i));
}
break;
case dojo.crypto.outputTypes.Hex:
ba = [];
var i = 0;
while (i + 1 < data.length) {
ba.push(parseInt(data.substr(i, 2), 16));
i += 2;
}
break;
case dojo.crypto.outputTypes.Raw:
ba = data;
break;
default:
ba = fromBase64(data);
break;
}
iv = {};
iv.left = ba[0] * POW24 | ba[1] * POW16 | ba[2] * POW8 | ba[3];
iv.right = ba[4] * POW24 | ba[5] * POW16 | ba[6] * POW8 | ba[7];
};
this.encrypt = function (plaintext, key, ao) {
var out = dojo.crypto.outputTypes.Base64;
var mode = dojo.crypto.cipherModes.EBC;
if (ao) {
if (ao.outputType) {
out = ao.outputType;
}
if (ao.cipherMode) {
mode = ao.cipherMode;
}
}
var bx = init(key);
var padding = 8 - (plaintext.length & 7);
for (var i = 0; i < padding; i++) {
plaintext += String.fromCharCode(padding);
}
var cipher = [];
var count = plaintext.length >> 3;
var pos = 0;
var o = {};
var isCBC = (mode == dojo.crypto.cipherModes.CBC);
var vector = {left:iv.left || null, right:iv.right || null};
for (var i = 0; i < count; i++) {
o.left = plaintext.charCodeAt(pos) * POW24 | plaintext.charCodeAt(pos + 1) * POW16 | plaintext.charCodeAt(pos + 2) * POW8 | plaintext.charCodeAt(pos + 3);
o.right = plaintext.charCodeAt(pos + 4) * POW24 | plaintext.charCodeAt(pos + 5) * POW16 | plaintext.charCodeAt(pos + 6) * POW8 | plaintext.charCodeAt(pos + 7);
if (isCBC) {
o.left = xor(o.left, vector.left);
o.right = xor(o.right, vector.right);
}
eb(o, bx);
if (isCBC) {
vector.left = o.left;
vector.right = o.right;
dojo.crypto.outputTypes.Hex;
}
cipher.push((o.left >> 24) & 255);
cipher.push((o.left >> 16) & 255);
cipher.push((o.left >> 8) & 255);
cipher.push(o.left & 255);
cipher.push((o.right >> 24) & 255);
cipher.push((o.right >> 16) & 255);
cipher.push((o.right >> 8) & 255);
cipher.push(o.right & 255);
pos += 8;
}
switch (out) {
case dojo.crypto.outputTypes.Hex:
var s = [];
for (var i = 0; i < cipher.length; i++) {
s.push((cipher[i]).toString(16));
}
return s.join("");
case dojo.crypto.outputTypes.String:
return cipher.join("");
case dojo.crypto.outputTypes.Raw:
return cipher;
default:
return toBase64(cipher);
}
};
this.decrypt = function (ciphertext, key, ao) {
var ip = dojo.crypto.outputTypes.Base64;
var mode = dojo.crypto.cipherModes.EBC;
if (ao) {
if (ao.outputType) {
ip = ao.outputType;
}
if (ao.cipherMode) {
mode = ao.cipherMode;
}
}
var bx = init(key);
var pt = [];
var c = null;
switch (ip) {
case dojo.crypto.outputTypes.Hex:
c = [];
var i = 0;
while (i + 1 < ciphertext.length) {
c.push(parseInt(ciphertext.substr(i, 2), 16));
i += 2;
}
break;
case dojo.crypto.outputTypes.String:
c = [];
for (var i = 0; i < ciphertext.length; i++) {
c.push(ciphertext.charCodeAt(i));
}
break;
case dojo.crypto.outputTypes.Raw:
c = ciphertext;
break;
default:
c = fromBase64(ciphertext);
break;
}
var count = c.length >> 3;
var pos = 0;
var o = {};
var isCBC = (mode == dojo.crypto.cipherModes.CBC);
var vector = {left:iv.left || null, right:iv.right || null};
for (var i = 0; i < count; i++) {
o.left = c[pos] * POW24 | c[pos + 1] * POW16 | c[pos + 2] * POW8 | c[pos + 3];
o.right = c[pos + 4] * POW24 | c[pos + 5] * POW16 | c[pos + 6] * POW8 | c[pos + 7];
if (isCBC) {
var left = o.left;
var right = o.right;
}
db(o, bx);
if (isCBC) {
o.left = xor(o.left, vector.left);
o.right = xor(o.right, vector.right);
vector.left = left;
vector.right = right;
}
pt.push((o.left >> 24) & 255);
pt.push((o.left >> 16) & 255);
pt.push((o.left >> 8) & 255);
pt.push(o.left & 255);
pt.push((o.right >> 24) & 255);
pt.push((o.right >> 16) & 255);
pt.push((o.right >> 8) & 255);
pt.push(o.right & 255);
pos += 8;
}
if (pt[pt.length - 1] == pt[pt.length - 2] || pt[pt.length - 1] == 1) {
var n = pt[pt.length - 1];
pt.splice(pt.length - n, n);
}
for (var i = 0; i < pt.length; i++) {
pt[i] = String.fromCharCode(pt[i]);
}
return pt.join("");
};
this.setIV("0000000000000000", dojo.crypto.outputTypes.Hex);
}();
 
/trunk/api/js/dojo/src/crypto/MD5.js
New file
0,0 → 1,200
/* Return to a port of Paul Johnstone's MD5 implementation
* http://pajhome.org.uk/crypt/md5/index.html
*
* Copyright (C) Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
*
* Dojo port by Tom Trenka
*
* 2005-12-7
* All conversions are internalized (no dependencies)
* implemented getHMAC for message digest auth.
*/
 
dojo.require("dojo.crypto");
dojo.provide("dojo.crypto.MD5");
dojo.crypto.MD5 = new function () {
var chrsz = 8;
var mask = (1 << chrsz) - 1;
function toWord(s) {
var wa = [];
for (var i = 0; i < s.length * chrsz; i += chrsz) {
wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32);
}
return wa;
}
function toString(wa) {
var s = [];
for (var i = 0; i < wa.length * 32; i += chrsz) {
s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask));
}
return s.join("");
}
function toHex(wa) {
var h = "0123456789abcdef";
var s = [];
for (var i = 0; i < wa.length * 4; i++) {
s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15));
}
return s.join("");
}
function toBase64(wa) {
var p = "=";
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var s = [];
for (var i = 0; i < wa.length * 4; i += 3) {
var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
for (var j = 0; j < 4; j++) {
if (i * 8 + j * 6 > wa.length * 32) {
s.push(p);
} else {
s.push(tab.charAt((t >> 6 * (3 - j)) & 63));
}
}
}
return s.join("");
}
function add(x, y) {
var l = (x & 65535) + (y & 65535);
var m = (x >> 16) + (y >> 16) + (l >> 16);
return (m << 16) | (l & 65535);
}
function R(n, c) {
return (n << c) | (n >>> (32 - c));
}
function C(q, a, b, x, s, t) {
return add(R(add(add(a, q), add(x, t)), s), b);
}
function FF(a, b, c, d, x, s, t) {
return C((b & c) | ((~b) & d), a, b, x, s, t);
}
function GG(a, b, c, d, x, s, t) {
return C((b & d) | (c & (~d)), a, b, x, s, t);
}
function HH(a, b, c, d, x, s, t) {
return C(b ^ c ^ d, a, b, x, s, t);
}
function II(a, b, c, d, x, s, t) {
return C(c ^ (b | (~d)), a, b, x, s, t);
}
function core(x, len) {
x[len >> 5] |= 128 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for (var i = 0; i < x.length; i += 16) {
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = FF(a, b, c, d, x[i + 0], 7, -680876936);
d = FF(d, a, b, c, x[i + 1], 12, -389564586);
c = FF(c, d, a, b, x[i + 2], 17, 606105819);
b = FF(b, c, d, a, x[i + 3], 22, -1044525330);
a = FF(a, b, c, d, x[i + 4], 7, -176418897);
d = FF(d, a, b, c, x[i + 5], 12, 1200080426);
c = FF(c, d, a, b, x[i + 6], 17, -1473231341);
b = FF(b, c, d, a, x[i + 7], 22, -45705983);
a = FF(a, b, c, d, x[i + 8], 7, 1770035416);
d = FF(d, a, b, c, x[i + 9], 12, -1958414417);
c = FF(c, d, a, b, x[i + 10], 17, -42063);
b = FF(b, c, d, a, x[i + 11], 22, -1990404162);
a = FF(a, b, c, d, x[i + 12], 7, 1804603682);
d = FF(d, a, b, c, x[i + 13], 12, -40341101);
c = FF(c, d, a, b, x[i + 14], 17, -1502002290);
b = FF(b, c, d, a, x[i + 15], 22, 1236535329);
a = GG(a, b, c, d, x[i + 1], 5, -165796510);
d = GG(d, a, b, c, x[i + 6], 9, -1069501632);
c = GG(c, d, a, b, x[i + 11], 14, 643717713);
b = GG(b, c, d, a, x[i + 0], 20, -373897302);
a = GG(a, b, c, d, x[i + 5], 5, -701558691);
d = GG(d, a, b, c, x[i + 10], 9, 38016083);
c = GG(c, d, a, b, x[i + 15], 14, -660478335);
b = GG(b, c, d, a, x[i + 4], 20, -405537848);
a = GG(a, b, c, d, x[i + 9], 5, 568446438);
d = GG(d, a, b, c, x[i + 14], 9, -1019803690);
c = GG(c, d, a, b, x[i + 3], 14, -187363961);
b = GG(b, c, d, a, x[i + 8], 20, 1163531501);
a = GG(a, b, c, d, x[i + 13], 5, -1444681467);
d = GG(d, a, b, c, x[i + 2], 9, -51403784);
c = GG(c, d, a, b, x[i + 7], 14, 1735328473);
b = GG(b, c, d, a, x[i + 12], 20, -1926607734);
a = HH(a, b, c, d, x[i + 5], 4, -378558);
d = HH(d, a, b, c, x[i + 8], 11, -2022574463);
c = HH(c, d, a, b, x[i + 11], 16, 1839030562);
b = HH(b, c, d, a, x[i + 14], 23, -35309556);
a = HH(a, b, c, d, x[i + 1], 4, -1530992060);
d = HH(d, a, b, c, x[i + 4], 11, 1272893353);
c = HH(c, d, a, b, x[i + 7], 16, -155497632);
b = HH(b, c, d, a, x[i + 10], 23, -1094730640);
a = HH(a, b, c, d, x[i + 13], 4, 681279174);
d = HH(d, a, b, c, x[i + 0], 11, -358537222);
c = HH(c, d, a, b, x[i + 3], 16, -722521979);
b = HH(b, c, d, a, x[i + 6], 23, 76029189);
a = HH(a, b, c, d, x[i + 9], 4, -640364487);
d = HH(d, a, b, c, x[i + 12], 11, -421815835);
c = HH(c, d, a, b, x[i + 15], 16, 530742520);
b = HH(b, c, d, a, x[i + 2], 23, -995338651);
a = II(a, b, c, d, x[i + 0], 6, -198630844);
d = II(d, a, b, c, x[i + 7], 10, 1126891415);
c = II(c, d, a, b, x[i + 14], 15, -1416354905);
b = II(b, c, d, a, x[i + 5], 21, -57434055);
a = II(a, b, c, d, x[i + 12], 6, 1700485571);
d = II(d, a, b, c, x[i + 3], 10, -1894986606);
c = II(c, d, a, b, x[i + 10], 15, -1051523);
b = II(b, c, d, a, x[i + 1], 21, -2054922799);
a = II(a, b, c, d, x[i + 8], 6, 1873313359);
d = II(d, a, b, c, x[i + 15], 10, -30611744);
c = II(c, d, a, b, x[i + 6], 15, -1560198380);
b = II(b, c, d, a, x[i + 13], 21, 1309151649);
a = II(a, b, c, d, x[i + 4], 6, -145523070);
d = II(d, a, b, c, x[i + 11], 10, -1120210379);
c = II(c, d, a, b, x[i + 2], 15, 718787259);
b = II(b, c, d, a, x[i + 9], 21, -343485551);
a = add(a, olda);
b = add(b, oldb);
c = add(c, oldc);
d = add(d, oldd);
}
return [a, b, c, d];
}
function hmac(data, key) {
var wa = toWord(key);
if (wa.length > 16) {
wa = core(wa, key.length * chrsz);
}
var l = [], r = [];
for (var i = 0; i < 16; i++) {
l[i] = wa[i] ^ 909522486;
r[i] = wa[i] ^ 1549556828;
}
var h = core(l.concat(toWord(data)), 512 + data.length * chrsz);
return core(r.concat(h), 640);
}
this.compute = function (data, outputType) {
var out = outputType || dojo.crypto.outputTypes.Base64;
switch (out) {
case dojo.crypto.outputTypes.Hex:
return toHex(core(toWord(data), data.length * chrsz));
case dojo.crypto.outputTypes.String:
return toString(core(toWord(data), data.length * chrsz));
default:
return toBase64(core(toWord(data), data.length * chrsz));
}
};
this.getHMAC = function (data, key, outputType) {
var out = outputType || dojo.crypto.outputTypes.Base64;
switch (out) {
case dojo.crypto.outputTypes.Hex:
return toHex(hmac(data, key));
case dojo.crypto.outputTypes.String:
return toString(hmac(data, key));
default:
return toBase64(hmac(data, key));
}
};
}();
 
/trunk/api/js/dojo/src/crypto/LICENSE
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/crypto/LICENSE
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/crypto/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.crypto", "dojo.crypto.MD5"]});
dojo.provide("dojo.crypto.*");
 
/trunk/api/js/dojo/src/crypto/Rijndael.js
New file
0,0 → 1,21
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.crypto.Rijndael");
dojo.require("dojo.crypto");
dojo.require("dojo.experimental");
dojo.experimental("dojo.crypto.Rijndael");
dojo.crypto.Rijndael = new function () {
this.encrypt = function (plaintext, key) {
};
this.decrypt = function (ciphertext, key) {
};
}();
 
/trunk/api/js/dojo/src/crypto/SHA256.js
New file
0,0 → 1,19
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.crypto.SHA256");
dojo.require("dojo.crypto");
dojo.require("dojo.experimental");
dojo.experimental("dojo.crypto.SHA256");
dojo.crypto.SHA256 = new function () {
this.compute = function (s) {
};
}();
 
/trunk/api/js/dojo/src/lang/extras.js
New file
0,0 → 1,94
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.extras");
dojo.require("dojo.lang.common");
dojo.lang.setTimeout = function (func, delay) {
var context = window, argsStart = 2;
if (!dojo.lang.isFunction(func)) {
context = func;
func = delay;
delay = arguments[2];
argsStart++;
}
if (dojo.lang.isString(func)) {
func = context[func];
}
var args = [];
for (var i = argsStart; i < arguments.length; i++) {
args.push(arguments[i]);
}
return dojo.global().setTimeout(function () {
func.apply(context, args);
}, delay);
};
dojo.lang.clearTimeout = function (timer) {
dojo.global().clearTimeout(timer);
};
dojo.lang.getNameInObj = function (ns, item) {
if (!ns) {
ns = dj_global;
}
for (var x in ns) {
if (ns[x] === item) {
return new String(x);
}
}
return null;
};
dojo.lang.shallowCopy = function (obj, deep) {
var i, ret;
if (obj === null) {
return null;
}
if (dojo.lang.isObject(obj)) {
ret = new obj.constructor();
for (i in obj) {
if (dojo.lang.isUndefined(ret[i])) {
ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
}
}
} else {
if (dojo.lang.isArray(obj)) {
ret = [];
for (i = 0; i < obj.length; i++) {
ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
}
} else {
ret = obj;
}
}
return ret;
};
dojo.lang.firstValued = function () {
for (var i = 0; i < arguments.length; i++) {
if (typeof arguments[i] != "undefined") {
return arguments[i];
}
}
return undefined;
};
dojo.lang.getObjPathValue = function (objpath, context, create) {
with (dojo.parseObjPath(objpath, context, create)) {
return dojo.evalProp(prop, obj, create);
}
};
dojo.lang.setObjPathValue = function (objpath, value, context, create) {
dojo.deprecated("dojo.lang.setObjPathValue", "use dojo.parseObjPath and the '=' operator", "0.6");
if (arguments.length < 4) {
create = true;
}
with (dojo.parseObjPath(objpath, context, create)) {
if (obj && (create || (prop in obj))) {
obj[prop] = value;
}
}
};
 
/trunk/api/js/dojo/src/lang/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]});
dojo.provide("dojo.lang.*");
 
/trunk/api/js/dojo/src/lang/common.js
New file
0,0 → 1,154
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.common");
dojo.lang.inherits = function (subclass, superclass) {
if (!dojo.lang.isFunction(superclass)) {
dojo.raise("dojo.inherits: superclass argument [" + superclass + "] must be a function (subclass: [" + subclass + "']");
}
subclass.prototype = new superclass();
subclass.prototype.constructor = subclass;
subclass.superclass = superclass.prototype;
subclass["super"] = superclass.prototype;
};
dojo.lang._mixin = function (obj, props) {
var tobj = {};
for (var x in props) {
if ((typeof tobj[x] == "undefined") || (tobj[x] != props[x])) {
obj[x] = props[x];
}
}
if (dojo.render.html.ie && (typeof (props["toString"]) == "function") && (props["toString"] != obj["toString"]) && (props["toString"] != tobj["toString"])) {
obj.toString = props.toString;
}
return obj;
};
dojo.lang.mixin = function (obj, props) {
for (var i = 1, l = arguments.length; i < l; i++) {
dojo.lang._mixin(obj, arguments[i]);
}
return obj;
};
dojo.lang.extend = function (constructor, props) {
for (var i = 1, l = arguments.length; i < l; i++) {
dojo.lang._mixin(constructor.prototype, arguments[i]);
}
return constructor;
};
dojo.inherits = dojo.lang.inherits;
dojo.mixin = dojo.lang.mixin;
dojo.extend = dojo.lang.extend;
dojo.lang.find = function (array, value, identity, findLast) {
if (!dojo.lang.isArrayLike(array) && dojo.lang.isArrayLike(value)) {
dojo.deprecated("dojo.lang.find(value, array)", "use dojo.lang.find(array, value) instead", "0.5");
var temp = array;
array = value;
value = temp;
}
var isString = dojo.lang.isString(array);
if (isString) {
array = array.split("");
}
if (findLast) {
var step = -1;
var i = array.length - 1;
var end = -1;
} else {
var step = 1;
var i = 0;
var end = array.length;
}
if (identity) {
while (i != end) {
if (array[i] === value) {
return i;
}
i += step;
}
} else {
while (i != end) {
if (array[i] == value) {
return i;
}
i += step;
}
}
return -1;
};
dojo.lang.indexOf = dojo.lang.find;
dojo.lang.findLast = function (array, value, identity) {
return dojo.lang.find(array, value, identity, true);
};
dojo.lang.lastIndexOf = dojo.lang.findLast;
dojo.lang.inArray = function (array, value) {
return dojo.lang.find(array, value) > -1;
};
dojo.lang.isObject = function (it) {
if (typeof it == "undefined") {
return false;
}
return (typeof it == "object" || it === null || dojo.lang.isArray(it) || dojo.lang.isFunction(it));
};
dojo.lang.isArray = function (it) {
return (it && it instanceof Array || typeof it == "array");
};
dojo.lang.isArrayLike = function (it) {
if ((!it) || (dojo.lang.isUndefined(it))) {
return false;
}
if (dojo.lang.isString(it)) {
return false;
}
if (dojo.lang.isFunction(it)) {
return false;
}
if (dojo.lang.isArray(it)) {
return true;
}
if ((it.tagName) && (it.tagName.toLowerCase() == "form")) {
return false;
}
if (dojo.lang.isNumber(it.length) && isFinite(it.length)) {
return true;
}
return false;
};
dojo.lang.isFunction = function (it) {
return (it instanceof Function || typeof it == "function");
};
(function () {
if ((dojo.render.html.capable) && (dojo.render.html["safari"])) {
dojo.lang.isFunction = function (it) {
if ((typeof (it) == "function") && (it == "[object NodeList]")) {
return false;
}
return (it instanceof Function || typeof it == "function");
};
}
})();
dojo.lang.isString = function (it) {
return (typeof it == "string" || it instanceof String);
};
dojo.lang.isAlien = function (it) {
if (!it) {
return false;
}
return !dojo.lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it));
};
dojo.lang.isBoolean = function (it) {
return (it instanceof Boolean || typeof it == "boolean");
};
dojo.lang.isNumber = function (it) {
return (it instanceof Number || typeof it == "number");
};
dojo.lang.isUndefined = function (it) {
return ((typeof (it) == "undefined") && (it == undefined));
};
 
/trunk/api/js/dojo/src/lang/repr.js
New file
0,0 → 1,66
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.repr");
dojo.require("dojo.lang.common");
dojo.require("dojo.AdapterRegistry");
dojo.require("dojo.string.extras");
dojo.lang.reprRegistry = new dojo.AdapterRegistry();
dojo.lang.registerRepr = function (name, check, wrap, override) {
dojo.lang.reprRegistry.register(name, check, wrap, override);
};
dojo.lang.repr = function (obj) {
if (typeof (obj) == "undefined") {
return "undefined";
} else {
if (obj === null) {
return "null";
}
}
try {
if (typeof (obj["__repr__"]) == "function") {
return obj["__repr__"]();
} else {
if ((typeof (obj["repr"]) == "function") && (obj.repr != arguments.callee)) {
return obj["repr"]();
}
}
return dojo.lang.reprRegistry.match(obj);
}
catch (e) {
if (typeof (obj.NAME) == "string" && (obj.toString == Function.prototype.toString || obj.toString == Object.prototype.toString)) {
return obj.NAME;
}
}
if (typeof (obj) == "function") {
obj = (obj + "").replace(/^\s+/, "");
var idx = obj.indexOf("{");
if (idx != -1) {
obj = obj.substr(0, idx) + "{...}";
}
}
return obj + "";
};
dojo.lang.reprArrayLike = function (arr) {
try {
var na = dojo.lang.map(arr, dojo.lang.repr);
return "[" + na.join(", ") + "]";
}
catch (e) {
}
};
(function () {
var m = dojo.lang;
m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike);
m.registerRepr("string", m.isString, m.reprString);
m.registerRepr("numbers", m.isNumber, m.reprNumber);
m.registerRepr("boolean", m.isBoolean, m.reprNumber);
})();
 
/trunk/api/js/dojo/src/lang/func.js
New file
0,0 → 1,125
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.func");
dojo.require("dojo.lang.common");
dojo.lang.hitch = function (thisObject, method) {
var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function () {
};
return function () {
return fcn.apply(thisObject, arguments);
};
};
dojo.lang.anonCtr = 0;
dojo.lang.anon = {};
dojo.lang.nameAnonFunc = function (anonFuncPtr, thisObj, searchForNames) {
var nso = (thisObj || dojo.lang.anon);
if ((searchForNames) || ((dj_global["djConfig"]) && (djConfig["slowAnonFuncLookups"] == true))) {
for (var x in nso) {
try {
if (nso[x] === anonFuncPtr) {
return x;
}
}
catch (e) {
}
}
}
var ret = "__" + dojo.lang.anonCtr++;
while (typeof nso[ret] != "undefined") {
ret = "__" + dojo.lang.anonCtr++;
}
nso[ret] = anonFuncPtr;
return ret;
};
dojo.lang.forward = function (funcName) {
return function () {
return this[funcName].apply(this, arguments);
};
};
dojo.lang.curry = function (thisObj, func) {
var outerArgs = [];
thisObj = thisObj || dj_global;
if (dojo.lang.isString(func)) {
func = thisObj[func];
}
for (var x = 2; x < arguments.length; x++) {
outerArgs.push(arguments[x]);
}
var ecount = (func["__preJoinArity"] || func.length) - outerArgs.length;
function gather(nextArgs, innerArgs, expected) {
var texpected = expected;
var totalArgs = innerArgs.slice(0);
for (var x = 0; x < nextArgs.length; x++) {
totalArgs.push(nextArgs[x]);
}
expected = expected - nextArgs.length;
if (expected <= 0) {
var res = func.apply(thisObj, totalArgs);
expected = texpected;
return res;
} else {
return function () {
return gather(arguments, totalArgs, expected);
};
}
}
return gather([], outerArgs, ecount);
};
dojo.lang.curryArguments = function (thisObj, func, args, offset) {
var targs = [];
var x = offset || 0;
for (x = offset; x < args.length; x++) {
targs.push(args[x]);
}
return dojo.lang.curry.apply(dojo.lang, [thisObj, func].concat(targs));
};
dojo.lang.tryThese = function () {
for (var x = 0; x < arguments.length; x++) {
try {
if (typeof arguments[x] == "function") {
var ret = (arguments[x]());
if (ret) {
return ret;
}
}
}
catch (e) {
dojo.debug(e);
}
}
};
dojo.lang.delayThese = function (farr, cb, delay, onend) {
if (!farr.length) {
if (typeof onend == "function") {
onend();
}
return;
}
if ((typeof delay == "undefined") && (typeof cb == "number")) {
delay = cb;
cb = function () {
};
} else {
if (!cb) {
cb = function () {
};
if (!delay) {
delay = 0;
}
}
}
setTimeout(function () {
(farr.shift())();
cb();
dojo.lang.delayThese(farr, cb, delay, onend);
}, delay);
};
 
/trunk/api/js/dojo/src/lang/timing/Streamer.js
New file
0,0 → 1,65
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.timing.Streamer");
dojo.require("dojo.lang.timing.Timer");
dojo.lang.timing.Streamer = function (input, output, interval, minimum, initialData) {
var self = this;
var queue = [];
this.interval = interval || 1000;
this.minimumSize = minimum || 10;
this.inputFunction = input || function (q) {
};
this.outputFunction = output || function (point) {
};
var timer = new dojo.lang.timing.Timer(this.interval);
var tick = function () {
self.onTick(self);
if (queue.length < self.minimumSize) {
self.inputFunction(queue);
}
var obj = queue.shift();
while (typeof (obj) == "undefined" && queue.length > 0) {
obj = queue.shift();
}
if (typeof (obj) == "undefined") {
self.stop();
return;
}
self.outputFunction(obj);
};
this.setInterval = function (ms) {
this.interval = ms;
timer.setInterval(ms);
};
this.onTick = function (obj) {
};
this.start = function () {
if (typeof (this.inputFunction) == "function" && typeof (this.outputFunction) == "function") {
timer.start();
return;
}
dojo.raise("You cannot start a Streamer without an input and an output function.");
};
this.onStart = function () {
};
this.stop = function () {
timer.stop();
};
this.onStop = function () {
};
timer.onTick = this.tick;
timer.onStart = this.onStart;
timer.onStop = this.onStop;
if (initialData) {
queue.concat(initialData);
}
};
 
/trunk/api/js/dojo/src/lang/timing/__package__.js
New file
0,0 → 1,12
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.timing.*");
 
/trunk/api/js/dojo/src/lang/timing/Timer.js
New file
0,0 → 1,42
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.timing.Timer");
dojo.require("dojo.lang.func");
dojo.lang.timing.Timer = function (interval) {
this.timer = null;
this.isRunning = false;
this.interval = interval;
this.onStart = null;
this.onStop = null;
};
dojo.extend(dojo.lang.timing.Timer, {onTick:function () {
}, setInterval:function (interval) {
if (this.isRunning) {
dj_global.clearInterval(this.timer);
}
this.interval = interval;
if (this.isRunning) {
this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval);
}
}, start:function () {
if (typeof this.onStart == "function") {
this.onStart();
}
this.isRunning = true;
this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval);
}, stop:function () {
if (typeof this.onStop == "function") {
this.onStop();
}
this.isRunning = false;
dj_global.clearInterval(this.timer);
}});
 
/trunk/api/js/dojo/src/lang/array.js
New file
0,0 → 1,174
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.array");
dojo.require("dojo.lang.common");
dojo.lang.mixin(dojo.lang, {has:function (obj, name) {
try {
return typeof obj[name] != "undefined";
}
catch (e) {
return false;
}
}, isEmpty:function (obj) {
if (dojo.lang.isObject(obj)) {
var tmp = {};
var count = 0;
for (var x in obj) {
if (obj[x] && (!tmp[x])) {
count++;
break;
}
}
return count == 0;
} else {
if (dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)) {
return obj.length == 0;
}
}
}, map:function (arr, obj, unary_func) {
var isString = dojo.lang.isString(arr);
if (isString) {
arr = arr.split("");
}
if (dojo.lang.isFunction(obj) && (!unary_func)) {
unary_func = obj;
obj = dj_global;
} else {
if (dojo.lang.isFunction(obj) && unary_func) {
var tmpObj = obj;
obj = unary_func;
unary_func = tmpObj;
}
}
if (Array.map) {
var outArr = Array.map(arr, unary_func, obj);
} else {
var outArr = [];
for (var i = 0; i < arr.length; ++i) {
outArr.push(unary_func.call(obj, arr[i]));
}
}
if (isString) {
return outArr.join("");
} else {
return outArr;
}
}, reduce:function (arr, initialValue, obj, binary_func) {
var reducedValue = initialValue;
if (arguments.length == 2) {
binary_func = initialValue;
reducedValue = arr[0];
arr = arr.slice(1);
} else {
if (arguments.length == 3) {
if (dojo.lang.isFunction(obj)) {
binary_func = obj;
obj = null;
}
} else {
if (dojo.lang.isFunction(obj)) {
var tmp = binary_func;
binary_func = obj;
obj = tmp;
}
}
}
var ob = obj || dj_global;
dojo.lang.map(arr, function (val) {
reducedValue = binary_func.call(ob, reducedValue, val);
});
return reducedValue;
}, forEach:function (anArray, callback, thisObject) {
if (dojo.lang.isString(anArray)) {
anArray = anArray.split("");
}
if (Array.forEach) {
Array.forEach(anArray, callback, thisObject);
} else {
if (!thisObject) {
thisObject = dj_global;
}
for (var i = 0, l = anArray.length; i < l; i++) {
callback.call(thisObject, anArray[i], i, anArray);
}
}
}, _everyOrSome:function (every, arr, callback, thisObject) {
if (dojo.lang.isString(arr)) {
arr = arr.split("");
}
if (Array.every) {
return Array[every ? "every" : "some"](arr, callback, thisObject);
} else {
if (!thisObject) {
thisObject = dj_global;
}
for (var i = 0, l = arr.length; i < l; i++) {
var result = callback.call(thisObject, arr[i], i, arr);
if (every && !result) {
return false;
} else {
if ((!every) && (result)) {
return true;
}
}
}
return Boolean(every);
}
}, every:function (arr, callback, thisObject) {
return this._everyOrSome(true, arr, callback, thisObject);
}, some:function (arr, callback, thisObject) {
return this._everyOrSome(false, arr, callback, thisObject);
}, filter:function (arr, callback, thisObject) {
var isString = dojo.lang.isString(arr);
if (isString) {
arr = arr.split("");
}
var outArr;
if (Array.filter) {
outArr = Array.filter(arr, callback, thisObject);
} else {
if (!thisObject) {
if (arguments.length >= 3) {
dojo.raise("thisObject doesn't exist!");
}
thisObject = dj_global;
}
outArr = [];
for (var i = 0; i < arr.length; i++) {
if (callback.call(thisObject, arr[i], i, arr)) {
outArr.push(arr[i]);
}
}
}
if (isString) {
return outArr.join("");
} else {
return outArr;
}
}, unnest:function () {
var out = [];
for (var i = 0; i < arguments.length; i++) {
if (dojo.lang.isArrayLike(arguments[i])) {
var add = dojo.lang.unnest.apply(this, arguments[i]);
out = out.concat(add);
} else {
out.push(arguments[i]);
}
}
return out;
}, toArray:function (arrayLike, startOffset) {
var array = [];
for (var i = startOffset || 0; i < arrayLike.length; i++) {
array.push(arrayLike[i]);
}
return array;
}});
 
/trunk/api/js/dojo/src/lang/declare.js
New file
0,0 → 1,107
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.declare");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.extras");
dojo.lang.declare = function (className, superclass, init, props) {
if ((dojo.lang.isFunction(props)) || ((!props) && (!dojo.lang.isFunction(init)))) {
var temp = props;
props = init;
init = temp;
}
var mixins = [];
if (dojo.lang.isArray(superclass)) {
mixins = superclass;
superclass = mixins.shift();
}
if (!init) {
init = dojo.evalObjPath(className, false);
if ((init) && (!dojo.lang.isFunction(init))) {
init = null;
}
}
var ctor = dojo.lang.declare._makeConstructor();
var scp = (superclass ? superclass.prototype : null);
if (scp) {
scp.prototyping = true;
ctor.prototype = new superclass();
scp.prototyping = false;
}
ctor.superclass = scp;
ctor.mixins = mixins;
for (var i = 0, l = mixins.length; i < l; i++) {
dojo.lang.extend(ctor, mixins[i].prototype);
}
ctor.prototype.initializer = null;
ctor.prototype.declaredClass = className;
if (dojo.lang.isArray(props)) {
dojo.lang.extend.apply(dojo.lang, [ctor].concat(props));
} else {
dojo.lang.extend(ctor, (props) || {});
}
dojo.lang.extend(ctor, dojo.lang.declare._common);
ctor.prototype.constructor = ctor;
ctor.prototype.initializer = (ctor.prototype.initializer) || (init) || (function () {
});
var created = dojo.parseObjPath(className, null, true);
created.obj[created.prop] = ctor;
return ctor;
};
dojo.lang.declare._makeConstructor = function () {
return function () {
var self = this._getPropContext();
var s = self.constructor.superclass;
if ((s) && (s.constructor)) {
if (s.constructor == arguments.callee) {
this._inherited("constructor", arguments);
} else {
this._contextMethod(s, "constructor", arguments);
}
}
var ms = (self.constructor.mixins) || ([]);
for (var i = 0, m; (m = ms[i]); i++) {
(((m.prototype) && (m.prototype.initializer)) || (m)).apply(this, arguments);
}
if ((!this.prototyping) && (self.initializer)) {
self.initializer.apply(this, arguments);
}
};
};
dojo.lang.declare._common = {_getPropContext:function () {
return (this.___proto || this);
}, _contextMethod:function (ptype, method, args) {
var result, stack = this.___proto;
this.___proto = ptype;
try {
result = ptype[method].apply(this, (args || []));
}
catch (e) {
throw e;
}
finally {
this.___proto = stack;
}
return result;
}, _inherited:function (prop, args) {
var p = this._getPropContext();
do {
if ((!p.constructor) || (!p.constructor.superclass)) {
return;
}
p = p.constructor.superclass;
} while (!(prop in p));
return (dojo.lang.isFunction(p[prop]) ? this._contextMethod(p, prop, args) : p[prop]);
}, inherited:function (prop, args) {
dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.", "0.5");
this._inherited(prop, args);
}};
dojo.declare = dojo.lang.declare;
 
/trunk/api/js/dojo/src/lang/assert.js
New file
0,0 → 1,57
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.assert");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.type");
dojo.lang.assert = function (booleanValue, message) {
if (!booleanValue) {
var errorMessage = "An assert statement failed.\n" + "The method dojo.lang.assert() was called with a 'false' value.\n";
if (message) {
errorMessage += "Here's the assert message:\n" + message + "\n";
}
throw new Error(errorMessage);
}
};
dojo.lang.assertType = function (value, type, keywordParameters) {
if (dojo.lang.isString(keywordParameters)) {
dojo.deprecated("dojo.lang.assertType(value, type, \"message\")", "use dojo.lang.assertType(value, type) instead", "0.5");
}
if (!dojo.lang.isOfType(value, type, keywordParameters)) {
if (!dojo.lang.assertType._errorMessage) {
dojo.lang.assertType._errorMessage = "Type mismatch: dojo.lang.assertType() failed.";
}
dojo.lang.assert(false, dojo.lang.assertType._errorMessage);
}
};
dojo.lang.assertValidKeywords = function (object, expectedProperties, message) {
var key;
if (!message) {
if (!dojo.lang.assertValidKeywords._errorMessage) {
dojo.lang.assertValidKeywords._errorMessage = "In dojo.lang.assertValidKeywords(), found invalid keyword:";
}
message = dojo.lang.assertValidKeywords._errorMessage;
}
if (dojo.lang.isArray(expectedProperties)) {
for (key in object) {
if (!dojo.lang.inArray(expectedProperties, key)) {
dojo.lang.assert(false, message + " " + key);
}
}
} else {
for (key in object) {
if (!(key in expectedProperties)) {
dojo.lang.assert(false, message + " " + key);
}
}
}
};
 
/trunk/api/js/dojo/src/lang/type.js
New file
0,0 → 1,143
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.lang.type");
dojo.require("dojo.lang.common");
dojo.lang.whatAmI = function (value) {
dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5");
return dojo.lang.getType(value);
};
dojo.lang.whatAmI.custom = {};
dojo.lang.getType = function (value) {
try {
if (dojo.lang.isArray(value)) {
return "array";
}
if (dojo.lang.isFunction(value)) {
return "function";
}
if (dojo.lang.isString(value)) {
return "string";
}
if (dojo.lang.isNumber(value)) {
return "number";
}
if (dojo.lang.isBoolean(value)) {
return "boolean";
}
if (dojo.lang.isAlien(value)) {
return "alien";
}
if (dojo.lang.isUndefined(value)) {
return "undefined";
}
for (var name in dojo.lang.whatAmI.custom) {
if (dojo.lang.whatAmI.custom[name](value)) {
return name;
}
}
if (dojo.lang.isObject(value)) {
return "object";
}
}
catch (e) {
}
return "unknown";
};
dojo.lang.isNumeric = function (value) {
return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value));
};
dojo.lang.isBuiltIn = function (value) {
return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error"));
};
dojo.lang.isPureObject = function (value) {
return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object);
};
dojo.lang.isOfType = function (value, type, keywordParameters) {
var optional = false;
if (keywordParameters) {
optional = keywordParameters["optional"];
}
if (optional && ((value === null) || dojo.lang.isUndefined(value))) {
return true;
}
if (dojo.lang.isArray(type)) {
var arrayOfTypes = type;
for (var i in arrayOfTypes) {
var aType = arrayOfTypes[i];
if (dojo.lang.isOfType(value, aType)) {
return true;
}
}
return false;
} else {
if (dojo.lang.isString(type)) {
type = type.toLowerCase();
}
switch (type) {
case Array:
case "array":
return dojo.lang.isArray(value);
case Function:
case "function":
return dojo.lang.isFunction(value);
case String:
case "string":
return dojo.lang.isString(value);
case Number:
case "number":
return dojo.lang.isNumber(value);
case "numeric":
return dojo.lang.isNumeric(value);
case Boolean:
case "boolean":
return dojo.lang.isBoolean(value);
case Object:
case "object":
return dojo.lang.isObject(value);
case "pureobject":
return dojo.lang.isPureObject(value);
case "builtin":
return dojo.lang.isBuiltIn(value);
case "alien":
return dojo.lang.isAlien(value);
case "undefined":
return dojo.lang.isUndefined(value);
case null:
case "null":
return (value === null);
case "optional":
dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5");
return ((value === null) || dojo.lang.isUndefined(value));
default:
if (dojo.lang.isFunction(type)) {
return (value instanceof type);
} else {
dojo.raise("dojo.lang.isOfType() was passed an invalid type");
}
}
}
dojo.raise("If we get here, it means a bug was introduced above.");
};
dojo.lang.getObject = function (str) {
var parts = str.split("."), i = 0, obj = dj_global;
do {
obj = obj[parts[i++]];
} while (i < parts.length && obj);
return (obj != dj_global) ? obj : null;
};
dojo.lang.doesObjectExist = function (str) {
var parts = str.split("."), i = 0, obj = dj_global;
do {
obj = obj[parts[i++]];
} while (i < parts.length && obj);
return (obj && obj != dj_global);
};
 
/trunk/api/js/dojo/src/gfx/common.js
New file
0,0 → 1,61
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.common");
dojo.require("dojo.gfx.color");
dojo.require("dojo.lang.declare");
dojo.require("dojo.lang.extras");
dojo.require("dojo.dom");
dojo.lang.mixin(dojo.gfx, {defaultPath:{type:"path", path:""}, defaultPolyline:{type:"polyline", points:[]}, defaultRect:{type:"rect", x:0, y:0, width:100, height:100, r:0}, defaultEllipse:{type:"ellipse", cx:0, cy:0, rx:200, ry:100}, defaultCircle:{type:"circle", cx:0, cy:0, r:100}, defaultLine:{type:"line", x1:0, y1:0, x2:100, y2:100}, defaultImage:{type:"image", width:0, height:0, src:""}, defaultStroke:{color:"black", width:1, cap:"butt", join:4}, defaultLinearGradient:{type:"linear", x1:0, y1:0, x2:100, y2:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultRadialGradient:{type:"radial", cx:0, cy:0, r:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultPattern:{type:"pattern", x:0, y:0, width:0, height:0, src:""}, normalizeColor:function (color) {
return (color instanceof dojo.gfx.color.Color) ? color : new dojo.gfx.color.Color(color);
}, normalizeParameters:function (existed, update) {
if (update) {
var empty = {};
for (var x in existed) {
if (x in update && !(x in empty)) {
existed[x] = update[x];
}
}
}
return existed;
}, makeParameters:function (defaults, update) {
if (!update) {
return dojo.lang.shallowCopy(defaults, true);
}
var result = {};
for (var i in defaults) {
if (!(i in result)) {
result[i] = dojo.lang.shallowCopy((i in update) ? update[i] : defaults[i], true);
}
}
return result;
}, formatNumber:function (x, addSpace) {
var val = x.toString();
if (val.indexOf("e") >= 0) {
val = x.toFixed(4);
} else {
var point = val.indexOf(".");
if (point >= 0 && val.length - point > 5) {
val = x.toFixed(4);
}
}
if (x < 0) {
return val;
}
return addSpace ? " " + val : val;
}, pathRegExp:/([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g});
dojo.declare("dojo.gfx.Surface", null, {initializer:function () {
this.rawNode = null;
}, getEventSource:function () {
return this.rawNode;
}});
dojo.declare("dojo.gfx.Point", null, {});
dojo.declare("dojo.gfx.Rectangle", null, {});
 
/trunk/api/js/dojo/src/gfx/Colorspace.js
New file
0,0 → 1,721
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.Colorspace");
dojo.require("dojo.lang.common");
dojo.require("dojo.math.matrix");
dojo.gfx.Colorspace = function () {
this.whitePoint = "D65";
this.stdObserver = "10";
this.chromaticAdaptationAlg = "bradford";
this.RGBWorkingSpace = "s_rgb";
this.useApproxCIELabMapping = 1;
this.chainMaps = {"RGB_to_xyY":["XYZ"], "xyY_to_RGB":["XYZ"], "RGB_to_Lab":["XYZ"], "Lab_to_RGB":["XYZ"], "RGB_to_LCHab":["XYZ", "Lab"], "LCHab_to_RGB":["Lab"], "xyY_to_Lab":["XYZ"], "Lab_to_xyY":["XYZ"], "XYZ_to_LCHab":["Lab"], "LCHab_to_XYZ":["Lab"], "xyY_to_LCHab":["XYZ", "Lab"], "LCHab_to_xyY":["Lab", "XYZ"], "RGB_to_Luv":["XYZ"], "Luv_to_RGB":["XYZ"], "xyY_to_Luv":["XYZ"], "Luv_to_xyY":["XYZ"], "Lab_to_Luv":["XYZ"], "Luv_to_Lab":["XYZ"], "LCHab_to_Luv":["Lab", "XYZ"], "Luv_to_LCHab":["XYZ", "Lab"], "RGB_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_RGB":["Luv", "XYZ"], "XYZ_to_LCHuv":["Luv"], "LCHuv_to_XYZ":["Luv"], "xyY_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_xyY":["Luv", "XYZ"], "Lab_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_Lab":["Luv", "XYZ"], "LCHab_to_LCHuv":["Lab", "XYZ", "Luv"], "LCHuv_to_LCHab":["Luv", "XYZ", "Lab"], "XYZ_to_CMY":["RGB"], "CMY_to_XYZ":["RGB"], "xyY_to_CMY":["RGB"], "CMY_to_xyY":["RGB"], "Lab_to_CMY":["RGB"], "CMY_to_Lab":["RGB"], "LCHab_to_CMY":["RGB"], "CMY_to_LCHab":["RGB"], "Luv_to_CMY":["RGB"], "CMY_to_Luv":["RGB"], "LCHuv_to_CMY":["RGB"], "CMY_to_LCHuv":["RGB"], "XYZ_to_HSL":["RGB"], "HSL_to_XYZ":["RGB"], "xyY_to_HSL":["RGB"], "HSL_to_xyY":["RGB"], "Lab_to_HSL":["RGB"], "HSL_to_Lab":["RGB"], "LCHab_to_HSL":["RGB"], "HSL_to_LCHab":["RGB"], "Luv_to_HSL":["RGB"], "HSL_to_Luv":["RGB"], "LCHuv_to_HSL":["RGB"], "HSL_to_LCHuv":["RGB"], "CMY_to_HSL":["RGB"], "HSL_to_CMY":["RGB"], "CMYK_to_HSL":["RGB"], "HSL_to_CMYK":["RGB"], "XYZ_to_HSV":["RGB"], "HSV_to_XYZ":["RGB"], "xyY_to_HSV":["RGB"], "HSV_to_xyY":["RGB"], "Lab_to_HSV":["RGB"], "HSV_to_Lab":["RGB"], "LCHab_to_HSV":["RGB"], "HSV_to_LCHab":["RGB"], "Luv_to_HSV":["RGB"], "HSV_to_Luv":["RGB"], "LCHuv_to_HSV":["RGB"], "HSV_to_LCHuv":["RGB"], "CMY_to_HSV":["RGB"], "HSV_to_CMY":["RGB"], "CMYK_to_HSV":["RGB"], "HSV_to_CMYK":["RGB"], "HSL_to_HSV":["RGB"], "HSV_to_HSL":["RGB"], "XYZ_to_CMYK":["RGB"], "CMYK_to_XYZ":["RGB"], "xyY_to_CMYK":["RGB"], "CMYK_to_xyY":["RGB"], "Lab_to_CMYK":["RGB"], "CMYK_to_Lab":["RGB"], "LCHab_to_CMYK":["RGB"], "CMYK_to_LCHab":["RGB"], "Luv_to_CMYK":["RGB"], "CMYK_to_Luv":["RGB"], "LCHuv_to_CMYK":["RGB"], "CMYK_to_LCHuv":["RGB"]};
return this;
};
dojo.gfx.Colorspace.prototype.convert = function (col, model_from, model_to) {
var k = model_from + "_to_" + model_to;
if (this[k]) {
return this[k](col);
} else {
if (this.chainMaps[k]) {
var cur = model_from;
var models = this.chainMaps[k].concat();
models.push(model_to);
for (var i = 0; i < models.length; i++) {
col = this.convert(col, cur, models[i]);
cur = models[i];
}
return col;
} else {
dojo.debug("Can't convert from " + model_from + " to " + model_to);
}
}
};
dojo.gfx.Colorspace.prototype.munge = function (keys, args) {
if (dojo.lang.isArray(args[0])) {
args = args[0];
}
var out = new Array();
for (var i = 0; i < keys.length; i++) {
out[keys.charAt(i)] = args[i];
}
return out;
};
dojo.gfx.Colorspace.prototype.getWhitePoint = function () {
var x = 0;
var y = 0;
var t = 0;
switch (this.stdObserver) {
case "2":
switch (this.whitePoint) {
case "E":
x = 1 / 3;
y = 1 / 3;
t = 5400;
break;
case "D50":
x = 0.34567;
y = 0.3585;
t = 5000;
break;
case "D55":
x = 0.33242;
y = 0.34743;
t = 5500;
break;
case "D65":
x = 0.31271;
y = 0.32902;
t = 6500;
break;
case "D75":
x = 0.29902;
y = 0.31485;
t = 7500;
break;
case "A":
x = 0.44757;
y = 0.40745;
t = 2856;
break;
case "B":
x = 0.34842;
y = 0.35161;
t = 4874;
break;
case "C":
x = 0.31006;
y = 0.31616;
t = 6774;
break;
case "9300":
x = 0.2848;
y = 0.2932;
t = 9300;
break;
case "F2":
x = 0.37207;
y = 0.37512;
t = 4200;
break;
case "F7":
x = 0.31285;
y = 0.32918;
t = 6500;
break;
case "F11":
x = 0.38054;
y = 0.37691;
t = 4000;
break;
default:
dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver);
}
break;
case "10":
switch (this.whitePoint) {
case "E":
x = 1 / 3;
y = 1 / 3;
t = 5400;
break;
case "D50":
x = 0.34773;
y = 0.35952;
t = 5000;
break;
case "D55":
x = 0.33411;
y = 0.34877;
t = 5500;
break;
case "D65":
x = 0.31382;
y = 0.331;
t = 6500;
break;
case "D75":
x = 0.29968;
y = 0.3174;
t = 7500;
break;
case "A":
x = 0.45117;
y = 0.40594;
t = 2856;
break;
case "B":
x = 0.3498;
y = 0.3527;
t = 4874;
break;
case "C":
x = 0.31039;
y = 0.31905;
t = 6774;
break;
case "F2":
x = 0.37928;
y = 0.36723;
t = 4200;
break;
case "F7":
x = 0.31565;
y = 0.32951;
t = 6500;
break;
case "F11":
x = 0.38543;
y = 0.3711;
t = 4000;
break;
default:
dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver);
}
break;
default:
dojo.debug("Std. Observer " + this.strObserver + " isn't defined");
}
var z = 1 - x - y;
var wp = {"x":x, "y":y, "z":z, "t":t};
wp.Y = 1;
var XYZ = this.xyY_to_XYZ([wp.x, wp.y, wp.Y]);
wp.X = XYZ[0];
wp.Y = XYZ[1];
wp.Z = XYZ[2];
return wp;
};
dojo.gfx.Colorspace.prototype.getPrimaries = function () {
var m = [];
switch (this.RGBWorkingSpace) {
case "adobe_rgb_1998":
m = [2.2, "D65", 0.64, 0.33, 0.297361, 0.21, 0.71, 0.627355, 0.15, 0.06, 0.075285];
break;
case "apple_rgb":
m = [1.8, "D65", 0.625, 0.34, 0.244634, 0.28, 0.595, 0.672034, 0.155, 0.07, 0.083332];
break;
case "best_rgb":
m = [2.2, "D50", 0.7347, 0.2653, 0.228457, 0.215, 0.775, 0.737352, 0.13, 0.035, 0.034191];
break;
case "beta_rgb":
m = [2.2, "D50", 0.6888, 0.3112, 0.303273, 0.1986, 0.7551, 0.663786, 0.1265, 0.0352, 0.032941];
break;
case "bruce_rgb":
m = [2.2, "D65", 0.64, 0.33, 0.240995, 0.28, 0.65, 0.683554, 0.15, 0.06, 0.075452];
break;
case "cie_rgb":
m = [2.2, "E", 0.735, 0.265, 0.176204, 0.274, 0.717, 0.812985, 0.167, 0.009, 0.010811];
break;
case "color_match_rgb":
m = [1.8, "D50", 0.63, 0.34, 0.274884, 0.295, 0.605, 0.658132, 0.15, 0.075, 0.066985];
break;
case "don_rgb_4":
m = [2.2, "D50", 0.696, 0.3, 0.27835, 0.215, 0.765, 0.68797, 0.13, 0.035, 0.03368];
break;
case "eci_rgb":
m = [1.8, "D50", 0.67, 0.33, 0.32025, 0.21, 0.71, 0.602071, 0.14, 0.08, 0.077679];
break;
case "ekta_space_ps5":
m = [2.2, "D50", 0.695, 0.305, 0.260629, 0.26, 0.7, 0.734946, 0.11, 0.005, 0.004425];
break;
case "ntsc_rgb":
m = [2.2, "C", 0.67, 0.33, 0.298839, 0.21, 0.71, 0.586811, 0.14, 0.08, 0.11435];
break;
case "pal_secam_rgb":
m = [2.2, "D65", 0.64, 0.33, 0.222021, 0.29, 0.6, 0.706645, 0.15, 0.06, 0.071334];
break;
case "pro_photo_rgb":
m = [1.8, "D50", 0.7347, 0.2653, 0.28804, 0.1596, 0.8404, 0.711874, 0.0366, 0.0001, 0.000086];
break;
case "smpte-c_rgb":
m = [2.2, "D65", 0.63, 0.34, 0.212395, 0.31, 0.595, 0.701049, 0.155, 0.07, 0.086556];
break;
case "s_rgb":
m = [2.2, "D65", 0.64, 0.33, 0.212656, 0.3, 0.6, 0.715158, 0.15, 0.06, 0.072186];
break;
case "wide_gamut_rgb":
m = [2.2, "D50", 0.735, 0.265, 0.258187, 0.115, 0.826, 0.724938, 0.157, 0.018, 0.016875];
break;
default:
dojo.debug("RGB working space " + this.RGBWorkingSpace + " isn't defined");
}
var p = {name:this.RGBWorkingSpace, gamma:m[0], wp:m[1], xr:m[2], yr:m[3], Yr:m[4], xg:m[5], yg:m[6], Yg:m[7], xb:m[8], yb:m[9], Yb:m[10]};
if (p.wp != this.whitePoint) {
var r = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xr, p.yr, p.Yr]), p.wp, this.whitePoint));
var g = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xg, p.yg, p.Yg]), p.wp, this.whitePoint));
var b = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xb, p.yb, p.Yb]), p.wp, this.whitePoint));
p.xr = r[0];
p.yr = r[1];
p.Yr = r[2];
p.xg = g[0];
p.yg = g[1];
p.Yg = g[2];
p.xb = b[0];
p.yb = b[1];
p.Yb = b[2];
p.wp = this.whitePoint;
}
p.zr = 1 - p.xr - p.yr;
p.zg = 1 - p.xg - p.yg;
p.zb = 1 - p.xb - p.yb;
return p;
};
dojo.gfx.Colorspace.prototype.epsilon = function () {
return this.useApproxCIELabMapping ? 0.008856 : 216 / 24289;
};
dojo.gfx.Colorspace.prototype.kappa = function () {
return this.useApproxCIELabMapping ? 903.3 : 24389 / 27;
};
dojo.gfx.Colorspace.prototype.XYZ_to_xyY = function () {
var src = this.munge("XYZ", arguments);
var sum = src.X + src.Y + src.Z;
if (sum == 0) {
var wp = this.getWhitePoint();
var x = wp.x;
var y = wp.y;
} else {
var x = src.X / sum;
var y = src.Y / sum;
}
var Y = src.Y;
return [x, y, Y];
};
dojo.gfx.Colorspace.prototype.xyY_to_XYZ = function () {
var src = this.munge("xyY", arguments);
if (src.y == 0) {
var X = 0;
var Y = 0;
var Z = 0;
} else {
var X = (src.x * src.Y) / src.y;
var Y = src.Y;
var Z = ((1 - src.x - src.y) * src.Y) / src.y;
}
return [X, Y, Z];
};
dojo.gfx.Colorspace.prototype.RGB_to_XYZ = function () {
var src = this.munge("RGB", arguments);
var m = this.getRGB_XYZ_Matrix();
var pr = this.getPrimaries();
if (this.RGBWorkingSpace == "s_rgb") {
var r = (src.R > 0.04045) ? Math.pow(((src.R + 0.055) / 1.055), 2.4) : src.R / 12.92;
var g = (src.G > 0.04045) ? Math.pow(((src.G + 0.055) / 1.055), 2.4) : src.G / 12.92;
var b = (src.B > 0.04045) ? Math.pow(((src.B + 0.055) / 1.055), 2.4) : src.B / 12.92;
} else {
var r = Math.pow(src.R, pr.gamma);
var g = Math.pow(src.G, pr.gamma);
var b = Math.pow(src.B, pr.gamma);
}
var XYZ = dojo.math.matrix.multiply([[r, g, b]], m);
return [XYZ[0][0], XYZ[0][1], XYZ[0][2]];
};
dojo.gfx.Colorspace.prototype.XYZ_to_RGB = function () {
var src = this.munge("XYZ", arguments);
var mi = this.getXYZ_RGB_Matrix();
var pr = this.getPrimaries();
var rgb = dojo.math.matrix.multiply([[src.X, src.Y, src.Z]], mi);
var r = rgb[0][0];
var g = rgb[0][1];
var b = rgb[0][2];
if (this.RGBWorkingSpace == "s_rgb") {
var R = (r > 0.0031308) ? (1.055 * Math.pow(r, 1 / 2.4)) - 0.055 : 12.92 * r;
var G = (g > 0.0031308) ? (1.055 * Math.pow(g, 1 / 2.4)) - 0.055 : 12.92 * g;
var B = (b > 0.0031308) ? (1.055 * Math.pow(b, 1 / 2.4)) - 0.055 : 12.92 * b;
} else {
var R = Math.pow(r, 1 / pr.gamma);
var G = Math.pow(g, 1 / pr.gamma);
var B = Math.pow(b, 1 / pr.gamma);
}
return [R, G, B];
};
dojo.gfx.Colorspace.prototype.XYZ_to_Lab = function () {
var src = this.munge("XYZ", arguments);
var wp = this.getWhitePoint();
var xr = src.X / wp.X;
var yr = src.Y / wp.Y;
var zr = src.Z / wp.Z;
var fx = (xr > this.epsilon()) ? Math.pow(xr, 1 / 3) : (this.kappa() * xr + 16) / 116;
var fy = (yr > this.epsilon()) ? Math.pow(yr, 1 / 3) : (this.kappa() * yr + 16) / 116;
var fz = (zr > this.epsilon()) ? Math.pow(zr, 1 / 3) : (this.kappa() * zr + 16) / 116;
var L = 116 * fy - 16;
var a = 500 * (fx - fy);
var b = 200 * (fy - fz);
return [L, a, b];
};
dojo.gfx.Colorspace.prototype.Lab_to_XYZ = function () {
var src = this.munge("Lab", arguments);
var wp = this.getWhitePoint();
var yr = (src.L > (this.kappa() * this.epsilon())) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa();
var fy = (yr > this.epsilon()) ? (src.L + 16) / 116 : (this.kappa() * yr + 16) / 116;
var fx = (src.a / 500) + fy;
var fz = fy - (src.b / 200);
var fxcube = Math.pow(fx, 3);
var fzcube = Math.pow(fz, 3);
var xr = (fxcube > this.epsilon()) ? fxcube : (116 * fx - 16) / this.kappa();
var zr = (fzcube > this.epsilon()) ? fzcube : (116 * fz - 16) / this.kappa();
var X = xr * wp.X;
var Y = yr * wp.Y;
var Z = zr * wp.Z;
return [X, Y, Z];
};
dojo.gfx.Colorspace.prototype.Lab_to_LCHab = function () {
var src = this.munge("Lab", arguments);
var L = src.L;
var C = Math.pow(src.a * src.a + src.b * src.b, 0.5);
var H = Math.atan2(src.b, src.a) * (180 / Math.PI);
if (H < 0) {
H += 360;
}
if (H > 360) {
H -= 360;
}
return [L, C, H];
};
dojo.gfx.Colorspace.prototype.LCHab_to_Lab = function () {
var src = this.munge("LCH", arguments);
var H_rad = src.H * (Math.PI / 180);
var L = src.L;
var a = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5);
if ((90 < src.H) && (src.H < 270)) {
a = -a;
}
var b = Math.pow(Math.pow(src.C, 2) - Math.pow(a, 2), 0.5);
if (src.H > 180) {
b = -b;
}
return [L, a, b];
};
dojo.gfx.Colorspace.prototype.chromaticAdaptation = function (col, src_w, dst_w) {
col = this.munge("XYZ", [col]);
var old_wp = this.whitePoint;
this.whitePoint = src_w;
var wp_src = this.getWhitePoint();
this.whitePoint = dst_w;
var wp_dst = this.getWhitePoint();
this.whitePoint = old_wp;
switch (this.chromaticAdaptationAlg) {
case "xyz_scaling":
var ma = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
var mai = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
break;
case "bradford":
var ma = [[0.8951, -0.7502, 0.0389], [0.2664, 1.7135, -0.0685], [-0.1614, 0.0367, 1.0296]];
var mai = [[0.986993, 0.432305, -0.008529], [-0.147054, 0.51836, 0.040043], [0.159963, 0.049291, 0.968487]];
break;
case "von_kries":
var ma = [[0.40024, -0.2263, 0], [0.7076, 1.16532, 0], [-0.08081, 0.0457, 0.91822]];
var mai = [[1.859936, 0.361191, 0], [-1.129382, 0.638812, 0], [0.219897, -0.000006, 1.089064]];
break;
default:
dojo.debug("The " + this.chromaticAdaptationAlg + " chromatic adaptation algorithm matricies are not defined");
}
var domain_src = dojo.math.matrix.multiply([[wp_src.x, wp_src.y, wp_src.z]], ma);
var domain_dst = dojo.math.matrix.multiply([[wp_dst.x, wp_dst.y, wp_dst.z]], ma);
var centre = [[domain_dst[0][0] / domain_src[0][0], 0, 0], [0, domain_dst[0][1] / domain_src[0][1], 0], [0, 0, domain_dst[0][2] / domain_src[0][2]]];
var m = dojo.math.matrix.multiply(dojo.math.matrix.multiply(ma, centre), mai);
var dst = dojo.math.matrix.multiply([[col.X, col.Y, col.Z]], m);
return dst[0];
};
dojo.gfx.Colorspace.prototype.getRGB_XYZ_Matrix = function () {
var wp = this.getWhitePoint();
var pr = this.getPrimaries();
var Xr = pr.xr / pr.yr;
var Yr = 1;
var Zr = (1 - pr.xr - pr.yr) / pr.yr;
var Xg = pr.xg / pr.yg;
var Yg = 1;
var Zg = (1 - pr.xg - pr.yg) / pr.yg;
var Xb = pr.xb / pr.yb;
var Yb = 1;
var Zb = (1 - pr.xb - pr.yb) / pr.yb;
var m1 = [[Xr, Yr, Zr], [Xg, Yg, Zg], [Xb, Yb, Zb]];
var m2 = [[wp.X, wp.Y, wp.Z]];
var sm = dojo.math.matrix.multiply(m2, dojo.math.matrix.inverse(m1));
var Sr = sm[0][0];
var Sg = sm[0][1];
var Sb = sm[0][2];
var m4 = [[Sr * Xr, Sr * Yr, Sr * Zr], [Sg * Xg, Sg * Yg, Sg * Zg], [Sb * Xb, Sb * Yb, Sb * Zb]];
return m4;
};
dojo.gfx.Colorspace.prototype.getXYZ_RGB_Matrix = function () {
var m = this.getRGB_XYZ_Matrix();
return dojo.math.matrix.inverse(m);
};
dojo.gfx.Colorspace.prototype.XYZ_to_Luv = function () {
var src = this.munge("XYZ", arguments);
var wp = this.getWhitePoint();
var ud = (4 * src.X) / (src.X + 15 * src.Y + 3 * src.Z);
var vd = (9 * src.Y) / (src.X + 15 * src.Y + 3 * src.Z);
var udr = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z);
var vdr = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z);
var yr = src.Y / wp.Y;
var L = (yr > this.epsilon()) ? 116 * Math.pow(yr, 1 / 3) - 16 : this.kappa() * yr;
var u = 13 * L * (ud - udr);
var v = 13 * L * (vd - vdr);
return [L, u, v];
};
dojo.gfx.Colorspace.prototype.Luv_to_XYZ = function () {
var src = this.munge("Luv", arguments);
var wp = this.getWhitePoint();
var uz = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z);
var vz = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z);
var Y = (src.L > this.kappa() * this.epsilon()) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa();
var a = (1 / 3) * (((52 * src.L) / (src.u + 13 * src.L * uz)) - 1);
var b = -5 * Y;
var c = -(1 / 3);
var d = Y * (((39 * src.L) / (src.v + 13 * src.L * vz)) - 5);
var X = (d - b) / (a - c);
var Z = X * a + b;
return [X, Y, Z];
};
dojo.gfx.Colorspace.prototype.Luv_to_LCHuv = function () {
var src = this.munge("Luv", arguments);
var L = src.L;
var C = Math.pow(src.u * src.u + src.v * src.v, 0.5);
var H = Math.atan2(src.v, src.u) * (180 / Math.PI);
if (H < 0) {
H += 360;
}
if (H > 360) {
H -= 360;
}
return [L, C, H];
};
dojo.gfx.Colorspace.prototype.LCHuv_to_Luv = function () {
var src = this.munge("LCH", arguments);
var H_rad = src.H * (Math.PI / 180);
var L = src.L;
var u = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5);
var v = Math.pow(src.C * src.C - u * u, 0.5);
if ((90 < src.H) && (src.H < 270)) {
u *= -1;
}
if (src.H > 180) {
v *= -1;
}
return [L, u, v];
};
dojo.gfx.Colorspace.colorTemp_to_whitePoint = function (T) {
if (T < 4000) {
dojo.debug("Can't find a white point for temperatures under 4000K");
return [0, 0];
}
if (T > 25000) {
dojo.debug("Can't find a white point for temperatures over 25000K");
return [0, 0];
}
var T1 = T;
var T2 = T * T;
var T3 = T2 * T;
var ten9 = Math.pow(10, 9);
var ten6 = Math.pow(10, 6);
var ten3 = Math.pow(10, 3);
if (T <= 7000) {
var x = (-4.607 * ten9 / T3) + (2.9678 * ten6 / T2) + (0.09911 * ten3 / T) + 0.244063;
} else {
var x = (-2.0064 * ten9 / T3) + (1.9018 * ten6 / T2) + (0.24748 * ten3 / T) + 0.23704;
}
var y = -3 * x * x + 2.87 * x - 0.275;
return [x, y];
};
dojo.gfx.Colorspace.prototype.RGB_to_CMY = function () {
var src = this.munge("RGB", arguments);
var C = 1 - src.R;
var M = 1 - src.G;
var Y = 1 - src.B;
return [C, M, Y];
};
dojo.gfx.Colorspace.prototype.CMY_to_RGB = function () {
var src = this.munge("CMY", arguments);
var R = 1 - src.C;
var G = 1 - src.M;
var B = 1 - src.Y;
return [R, G, B];
};
dojo.gfx.Colorspace.prototype.RGB_to_CMYK = function () {
var src = this.munge("RGB", arguments);
var K = Math.min(1 - src.R, 1 - src.G, 1 - src.B);
var C = (1 - src.R - K) / (1 - K);
var M = (1 - src.G - K) / (1 - K);
var Y = (1 - src.B - K) / (1 - K);
return [C, M, Y, K];
};
dojo.gfx.Colorspace.prototype.CMYK_to_RGB = function () {
var src = this.munge("CMYK", arguments);
var R = 1 - Math.min(1, src.C * (1 - src.K) + src.K);
var G = 1 - Math.min(1, src.M * (1 - src.K) + src.K);
var B = 1 - Math.min(1, src.Y * (1 - src.K) + src.K);
return [R, G, B];
};
dojo.gfx.Colorspace.prototype.CMY_to_CMYK = function () {
var src = this.munge("CMY", arguments);
var K = Math.min(src.C, src.M, src.Y);
var C = (src.C - K) / (1 - K);
var M = (src.M - K) / (1 - K);
var Y = (src.Y - K) / (1 - K);
return [C, M, Y, K];
};
dojo.gfx.Colorspace.prototype.CMYK_to_CMY = function () {
var src = this.munge("CMYK", arguments);
var C = Math.min(1, src.C * (1 - src.K) + src.K);
var M = Math.min(1, src.M * (1 - src.K) + src.K);
var Y = Math.min(1, src.Y * (1 - src.K) + src.K);
return [C, M, Y];
};
dojo.gfx.Colorspace.prototype.RGB_to_HSV = function () {
var src = this.munge("RGB", arguments);
var min = Math.min(src.R, src.G, src.B);
var V = Math.max(src.R, src.G, src.B);
var delta = V - min;
var H = null;
var S = (V == 0) ? 0 : delta / V;
if (S == 0) {
H = 0;
} else {
if (src.R == V) {
H = 60 * (src.G - src.B) / delta;
} else {
if (src.G == V) {
H = 120 + 60 * (src.B - src.R) / delta;
} else {
if (src.B == V) {
H = 240 + 60 * (src.R - src.G) / delta;
}
}
}
if (H < 0) {
H += 360;
}
}
H = (H == 0) ? 360 : H;
return [H, S, V];
};
dojo.gfx.Colorspace.prototype.HSV_to_RGB = function () {
var src = this.munge("HSV", arguments);
if (src.H == 360) {
src.H = 0;
}
var r = null;
var g = null;
var b = null;
if (src.S == 0) {
var R = src.V;
var G = src.V;
var B = src.V;
} else {
var hTemp = src.H / 60;
var i = Math.floor(hTemp);
var f = hTemp - i;
var p = src.V * (1 - src.S);
var q = src.V * (1 - (src.S * f));
var t = src.V * (1 - (src.S * (1 - f)));
switch (i) {
case 0:
R = src.V;
G = t;
B = p;
break;
case 1:
R = q;
G = src.V;
B = p;
break;
case 2:
R = p;
G = src.V;
B = t;
break;
case 3:
R = p;
G = q;
B = src.V;
break;
case 4:
R = t;
G = p;
B = src.V;
break;
case 5:
R = src.V;
G = p;
B = q;
break;
}
}
return [R, G, B];
};
dojo.gfx.Colorspace.prototype.RGB_to_HSL = function () {
var src = this.munge("RGB", arguments);
var min = Math.min(src.R, src.G, src.B);
var max = Math.max(src.R, src.G, src.B);
var delta = max - min;
var H = 0;
var S = 0;
var L = (min + max) / 2;
if ((L > 0) && (L < 1)) {
S = delta / ((L < 0.5) ? (2 * L) : (2 - 2 * L));
}
if (delta > 0) {
if ((max == src.R) && (max != src.G)) {
H += (src.G - src.B) / delta;
}
if ((max == src.G) && (max != src.B)) {
H += (2 + (src.B - src.R) / delta);
}
if ((max == src.B) && (max != src.R)) {
H += (4 + (src.R - src.G) / delta);
}
H *= 60;
}
H = (H == 0) ? 360 : H;
return [H, S, L];
};
dojo.gfx.Colorspace.prototype.HSL_to_RGB = function () {
var src = this.munge("HSL", arguments);
while (src.H < 0) {
src.H += 360;
}
while (src.H >= 360) {
src.H -= 360;
}
var R = 0;
var G = 0;
var B = 0;
if (src.H < 120) {
R = (120 - src.H) / 60;
G = src.H / 60;
B = 0;
} else {
if (src.H < 240) {
R = 0;
G = (240 - src.H) / 60;
B = (src.H - 120) / 60;
} else {
R = (src.H - 240) / 60;
G = 0;
B = (360 - src.H) / 60;
}
}
R = 2 * src.S * Math.min(R, 1) + (1 - src.S);
G = 2 * src.S * Math.min(G, 1) + (1 - src.S);
B = 2 * src.S * Math.min(B, 1) + (1 - src.S);
if (src.L < 0.5) {
R = src.L * R;
G = src.L * G;
B = src.L * B;
} else {
R = (1 - src.L) * R + 2 * src.L - 1;
G = (1 - src.L) * G + 2 * src.L - 1;
B = (1 - src.L) * B + 2 * src.L - 1;
}
return [R, G, B];
};
 
/trunk/api/js/dojo/src/gfx/path.js
New file
0,0 → 1,266
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.path");
dojo.require("dojo.math");
dojo.require("dojo.gfx.shape");
dojo.declare("dojo.gfx.path.Path", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true);
this.segments = [];
this.absolute = true;
this.last = {};
this.attach(rawNode);
}, setAbsoluteMode:function (mode) {
this.absolute = typeof (mode) == "string" ? (mode == "absolute") : mode;
return this;
}, getAbsoluteMode:function () {
return this.absolute;
}, getBoundingBox:function () {
return "l" in this.bbox ? {x:this.bbox.l, y:this.bbox.t, width:this.bbox.r - this.bbox.l, height:this.bbox.b - this.bbox.t} : null;
}, getLastPosition:function () {
return "x" in this.last ? this.last : null;
}, _updateBBox:function (x, y) {
if ("l" in this.bbox) {
if (this.bbox.l > x) {
this.bbox.l = x;
}
if (this.bbox.r < x) {
this.bbox.r = x;
}
if (this.bbox.t > y) {
this.bbox.t = y;
}
if (this.bbox.b < y) {
this.bbox.b = y;
}
} else {
this.bbox = {l:x, b:y, r:x, t:y};
}
}, _updateWithSegment:function (segment) {
var n = segment.args;
var l = n.length;
switch (segment.action) {
case "M":
case "L":
case "C":
case "S":
case "Q":
case "T":
for (var i = 0; i < l; i += 2) {
this._updateBBox(this.bbox, n[i], n[i + 1]);
}
this.last.x = n[l - 2];
this.last.y = n[l - 1];
this.absolute = true;
break;
case "H":
for (var i = 0; i < l; ++i) {
this._updateBBox(this.bbox, n[i], this.last.y);
}
this.last.x = n[l - 1];
this.absolute = true;
break;
case "V":
for (var i = 0; i < l; ++i) {
this._updateBBox(this.bbox, this.last.x, n[i]);
}
this.last.y = n[l - 1];
this.absolute = true;
break;
case "m":
var start = 0;
if (!("x" in this.last)) {
this._updateBBox(this.bbox, this.last.x = n[0], this.last.y = n[1]);
start = 2;
}
for (var i = start; i < l; i += 2) {
this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);
}
this.absolute = false;
break;
case "l":
case "t":
for (var i = 0; i < l; i += 2) {
this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);
}
this.absolute = false;
break;
case "h":
for (var i = 0; i < l; ++i) {
this._updateBBox(this.bbox, this.last.x += n[i], this.last.y);
}
this.absolute = false;
break;
case "v":
for (var i = 0; i < l; ++i) {
this._updateBBox(this.bbox, this.last.x, this.last.y += n[i]);
}
this.absolute = false;
break;
case "c":
for (var i = 0; i < l; i += 6) {
this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);
this._updateBBox(this.bbox, this.last.x + n[i + 2], this.last.y + n[i + 3]);
this._updateBBox(this.bbox, this.last.x += n[i + 4], this.last.y += n[i + 5]);
}
this.absolute = false;
break;
case "s":
case "q":
for (var i = 0; i < l; i += 4) {
this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);
this._updateBBox(this.bbox, this.last.x += n[i + 2], this.last.y += n[i + 3]);
}
this.absolute = false;
break;
case "A":
for (var i = 0; i < l; i += 7) {
this._updateBBox(this.bbox, n[i + 5], n[i + 6]);
}
this.last.x = n[l - 2];
this.last.y = n[l - 1];
this.absolute = true;
break;
case "a":
for (var i = 0; i < l; i += 7) {
this._updateBBox(this.bbox, this.last.x += n[i + 5], this.last.y += n[i + 6]);
}
this.absolute = false;
break;
}
var path = [segment.action];
for (var i = 0; i < l; ++i) {
path.push(dojo.gfx.formatNumber(n[i], true));
}
if (typeof (this.shape.path) == "string") {
this.shape.path += path.join("");
} else {
this.shape.path = this.shape.path.concat(path);
}
}, _validSegments:{m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7, z:0}, _pushSegment:function (action, args) {
var group = this._validSegments[action.toLowerCase()];
if (typeof (group) == "number") {
if (group) {
if (args.length >= group) {
var segment = {action:action, args:args.slice(0, args.length - args.length % group)};
this.segments.push(segment);
this._updateWithSegment(segment);
}
} else {
var segment = {action:action, args:[]};
this.segments.push(segment);
this._updateWithSegment(segment);
}
}
}, _collectArgs:function (array, args) {
for (var i = 0; i < args.length; ++i) {
var t = args[i];
if (typeof (t) == "boolean") {
array.push(t ? 1 : 0);
} else {
if (typeof (t) == "number") {
array.push(t);
} else {
if (t instanceof Array) {
this._collectArgs(array, t);
} else {
if ("x" in t && "y" in t) {
array.push(t.x);
array.push(t.y);
}
}
}
}
}
}, moveTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "M" : "m", args);
return this;
}, lineTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "L" : "l", args);
return this;
}, hLineTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "H" : "h", args);
return this;
}, vLineTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "V" : "v", args);
return this;
}, curveTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "C" : "c", args);
return this;
}, smoothCurveTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "S" : "s", args);
return this;
}, qCurveTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "Q" : "q", args);
return this;
}, qSmoothCurveTo:function () {
var args = [];
this._collectArgs(args, arguments);
this._pushSegment(this.absolute ? "T" : "t", args);
return this;
}, arcTo:function () {
var args = [];
this._collectArgs(args, arguments);
for (var i = 2; i < args.length; i += 7) {
args[i] = -args[i];
}
this._pushSegment(this.absolute ? "A" : "a", args);
return this;
}, closePath:function () {
this._pushSegment("Z", []);
return this;
}, _setPath:function (path) {
var p = path.match(dojo.gfx.pathRegExp);
this.segments = [];
this.absolute = true;
this.bbox = {};
this.last = {};
if (!p) {
return;
}
var action = "";
var args = [];
for (var i = 0; i < p.length; ++i) {
var t = p[i];
var x = parseFloat(t);
if (isNaN(x)) {
if (action) {
this._pushSegment(action, args);
}
args = [];
action = t;
} else {
args.push(x);
}
}
this._pushSegment(action, args);
}, setShape:function (newShape) {
this.shape = dojo.gfx.makeParameters(this.shape, typeof (newShape) == "string" ? {path:newShape} : newShape);
var path = this.shape.path;
this.shape.path = [];
this._setPath(path);
this.shape.path = this.shape.path.join("");
return this;
}, _2PI:Math.PI * 2});
 
/trunk/api/js/dojo/src/gfx/color.js
New file
0,0 → 1,148
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.color");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.array");
dojo.gfx.color.Color = function (r, g, b, a) {
if (dojo.lang.isArray(r)) {
this.r = r[0];
this.g = r[1];
this.b = r[2];
this.a = r[3] || 1;
} else {
if (dojo.lang.isString(r)) {
var rgb = dojo.gfx.color.extractRGB(r);
this.r = rgb[0];
this.g = rgb[1];
this.b = rgb[2];
this.a = g || 1;
} else {
if (r instanceof dojo.gfx.color.Color) {
this.r = r.r;
this.b = r.b;
this.g = r.g;
this.a = r.a;
} else {
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
}
}
};
dojo.gfx.color.Color.fromArray = function (arr) {
return new dojo.gfx.color.Color(arr[0], arr[1], arr[2], arr[3]);
};
dojo.extend(dojo.gfx.color.Color, {toRgb:function (includeAlpha) {
if (includeAlpha) {
return this.toRgba();
} else {
return [this.r, this.g, this.b];
}
}, toRgba:function () {
return [this.r, this.g, this.b, this.a];
}, toHex:function () {
return dojo.gfx.color.rgb2hex(this.toRgb());
}, toCss:function () {
return "rgb(" + this.toRgb().join() + ")";
}, toString:function () {
return this.toHex();
}, blend:function (color, weight) {
var rgb = null;
if (dojo.lang.isArray(color)) {
rgb = color;
} else {
if (color instanceof dojo.gfx.color.Color) {
rgb = color.toRgb();
} else {
rgb = new dojo.gfx.color.Color(color).toRgb();
}
}
return dojo.gfx.color.blend(this.toRgb(), rgb, weight);
}});
dojo.gfx.color.named = {white:[255, 255, 255], black:[0, 0, 0], red:[255, 0, 0], green:[0, 255, 0], lime:[0, 255, 0], blue:[0, 0, 255], navy:[0, 0, 128], gray:[128, 128, 128], silver:[192, 192, 192]};
dojo.gfx.color.blend = function (a, b, weight) {
if (typeof a == "string") {
return dojo.gfx.color.blendHex(a, b, weight);
}
if (!weight) {
weight = 0;
}
weight = Math.min(Math.max(-1, weight), 1);
weight = ((weight + 1) / 2);
var c = [];
for (var x = 0; x < 3; x++) {
c[x] = parseInt(b[x] + ((a[x] - b[x]) * weight));
}
return c;
};
dojo.gfx.color.blendHex = function (a, b, weight) {
return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight));
};
dojo.gfx.color.extractRGB = function (color) {
var hex = "0123456789abcdef";
color = color.toLowerCase();
if (color.indexOf("rgb") == 0) {
var matches = color.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
var ret = matches.splice(1, 3);
return ret;
} else {
var colors = dojo.gfx.color.hex2rgb(color);
if (colors) {
return colors;
} else {
return dojo.gfx.color.named[color] || [255, 255, 255];
}
}
};
dojo.gfx.color.hex2rgb = function (hex) {
var hexNum = "0123456789ABCDEF";
var rgb = new Array(3);
if (hex.indexOf("#") == 0) {
hex = hex.substring(1);
}
hex = hex.toUpperCase();
if (hex.replace(new RegExp("[" + hexNum + "]", "g"), "") != "") {
return null;
}
if (hex.length == 3) {
rgb[0] = hex.charAt(0) + hex.charAt(0);
rgb[1] = hex.charAt(1) + hex.charAt(1);
rgb[2] = hex.charAt(2) + hex.charAt(2);
} else {
rgb[0] = hex.substring(0, 2);
rgb[1] = hex.substring(2, 4);
rgb[2] = hex.substring(4);
}
for (var i = 0; i < rgb.length; i++) {
rgb[i] = hexNum.indexOf(rgb[i].charAt(0)) * 16 + hexNum.indexOf(rgb[i].charAt(1));
}
return rgb;
};
dojo.gfx.color.rgb2hex = function (r, g, b) {
if (dojo.lang.isArray(r)) {
g = r[1] || 0;
b = r[2] || 0;
r = r[0] || 0;
}
var ret = dojo.lang.map([r, g, b], function (x) {
x = new Number(x);
var s = x.toString(16);
while (s.length < 2) {
s = "0" + s;
}
return s;
});
ret.unshift("#");
return ret.join("");
};
 
/trunk/api/js/dojo/src/gfx/vml.js
New file
0,0 → 1,1008
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.vml");
dojo.require("dojo.dom");
dojo.require("dojo.math");
dojo.require("dojo.lang.declare");
dojo.require("dojo.lang.extras");
dojo.require("dojo.string.*");
dojo.require("dojo.html.metrics");
dojo.require("dojo.gfx.color");
dojo.require("dojo.gfx.common");
dojo.require("dojo.gfx.shape");
dojo.require("dojo.gfx.path");
dojo.require("dojo.experimental");
dojo.experimental("dojo.gfx.vml");
dojo.gfx.vml.xmlns = "urn:schemas-microsoft-com:vml";
dojo.gfx.vml._parseFloat = function (str) {
return str.match(/^\d+f$/i) ? parseInt(str) / 65536 : parseFloat(str);
};
dojo.gfx.vml.cm_in_pt = 72 / 2.54;
dojo.gfx.vml.mm_in_pt = 7.2 / 2.54;
dojo.gfx.vml.px_in_pt = function () {
return dojo.html.getCachedFontMeasurements()["12pt"] / 12;
};
dojo.gfx.vml.pt2px = function (len) {
return len * this.px_in_pt();
};
dojo.gfx.vml.px2pt = function (len) {
return len / this.px_in_pt();
};
dojo.gfx.vml.normalizedLength = function (len) {
if (len.length == 0) {
return 0;
}
if (len.length > 2) {
var px_in_pt = this.px_in_pt();
var val = parseFloat(len);
switch (len.slice(-2)) {
case "px":
return val;
case "pt":
return val * px_in_pt;
case "in":
return val * 72 * px_in_pt;
case "pc":
return val * 12 * px_in_pt;
case "mm":
return val / this.mm_in_pt * px_in_pt;
case "cm":
return val / this.cm_in_pt * px_in_pt;
}
}
return parseFloat(len);
};
dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) {
if (!fill) {
this.fillStyle = null;
this.rawNode.filled = false;
return this;
}
if (typeof (fill) == "object" && "type" in fill) {
switch (fill.type) {
case "linear":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill);
this.fillStyle = f;
var s = "";
for (var i = 0; i < f.colors.length; ++i) {
f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
s += f.colors[i].offset.toFixed(8) + " " + f.colors[i].color.toHex() + ";";
}
var fo = this.rawNode.fill;
fo.colors.value = s;
fo.method = "sigma";
fo.type = "gradient";
fo.angle = (dojo.math.radToDeg(Math.atan2(f.x2 - f.x1, f.y2 - f.y1)) + 180) % 360;
fo.on = true;
break;
case "radial":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill);
this.fillStyle = f;
var w = parseFloat(this.rawNode.style.width);
var h = parseFloat(this.rawNode.style.height);
var c = isNaN(w) ? 1 : 2 * f.r / w;
var i = f.colors.length - 1;
f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
var s = "0 " + f.colors[i].color.toHex();
for (; i >= 0; --i) {
f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
s += (1 - c * f.colors[i].offset).toFixed(8) + " " + f.colors[i].color.toHex() + ";";
}
var fo = this.rawNode.fill;
fo.colors.value = s;
fo.method = "sigma";
fo.type = "gradientradial";
if (isNaN(w) || isNaN(h)) {
fo.focusposition = "0.5 0.5";
} else {
fo.focusposition = (f.cx / w).toFixed(8) + " " + (f.cy / h).toFixed(8);
}
fo.focussize = "0 0";
fo.on = true;
break;
case "pattern":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill);
this.fillStyle = f;
var fo = this.rawNode.fill;
fo.type = "tile";
fo.src = f.src;
if (f.width && f.height) {
fo.size.x = dojo.gfx.vml.px2pt(f.width);
fo.size.y = dojo.gfx.vml.px2pt(f.height);
}
fo.alignShape = false;
fo.position.x = 0;
fo.position.y = 0;
fo.origin.x = f.width ? f.x / f.width : 0;
fo.origin.y = f.height ? f.y / f.height : 0;
fo.on = true;
break;
}
this.rawNode.fill.opacity = 1;
return this;
}
this.fillStyle = dojo.gfx.normalizeColor(fill);
this.rawNode.fillcolor = this.fillStyle.toHex();
this.rawNode.fill.opacity = this.fillStyle.a;
this.rawNode.filled = true;
return this;
}, setStroke:function (stroke) {
if (!stroke) {
this.strokeStyle = null;
this.rawNode.stroked = false;
return this;
}
this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke);
this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color);
var s = this.strokeStyle;
this.rawNode.stroked = true;
this.rawNode.strokecolor = s.color.toCss();
this.rawNode.strokeweight = s.width + "px";
if (this.rawNode.stroke) {
this.rawNode.stroke.opacity = s.color.a;
this.rawNode.stroke.endcap = this._translate(this._capMap, s.cap);
if (typeof (s.join) == "number") {
this.rawNode.stroke.joinstyle = "miter";
this.rawNode.stroke.miterlimit = s.join;
} else {
this.rawNode.stroke.joinstyle = s.join;
}
}
return this;
}, _capMap:{butt:"flat"}, _capMapReversed:{flat:"butt"}, _translate:function (dict, value) {
return (value in dict) ? dict[value] : value;
}, _applyTransform:function () {
var matrix = this._getRealMatrix();
if (!matrix) {
return this;
}
var skew = this.rawNode.skew;
if (typeof (skew) == "undefined") {
for (var i = 0; i < this.rawNode.childNodes.length; ++i) {
if (this.rawNode.childNodes[i].tagName == "skew") {
skew = this.rawNode.childNodes[i];
break;
}
}
}
if (skew) {
skew.on = false;
var mt = matrix.xx.toFixed(8) + " " + matrix.xy.toFixed(8) + " " + matrix.yx.toFixed(8) + " " + matrix.yy.toFixed(8) + " 0 0";
var offset = Math.floor(matrix.dx).toFixed() + "px " + Math.floor(matrix.dy).toFixed() + "px";
var l = parseFloat(this.rawNode.style.left);
var t = parseFloat(this.rawNode.style.top);
var w = parseFloat(this.rawNode.style.width);
var h = parseFloat(this.rawNode.style.height);
if (isNaN(l)) {
l = 0;
}
if (isNaN(t)) {
t = 0;
}
if (isNaN(w)) {
w = 1;
}
if (isNaN(h)) {
h = 1;
}
var origin = (-l / w - 0.5).toFixed(8) + " " + (-t / h - 0.5).toFixed(8);
skew.matrix = mt;
skew.origin = origin;
skew.offset = offset;
skew.on = true;
}
return this;
}, setRawNode:function (rawNode) {
rawNode.stroked = false;
rawNode.filled = false;
this.rawNode = rawNode;
}, attachFill:function (rawNode) {
var fillStyle = null;
var fo = rawNode.fill;
if (rawNode) {
if (fo.on && fo.type == "gradient") {
var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultLinearGradient, true);
var rad = dojo.math.degToRad(fo.angle);
fillStyle.x2 = Math.cos(rad);
fillStyle.y2 = Math.sin(rad);
fillStyle.colors = [];
var stops = fo.colors.value.split(";");
for (var i = 0; i < stops.length; ++i) {
var t = stops[i].match(/\S+/g);
if (!t || t.length != 2) {
continue;
}
fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])});
}
} else {
if (fo.on && fo.type == "gradientradial") {
var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultRadialGradient, true);
var w = parseFloat(rawNode.style.width);
var h = parseFloat(rawNode.style.height);
fillStyle.cx = isNaN(w) ? 0 : fo.focusposition.x * w;
fillStyle.cy = isNaN(h) ? 0 : fo.focusposition.y * h;
fillStyle.r = isNaN(w) ? 1 : w / 2;
fillStyle.colors = [];
var stops = fo.colors.value.split(";");
for (var i = stops.length - 1; i >= 0; --i) {
var t = stops[i].match(/\S+/g);
if (!t || t.length != 2) {
continue;
}
fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])});
}
} else {
if (fo.on && fo.type == "tile") {
var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true);
fillStyle.width = dojo.gfx.vml.pt2px(fo.size.x);
fillStyle.height = dojo.gfx.vml.pt2px(fo.size.y);
fillStyle.x = fo.origin.x * fillStyle.width;
fillStyle.y = fo.origin.y * fillStyle.height;
fillStyle.src = fo.src;
} else {
if (fo.on && rawNode.fillcolor) {
fillStyle = new dojo.gfx.color.Color(rawNode.fillcolor + "");
fillStyle.a = fo.opacity;
}
}
}
}
}
return fillStyle;
}, attachStroke:function (rawNode) {
var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true);
if (rawNode && rawNode.stroked) {
strokeStyle.color = new dojo.gfx.color.Color(rawNode.strokecolor.value);
dojo.debug("We are expecting an .75pt here, instead of strokeweight = " + rawNode.strokeweight);
strokeStyle.width = dojo.gfx.vml.normalizedLength(rawNode.strokeweight + "");
strokeStyle.color.a = rawNode.stroke.opacity;
strokeStyle.cap = this._translate(this._capMapReversed, rawNode.stroke.endcap);
strokeStyle.join = rawNode.stroke.joinstyle == "miter" ? rawNode.stroke.miterlimit : rawNode.stroke.joinstyle;
} else {
return null;
}
return strokeStyle;
}, attachTransform:function (rawNode) {
var matrix = {};
if (rawNode) {
var s = rawNode.skew;
matrix.xx = s.matrix.xtox;
matrix.xy = s.matrix.ytox;
matrix.yx = s.matrix.xtoy;
matrix.yy = s.matrix.ytoy;
matrix.dx = dojo.gfx.vml.pt2px(s.offset.x);
matrix.dy = dojo.gfx.vml.pt2px(s.offset.y);
}
return dojo.gfx.matrix.normalize(matrix);
}, attach:function (rawNode) {
if (rawNode) {
this.rawNode = rawNode;
this.shape = this.attachShape(rawNode);
this.fillStyle = this.attachFill(rawNode);
this.strokeStyle = this.attachStroke(rawNode);
this.matrix = this.attachTransform(rawNode);
}
}});
dojo.declare("dojo.gfx.Group", dojo.gfx.shape.VirtualGroup, {add:function (shape) {
if (this != shape.getParent()) {
this.rawNode.appendChild(shape.rawNode);
dojo.gfx.Group.superclass.add.apply(this, arguments);
}
return this;
}, remove:function (shape, silently) {
if (this == shape.getParent()) {
if (this.rawNode == shape.rawNode.parentNode) {
this.rawNode.removeChild(shape.rawNode);
}
dojo.gfx.Group.superclass.remove.apply(this, arguments);
}
return this;
}, attach:function (rawNode) {
if (rawNode) {
this.rawNode = rawNode;
this.shape = null;
this.fillStyle = null;
this.strokeStyle = null;
this.matrix = null;
}
}});
dojo.gfx.Group.nodeType = "group";
var zIndex = {moveToFront:function () {
this.rawNode.parentNode.appendChild(this.rawNode);
return this;
}, moveToBack:function () {
this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild);
return this;
}};
dojo.lang.extend(dojo.gfx.Shape, zIndex);
dojo.lang.extend(dojo.gfx.Group, zIndex);
delete zIndex;
dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) {
var arcsize = rawNode.outerHTML.match(/arcsize = \"(\d*\.?\d+[%f]?)\"/)[1];
arcsize = (arcsize.indexOf("%") >= 0) ? parseFloat(arcsize) / 100 : dojo.gfx.vml._parseFloat(arcsize);
var style = rawNode.style;
var width = parseFloat(style.width);
var height = parseFloat(style.height);
var o = dojo.gfx.makeParameters(dojo.gfx.defaultRect, {x:parseInt(style.left), y:parseInt(style.top), width:width, height:height, r:Math.min(width, height) * arcsize});
return o;
}, setShape:function (newShape) {
var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
var style = this.rawNode.style;
style.left = shape.x.toFixed();
style.top = shape.y.toFixed();
style.width = (typeof (shape.width) == "string" && shape.width.indexOf("%") >= 0) ? shape.width : shape.width.toFixed();
style.height = (typeof (shape.width) == "string" && shape.height.indexOf("%") >= 0) ? shape.height : shape.height.toFixed();
var r = Math.min(1, (shape.r / Math.min(parseFloat(shape.width), parseFloat(shape.height)))).toFixed(8);
var parent = this.rawNode.parentNode;
var before = null;
if (parent) {
if (parent.lastChild != this.rawNode) {
for (var i = 0; i < parent.childNodes.length; ++i) {
if (parent.childNodes[i] == this.rawNode) {
before = parent.childNodes[i + 1];
break;
}
}
}
parent.removeChild(this.rawNode);
}
this.rawNode.arcsize = r;
if (parent) {
if (before) {
parent.insertBefore(this.rawNode, before);
} else {
parent.appendChild(this.rawNode);
}
}
return this.setTransform(this.matrix);
}});
dojo.gfx.Rect.nodeType = "roundrect";
dojo.declare("dojo.gfx.Ellipse", dojo.gfx.shape.Ellipse, {attachShape:function (rawNode) {
var style = this.rawNode.style;
var rx = parseInt(style.width) / 2;
var ry = parseInt(style.height) / 2;
var o = dojo.gfx.makeParameters(dojo.gfx.defaultEllipse, {cx:parseInt(style.left) + rx, cy:parseInt(style.top) + ry, rx:rx, ry:ry});
return o;
}, setShape:function (newShape) {
var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
var style = this.rawNode.style;
style.left = (shape.cx - shape.rx).toFixed();
style.top = (shape.cy - shape.ry).toFixed();
style.width = (shape.rx * 2).toFixed();
style.height = (shape.ry * 2).toFixed();
return this.setTransform(this.matrix);
}});
dojo.gfx.Ellipse.nodeType = "oval";
dojo.declare("dojo.gfx.Circle", dojo.gfx.shape.Circle, {attachShape:function (rawNode) {
var style = this.rawNode.style;
var r = parseInt(style.width) / 2;
var o = dojo.gfx.makeParameters(dojo.gfx.defaultCircle, {cx:parseInt(style.left) + r, cy:parseInt(style.top) + r, r:r});
return o;
}, setShape:function (newShape) {
var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
var style = this.rawNode.style;
style.left = (shape.cx - shape.r).toFixed();
style.top = (shape.cy - shape.r).toFixed();
style.width = (shape.r * 2).toFixed();
style.height = (shape.r * 2).toFixed();
return this;
}});
dojo.gfx.Circle.nodeType = "oval";
dojo.declare("dojo.gfx.Line", dojo.gfx.shape.Line, function (rawNode) {
if (rawNode) {
rawNode.setAttribute("dojoGfxType", "line");
}
}, {attachShape:function (rawNode) {
var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
var shape = {};
do {
if (p.length < 7 || p[0] != "m" || p[3] != "l" || p[6] != "e") {
break;
}
shape.x1 = parseInt(p[1]);
shape.y1 = parseInt(p[2]);
shape.x2 = parseInt(p[4]);
shape.y2 = parseInt(p[5]);
} while (false);
return dojo.gfx.makeParameters(dojo.gfx.defaultLine, shape);
}, setShape:function (newShape) {
var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
this.rawNode.path.v = "m" + shape.x1.toFixed() + " " + shape.y1.toFixed() + "l" + shape.x2.toFixed() + " " + shape.y2.toFixed() + "e";
return this.setTransform(this.matrix);
}});
dojo.gfx.Line.nodeType = "shape";
dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, function (rawNode) {
if (rawNode) {
rawNode.setAttribute("dojoGfxType", "polyline");
}
}, {attachShape:function (rawNode) {
var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPolyline, true);
var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
do {
if (p.length < 3 || p[0] != "m") {
break;
}
var x = parseInt(p[0]);
var y = parseInt(p[1]);
if (isNaN(x) || isNaN(y)) {
break;
}
shape.points.push({x:x, y:y});
if (p.length < 6 || p[3] != "l") {
break;
}
for (var i = 4; i < p.length; i += 2) {
x = parseInt(p[i]);
y = parseInt(p[i + 1]);
if (isNaN(x) || isNaN(y)) {
break;
}
shape.points.push({x:x, y:y});
}
} while (false);
return shape;
}, setShape:function (points, closed) {
if (points && points instanceof Array) {
this.shape = dojo.gfx.makeParameters(this.shape, {points:points});
if (closed && this.shape.points.length) {
this.shape.points.push(this.shape.points[0]);
}
} else {
this.shape = dojo.gfx.makeParameters(this.shape, points);
}
this.bbox = null;
var attr = [];
var p = this.shape.points;
if (p.length > 0) {
attr.push("m");
attr.push(p[0].x.toFixed());
attr.push(p[0].y.toFixed());
if (p.length > 1) {
attr.push("l");
for (var i = 1; i < p.length; ++i) {
attr.push(p[i].x.toFixed());
attr.push(p[i].y.toFixed());
}
}
}
attr.push("e");
this.rawNode.path.v = attr.join(" ");
return this.setTransform(this.matrix);
}});
dojo.gfx.Polyline.nodeType = "shape";
dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {getEventSource:function () {
return this.rawNode ? this.rawNode.firstChild : null;
}, attachShape:function (rawNode) {
var shape = dojo.lang.shallowCopy(dojo.gfx.defaultImage, true);
shape.src = rawNode.firstChild.src;
return shape;
}, setShape:function (newShape) {
var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
var firstChild = this.rawNode.firstChild;
firstChild.src = shape.src;
if (shape.width || shape.height) {
firstChild.style.width = shape.width;
firstChild.style.height = shape.height;
}
return this.setTransform(this.matrix);
}, setStroke:function () {
return this;
}, setFill:function () {
return this;
}, attachStroke:function (rawNode) {
return null;
}, attachFill:function (rawNode) {
return null;
}, attachTransform:function (rawNode) {
var matrix = {};
if (rawNode) {
var m = rawNode.filters["DXImageTransform.Microsoft.Matrix"];
matrix.xx = m.M11;
matrix.xy = m.M12;
matrix.yx = m.M21;
matrix.yy = m.M22;
matrix.dx = m.Dx;
matrix.dy = m.Dy;
}
return dojo.gfx.matrix.normalize(matrix);
}, _applyTransform:function () {
var matrix = this._getRealMatrix();
if (!matrix) {
return this;
}
with (this.rawNode.filters["DXImageTransform.Microsoft.Matrix"]) {
M11 = matrix.xx;
M12 = matrix.xy;
M21 = matrix.yx;
M22 = matrix.yy;
Dx = matrix.dx;
Dy = matrix.dy;
}
return this;
}});
dojo.gfx.Image.nodeType = "image";
dojo.gfx.path._calcArc = function (alpha) {
var cosa = Math.cos(alpha);
var sina = Math.sin(alpha);
var p2 = {x:cosa + (4 / 3) * (1 - cosa), y:sina - (4 / 3) * cosa * (1 - cosa) / sina};
return {s:{x:cosa, y:sina}, c1:p2, c2:{x:p2.x, y:-p2.y}, e:{x:cosa, y:-sina}};
};
dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, function (rawNode) {
if (rawNode) {
rawNode.setAttribute("dojoGfxType", "path");
}
this.vmlPath = "";
this.lastControl = {};
}, {_updateWithSegment:function (segment) {
var last = dojo.lang.shallowCopy(this.last);
dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments);
var path = this[this.renderers[segment.action]](segment, last);
if (typeof (this.vmlPath) == "string") {
this.vmlPath += path.join("");
} else {
this.vmlPath = this.vmlPath.concat(path);
}
if (typeof (this.vmlPath) == "string") {
this.rawNode.path.v = this.vmlPath + " e";
}
}, attachShape:function (rawNode) {
var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true);
var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
var t = [], skip = false;
for (var i = 0; i < p.length; ++p) {
var s = p[i];
if (s in this._pathVmlToSvgMap) {
skip = false;
t.push(this._pathVmlToSvgMap[s]);
} else {
if (!skip) {
var n = parseInt(s);
if (isNaN(n)) {
skip = true;
} else {
t.push(n);
}
}
}
}
if (t.length) {
shape.path = t.join(" ");
}
return shape;
}, setShape:function (newShape) {
this.vmlPath = [];
this.lastControl = {};
dojo.gfx.Path.superclass.setShape.apply(this, arguments);
this.vmlPath = this.vmlPath.join("");
this.rawNode.path.v = this.vmlPath + " e";
return this;
}, _pathVmlToSvgMap:{m:"M", l:"L", t:"m", r:"l", c:"C", v:"c", qb:"Q", x:"z", e:""}, renderers:{M:"_moveToA", m:"_moveToR", L:"_lineToA", l:"_lineToR", H:"_hLineToA", h:"_hLineToR", V:"_vLineToA", v:"_vLineToR", C:"_curveToA", c:"_curveToR", S:"_smoothCurveToA", s:"_smoothCurveToR", Q:"_qCurveToA", q:"_qCurveToR", T:"_qSmoothCurveToA", t:"_qSmoothCurveToR", A:"_arcTo", a:"_arcTo", Z:"_closePath", z:"_closePath"}, _addArgs:function (path, args, from, upto) {
if (typeof (upto) == "undefined") {
upto = args.length;
}
if (typeof (from) == "undefined") {
from = 0;
}
for (var i = from; i < upto; ++i) {
path.push(" ");
path.push(args[i].toFixed());
}
}, _addArgsAdjusted:function (path, last, args, from, upto) {
if (typeof (upto) == "undefined") {
upto = args.length;
}
if (typeof (from) == "undefined") {
from = 0;
}
for (var i = from; i < upto; i += 2) {
path.push(" ");
path.push((last.x + args[i]).toFixed());
path.push(" ");
path.push((last.y + args[i + 1]).toFixed());
}
}, _moveToA:function (segment) {
var p = [" m"];
var n = segment.args;
var l = n.length;
if (l == 2) {
this._addArgs(p, n);
} else {
this._addArgs(p, n, 0, 2);
p.push(" l");
this._addArgs(p, n, 2);
}
this.lastControl = {};
return p;
}, _moveToR:function (segment, last) {
var p = ["x" in last ? " t" : " m"];
var n = segment.args;
var l = n.length;
if (l == 2) {
this._addArgs(p, n);
} else {
this._addArgs(p, n, 0, 2);
p.push(" r");
this._addArgs(p, n, 2);
}
this.lastControl = {};
return p;
}, _lineToA:function (segment) {
var p = [" l"];
this._addArgs(p, segment.args);
this.lastControl = {};
return p;
}, _lineToR:function (segment) {
var p = [" r"];
this._addArgs(p, segment.args);
this.lastControl = {};
return p;
}, _hLineToA:function (segment, last) {
var p = [" l"];
var n = segment.args;
var l = n.length;
var y = " " + last.y.toFixed();
for (var i = 0; i < l; ++i) {
p.push(" ");
p.push(n[i].toFixed());
p.push(y);
}
this.lastControl = {};
return p;
}, _hLineToR:function (segment) {
var p = [" r"];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; ++i) {
p.push(" ");
p.push(n[i].toFixed());
p.push(" 0");
}
this.lastControl = {};
return p;
}, _vLineToA:function (segment, last) {
var p = [" l"];
var n = segment.args;
var l = n.length;
var x = " " + last.x.toFixed();
for (var i = 0; i < l; ++i) {
p.push(x);
p.push(" ");
p.push(n[i].toFixed());
}
this.lastControl = {};
return p;
}, _vLineToR:function (segment) {
var p = [" r"];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; ++i) {
p.push(" 0 ");
p.push(n[i].toFixed());
}
this.lastControl = {};
return p;
}, _curveToA:function (segment) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 6) {
p.push(" c");
this._addArgs(p, n, i, i + 6);
}
this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"};
return p;
}, _curveToR:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 6) {
p.push(" v");
this._addArgs(p, n, i, i + 6);
this.lastControl = {x:last.x + n[i + 2], y:last.y + n[i + 3]};
last.x += n[i + 4];
last.y += n[i + 5];
}
this.lastControl.type = "C";
return p;
}, _smoothCurveToA:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 4) {
p.push(" c");
if (this.lastControl.type == "C") {
this._addArgs(p, [2 * last.x - this.lastControl.x, 2 * last.y - this.lastControl.y]);
} else {
this._addArgs(p, [last.x, last.y]);
}
this._addArgs(p, n, i, i + 4);
}
this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"};
return p;
}, _smoothCurveToR:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 4) {
p.push(" v");
if (this.lastControl.type == "C") {
this._addArgs(p, [last.x - this.lastControl.x, last.y - this.lastControl.y]);
} else {
this._addArgs(p, [0, 0]);
}
this._addArgs(p, n, i, i + 4);
this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]};
last.x += n[i + 2];
last.y += n[i + 3];
}
this.lastControl.type = "C";
return p;
}, _qCurveToA:function (segment) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 4) {
p.push(" qb");
this._addArgs(p, n, i, i + 4);
}
this.lastControl = {x:n[l - 4], y:n[l - 3], type:"Q"};
return p;
}, _qCurveToR:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 4) {
p.push(" qb");
this._addArgsAdjusted(p, last, n, i, i + 4);
this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]};
last.x += n[i + 2];
last.y += n[i + 3];
}
this.lastControl.type = "Q";
return p;
}, _qSmoothCurveToA:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 2) {
p.push(" qb");
if (this.lastControl.type == "Q") {
this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]);
} else {
this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]);
}
this._addArgs(p, n, i, i + 2);
}
this.lastControl.type = "Q";
return p;
}, _qSmoothCurveToR:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
for (var i = 0; i < l; i += 2) {
p.push(" qb");
if (this.lastControl.type == "Q") {
this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]);
} else {
this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]);
}
this._addArgsAdjusted(p, last, n, i, i + 2);
}
this.lastControl.type = "Q";
return p;
}, _PI4:Math.PI / 4, _curvePI4:dojo.gfx.path._calcArc(Math.PI / 8), _calcArcTo:function (path, last, rx, ry, xRotg, large, cw, x, y) {
var m = dojo.gfx.matrix;
var xRot = -dojo.math.degToRad(xRotg);
var rx2 = rx * rx;
var ry2 = ry * ry;
var pa = m.multiplyPoint(m.rotate(-xRot), {x:(last.x - x) / 2, y:(last.y - y) / 2});
var pax2 = pa.x * pa.x;
var pay2 = pa.y * pa.y;
var c1 = Math.sqrt((rx2 * ry2 - rx2 * pay2 - ry2 * pax2) / (rx2 * pay2 + ry2 * pax2));
var ca = {x:c1 * rx * pa.y / ry, y:-c1 * ry * pa.x / rx};
if (large == cw) {
ca = {x:-ca.x, y:-ca.y};
}
var c = m.multiplyPoint([m.translate((last.x + x) / 2, (last.y + y) / 2), m.rotate(xRot)], ca);
var startAngle = Math.atan2(c.y - last.y, last.x - c.x) - xRot;
var endAngle = Math.atan2(c.y - y, x - c.x) - xRot;
var theta = cw ? startAngle - endAngle : endAngle - startAngle;
if (theta < 0) {
theta += this._2PI;
} else {
if (theta > this._2PI) {
theta = this._2PI;
}
}
var elliptic_transform = m.normalize([m.translate(c.x, c.y), m.rotate(xRot), m.scale(rx, ry)]);
var alpha = this._PI4 / 2;
var curve = this._curvePI4;
var step = cw ? -alpha : alpha;
for (var angle = theta; angle > 0; angle -= this._PI4) {
if (angle < this._PI4) {
alpha = angle / 2;
curve = dojo.gfx.path._calcArc(alpha);
step = cw ? -alpha : alpha;
}
var c1, c2, e;
var M = m.normalize([elliptic_transform, m.rotate(startAngle + step)]);
if (cw) {
c1 = m.multiplyPoint(M, curve.c2);
c2 = m.multiplyPoint(M, curve.c1);
e = m.multiplyPoint(M, curve.s);
} else {
c1 = m.multiplyPoint(M, curve.c1);
c2 = m.multiplyPoint(M, curve.c2);
e = m.multiplyPoint(M, curve.e);
}
path.push(" c");
this._addArgs(path, [c1.x, c1.y, c2.x, c2.y, e.x, e.y]);
startAngle += 2 * step;
}
}, _arcTo:function (segment, last) {
var p = [];
var n = segment.args;
var l = n.length;
var relative = segment.action == "a";
for (var i = 0; i < l; i += 7) {
var x1 = n[i + 5];
var y1 = n[i + 6];
if (relative) {
x1 += last.x;
y1 += last.y;
}
this._calcArcTo(p, last, n[i], n[i + 1], n[i + 2], n[i + 3] ? 1 : 0, n[i + 4] ? 1 : 0, x1, y1);
last = {x:x1, y:y1};
}
this.lastControl = {};
return p;
}, _closePath:function () {
this.lastControl = {};
return ["x"];
}});
dojo.gfx.Path.nodeType = "shape";
dojo.gfx._creators = {createPath:function (path) {
return this.createObject(dojo.gfx.Path, path, true);
}, createRect:function (rect) {
return this.createObject(dojo.gfx.Rect, rect);
}, createCircle:function (circle) {
return this.createObject(dojo.gfx.Circle, circle);
}, createEllipse:function (ellipse) {
return this.createObject(dojo.gfx.Ellipse, ellipse);
}, createLine:function (line) {
return this.createObject(dojo.gfx.Line, line, true);
}, createPolyline:function (points) {
return this.createObject(dojo.gfx.Polyline, points, true);
}, createImage:function (image) {
if (!this.rawNode) {
return null;
}
var shape = new dojo.gfx.Image();
var node = document.createElement("div");
node.style.position = "relative";
node.style.width = this.rawNode.style.width;
node.style.height = this.rawNode.style.height;
node.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, Dx=0, Dy=0)";
var img = document.createElement("img");
node.appendChild(img);
shape.setRawNode(node);
this.rawNode.appendChild(node);
shape.setShape(image);
this.add(shape);
return shape;
}, createGroup:function () {
return this.createObject(dojo.gfx.Group, null, true);
}, createObject:function (shapeType, rawShape, overrideSize) {
if (!this.rawNode) {
return null;
}
var shape = new shapeType();
var node = document.createElement("v:" + shapeType.nodeType);
shape.setRawNode(node);
this.rawNode.appendChild(node);
if (overrideSize) {
this._overrideSize(node);
}
shape.setShape(rawShape);
this.add(shape);
return shape;
}, _overrideSize:function (node) {
node.style.width = this.rawNode.style.width;
node.style.height = this.rawNode.style.height;
node.coordsize = parseFloat(node.style.width) + " " + parseFloat(node.style.height);
}};
dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators);
dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators);
delete dojo.gfx._creators;
dojo.gfx.attachNode = function (node) {
if (!node) {
return null;
}
var s = null;
switch (node.tagName.toLowerCase()) {
case dojo.gfx.Rect.nodeType:
s = new dojo.gfx.Rect();
break;
case dojo.gfx.Ellipse.nodeType:
s = (node.style.width == node.style.height) ? new dojo.gfx.Circle() : new dojo.gfx.Ellipse();
break;
case dojo.gfx.Path.nodeType:
switch (node.getAttribute("dojoGfxType")) {
case "line":
s = new dojo.gfx.Line();
break;
case "polyline":
s = new dojo.gfx.Polyline();
break;
case "path":
s = new dojo.gfx.Path();
break;
}
break;
case dojo.gfx.Image.nodeType:
s = new dojo.gfx.Image();
break;
default:
dojo.debug("FATAL ERROR! tagName = " + node.tagName);
}
s.attach(node);
return s;
};
dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) {
if (!this.rawNode) {
return this;
}
this.rawNode.style.width = width;
this.rawNode.style.height = height;
this.rawNode.coordsize = width + " " + height;
return this;
}, getDimensions:function () {
return this.rawNode ? {width:this.rawNode.style.width, height:this.rawNode.style.height} : null;
}, add:function (shape) {
var oldParent = shape.getParent();
if (this != oldParent) {
this.rawNode.appendChild(shape.rawNode);
if (oldParent) {
oldParent.remove(shape, true);
}
shape._setParent(this, null);
}
return this;
}, remove:function (shape, silently) {
if (this == shape.getParent()) {
if (this.rawNode == shape.rawNode.parentNode) {
this.rawNode.removeChild(shape.rawNode);
}
shape._setParent(null, null);
}
return this;
}});
dojo.gfx.createSurface = function (parentNode, width, height) {
var s = new dojo.gfx.Surface();
s.rawNode = document.createElement("v:group");
s.rawNode.style.width = width ? width : "100%";
s.rawNode.style.height = height ? height : "100%";
s.rawNode.coordsize = (width && height) ? (parseFloat(width) + " " + parseFloat(height)) : "100% 100%";
s.rawNode.coordorigin = "0 0";
dojo.byId(parentNode).appendChild(s.rawNode);
return s;
};
dojo.gfx.attachSurface = function (node) {
var s = new dojo.gfx.Surface();
s.rawNode = node;
return s;
};
 
/trunk/api/js/dojo/src/gfx/svg.js
New file
0,0 → 1,471
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.svg");
dojo.require("dojo.lang.declare");
dojo.require("dojo.svg");
dojo.require("dojo.gfx.color");
dojo.require("dojo.gfx.common");
dojo.require("dojo.gfx.shape");
dojo.require("dojo.gfx.path");
dojo.require("dojo.experimental");
dojo.experimental("dojo.gfx.svg");
dojo.gfx.svg.getRef = function (fill) {
if (!fill || fill == "none") {
return null;
}
if (fill.match(/^url\(#.+\)$/)) {
return dojo.byId(fill.slice(5, -1));
}
if (dojo.render.html.opera && fill.match(/^#dj_unique_.+$/)) {
return dojo.byId(fill.slice(1));
}
return null;
};
dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) {
if (!fill) {
this.fillStyle = null;
this.rawNode.setAttribute("fill", "none");
this.rawNode.setAttribute("fill-opacity", 0);
return this;
}
if (typeof (fill) == "object" && "type" in fill) {
switch (fill.type) {
case "linear":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill);
var gradient = this._setFillObject(f, "linearGradient");
dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) {
gradient.setAttribute(x, f[x].toFixed(8));
});
break;
case "radial":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill);
var gradient = this._setFillObject(f, "radialGradient");
dojo.lang.forEach(["cx", "cy", "r"], function (x) {
gradient.setAttribute(x, f[x].toFixed(8));
});
break;
case "pattern":
var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill);
var pattern = this._setFillObject(f, "pattern");
dojo.lang.forEach(["x", "y", "width", "height"], function (x) {
pattern.setAttribute(x, f[x].toFixed(8));
});
break;
}
return this;
}
var f = dojo.gfx.normalizeColor(fill);
this.fillStyle = f;
this.rawNode.setAttribute("fill", f.toCss());
this.rawNode.setAttribute("fill-opacity", f.a);
return this;
}, setStroke:function (stroke) {
if (!stroke) {
this.strokeStyle = null;
this.rawNode.setAttribute("stroke", "none");
this.rawNode.setAttribute("stroke-opacity", 0);
return this;
}
this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke);
this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color);
var s = this.strokeStyle;
var rn = this.rawNode;
if (s) {
rn.setAttribute("stroke", s.color.toCss());
rn.setAttribute("stroke-opacity", s.color.a);
rn.setAttribute("stroke-width", s.width);
rn.setAttribute("stroke-linecap", s.cap);
if (typeof (s.join) == "number") {
rn.setAttribute("stroke-linejoin", "miter");
rn.setAttribute("stroke-miterlimit", s.join);
} else {
rn.setAttribute("stroke-linejoin", s.join);
}
}
return this;
}, _setFillObject:function (f, nodeType) {
var def_elems = this.rawNode.parentNode.getElementsByTagName("defs");
if (def_elems.length == 0) {
return this;
}
this.fillStyle = f;
var defs = def_elems[0];
var fill = this.rawNode.getAttribute("fill");
var ref = dojo.gfx.svg.getRef(fill);
if (ref) {
fill = ref;
if (fill.tagName.toLowerCase() != nodeType.toLowerCase()) {
var id = fill.id;
fill.parentNode.removeChild(fill);
fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType);
fill.setAttribute("id", id);
defs.appendChild(fill);
} else {
while (fill.childNodes.length) {
fill.removeChild(fill.lastChild);
}
}
} else {
fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType);
fill.setAttribute("id", dojo.dom.getUniqueId());
defs.appendChild(fill);
}
if (nodeType == "pattern") {
fill.setAttribute("patternUnits", "userSpaceOnUse");
var img = document.createElementNS(dojo.svg.xmlns.svg, "image");
img.setAttribute("x", 0);
img.setAttribute("y", 0);
img.setAttribute("width", f.width.toFixed(8));
img.setAttribute("height", f.height.toFixed(8));
img.setAttributeNS(dojo.svg.xmlns.xlink, "href", f.src);
fill.appendChild(img);
} else {
fill.setAttribute("gradientUnits", "userSpaceOnUse");
for (var i = 0; i < f.colors.length; ++i) {
f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
var t = document.createElementNS(dojo.svg.xmlns.svg, "stop");
t.setAttribute("offset", f.colors[i].offset.toFixed(8));
t.setAttribute("stop-color", f.colors[i].color.toCss());
fill.appendChild(t);
}
}
this.rawNode.setAttribute("fill", "url(#" + fill.getAttribute("id") + ")");
this.rawNode.removeAttribute("fill-opacity");
return fill;
}, _applyTransform:function () {
var matrix = this._getRealMatrix();
if (matrix) {
var tm = this.matrix;
this.rawNode.setAttribute("transform", "matrix(" + tm.xx.toFixed(8) + "," + tm.yx.toFixed(8) + "," + tm.xy.toFixed(8) + "," + tm.yy.toFixed(8) + "," + tm.dx.toFixed(8) + "," + tm.dy.toFixed(8) + ")");
} else {
this.rawNode.removeAttribute("transform");
}
return this;
}, setRawNode:function (rawNode) {
with (rawNode) {
setAttribute("fill", "none");
setAttribute("fill-opacity", 0);
setAttribute("stroke", "none");
setAttribute("stroke-opacity", 0);
setAttribute("stroke-width", 1);
setAttribute("stroke-linecap", "butt");
setAttribute("stroke-linejoin", "miter");
setAttribute("stroke-miterlimit", 4);
}
this.rawNode = rawNode;
}, moveToFront:function () {
this.rawNode.parentNode.appendChild(this.rawNode);
return this;
}, moveToBack:function () {
this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild);
return this;
}, setShape:function (newShape) {
this.shape = dojo.gfx.makeParameters(this.shape, newShape);
for (var i in this.shape) {
if (i != "type") {
this.rawNode.setAttribute(i, this.shape[i]);
}
}
return this;
}, attachFill:function (rawNode) {
var fillStyle = null;
if (rawNode) {
var fill = rawNode.getAttribute("fill");
if (fill == "none") {
return;
}
var ref = dojo.gfx.svg.getRef(fill);
if (ref) {
var gradient = ref;
switch (gradient.tagName.toLowerCase()) {
case "lineargradient":
fillStyle = this._getGradient(dojo.gfx.defaultLinearGradient, gradient);
dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) {
fillStyle[x] = gradient.getAttribute(x);
});
break;
case "radialgradient":
fillStyle = this._getGradient(dojo.gfx.defaultRadialGradient, gradient);
dojo.lang.forEach(["cx", "cy", "r"], function (x) {
fillStyle[x] = gradient.getAttribute(x);
});
fillStyle.cx = gradient.getAttribute("cx");
fillStyle.cy = gradient.getAttribute("cy");
fillStyle.r = gradient.getAttribute("r");
break;
case "pattern":
fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true);
dojo.lang.forEach(["x", "y", "width", "height"], function (x) {
fillStyle[x] = gradient.getAttribute(x);
});
fillStyle.src = gradient.firstChild.getAttributeNS(dojo.svg.xmlns.xlink, "href");
break;
}
} else {
fillStyle = new dojo.gfx.color.Color(fill);
var opacity = rawNode.getAttribute("fill-opacity");
if (opacity != null) {
fillStyle.a = opacity;
}
}
}
return fillStyle;
}, _getGradient:function (defaultGradient, gradient) {
var fillStyle = dojo.lang.shallowCopy(defaultGradient, true);
fillStyle.colors = [];
for (var i = 0; i < gradient.childNodes.length; ++i) {
fillStyle.colors.push({offset:gradient.childNodes[i].getAttribute("offset"), color:new dojo.gfx.color.Color(gradient.childNodes[i].getAttribute("stop-color"))});
}
return fillStyle;
}, attachStroke:function (rawNode) {
if (!rawNode) {
return;
}
var stroke = rawNode.getAttribute("stroke");
if (stroke == null || stroke == "none") {
return null;
}
var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true);
var color = new dojo.gfx.color.Color(stroke);
if (color) {
strokeStyle.color = color;
strokeStyle.color.a = rawNode.getAttribute("stroke-opacity");
strokeStyle.width = rawNode.getAttribute("stroke-width");
strokeStyle.cap = rawNode.getAttribute("stroke-linecap");
strokeStyle.join = rawNode.getAttribute("stroke-linejoin");
if (strokeStyle.join == "miter") {
strokeStyle.join = rawNode.getAttribute("stroke-miterlimit");
}
}
return strokeStyle;
}, attachTransform:function (rawNode) {
var matrix = null;
if (rawNode) {
matrix = rawNode.getAttribute("transform");
if (matrix.match(/^matrix\(.+\)$/)) {
var t = matrix.slice(7, -1).split(",");
matrix = dojo.gfx.matrix.normalize({xx:parseFloat(t[0]), xy:parseFloat(t[2]), yx:parseFloat(t[1]), yy:parseFloat(t[3]), dx:parseFloat(t[4]), dy:parseFloat(t[5])});
}
}
return matrix;
}, attachShape:function (rawNode) {
var shape = null;
if (rawNode) {
shape = dojo.lang.shallowCopy(this.shape, true);
for (var i in shape) {
shape[i] = rawNode.getAttribute(i);
}
}
return shape;
}, attach:function (rawNode) {
if (rawNode) {
this.rawNode = rawNode;
this.fillStyle = this.attachFill(rawNode);
this.strokeStyle = this.attachStroke(rawNode);
this.matrix = this.attachTransform(rawNode);
this.shape = this.attachShape(rawNode);
}
}});
dojo.declare("dojo.gfx.Group", dojo.gfx.Shape, {setRawNode:function (rawNode) {
this.rawNode = rawNode;
}});
dojo.gfx.Group.nodeType = "g";
dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) {
var shape = null;
if (rawNode) {
shape = dojo.gfx.Rect.superclass.attachShape.apply(this, arguments);
shape.r = Math.min(rawNode.getAttribute("rx"), rawNode.getAttribute("ry"));
}
return shape;
}, setShape:function (newShape) {
this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
for (var i in this.shape) {
if (i != "type" && i != "r") {
this.rawNode.setAttribute(i, this.shape[i]);
}
}
this.rawNode.setAttribute("rx", this.shape.r);
this.rawNode.setAttribute("ry", this.shape.r);
return this;
}});
dojo.gfx.Rect.nodeType = "rect";
dojo.gfx.Ellipse = dojo.gfx.shape.Ellipse;
dojo.gfx.Ellipse.nodeType = "ellipse";
dojo.gfx.Circle = dojo.gfx.shape.Circle;
dojo.gfx.Circle.nodeType = "circle";
dojo.gfx.Line = dojo.gfx.shape.Line;
dojo.gfx.Line.nodeType = "line";
dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, {setShape:function (points) {
if (points && points instanceof Array) {
this.shape = dojo.gfx.makeParameters(this.shape, {points:points});
if (closed && this.shape.points.length) {
this.shape.points.push(this.shape.points[0]);
}
} else {
this.shape = dojo.gfx.makeParameters(this.shape, points);
}
this.box = null;
var attr = [];
var p = this.shape.points;
for (var i = 0; i < p.length; ++i) {
attr.push(p[i].x.toFixed(8));
attr.push(p[i].y.toFixed(8));
}
this.rawNode.setAttribute("points", attr.join(" "));
return this;
}});
dojo.gfx.Polyline.nodeType = "polyline";
dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {setShape:function (newShape) {
this.shape = dojo.gfx.makeParameters(this.shape, newShape);
this.bbox = null;
var rawNode = this.rawNode;
for (var i in this.shape) {
if (i != "type" && i != "src") {
rawNode.setAttribute(i, this.shape[i]);
}
}
rawNode.setAttributeNS(dojo.svg.xmlns.xlink, "href", this.shape.src);
return this;
}, setStroke:function () {
return this;
}, setFill:function () {
return this;
}, attachStroke:function (rawNode) {
return null;
}, attachFill:function (rawNode) {
return null;
}});
dojo.gfx.Image.nodeType = "image";
dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, {_updateWithSegment:function (segment) {
dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments);
if (typeof (this.shape.path) == "string") {
this.rawNode.setAttribute("d", this.shape.path);
}
}, setShape:function (newShape) {
dojo.gfx.Path.superclass.setShape.apply(this, arguments);
this.rawNode.setAttribute("d", this.shape.path);
return this;
}});
dojo.gfx.Path.nodeType = "path";
dojo.gfx._creators = {createPath:function (path) {
return this.createObject(dojo.gfx.Path, path);
}, createRect:function (rect) {
return this.createObject(dojo.gfx.Rect, rect);
}, createCircle:function (circle) {
return this.createObject(dojo.gfx.Circle, circle);
}, createEllipse:function (ellipse) {
return this.createObject(dojo.gfx.Ellipse, ellipse);
}, createLine:function (line) {
return this.createObject(dojo.gfx.Line, line);
}, createPolyline:function (points) {
return this.createObject(dojo.gfx.Polyline, points);
}, createImage:function (image) {
return this.createObject(dojo.gfx.Image, image);
}, createGroup:function () {
return this.createObject(dojo.gfx.Group);
}, createObject:function (shapeType, rawShape) {
if (!this.rawNode) {
return null;
}
var shape = new shapeType();
var node = document.createElementNS(dojo.svg.xmlns.svg, shapeType.nodeType);
shape.setRawNode(node);
this.rawNode.appendChild(node);
shape.setShape(rawShape);
this.add(shape);
return shape;
}, add:function (shape) {
var oldParent = shape.getParent();
if (oldParent) {
oldParent.remove(shape, true);
}
shape._setParent(this, null);
this.rawNode.appendChild(shape.rawNode);
return this;
}, remove:function (shape, silently) {
if (this.rawNode == shape.rawNode.parentNode) {
this.rawNode.removeChild(shape.rawNode);
}
shape._setParent(null, null);
return this;
}};
dojo.gfx.attachNode = function (node) {
if (!node) {
return null;
}
var s = null;
switch (node.tagName.toLowerCase()) {
case dojo.gfx.Rect.nodeType:
s = new dojo.gfx.Rect();
break;
case dojo.gfx.Ellipse.nodeType:
s = new dojo.gfx.Ellipse();
break;
case dojo.gfx.Polyline.nodeType:
s = new dojo.gfx.Polyline();
break;
case dojo.gfx.Path.nodeType:
s = new dojo.gfx.Path();
break;
case dojo.gfx.Circle.nodeType:
s = new dojo.gfx.Circle();
break;
case dojo.gfx.Line.nodeType:
s = new dojo.gfx.Line();
break;
case dojo.gfx.Image.nodeType:
s = new dojo.gfx.Image();
break;
default:
dojo.debug("FATAL ERROR! tagName = " + node.tagName);
}
s.attach(node);
return s;
};
dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) {
if (!this.rawNode) {
return this;
}
this.rawNode.setAttribute("width", width);
this.rawNode.setAttribute("height", height);
return this;
}, getDimensions:function () {
return this.rawNode ? {width:this.rawNode.getAttribute("width"), height:this.rawNode.getAttribute("height")} : null;
}});
dojo.gfx.createSurface = function (parentNode, width, height) {
var s = new dojo.gfx.Surface();
s.rawNode = document.createElementNS(dojo.svg.xmlns.svg, "svg");
s.rawNode.setAttribute("width", width);
s.rawNode.setAttribute("height", height);
var defs = new dojo.gfx.svg.Defines();
var node = document.createElementNS(dojo.svg.xmlns.svg, dojo.gfx.svg.Defines.nodeType);
defs.setRawNode(node);
s.rawNode.appendChild(node);
dojo.byId(parentNode).appendChild(s.rawNode);
return s;
};
dojo.gfx.attachSurface = function (node) {
var s = new dojo.gfx.Surface();
s.rawNode = node;
return s;
};
dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators);
dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators);
delete dojo.gfx._creators;
dojo.gfx.svg.Defines = function () {
this.rawNode = null;
};
dojo.lang.extend(dojo.gfx.svg.Defines, {setRawNode:function (rawNode) {
this.rawNode = rawNode;
}});
dojo.gfx.svg.Defines.nodeType = "defs";
 
/trunk/api/js/dojo/src/gfx/shape.js
New file
0,0 → 1,174
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.shape");
dojo.require("dojo.lang.declare");
dojo.require("dojo.gfx.common");
dojo.declare("dojo.gfx.Shape", null, {initializer:function () {
this.rawNode = null;
this.shape = null;
this.matrix = null;
this.fillStyle = null;
this.strokeStyle = null;
this.bbox = null;
this.parent = null;
this.parentMatrix = null;
}, getNode:function () {
return this.rawNode;
}, getShape:function () {
return this.shape;
}, getTransform:function () {
return this.matrix;
}, getFill:function () {
return this.fillStyle;
}, getStroke:function () {
return this.strokeStyle;
}, getParent:function () {
return this.parent;
}, getBoundingBox:function () {
return this.bbox;
}, getEventSource:function () {
return this.rawNode;
}, setShape:function (shape) {
return this;
}, setFill:function (fill) {
return this;
}, setStroke:function (stroke) {
return this;
}, moveToFront:function () {
return this;
}, moveToBack:function () {
return this;
}, setTransform:function (matrix) {
this.matrix = dojo.gfx.matrix.clone(matrix ? dojo.gfx.matrix.normalize(matrix) : dojo.gfx.identity, true);
return this._applyTransform();
}, applyRightTransform:function (matrix) {
return matrix ? this.setTransform([this.matrix, matrix]) : this;
}, applyLeftTransform:function (matrix) {
return matrix ? this.setTransform([matrix, this.matrix]) : this;
}, applyTransform:function (matrix) {
return matrix ? this.setTransform([this.matrix, matrix]) : this;
}, remove:function (silently) {
if (this.parent) {
this.parent.remove(this, silently);
}
return this;
}, _setParent:function (parent, matrix) {
this.parent = parent;
return this._updateParentMatrix(matrix);
}, _updateParentMatrix:function (matrix) {
this.parentMatrix = matrix ? dojo.gfx.matrix.clone(matrix) : null;
return this._applyTransform();
}, _getRealMatrix:function () {
return this.parentMatrix ? new dojo.gfx.matrix.Matrix2D([this.parentMatrix, this.matrix]) : this.matrix;
}});
dojo.declare("dojo.gfx.shape.VirtualGroup", dojo.gfx.Shape, {initializer:function () {
this.children = [];
}, add:function (shape) {
var oldParent = shape.getParent();
if (oldParent) {
oldParent.remove(shape, true);
}
this.children.push(shape);
return shape._setParent(this, this._getRealMatrix());
}, remove:function (shape, silently) {
for (var i = 0; i < this.children.length; ++i) {
if (this.children[i] == shape) {
if (silently) {
} else {
shape._setParent(null, null);
}
this.children.splice(i, 1);
break;
}
}
return this;
}, _applyTransform:function () {
var matrix = this._getRealMatrix();
for (var i = 0; i < this.children.length; ++i) {
this.children[i]._updateParentMatrix(matrix);
}
return this;
}});
dojo.declare("dojo.gfx.shape.Rect", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultRect, true);
this.attach(rawNode);
}, getBoundingBox:function () {
return this.shape;
}});
dojo.declare("dojo.gfx.shape.Ellipse", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultEllipse, true);
this.attach(rawNode);
}, getBoundingBox:function () {
if (!this.bbox) {
var shape = this.shape;
this.bbox = {x:shape.cx - shape.rx, y:shape.cy - shape.ry, width:2 * shape.rx, height:2 * shape.ry};
}
return this.bbox;
}});
dojo.declare("dojo.gfx.shape.Circle", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultCircle, true);
this.attach(rawNode);
}, getBoundingBox:function () {
if (!this.bbox) {
var shape = this.shape;
this.bbox = {x:shape.cx - shape.r, y:shape.cy - shape.r, width:2 * shape.r, height:2 * shape.r};
}
return this.bbox;
}});
dojo.declare("dojo.gfx.shape.Line", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultLine, true);
this.attach(rawNode);
}, getBoundingBox:function () {
if (!this.bbox) {
var shape = this.shape;
this.bbox = {x:Math.min(shape.x1, shape.x2), y:Math.min(shape.y1, shape.y2), width:Math.abs(shape.x2 - shape.x1), height:Math.abs(shape.y2 - shape.y1)};
}
return this.bbox;
}});
dojo.declare("dojo.gfx.shape.Polyline", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPolyline, true);
this.attach(rawNode);
}, getBoundingBox:function () {
if (!this.bbox && this.shape.points.length) {
var p = this.shape.points;
var l = p.length;
var t = p[0];
var bbox = {l:t.x, t:t.y, r:t.x, b:t.y};
for (var i = 1; i < l; ++i) {
t = p[i];
if (bbox.l > t.x) {
bbox.l = t.x;
}
if (bbox.r < t.x) {
bbox.r = t.x;
}
if (bbox.t > t.y) {
bbox.t = t.y;
}
if (bbox.b < t.y) {
bbox.b = t.y;
}
}
this.bbox = {x:bbox.l, y:bbox.t, width:bbox.r - bbox.l, height:bbox.b - bbox.t};
}
return this.bbox;
}});
dojo.declare("dojo.gfx.shape.Image", dojo.gfx.Shape, {initializer:function (rawNode) {
this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultImage, true);
this.attach(rawNode);
}, getBoundingBox:function () {
if (!this.bbox) {
var shape = this.shape;
this.bbox = {x:0, y:0, width:shape.width, height:shape.height};
}
return this.bbox;
}});
 
/trunk/api/js/dojo/src/gfx/color/hsl.js
New file
0,0 → 1,116
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.color.hsl");
dojo.require("dojo.lang.array");
dojo.lang.extend(dojo.gfx.color.Color, {toHsl:function () {
return dojo.gfx.color.rgb2hsl(this.toRgb());
}});
dojo.gfx.color.rgb2hsl = function (r, g, b) {
if (dojo.lang.isArray(r)) {
b = r[2] || 0;
g = r[1] || 0;
r = r[0] || 0;
}
r /= 255;
g /= 255;
b /= 255;
var h = null;
var s = null;
var l = null;
var min = Math.min(r, g, b);
var max = Math.max(r, g, b);
var delta = max - min;
l = (min + max) / 2;
s = 0;
if ((l > 0) && (l < 1)) {
s = delta / ((l < 0.5) ? (2 * l) : (2 - 2 * l));
}
h = 0;
if (delta > 0) {
if ((max == r) && (max != g)) {
h += (g - b) / delta;
}
if ((max == g) && (max != b)) {
h += (2 + (b - r) / delta);
}
if ((max == b) && (max != r)) {
h += (4 + (r - g) / delta);
}
h *= 60;
}
h = (h == 0) ? 360 : Math.ceil((h / 360) * 255);
s = Math.ceil(s * 255);
l = Math.ceil(l * 255);
return [h, s, l];
};
dojo.gfx.color.hsl2rgb = function (h, s, l) {
if (dojo.lang.isArray(h)) {
l = h[2] || 0;
s = h[1] || 0;
h = h[0] || 0;
}
h = (h / 255) * 360;
if (h == 360) {
h = 0;
}
s = s / 255;
l = l / 255;
while (h < 0) {
h += 360;
}
while (h > 360) {
h -= 360;
}
var r, g, b;
if (h < 120) {
r = (120 - h) / 60;
g = h / 60;
b = 0;
} else {
if (h < 240) {
r = 0;
g = (240 - h) / 60;
b = (h - 120) / 60;
} else {
r = (h - 240) / 60;
g = 0;
b = (360 - h) / 60;
}
}
r = Math.min(r, 1);
g = Math.min(g, 1);
b = Math.min(b, 1);
r = 2 * s * r + (1 - s);
g = 2 * s * g + (1 - s);
b = 2 * s * b + (1 - s);
if (l < 0.5) {
r = l * r;
g = l * g;
b = l * b;
} else {
r = (1 - l) * r + 2 * l - 1;
g = (1 - l) * g + 2 * l - 1;
b = (1 - l) * b + 2 * l - 1;
}
r = Math.ceil(r * 255);
g = Math.ceil(g * 255);
b = Math.ceil(b * 255);
return [r, g, b];
};
dojo.gfx.color.hsl2hex = function (h, s, l) {
var rgb = dojo.gfx.color.hsl2rgb(h, s, l);
return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]);
};
dojo.gfx.color.hex2hsl = function (hex) {
var rgb = dojo.gfx.color.hex2rgb(hex);
return dojo.gfx.color.rgb2hsl(rgb[0], rgb[1], rgb[2]);
};
 
/trunk/api/js/dojo/src/gfx/color/hsv.js
New file
0,0 → 1,208
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.color.hsv");
dojo.require("dojo.lang.array");
dojo.require("dojo.math");
dojo.lang.extend(dojo.gfx.color.Color, {toHsv:function () {
return dojo.gfx.color.rgb2hsv(this.toRgb());
}});
dojo.gfx.color.rgb2hsv = function (r, g, b, options) {
if (dojo.lang.isArray(r)) {
if (g) {
options = g;
}
b = r[2] || 0;
g = r[1] || 0;
r = r[0] || 0;
}
var opt = {inputRange:(options && options.inputRange) ? options.inputRange : 255, outputRange:(options && options.outputRange) ? options.outputRange : [255, 255, 255]};
var h = null;
var s = null;
var v = null;
switch (opt.inputRange) {
case 1:
r = (r * 255);
g = (g * 255);
b = (b * 255);
break;
case 100:
r = (r / 100) * 255;
g = (g / 100) * 255;
b = (b / 100) * 255;
break;
default:
break;
}
var min = Math.min(r, g, b);
v = Math.max(r, g, b);
var delta = v - min;
s = (v == 0) ? 0 : delta / v;
if (s == 0) {
h = 0;
} else {
if (r == v) {
h = 60 * (g - b) / delta;
} else {
if (g == v) {
h = 120 + 60 * (b - r) / delta;
} else {
if (b == v) {
h = 240 + 60 * (r - g) / delta;
}
}
}
if (h <= 0) {
h += 360;
}
}
switch (opt.outputRange[0]) {
case 360:
break;
case 100:
h = (h / 360) * 100;
break;
case 1:
h = (h / 360);
break;
default:
h = (h / 360) * 255;
break;
}
switch (opt.outputRange[1]) {
case 100:
s = s * 100;
case 1:
break;
default:
s = s * 255;
break;
}
switch (opt.outputRange[2]) {
case 100:
v = (v / 255) * 100;
break;
case 1:
v = (v / 255);
break;
default:
break;
}
h = dojo.math.round(h);
s = dojo.math.round(s);
v = dojo.math.round(v);
return [h, s, v];
};
dojo.gfx.color.hsv2rgb = function (h, s, v, options) {
if (dojo.lang.isArray(h)) {
if (s) {
options = s;
}
v = h[2] || 0;
s = h[1] || 0;
h = h[0] || 0;
}
var opt = {inputRange:(options && options.inputRange) ? options.inputRange : [255, 255, 255], outputRange:(options && options.outputRange) ? options.outputRange : 255};
switch (opt.inputRange[0]) {
case 1:
h = h * 360;
break;
case 100:
h = (h / 100) * 360;
break;
case 360:
h = h;
break;
default:
h = (h / 255) * 360;
}
if (h == 360) {
h = 0;
}
switch (opt.inputRange[1]) {
case 100:
s /= 100;
break;
case 255:
s /= 255;
}
switch (opt.inputRange[2]) {
case 100:
v /= 100;
break;
case 255:
v /= 255;
}
var r = null;
var g = null;
var b = null;
if (s == 0) {
r = v;
g = v;
b = v;
} else {
var hTemp = h / 60;
var i = Math.floor(hTemp);
var f = hTemp - i;
var p = v * (1 - s);
var q = v * (1 - (s * f));
var t = v * (1 - (s * (1 - f)));
switch (i) {
case 0:
r = v;
g = t;
b = p;
break;
case 1:
r = q;
g = v;
b = p;
break;
case 2:
r = p;
g = v;
b = t;
break;
case 3:
r = p;
g = q;
b = v;
break;
case 4:
r = t;
g = p;
b = v;
break;
case 5:
r = v;
g = p;
b = q;
break;
}
}
switch (opt.outputRange) {
case 1:
r = dojo.math.round(r, 2);
g = dojo.math.round(g, 2);
b = dojo.math.round(b, 2);
break;
case 100:
r = Math.round(r * 100);
g = Math.round(g * 100);
b = Math.round(b * 100);
break;
default:
r = Math.round(r * 255);
g = Math.round(g * 255);
b = Math.round(b * 255);
}
return [r, g, b];
};
 
/trunk/api/js/dojo/src/gfx/matrix.js
New file
0,0 → 1,146
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.gfx.matrix");
dojo.require("dojo.lang.common");
dojo.require("dojo.math.*");
dojo.gfx.matrix.Matrix2D = function (arg) {
if (arg) {
if (arg instanceof Array) {
if (arg.length > 0) {
var m = dojo.gfx.matrix.normalize(arg[0]);
for (var i = 1; i < arg.length; ++i) {
var l = m;
var r = dojo.gfx.matrix.normalize(arg[i]);
m = new dojo.gfx.matrix.Matrix2D();
m.xx = l.xx * r.xx + l.xy * r.yx;
m.xy = l.xx * r.xy + l.xy * r.yy;
m.yx = l.yx * r.xx + l.yy * r.yx;
m.yy = l.yx * r.xy + l.yy * r.yy;
m.dx = l.xx * r.dx + l.xy * r.dy + l.dx;
m.dy = l.yx * r.dx + l.yy * r.dy + l.dy;
}
dojo.mixin(this, m);
}
} else {
dojo.mixin(this, arg);
}
}
};
dojo.extend(dojo.gfx.matrix.Matrix2D, {xx:1, xy:0, yx:0, yy:1, dx:0, dy:0});
dojo.mixin(dojo.gfx.matrix, {identity:new dojo.gfx.matrix.Matrix2D(), flipX:new dojo.gfx.matrix.Matrix2D({xx:-1}), flipY:new dojo.gfx.matrix.Matrix2D({yy:-1}), flipXY:new dojo.gfx.matrix.Matrix2D({xx:-1, yy:-1}), translate:function (a, b) {
if (arguments.length > 1) {
return new dojo.gfx.matrix.Matrix2D({dx:a, dy:b});
}
return new dojo.gfx.matrix.Matrix2D({dx:a.x, dy:a.y});
}, scale:function (a, b) {
if (arguments.length > 1) {
return new dojo.gfx.matrix.Matrix2D({xx:a, yy:b});
}
if (typeof a == "number") {
return new dojo.gfx.matrix.Matrix2D({xx:a, yy:a});
}
return new dojo.gfx.matrix.Matrix2D({xx:a.x, yy:a.y});
}, rotate:function (angle) {
var c = Math.cos(angle);
var s = Math.sin(angle);
return new dojo.gfx.matrix.Matrix2D({xx:c, xy:s, yx:-s, yy:c});
}, rotateg:function (degree) {
return dojo.gfx.matrix.rotate(dojo.math.degToRad(degree));
}, skewX:function (angle) {
return new dojo.gfx.matrix.Matrix2D({xy:Math.tan(angle)});
}, skewXg:function (degree) {
return dojo.gfx.matrix.skewX(dojo.math.degToRad(degree));
}, skewY:function (angle) {
return new dojo.gfx.matrix.Matrix2D({yx:-Math.tan(angle)});
}, skewYg:function (degree) {
return dojo.gfx.matrix.skewY(dojo.math.degToRad(degree));
}, normalize:function (matrix) {
return (matrix instanceof dojo.gfx.matrix.Matrix2D) ? matrix : new dojo.gfx.matrix.Matrix2D(matrix);
}, clone:function (matrix) {
var obj = new dojo.gfx.matrix.Matrix2D();
for (var i in matrix) {
if (typeof (matrix[i]) == "number" && typeof (obj[i]) == "number" && obj[i] != matrix[i]) {
obj[i] = matrix[i];
}
}
return obj;
}, invert:function (matrix) {
var m = dojo.gfx.matrix.normalize(matrix);
var D = m.xx * m.yy - m.xy * m.yx;
var M = new dojo.gfx.matrix.Matrix2D({xx:m.yy / D, xy:-m.xy / D, yx:-m.yx / D, yy:m.xx / D, dx:(m.yx * m.dy - m.yy * m.dx) / D, dy:(m.xy * m.dx - m.xx * m.dy) / D});
return M;
}, _multiplyPoint:function (m, x, y) {
return {x:m.xx * x + m.xy * y + m.dx, y:m.yx * x + m.yy * y + m.dy};
}, multiplyPoint:function (matrix, a, b) {
var m = dojo.gfx.matrix.normalize(matrix);
if (typeof a == "number" && typeof b == "number") {
return dojo.gfx.matrix._multiplyPoint(m, a, b);
}
return dojo.gfx.matrix._multiplyPoint(m, a.x, a.y);
}, multiply:function (matrix) {
var m = dojo.gfx.matrix.normalize(matrix);
for (var i = 1; i < arguments.length; ++i) {
var l = m;
var r = dojo.gfx.matrix.normalize(arguments[i]);
m = new dojo.gfx.matrix.Matrix2D();
m.xx = l.xx * r.xx + l.xy * r.yx;
m.xy = l.xx * r.xy + l.xy * r.yy;
m.yx = l.yx * r.xx + l.yy * r.yx;
m.yy = l.yx * r.xy + l.yy * r.yy;
m.dx = l.xx * r.dx + l.xy * r.dy + l.dx;
m.dy = l.yx * r.dx + l.yy * r.dy + l.dy;
}
return m;
}, _sandwich:function (m, x, y) {
return dojo.gfx.matrix.multiply(dojo.gfx.matrix.translate(x, y), m, dojo.gfx.matrix.translate(-x, -y));
}, scaleAt:function (a, b, c, d) {
switch (arguments.length) {
case 4:
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c, d);
case 3:
if (typeof c == "number") {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b, c);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c.x, c.y);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b.x, b.y);
}, rotateAt:function (angle, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a.x, a.y);
}, rotategAt:function (degree, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a.x, a.y);
}, skewXAt:function (angle, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a.x, a.y);
}, skewXgAt:function (degree, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a.x, a.y);
}, skewYAt:function (angle, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a.x, a.y);
}, skewYgAt:function (degree, a, b) {
if (arguments.length > 2) {
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a, b);
}
return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a.x, a.y);
}});
 
/trunk/api/js/dojo/src/gfx/__package__.js
New file
0,0 → 1,15
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]});
dojo.requireIf(dojo.render.svg.capable, "dojo.gfx.svg");
dojo.requireIf(dojo.render.vml.capable, "dojo.gfx.vml");
dojo.provide("dojo.gfx.*");
 
/trunk/api/js/dojo/src/rpc/yahoo.smd
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/rpc/yahoo.smd
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/rpc/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:[["dojo.rpc.JsonService", false, false]]});
dojo.provide("dojo.rpc.*");
 
/trunk/api/js/dojo/src/rpc/JsonService.js
New file
0,0 → 1,69
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.rpc.JsonService");
dojo.require("dojo.rpc.RpcService");
dojo.require("dojo.io.*");
dojo.require("dojo.json");
dojo.require("dojo.lang.common");
dojo.rpc.JsonService = function (args) {
if (args) {
if (dojo.lang.isString(args)) {
this.connect(args);
} else {
if (args["smdUrl"]) {
this.connect(args.smdUrl);
}
if (args["smdStr"]) {
this.processSmd(dj_eval("(" + args.smdStr + ")"));
}
if (args["smdObj"]) {
this.processSmd(args.smdObj);
}
if (args["serviceUrl"]) {
this.serviceUrl = args.serviceUrl;
}
if (typeof args["strictArgChecks"] != "undefined") {
this.strictArgChecks = args.strictArgChecks;
}
}
}
};
dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);
dojo.extend(dojo.rpc.JsonService, {bustCache:false, contentType:"application/json-rpc", lastSubmissionId:0, callRemote:function (method, params) {
var deferred = new dojo.Deferred();
this.bind(method, params, deferred);
return deferred;
}, bind:function (method, parameters, deferredRequestHandler, url) {
dojo.io.bind({url:url || this.serviceUrl, postContent:this.createRequest(method, parameters), method:"POST", contentType:this.contentType, mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:this.bustCache});
}, createRequest:function (method, params) {
var req = {"params":params, "method":method, "id":++this.lastSubmissionId};
var data = dojo.json.serialize(req);
dojo.debug("JsonService: JSON-RPC Request: " + data);
return data;
}, parseResults:function (obj) {
if (!obj) {
return;
}
if (obj["Result"] != null) {
return obj["Result"];
} else {
if (obj["result"] != null) {
return obj["result"];
} else {
if (obj["ResultSet"]) {
return obj["ResultSet"];
} else {
return obj;
}
}
}
}});
 
/trunk/api/js/dojo/src/rpc/JotService.js
New file
0,0 → 1,25
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.rpc.JotService");
dojo.require("dojo.rpc.RpcService");
dojo.require("dojo.rpc.JsonService");
dojo.require("dojo.json");
dojo.rpc.JotService = function () {
this.serviceUrl = "/_/jsonrpc";
};
dojo.inherits(dojo.rpc.JotService, dojo.rpc.JsonService);
dojo.lang.extend(dojo.rpc.JotService, {bind:function (method, parameters, deferredRequestHandler, url) {
dojo.io.bind({url:url || this.serviceUrl, content:{json:this.createRequest(method, parameters)}, method:"POST", mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:true});
}, createRequest:function (method, params) {
var req = {"params":params, "method":method, "id":this.lastSubmissionId++};
return dojo.json.serialize(req);
}});
 
/trunk/api/js/dojo/src/rpc/Deferred.js
New file
0,0 → 1,16
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.rpc.Deferred");
dojo.require("dojo.Deferred");
dojo.deprecated("dojo.rpc.Deferred", "replaced by dojo.Deferred", "0.6");
dojo.rpc.Deferred = dojo.Deferred;
dojo.rpc.Deferred.prototype = dojo.Deferred.prototype;
 
/trunk/api/js/dojo/src/rpc/YahooService.js
New file
0,0 → 1,39
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.rpc.YahooService");
dojo.require("dojo.rpc.RpcService");
dojo.require("dojo.rpc.JsonService");
dojo.require("dojo.json");
dojo.require("dojo.uri.*");
dojo.require("dojo.io.ScriptSrcIO");
dojo.rpc.YahooService = function (appId) {
this.appId = appId;
if (!appId) {
this.appId = "dojotoolkit";
dojo.debug("please initialize the YahooService class with your own", "application ID. Using the default may cause problems during", "deployment of your application");
}
if (djConfig["useXDomain"] && !djConfig["yahooServiceSmdUrl"]) {
dojo.debug("dojo.rpc.YahooService: When using cross-domain Dojo builds," + " please save yahoo.smd to your domain and set djConfig.yahooServiceSmdUrl" + " to the path on your domain to yahoo.smd");
}
this.connect(djConfig["yahooServiceSmdUrl"] || dojo.uri.moduleUri("dojo.rpc", "yahoo.smd"));
this.strictArgChecks = false;
};
dojo.inherits(dojo.rpc.YahooService, dojo.rpc.JsonService);
dojo.lang.extend(dojo.rpc.YahooService, {strictArgChecks:false, bind:function (method, parameters, deferredRequestHandler, url) {
var params = parameters;
if ((dojo.lang.isArrayLike(parameters)) && (parameters.length == 1)) {
params = parameters[0];
}
params.output = "json";
params.appid = this.appId;
dojo.io.bind({url:url || this.serviceUrl, transport:"ScriptSrcTransport", content:params, jsonParamName:"callback", mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:true});
}});
 
/trunk/api/js/dojo/src/rpc/RpcService.js
New file
0,0 → 1,72
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.rpc.RpcService");
dojo.require("dojo.io.*");
dojo.require("dojo.json");
dojo.require("dojo.lang.func");
dojo.require("dojo.Deferred");
dojo.rpc.RpcService = function (url) {
if (url) {
this.connect(url);
}
};
dojo.lang.extend(dojo.rpc.RpcService, {strictArgChecks:true, serviceUrl:"", parseResults:function (obj) {
return obj;
}, errorCallback:function (deferredRequestHandler) {
return function (type, e) {
deferredRequestHandler.errback(new Error(e.message));
};
}, resultCallback:function (deferredRequestHandler) {
var tf = dojo.lang.hitch(this, function (type, obj, e) {
if (obj["error"] != null) {
var err = new Error(obj.error);
err.id = obj.id;
deferredRequestHandler.errback(err);
} else {
var results = this.parseResults(obj);
deferredRequestHandler.callback(results);
}
});
return tf;
}, generateMethod:function (method, parameters, url) {
return dojo.lang.hitch(this, function () {
var deferredRequestHandler = new dojo.Deferred();
if ((this.strictArgChecks) && (parameters != null) && (arguments.length != parameters.length)) {
dojo.raise("Invalid number of parameters for remote method.");
} else {
this.bind(method, arguments, deferredRequestHandler, url);
}
return deferredRequestHandler;
});
}, processSmd:function (object) {
dojo.debug("RpcService: Processing returned SMD.");
if (object.methods) {
dojo.lang.forEach(object.methods, function (m) {
if (m && m["name"]) {
dojo.debug("RpcService: Creating Method: this.", m.name, "()");
this[m.name] = this.generateMethod(m.name, m.parameters, m["url"] || m["serviceUrl"] || m["serviceURL"]);
if (dojo.lang.isFunction(this[m.name])) {
dojo.debug("RpcService: Successfully created", m.name, "()");
} else {
dojo.debug("RpcService: Failed to create", m.name, "()");
}
}
}, this);
}
this.serviceUrl = object.serviceUrl || object.serviceURL;
dojo.debug("RpcService: Dojo RpcService is ready for use.");
}, connect:function (smdUrl) {
dojo.debug("RpcService: Attempting to load SMD document from:", smdUrl);
dojo.io.bind({url:smdUrl, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, object, e) {
return this.processSmd(object);
}), sync:true});
}});
 
/trunk/api/js/dojo/src/debug/console.js
New file
0,0 → 1,95
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.debug.console");
dojo.require("dojo.logging.ConsoleLogger");
if (window.console) {
if (console.info != null) {
dojo.hostenv.println = function () {
if (!djConfig.isDebug) {
return;
}
console.info.apply(console, arguments);
};
dojo.debug = dojo.hostenv.println;
dojo.debugDeep = dojo.debug;
dojo.debugShallow = function (obj, showMethods, sort) {
if (!djConfig.isDebug) {
return;
}
showMethods = (showMethods != false);
sort = (sort != false);
if (obj == null || obj.constructor == null) {
return dojo.debug(obj);
}
var type = obj.declaredClass;
if (type == null) {
type = obj.constructor.toString().match(/function\s*(.*)\(/);
if (type) {
type = type[1];
}
}
if (type) {
if (type == "String" || type == "Number") {
return dojo.debug(type + ": ", obj);
}
if (showMethods && !sort) {
var sortedObj = obj;
} else {
var propNames = [];
if (showMethods) {
for (var prop in obj) {
propNames.push(prop);
}
} else {
for (var prop in obj) {
if (typeof obj[prop] != "function") {
propNames.push(prop);
} else {
dojo.debug(prop);
}
}
}
if (sort) {
propNames.sort();
}
var sortedObj = {};
dojo.lang.forEach(propNames, function (prop) {
sortedObj[prop] = obj[prop];
});
}
return dojo.debug(type + ": %o\n%2.o", obj, sortedObj);
}
return dojo.debug(obj.constructor + ": ", obj);
};
} else {
if (console.log != null) {
dojo.hostenv.println = function () {
if (!djConfig.isDebug) {
return;
}
var args = dojo.lang.toArray(arguments);
console.log("DEBUG: " + args.join(" "));
};
dojo.debug = dojo.hostenv.println;
} else {
dojo.debug("dojo.debug.console requires Firebug > 0.4");
}
}
} else {
if (dojo.render.html.opera) {
if (opera && opera.postError) {
dojo.hostenv.println = opera.postError;
} else {
dojo.debug("dojo.debug.Opera requires Opera > 8.0");
}
}
}
 
/trunk/api/js/dojo/src/debug/Firebug.js
New file
0,0 → 1,55
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.debug.Firebug");
dojo.deprecated("dojo.debug.Firebug is slated for removal in 0.5; use dojo.debug.console instead.", "0.5");
if (dojo.render.html.moz) {
if (console && console.log) {
var consoleLog = function () {
if (!djConfig.isDebug) {
return;
}
var args = dojo.lang.toArray(arguments);
args.splice(0, 0, "DEBUG: ");
console.log.apply(console, args);
};
dojo.debug = consoleLog;
dojo.debugDeep = consoleLog;
dojo.debugShallow = function (obj) {
if (!djConfig.isDebug) {
return;
}
if (dojo.lang.isArray(obj)) {
console.log("Array: ", obj);
for (var i = 0; x < obj.length; i++) {
console.log(" ", "[" + i + "]", obj[i]);
}
} else {
console.log("Object: ", obj);
var propNames = [];
for (var prop in obj) {
propNames.push(prop);
}
propNames.sort();
dojo.lang.forEach(propNames, function (prop) {
try {
console.log(" ", prop, obj[prop]);
}
catch (e) {
console.log(" ", prop, "ERROR", e.message, e);
}
});
}
};
} else {
dojo.debug("dojo.debug.Firebug requires Firebug > 0.4");
}
}
 
/trunk/api/js/dojo/src/debug/arrow_show.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/debug/arrow_show.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/debug/deep.html
New file
0,0 → 1,362
<html>
<head>
<title>Deep Debugger</title>
<script>
 
var tableRows = {};
var tableCels = {};
var tableObjs = {};
var tablesBuilt = {};
var tableShows = {};
var tableHides = {};
 
// IE: nodes w/id need to be redeclared or getElementById is b0rked
var frame = null;
 
window.onload = function(){
// if IE loads this page too quickly (instantly) then
// window.debugVar might not have been set
window.setTimeout(startMeUp, 100);
}
 
function startMeUp(){
frame = document.getElementById('frame');
// GET string
var index = location.search.split("=").pop();
var debugObj = window.opener.dojo.debugDeep;
var debugVar = debugObj.debugVars[index] || window.debugVar;
buildTable('root', frame, debugVar);
}
 
function buildTable(path, parent, obj){
var keys = [];
var vals = [];
for(var prop in obj){
keys.push(prop);
try {
vals[prop] = obj[prop];
} catch(E) {
vals[prop] = 'ERROR: ' + E.message;
}
}
keys.sort(keySorter);
 
if (!keys.length){
 
var div = document.createElement('div');
div.appendChild(document.createTextNode('Object has no properties.'));
 
parent.appendChild(div);
return;
}
 
 
var t = document.createElement('table');
t.border = "1";
 
var tb = document.createElement('tbody');
t.appendChild(tb);
 
 
for(var i = 0; i < keys.length; i++) {
buildTableRow(path+'-'+keys[i], tb, keys[i], vals[keys[i]]);
}
 
if (path == 'root'){
//t.style.width = '90%';
}
t.style.width = '100%';
 
parent.appendChild(t);
 
tablesBuilt[path] = true;
}
 
function buildTableRow(path, tb, name, value) {
 
var simpleType = typeof(value);
var createSubrow = (simpleType == 'object');
var complexType = simpleType;
 
if (simpleType == 'object'){
var cls = getConstructorClass(value);
if (cls){
if (cls == 'Object'){
}else if (cls == 'Array'){
complexType = 'array';
}else{
complexType += ' ('+cls+')';
}
}
}
 
/*var tr1 = document.createElement('tr');
var td1 = document.createElement('td');
var td2 = document.createElement('td');
var td3 = document.createElement('td');
var td4 = document.createElement('td');*/
 
var row = tb.rows.length;
var tr1 = tb.insertRow(row++);
var td1 = tr1.insertCell(0);
var td2 = tr1.insertCell(1);
var td3 = tr1.insertCell(2);
var td4 = tr1.insertCell(3);
tr1.style.verticalAlign = 'top';
td1.style.verticalAlign = 'middle';
 
td1.className = 'propPlus';
td2.className = 'propName';
td3.className = 'propType';
td4.className = 'propVal';
 
//tr1.appendChild(td1);
//tr1.appendChild(td2);
//tr1.appendChild(td3);
//tr1.appendChild(td4);
 
if (createSubrow){
var img1 = document.createElement('img');
img1.width = 9;
img1.height = 9;
img1.src = 'arrow_show.gif';
var a1 = document.createElement('a');
a1.appendChild(img1);
a1.href = '#';
a1.onclick = function(){ showTableRow(path); return false; };
 
var img2 = document.createElement('img');
img2.width = 9;
img2.height = 9;
img2.src = 'arrow_hide.gif';
var a2 = document.createElement('a');
a2.appendChild(img2);
a2.href = '#';
a2.onclick = function(){ hideTableRow(path); return false; };
a2.style.display = 'none';
 
tableShows[path] = a1;
tableHides[path] = a2;
 
td1.appendChild(a1);
td1.appendChild(a2);
}else{
var img = document.createElement('img');
img.width = 9;
img.height = 9;
img.src = 'spacer.gif';
 
td1.appendChild(img);
}
 
td2.appendChild(document.createTextNode(name));
td3.appendChild(document.createTextNode(complexType));
td4.appendChild(buildPreBlock(value));
 
//tb.appendChild(tr1);
 
if (createSubrow){
var tr2 = tb.insertRow(row++);
var td5 = tr2.insertCell(0);
var td6 = tr2.insertCell(1);
//var tr2 = document.createElement('tr');
//var td5 = document.createElement('td');
//var td6 = document.createElement('td');
 
td5.innerHTML = '&nbsp;';
//td6.innerHTML = '&nbsp;';
 
td6.colSpan = '3';
 
tr2.appendChild(td5);
tr2.appendChild(td6);
 
tr2.style.display = 'none';
 
tb.appendChild(tr2);
 
tableRows[path] = tr2;
tableCels[path] = td6;
tableObjs[path] = value;
}
}
 
function showTableRow(path){
 
var tr = tableRows[path];
var td = tableCels[path];
var a1 = tableShows[path];
var a2 = tableHides[path];
 
if (!tablesBuilt[path]){
 
//alert('building table for '+path);
buildTable(path, td, tableObjs[path]);
}
 
tr.style.display = 'table-row';
 
a1.style.display = 'none';
a2.style.display = 'inline';
}
 
function hideTableRow(path){
 
var tr = tableRows[path];
var a1 = tableShows[path];
var a2 = tableHides[path];
 
tr.style.display = 'none';
 
a1.style.display = 'inline';
a2.style.display = 'none';
}
 
function buildPreBlock(value){
 
//
// how many lines ?
//
 
var s = ''+value;
s = s.replace("\r\n", "\n");
s = s.replace("\r", "");
var lines = s.split("\n");
 
 
if (lines.length < 2){
 
if (lines[0].length < 60){
 
var pre = document.createElement('pre');
pre.appendChild(document.createTextNode(s));
return pre;
}
}
 
 
//
// multiple lines :(
//
 
var preview = lines[0].substr(0, 60) + ' ...';
 
var pre1 = document.createElement('pre');
pre1.appendChild(document.createTextNode(preview));
pre1.className = 'clicky';
 
var pre2 = document.createElement('pre');
pre2.appendChild(document.createTextNode(s));
pre2.style.display = 'none';
pre2.className = 'clicky';
 
pre1.onclick = function(){
pre1.style.display = 'none';
pre2.style.display = 'block';
}
 
pre2.onclick = function(){
pre1.style.display = 'block';
pre2.style.display = 'none';
}
 
var pre = document.createElement('div');
 
pre.appendChild(pre1);
pre.appendChild(pre2);
 
return pre;
}
 
function getConstructorClass(obj){
 
if (!obj.constructor || !obj.constructor.toString) return;
 
var m = obj.constructor.toString().match(/function\s*(\w+)/);
 
if (m && m.length == 2) return m[1];
 
return null;
}
 
function keySorter(a, b){
 
if (a == parseInt(a) && b == parseInt(b)){
 
return (parseInt(a) > parseInt(b)) ? 1 : ((parseInt(a) < parseInt(b)) ? -1 : 0);
}
 
// sort by lowercase string
 
var a2 = String(a).toLowerCase();
var b2 = String(b).toLowerCase();
 
return (a2 > b2) ? 1 : ((a2 < b2) ? -1 : 0);
}
 
</script>
<style>
 
body {
font-family: arial, helvetica, sans-serif;
}
 
table {
border-width: 0px;
border-spacing: 1px;
border-collapse: separate;
}
 
td {
border-width: 0px;
padding: 2px;
}
 
img {
border: 0;
}
 
pre {
margin: 0;
padding: 0;
white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
white-space: -pre-wrap; /* Opera 4 - 6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) http://www.w3.org/TR/css3-text/#white-space */
word-wrap: break-word; /* IE 5.5+ */
}
 
pre.clicky {
cursor: hand;
cursor: pointer;
}
 
td.propPlus {
width: 9px;
background-color: #ddd;
}
 
td.propName {
background-color: #ddd;
}
 
td.propType {
background-color: #ddd;
}
 
td.propVal {
background-color: #ddd;
}
 
</style>
</head>
<body>
 
<h2>Javascript Object Browser</h2>
 
<div id="frame"></div>
 
</body>
</html>
/trunk/api/js/dojo/src/debug/spacer.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/debug/spacer.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/debug/arrow_hide.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/api/js/dojo/src/debug/arrow_hide.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/api/js/dojo/src/a11y.js
New file
0,0 → 1,52
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.a11y");
dojo.require("dojo.uri.*");
dojo.require("dojo.html.common");
dojo.a11y = {imgPath:dojo.uri.moduleUri("dojo.widget", "templates/images"), doAccessibleCheck:true, accessible:null, checkAccessible:function () {
if (this.accessible === null) {
this.accessible = false;
if (this.doAccessibleCheck == true) {
this.accessible = this.testAccessible();
}
}
return this.accessible;
}, testAccessible:function () {
this.accessible = false;
if (dojo.render.html.ie || dojo.render.html.mozilla) {
var div = document.createElement("div");
div.style.backgroundImage = "url(\"" + this.imgPath + "/tab_close.gif\")";
dojo.body().appendChild(div);
var bkImg = null;
if (window.getComputedStyle) {
var cStyle = getComputedStyle(div, "");
bkImg = cStyle.getPropertyValue("background-image");
} else {
bkImg = div.currentStyle.backgroundImage;
}
var bUseImgElem = false;
if (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)")) {
this.accessible = true;
}
dojo.body().removeChild(div);
}
return this.accessible;
}, setCheckAccessible:function (bTest) {
this.doAccessibleCheck = bTest;
}, setAccessibleMode:function () {
if (this.accessible === null) {
if (this.checkAccessible()) {
dojo.render.html.prefixes.unshift("a11y");
}
}
return this.accessible;
}};
 
/trunk/api/js/dojo/src/dom.js
New file
0,0 → 1,379
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.dom");
dojo.dom.ELEMENT_NODE = 1;
dojo.dom.ATTRIBUTE_NODE = 2;
dojo.dom.TEXT_NODE = 3;
dojo.dom.CDATA_SECTION_NODE = 4;
dojo.dom.ENTITY_REFERENCE_NODE = 5;
dojo.dom.ENTITY_NODE = 6;
dojo.dom.PROCESSING_INSTRUCTION_NODE = 7;
dojo.dom.COMMENT_NODE = 8;
dojo.dom.DOCUMENT_NODE = 9;
dojo.dom.DOCUMENT_TYPE_NODE = 10;
dojo.dom.DOCUMENT_FRAGMENT_NODE = 11;
dojo.dom.NOTATION_NODE = 12;
dojo.dom.dojoml = "http://www.dojotoolkit.org/2004/dojoml";
dojo.dom.xmlns = {svg:"http://www.w3.org/2000/svg", smil:"http://www.w3.org/2001/SMIL20/", mml:"http://www.w3.org/1998/Math/MathML", cml:"http://www.xml-cml.org", xlink:"http://www.w3.org/1999/xlink", xhtml:"http://www.w3.org/1999/xhtml", xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", xbl:"http://www.mozilla.org/xbl", fo:"http://www.w3.org/1999/XSL/Format", xsl:"http://www.w3.org/1999/XSL/Transform", xslt:"http://www.w3.org/1999/XSL/Transform", xi:"http://www.w3.org/2001/XInclude", xforms:"http://www.w3.org/2002/01/xforms", saxon:"http://icl.com/saxon", xalan:"http://xml.apache.org/xslt", xsd:"http://www.w3.org/2001/XMLSchema", dt:"http://www.w3.org/2001/XMLSchema-datatypes", xsi:"http://www.w3.org/2001/XMLSchema-instance", rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#", rdfs:"http://www.w3.org/2000/01/rdf-schema#", dc:"http://purl.org/dc/elements/1.1/", dcq:"http://purl.org/dc/qualifiers/1.0", "soap-env":"http://schemas.xmlsoap.org/soap/envelope/", wsdl:"http://schemas.xmlsoap.org/wsdl/", AdobeExtensions:"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"};
dojo.dom.isNode = function (wh) {
if (typeof Element == "function") {
try {
return wh instanceof Element;
}
catch (e) {
}
} else {
return wh && !isNaN(wh.nodeType);
}
};
dojo.dom.getUniqueId = function () {
var _document = dojo.doc();
do {
var id = "dj_unique_" + (++arguments.callee._idIncrement);
} while (_document.getElementById(id));
return id;
};
dojo.dom.getUniqueId._idIncrement = 0;
dojo.dom.firstElement = dojo.dom.getFirstChildElement = function (parentNode, tagName) {
var node = parentNode.firstChild;
while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
node = node.nextSibling;
}
if (tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
node = dojo.dom.nextElement(node, tagName);
}
return node;
};
dojo.dom.lastElement = dojo.dom.getLastChildElement = function (parentNode, tagName) {
var node = parentNode.lastChild;
while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
node = node.previousSibling;
}
if (tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
node = dojo.dom.prevElement(node, tagName);
}
return node;
};
dojo.dom.nextElement = dojo.dom.getNextSiblingElement = function (node, tagName) {
if (!node) {
return null;
}
do {
node = node.nextSibling;
} while (node && node.nodeType != dojo.dom.ELEMENT_NODE);
if (node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
return dojo.dom.nextElement(node, tagName);
}
return node;
};
dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement = function (node, tagName) {
if (!node) {
return null;
}
if (tagName) {
tagName = tagName.toLowerCase();
}
do {
node = node.previousSibling;
} while (node && node.nodeType != dojo.dom.ELEMENT_NODE);
if (node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
return dojo.dom.prevElement(node, tagName);
}
return node;
};
dojo.dom.moveChildren = function (srcNode, destNode, trim) {
var count = 0;
if (trim) {
while (srcNode.hasChildNodes() && srcNode.firstChild.nodeType == dojo.dom.TEXT_NODE) {
srcNode.removeChild(srcNode.firstChild);
}
while (srcNode.hasChildNodes() && srcNode.lastChild.nodeType == dojo.dom.TEXT_NODE) {
srcNode.removeChild(srcNode.lastChild);
}
}
while (srcNode.hasChildNodes()) {
destNode.appendChild(srcNode.firstChild);
count++;
}
return count;
};
dojo.dom.copyChildren = function (srcNode, destNode, trim) {
var clonedNode = srcNode.cloneNode(true);
return this.moveChildren(clonedNode, destNode, trim);
};
dojo.dom.replaceChildren = function (node, newChild) {
var nodes = [];
if (dojo.render.html.ie) {
for (var i = 0; i < node.childNodes.length; i++) {
nodes.push(node.childNodes[i]);
}
}
dojo.dom.removeChildren(node);
node.appendChild(newChild);
for (var i = 0; i < nodes.length; i++) {
dojo.dom.destroyNode(nodes[i]);
}
};
dojo.dom.removeChildren = function (node) {
var count = node.childNodes.length;
while (node.hasChildNodes()) {
dojo.dom.removeNode(node.firstChild);
}
return count;
};
dojo.dom.replaceNode = function (node, newNode) {
return node.parentNode.replaceChild(newNode, node);
};
dojo.dom.destroyNode = function (node) {
if (node.parentNode) {
node = dojo.dom.removeNode(node);
}
if (node.nodeType != 3) {
if (dojo.evalObjPath("dojo.event.browser.clean", false)) {
dojo.event.browser.clean(node);
}
if (dojo.render.html.ie) {
node.outerHTML = "";
}
}
};
dojo.dom.removeNode = function (node) {
if (node && node.parentNode) {
return node.parentNode.removeChild(node);
}
};
dojo.dom.getAncestors = function (node, filterFunction, returnFirstHit) {
var ancestors = [];
var isFunction = (filterFunction && (filterFunction instanceof Function || typeof filterFunction == "function"));
while (node) {
if (!isFunction || filterFunction(node)) {
ancestors.push(node);
}
if (returnFirstHit && ancestors.length > 0) {
return ancestors[0];
}
node = node.parentNode;
}
if (returnFirstHit) {
return null;
}
return ancestors;
};
dojo.dom.getAncestorsByTag = function (node, tag, returnFirstHit) {
tag = tag.toLowerCase();
return dojo.dom.getAncestors(node, function (el) {
return ((el.tagName) && (el.tagName.toLowerCase() == tag));
}, returnFirstHit);
};
dojo.dom.getFirstAncestorByTag = function (node, tag) {
return dojo.dom.getAncestorsByTag(node, tag, true);
};
dojo.dom.isDescendantOf = function (node, ancestor, guaranteeDescendant) {
if (guaranteeDescendant && node) {
node = node.parentNode;
}
while (node) {
if (node == ancestor) {
return true;
}
node = node.parentNode;
}
return false;
};
dojo.dom.innerXML = function (node) {
if (node.innerXML) {
return node.innerXML;
} else {
if (node.xml) {
return node.xml;
} else {
if (typeof XMLSerializer != "undefined") {
return (new XMLSerializer()).serializeToString(node);
}
}
}
};
dojo.dom.createDocument = function () {
var doc = null;
var _document = dojo.doc();
if (!dj_undef("ActiveXObject")) {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
doc = new ActiveXObject(prefixes[i] + ".XMLDOM");
}
catch (e) {
}
if (doc) {
break;
}
}
} else {
if ((_document.implementation) && (_document.implementation.createDocument)) {
doc = _document.implementation.createDocument("", "", null);
}
}
return doc;
};
dojo.dom.createDocumentFromText = function (str, mimetype) {
if (!mimetype) {
mimetype = "text/xml";
}
if (!dj_undef("DOMParser")) {
var parser = new DOMParser();
return parser.parseFromString(str, mimetype);
} else {
if (!dj_undef("ActiveXObject")) {
var domDoc = dojo.dom.createDocument();
if (domDoc) {
domDoc.async = false;
domDoc.loadXML(str);
return domDoc;
} else {
dojo.debug("toXml didn't work?");
}
} else {
var _document = dojo.doc();
if (_document.createElement) {
var tmp = _document.createElement("xml");
tmp.innerHTML = str;
if (_document.implementation && _document.implementation.createDocument) {
var xmlDoc = _document.implementation.createDocument("foo", "", null);
for (var i = 0; i < tmp.childNodes.length; i++) {
xmlDoc.importNode(tmp.childNodes.item(i), true);
}
return xmlDoc;
}
return ((tmp.document) && (tmp.document.firstChild ? tmp.document.firstChild : tmp));
}
}
}
return null;
};
dojo.dom.prependChild = function (node, parent) {
if (parent.firstChild) {
parent.insertBefore(node, parent.firstChild);
} else {
parent.appendChild(node);
}
return true;
};
dojo.dom.insertBefore = function (node, ref, force) {
if ((force != true) && (node === ref || node.nextSibling === ref)) {
return false;
}
var parent = ref.parentNode;
parent.insertBefore(node, ref);
return true;
};
dojo.dom.insertAfter = function (node, ref, force) {
var pn = ref.parentNode;
if (ref == pn.lastChild) {
if ((force != true) && (node === ref)) {
return false;
}
pn.appendChild(node);
} else {
return this.insertBefore(node, ref.nextSibling, force);
}
return true;
};
dojo.dom.insertAtPosition = function (node, ref, position) {
if ((!node) || (!ref) || (!position)) {
return false;
}
switch (position.toLowerCase()) {
case "before":
return dojo.dom.insertBefore(node, ref);
case "after":
return dojo.dom.insertAfter(node, ref);
case "first":
if (ref.firstChild) {
return dojo.dom.insertBefore(node, ref.firstChild);
} else {
ref.appendChild(node);
return true;
}
break;
default:
ref.appendChild(node);
return true;
}
};
dojo.dom.insertAtIndex = function (node, containingNode, insertionIndex) {
var siblingNodes = containingNode.childNodes;
if (!siblingNodes.length || siblingNodes.length == insertionIndex) {
containingNode.appendChild(node);
return true;
}
if (insertionIndex == 0) {
return dojo.dom.prependChild(node, containingNode);
}
return dojo.dom.insertAfter(node, siblingNodes[insertionIndex - 1]);
};
dojo.dom.textContent = function (node, text) {
if (arguments.length > 1) {
var _document = dojo.doc();
dojo.dom.replaceChildren(node, _document.createTextNode(text));
return text;
} else {
if (node.textContent != undefined) {
return node.textContent;
}
var _result = "";
if (node == null) {
return _result;
}
for (var i = 0; i < node.childNodes.length; i++) {
switch (node.childNodes[i].nodeType) {
case 1:
case 5:
_result += dojo.dom.textContent(node.childNodes[i]);
break;
case 3:
case 2:
case 4:
_result += node.childNodes[i].nodeValue;
break;
default:
break;
}
}
return _result;
}
};
dojo.dom.hasParent = function (node) {
return Boolean(node && node.parentNode && dojo.dom.isNode(node.parentNode));
};
dojo.dom.isTag = function (node) {
if (node && node.tagName) {
for (var i = 1; i < arguments.length; i++) {
if (node.tagName == String(arguments[i])) {
return String(arguments[i]);
}
}
}
return "";
};
dojo.dom.setAttributeNS = function (elem, namespaceURI, attrName, attrValue) {
if (elem == null || ((elem == undefined) && (typeof elem == "undefined"))) {
dojo.raise("No element given to dojo.dom.setAttributeNS");
}
if (!((elem.setAttributeNS == undefined) && (typeof elem.setAttributeNS == "undefined"))) {
elem.setAttributeNS(namespaceURI, attrName, attrValue);
} else {
var ownerDoc = elem.ownerDocument;
var attribute = ownerDoc.createNode(2, attrName, namespaceURI);
attribute.nodeValue = attrValue;
elem.setAttributeNode(attribute);
}
};
 
/trunk/api/js/dojo/src/crypto.js
New file
0,0 → 1,14
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.crypto");
dojo.crypto.cipherModes = {ECB:0, CBC:1, PCBC:2, CFB:3, OFB:4, CTR:5};
dojo.crypto.outputTypes = {Base64:0, Hex:1, String:2, Raw:3};
 
/trunk/api/js/dojo/src/iCalendar.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.cal.iCalendar");
dojo.deprecated("dojo.icalendar", "use dojo.cal.iCalendar isntead", "0.5");
 
/trunk/api/js/dojo/src/uri/Uri.js
New file
0,0 → 1,113
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uri.Uri");
dojo.uri = new function () {
this.dojoUri = function (uri) {
return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(), uri);
};
this.moduleUri = function (module, uri) {
var loc = dojo.hostenv.getModuleSymbols(module).join("/");
if (!loc) {
return null;
}
if (loc.lastIndexOf("/") != loc.length - 1) {
loc += "/";
}
var colonIndex = loc.indexOf(":");
var slashIndex = loc.indexOf("/");
if (loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > slashIndex)) {
loc = dojo.hostenv.getBaseScriptUri() + loc;
}
return new dojo.uri.Uri(loc, uri);
};
this.Uri = function () {
var uri = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (!arguments[i]) {
continue;
}
var relobj = new dojo.uri.Uri(arguments[i].toString());
var uriobj = new dojo.uri.Uri(uri.toString());
if ((relobj.path == "") && (relobj.scheme == null) && (relobj.authority == null) && (relobj.query == null)) {
if (relobj.fragment != null) {
uriobj.fragment = relobj.fragment;
}
relobj = uriobj;
} else {
if (relobj.scheme == null) {
relobj.scheme = uriobj.scheme;
if (relobj.authority == null) {
relobj.authority = uriobj.authority;
if (relobj.path.charAt(0) != "/") {
var path = uriobj.path.substring(0, uriobj.path.lastIndexOf("/") + 1) + relobj.path;
var segs = path.split("/");
for (var j = 0; j < segs.length; j++) {
if (segs[j] == ".") {
if (j == segs.length - 1) {
segs[j] = "";
} else {
segs.splice(j, 1);
j--;
}
} else {
if (j > 0 && !(j == 1 && segs[0] == "") && segs[j] == ".." && segs[j - 1] != "..") {
if (j == segs.length - 1) {
segs.splice(j, 1);
segs[j - 1] = "";
} else {
segs.splice(j - 1, 2);
j -= 2;
}
}
}
}
relobj.path = segs.join("/");
}
}
}
}
uri = "";
if (relobj.scheme != null) {
uri += relobj.scheme + ":";
}
if (relobj.authority != null) {
uri += "//" + relobj.authority;
}
uri += relobj.path;
if (relobj.query != null) {
uri += "?" + relobj.query;
}
if (relobj.fragment != null) {
uri += "#" + relobj.fragment;
}
}
this.uri = uri.toString();
var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
var r = this.uri.match(new RegExp(regexp));
this.scheme = r[2] || (r[1] ? "" : null);
this.authority = r[4] || (r[3] ? "" : null);
this.path = r[5];
this.query = r[7] || (r[6] ? "" : null);
this.fragment = r[9] || (r[8] ? "" : null);
if (this.authority != null) {
regexp = "^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
r = this.authority.match(new RegExp(regexp));
this.user = r[3] || null;
this.password = r[4] || null;
this.host = r[5];
this.port = r[7] || null;
}
this.toString = function () {
return this.uri;
};
};
};
 
/trunk/api/js/dojo/src/uri/cache.js
New file
0,0 → 1,30
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.uri.cache");
dojo.uri.cache = {_cache:{}, set:function (uri, content) {
this._cache[uri.toString()] = content;
return uri;
}, remove:function (uri) {
delete this._cache[uri.toString()];
}, get:function (uri) {
var key = uri.toString();
var value = this._cache[key];
if (!value) {
value = dojo.hostenv.getText(key);
if (value) {
this._cache[key] = value;
}
}
return value;
}, allow:function (uri) {
return uri;
}};
 
/trunk/api/js/dojo/src/uri/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:[["dojo.uri.Uri", false, false]]});
dojo.provide("dojo.uri.*");
 
/trunk/api/js/dojo/src/graphics/__package__.js
New file
0,0 → 1,12
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.graphics.*");
 
/trunk/api/js/dojo/src/graphics/Colorspace.js
New file
0,0 → 1,15
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.graphics.Colorspace");
dojo.require("dojo.gfx.Colorspace");
dojo.deprecated("dojo.graphics.Colorspace: use dojo.gfx.Colorspace instead.", "0.5");
dojo.graphics.Colorspace = dojo.gfx.Colorspace;
 
/trunk/api/js/dojo/src/graphics/color.js
New file
0,0 → 1,36
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.graphics.color");
dojo.require("dojo.gfx.color");
dojo.deprecated("dojo.graphics.color.Color is now dojo.gfx.color.Color.", "0.5");
dojo.graphics.color.Color = dojo.gfx.color.Color;
dojo.graphics.color.named = dojo.gfx.color.named;
dojo.graphics.color.blend = function (a, b, weight) {
dojo.deprecated("dojo.graphics.color.blend is now dojo.gfx.color.blend", "0.5");
return dojo.gfx.color.blend(a, b, weight);
};
dojo.graphics.color.blendHex = function (a, b, weight) {
dojo.deprecated("dojo.graphics.color.blendHex is now dojo.gfx.color.blendHex", "0.5");
return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight));
};
dojo.graphics.color.extractRGB = function (color) {
dojo.deprecated("dojo.graphics.color.extractRGB is now dojo.gfx.color.extractRGB", "0.5");
return dojo.gfx.color.extractRGB(color);
};
dojo.graphics.color.hex2rgb = function (hex) {
dojo.deprecated("dojo.graphics.color.hex2rgb is now dojo.gfx.color.hex2rgb", "0.5");
return dojo.gfx.color.hex2rgb(hex);
};
dojo.graphics.color.rgb2hex = function (r, g, b) {
dojo.deprecated("dojo.graphics.color.rgb2hex is now dojo.gfx.color.rgb2hex", "0.5");
return dojo.gfx.color.rgb2hex;
};
 
/trunk/api/js/dojo/src/graphics/color/hsl.js
New file
0,0 → 1,30
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.graphics.color.hsl");
dojo.require("dojo.gfx.color.hsl");
dojo.deprecated("dojo.graphics.color.hsl has been replaced with dojo.gfx.color.hsl", "0.5");
dojo.graphics.color.rgb2hsl = function (r, g, b) {
dojo.deprecated("dojo.graphics.color.rgb2hsl has been replaced with dojo.gfx.color.rgb2hsl", "0.5");
return dojo.gfx.color.rgb2hsl(r, g, b);
};
dojo.graphics.color.hsl2rgb = function (h, s, l) {
dojo.deprecated("dojo.graphics.color.hsl2rgb has been replaced with dojo.gfx.color.hsl2rgb", "0.5");
return dojo.gfx.color.hsl2rgb(h, s, l);
};
dojo.graphics.color.hsl2hex = function (h, s, l) {
dojo.deprecated("dojo.graphics.color.hsl2hex has been replaced with dojo.gfx.color.hsl2hex", "0.5");
return dojo.gfx.color.hsl2hex(h, s, l);
};
dojo.graphics.color.hex2hsl = function (hex) {
dojo.deprecated("dojo.graphics.color.hex2hsl has been replaced with dojo.gfx.color.hex2hsl", "0.5");
return dojo.gfx.color.hex2hsl(hex);
};
 
/trunk/api/js/dojo/src/graphics/color/hsv.js
New file
0,0 → 1,22
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.graphics.color.hsv");
dojo.require("dojo.gfx.color.hsv");
dojo.deprecated("dojo.graphics.color.hsv has been replaced by dojo.gfx.color.hsv", "0.5");
dojo.graphics.color.rgb2hsv = function (r, g, b) {
dojo.deprecated("dojo.graphics.color.rgb2hsv has been replaced by dojo.gfx.color.rgb2hsv", "0.5");
return dojo.gfx.color.rgb2hsv(r, g, b);
};
dojo.graphics.color.hsv2rgb = function (h, s, v) {
dojo.deprecated("dojo.graphics.color.hsv2rgb has been replaced by dojo.gfx.color.hsv2rgb", "0.5");
return dojo.gfx.color.hsv2rgb(h, s, v);
};
 
/trunk/api/js/dojo/src/math.js
New file
0,0 → 1,106
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.math");
dojo.math.degToRad = function (x) {
return (x * Math.PI) / 180;
};
dojo.math.radToDeg = function (x) {
return (x * 180) / Math.PI;
};
dojo.math.factorial = function (n) {
if (n < 1) {
return 0;
}
var retVal = 1;
for (var i = 1; i <= n; i++) {
retVal *= i;
}
return retVal;
};
dojo.math.permutations = function (n, k) {
if (n == 0 || k == 0) {
return 1;
}
return (dojo.math.factorial(n) / dojo.math.factorial(n - k));
};
dojo.math.combinations = function (n, r) {
if (n == 0 || r == 0) {
return 1;
}
return (dojo.math.factorial(n) / (dojo.math.factorial(n - r) * dojo.math.factorial(r)));
};
dojo.math.bernstein = function (t, n, i) {
return (dojo.math.combinations(n, i) * Math.pow(t, i) * Math.pow(1 - t, n - i));
};
dojo.math.gaussianRandom = function () {
var k = 2;
do {
var i = 2 * Math.random() - 1;
var j = 2 * Math.random() - 1;
k = i * i + j * j;
} while (k >= 1);
k = Math.sqrt((-2 * Math.log(k)) / k);
return i * k;
};
dojo.math.mean = function () {
var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
var mean = 0;
for (var i = 0; i < array.length; i++) {
mean += array[i];
}
return mean / array.length;
};
dojo.math.round = function (number, places) {
if (!places) {
var shift = 1;
} else {
var shift = Math.pow(10, places);
}
return Math.round(number * shift) / shift;
};
dojo.math.sd = dojo.math.standardDeviation = function () {
var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
return Math.sqrt(dojo.math.variance(array));
};
dojo.math.variance = function () {
var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
var mean = 0, squares = 0;
for (var i = 0; i < array.length; i++) {
mean += array[i];
squares += Math.pow(array[i], 2);
}
return (squares / array.length) - Math.pow(mean / array.length, 2);
};
dojo.math.range = function (a, b, step) {
if (arguments.length < 2) {
b = a;
a = 0;
}
if (arguments.length < 3) {
step = 1;
}
var range = [];
if (step > 0) {
for (var i = a; i < b; i += step) {
range.push(i);
}
} else {
if (step < 0) {
for (var i = a; i > b; i += step) {
range.push(i);
}
} else {
throw new Error("dojo.math.range: step must be non-zero");
}
}
return range;
};
 
/trunk/api/js/dojo/src/regexp.js
New file
0,0 → 1,363
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.regexp");
dojo.evalObjPath("dojo.regexp.us", true);
dojo.regexp.tld = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.allowCC != "boolean") {
flags.allowCC = true;
}
if (typeof flags.allowInfra != "boolean") {
flags.allowInfra = true;
}
if (typeof flags.allowGeneric != "boolean") {
flags.allowGeneric = true;
}
var infraRE = "arpa";
var genericRE = "aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post";
var ccRE = "ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|" + "bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" + "ec|ee|eg|er|eu|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|" + "gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|" + "la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|" + "my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|" + "re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|" + "tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
var a = [];
if (flags.allowInfra) {
a.push(infraRE);
}
if (flags.allowGeneric) {
a.push(genericRE);
}
if (flags.allowCC) {
a.push(ccRE);
}
var tldRE = "";
if (a.length > 0) {
tldRE = "(" + a.join("|") + ")";
}
return tldRE;
};
dojo.regexp.ipAddress = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.allowDottedDecimal != "boolean") {
flags.allowDottedDecimal = true;
}
if (typeof flags.allowDottedHex != "boolean") {
flags.allowDottedHex = true;
}
if (typeof flags.allowDottedOctal != "boolean") {
flags.allowDottedOctal = true;
}
if (typeof flags.allowDecimal != "boolean") {
flags.allowDecimal = true;
}
if (typeof flags.allowHex != "boolean") {
flags.allowHex = true;
}
if (typeof flags.allowIPv6 != "boolean") {
flags.allowIPv6 = true;
}
if (typeof flags.allowHybrid != "boolean") {
flags.allowHybrid = true;
}
var dottedDecimalRE = "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
var dottedHexRE = "(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]";
var dottedOctalRE = "(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]";
var decimalRE = "(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|" + "4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])";
var hexRE = "0[xX]0*[\\da-fA-F]{1,8}";
var ipv6RE = "([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}";
var hybridRE = "([\\da-fA-F]{1,4}\\:){6}" + "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
var a = [];
if (flags.allowDottedDecimal) {
a.push(dottedDecimalRE);
}
if (flags.allowDottedHex) {
a.push(dottedHexRE);
}
if (flags.allowDottedOctal) {
a.push(dottedOctalRE);
}
if (flags.allowDecimal) {
a.push(decimalRE);
}
if (flags.allowHex) {
a.push(hexRE);
}
if (flags.allowIPv6) {
a.push(ipv6RE);
}
if (flags.allowHybrid) {
a.push(hybridRE);
}
var ipAddressRE = "";
if (a.length > 0) {
ipAddressRE = "(" + a.join("|") + ")";
}
return ipAddressRE;
};
dojo.regexp.host = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.allowIP != "boolean") {
flags.allowIP = true;
}
if (typeof flags.allowLocal != "boolean") {
flags.allowLocal = false;
}
if (typeof flags.allowPort != "boolean") {
flags.allowPort = true;
}
var domainNameRE = "([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+" + dojo.regexp.tld(flags);
var portRE = (flags.allowPort) ? "(\\:" + dojo.regexp.integer({signed:false}) + ")?" : "";
var hostNameRE = domainNameRE;
if (flags.allowIP) {
hostNameRE += "|" + dojo.regexp.ipAddress(flags);
}
if (flags.allowLocal) {
hostNameRE += "|localhost";
}
return "(" + hostNameRE + ")" + portRE;
};
dojo.regexp.url = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.scheme == "undefined") {
flags.scheme = [true, false];
}
var protocolRE = dojo.regexp.buildGroupRE(flags.scheme, function (q) {
if (q) {
return "(https?|ftps?)\\://";
}
return "";
});
var pathRE = "(/([^?#\\s/]+/)*)?([^?#\\s/]+(\\?[^?#\\s/]*)?(#[A-Za-z][\\w.:-]*)?)?";
return protocolRE + dojo.regexp.host(flags) + pathRE;
};
dojo.regexp.emailAddress = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.allowCruft != "boolean") {
flags.allowCruft = false;
}
flags.allowPort = false;
var usernameRE = "([\\da-z]+[-._+&'])*[\\da-z]+";
var emailAddressRE = usernameRE + "@" + dojo.regexp.host(flags);
if (flags.allowCruft) {
emailAddressRE = "<?(mailto\\:)?" + emailAddressRE + ">?";
}
return emailAddressRE;
};
dojo.regexp.emailAddressList = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.listSeparator != "string") {
flags.listSeparator = "\\s;,";
}
var emailAddressRE = dojo.regexp.emailAddress(flags);
var emailAddressListRE = "(" + emailAddressRE + "\\s*[" + flags.listSeparator + "]\\s*)*" + emailAddressRE + "\\s*[" + flags.listSeparator + "]?\\s*";
return emailAddressListRE;
};
dojo.regexp.integer = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.signed == "undefined") {
flags.signed = [true, false];
}
if (typeof flags.separator == "undefined") {
flags.separator = "";
} else {
if (typeof flags.groupSize == "undefined") {
flags.groupSize = 3;
}
}
var signRE = dojo.regexp.buildGroupRE(flags.signed, function (q) {
return q ? "[-+]" : "";
});
var numberRE = dojo.regexp.buildGroupRE(flags.separator, function (sep) {
if (sep == "") {
return "(0|[1-9]\\d*)";
}
var grp = flags.groupSize, grp2 = flags.groupSize2;
if (typeof grp2 != "undefined") {
var grp2RE = "(0|[1-9]\\d{0," + (grp2 - 1) + "}([" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})";
return ((grp - grp2) > 0) ? "(" + grp2RE + "|(0|[1-9]\\d{0," + (grp - 1) + "}))" : grp2RE;
}
return "(0|[1-9]\\d{0," + (grp - 1) + "}([" + sep + "]\\d{" + grp + "})*)";
});
return signRE + numberRE;
};
dojo.regexp.realNumber = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.places != "number") {
flags.places = Infinity;
}
if (typeof flags.decimal != "string") {
flags.decimal = ".";
}
if (typeof flags.fractional == "undefined") {
flags.fractional = [true, false];
}
if (typeof flags.exponent == "undefined") {
flags.exponent = [true, false];
}
if (typeof flags.eSigned == "undefined") {
flags.eSigned = [true, false];
}
var integerRE = dojo.regexp.integer(flags);
var decimalRE = dojo.regexp.buildGroupRE(flags.fractional, function (q) {
var re = "";
if (q && (flags.places > 0)) {
re = "\\" + flags.decimal;
if (flags.places == Infinity) {
re = "(" + re + "\\d+)?";
} else {
re = re + "\\d{" + flags.places + "}";
}
}
return re;
});
var exponentRE = dojo.regexp.buildGroupRE(flags.exponent, function (q) {
if (q) {
return "([eE]" + dojo.regexp.integer({signed:flags.eSigned}) + ")";
}
return "";
});
return integerRE + decimalRE + exponentRE;
};
dojo.regexp.currency = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.signed == "undefined") {
flags.signed = [true, false];
}
if (typeof flags.symbol == "undefined") {
flags.symbol = "$";
}
if (typeof flags.placement != "string") {
flags.placement = "before";
}
if (typeof flags.signPlacement != "string") {
flags.signPlacement = "before";
}
if (typeof flags.separator == "undefined") {
flags.separator = ",";
}
if (typeof flags.fractional == "undefined" && typeof flags.cents != "undefined") {
dojo.deprecated("dojo.regexp.currency: flags.cents", "use flags.fractional instead", "0.5");
flags.fractional = flags.cents;
}
if (typeof flags.decimal != "string") {
flags.decimal = ".";
}
var signRE = dojo.regexp.buildGroupRE(flags.signed, function (q) {
if (q) {
return "[-+]";
}
return "";
});
var symbolRE = dojo.regexp.buildGroupRE(flags.symbol, function (symbol) {
return "\\s?" + symbol.replace(/([.$?*!=:|\\\/^])/g, "\\$1") + "\\s?";
});
switch (flags.signPlacement) {
case "before":
symbolRE = signRE + symbolRE;
break;
case "after":
symbolRE = symbolRE + signRE;
break;
}
var flagsCopy = flags;
flagsCopy.signed = false;
flagsCopy.exponent = false;
var numberRE = dojo.regexp.realNumber(flagsCopy);
var currencyRE;
switch (flags.placement) {
case "before":
currencyRE = symbolRE + numberRE;
break;
case "after":
currencyRE = numberRE + symbolRE;
break;
}
switch (flags.signPlacement) {
case "around":
currencyRE = "(" + currencyRE + "|" + "\\(" + currencyRE + "\\)" + ")";
break;
case "begin":
currencyRE = signRE + currencyRE;
break;
case "end":
currencyRE = currencyRE + signRE;
break;
}
return currencyRE;
};
dojo.regexp.us.state = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.allowTerritories != "boolean") {
flags.allowTerritories = true;
}
if (typeof flags.allowMilitary != "boolean") {
flags.allowMilitary = true;
}
var statesRE = "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|" + "NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY";
var territoriesRE = "AS|FM|GU|MH|MP|PW|PR|VI";
var militaryRE = "AA|AE|AP";
if (flags.allowTerritories) {
statesRE += "|" + territoriesRE;
}
if (flags.allowMilitary) {
statesRE += "|" + militaryRE;
}
return "(" + statesRE + ")";
};
dojo.regexp.time = function (flags) {
dojo.deprecated("dojo.regexp.time", "Use dojo.date.parse instead", "0.5");
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.format == "undefined") {
flags.format = "h:mm:ss t";
}
if (typeof flags.amSymbol != "string") {
flags.amSymbol = "AM";
}
if (typeof flags.pmSymbol != "string") {
flags.pmSymbol = "PM";
}
var timeRE = function (format) {
format = format.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
var amRE = flags.amSymbol.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
var pmRE = flags.pmSymbol.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
format = format.replace("hh", "(0[1-9]|1[0-2])");
format = format.replace("h", "([1-9]|1[0-2])");
format = format.replace("HH", "([01][0-9]|2[0-3])");
format = format.replace("H", "([0-9]|1[0-9]|2[0-3])");
format = format.replace("mm", "([0-5][0-9])");
format = format.replace("m", "([1-5][0-9]|[0-9])");
format = format.replace("ss", "([0-5][0-9])");
format = format.replace("s", "([1-5][0-9]|[0-9])");
format = format.replace("t", "\\s?(" + amRE + "|" + pmRE + ")\\s?");
return format;
};
return dojo.regexp.buildGroupRE(flags.format, timeRE);
};
dojo.regexp.numberFormat = function (flags) {
flags = (typeof flags == "object") ? flags : {};
if (typeof flags.format == "undefined") {
flags.format = "###-###-####";
}
var digitRE = function (format) {
format = format.replace(/([.$*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
format = format.replace(/\?/g, "\\d?");
format = format.replace(/#/g, "\\d");
return format;
};
return dojo.regexp.buildGroupRE(flags.format, digitRE);
};
dojo.regexp.buildGroupRE = function (a, re) {
if (!(a instanceof Array)) {
return re(a);
}
var b = [];
for (var i = 0; i < a.length; i++) {
b.push(re(a[i]));
}
return "(" + b.join("|") + ")";
};
 
/trunk/api/js/dojo/src/io/common.js
New file
0,0 → 1,218
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.common");
dojo.require("dojo.string");
dojo.require("dojo.lang.extras");
dojo.io.transports = [];
dojo.io.hdlrFuncNames = ["load", "error", "timeout"];
dojo.io.Request = function (url, mimetype, transport, changeUrl) {
if ((arguments.length == 1) && (arguments[0].constructor == Object)) {
this.fromKwArgs(arguments[0]);
} else {
this.url = url;
if (mimetype) {
this.mimetype = mimetype;
}
if (transport) {
this.transport = transport;
}
if (arguments.length >= 4) {
this.changeUrl = changeUrl;
}
}
};
dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, load:function (type, data, transportImplementation, kwArgs) {
}, error:function (type, error, transportImplementation, kwArgs) {
}, timeout:function (type, empty, transportImplementation, kwArgs) {
}, handle:function (type, data, transportImplementation, kwArgs) {
}, timeoutSeconds:0, abort:function () {
}, fromKwArgs:function (kwArgs) {
if (kwArgs["url"]) {
kwArgs.url = kwArgs.url.toString();
}
if (kwArgs["formNode"]) {
kwArgs.formNode = dojo.byId(kwArgs.formNode);
}
if (!kwArgs["method"] && kwArgs["formNode"] && kwArgs["formNode"].method) {
kwArgs.method = kwArgs["formNode"].method;
}
if (!kwArgs["handle"] && kwArgs["handler"]) {
kwArgs.handle = kwArgs.handler;
}
if (!kwArgs["load"] && kwArgs["loaded"]) {
kwArgs.load = kwArgs.loaded;
}
if (!kwArgs["changeUrl"] && kwArgs["changeURL"]) {
kwArgs.changeUrl = kwArgs.changeURL;
}
kwArgs.encoding = dojo.lang.firstValued(kwArgs["encoding"], djConfig["bindEncoding"], "");
kwArgs.sendTransport = dojo.lang.firstValued(kwArgs["sendTransport"], djConfig["ioSendTransport"], false);
var isFunction = dojo.lang.isFunction;
for (var x = 0; x < dojo.io.hdlrFuncNames.length; x++) {
var fn = dojo.io.hdlrFuncNames[x];
if (kwArgs[fn] && isFunction(kwArgs[fn])) {
continue;
}
if (kwArgs["handle"] && isFunction(kwArgs["handle"])) {
kwArgs[fn] = kwArgs.handle;
}
}
dojo.lang.mixin(this, kwArgs);
}});
dojo.io.Error = function (msg, type, num) {
this.message = msg;
this.type = type || "unknown";
this.number = num || 0;
};
dojo.io.transports.addTransport = function (name) {
this.push(name);
this[name] = dojo.io[name];
};
dojo.io.bind = function (request) {
if (!(request instanceof dojo.io.Request)) {
try {
request = new dojo.io.Request(request);
}
catch (e) {
dojo.debug(e);
}
}
var tsName = "";
if (request["transport"]) {
tsName = request["transport"];
if (!this[tsName]) {
dojo.io.sendBindError(request, "No dojo.io.bind() transport with name '" + request["transport"] + "'.");
return request;
}
if (!this[tsName].canHandle(request)) {
dojo.io.sendBindError(request, "dojo.io.bind() transport with name '" + request["transport"] + "' cannot handle this type of request.");
return request;
}
} else {
for (var x = 0; x < dojo.io.transports.length; x++) {
var tmp = dojo.io.transports[x];
if ((this[tmp]) && (this[tmp].canHandle(request))) {
tsName = tmp;
break;
}
}
if (tsName == "") {
dojo.io.sendBindError(request, "None of the loaded transports for dojo.io.bind()" + " can handle the request.");
return request;
}
}
this[tsName].bind(request);
request.bindSuccess = true;
return request;
};
dojo.io.sendBindError = function (request, message) {
if ((typeof request.error == "function" || typeof request.handle == "function") && (typeof setTimeout == "function" || typeof setTimeout == "object")) {
var errorObject = new dojo.io.Error(message);
setTimeout(function () {
request[(typeof request.error == "function") ? "error" : "handle"]("error", errorObject, null, request);
}, 50);
} else {
dojo.raise(message);
}
};
dojo.io.queueBind = function (request) {
if (!(request instanceof dojo.io.Request)) {
try {
request = new dojo.io.Request(request);
}
catch (e) {
dojo.debug(e);
}
}
var oldLoad = request.load;
request.load = function () {
dojo.io._queueBindInFlight = false;
var ret = oldLoad.apply(this, arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
var oldErr = request.error;
request.error = function () {
dojo.io._queueBindInFlight = false;
var ret = oldErr.apply(this, arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
dojo.io._bindQueue.push(request);
dojo.io._dispatchNextQueueBind();
return request;
};
dojo.io._dispatchNextQueueBind = function () {
if (!dojo.io._queueBindInFlight) {
dojo.io._queueBindInFlight = true;
if (dojo.io._bindQueue.length > 0) {
dojo.io.bind(dojo.io._bindQueue.shift());
} else {
dojo.io._queueBindInFlight = false;
}
}
};
dojo.io._bindQueue = [];
dojo.io._queueBindInFlight = false;
dojo.io.argsFromMap = function (map, encoding, last) {
var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii;
var mapped = [];
var control = new Object();
for (var name in map) {
var domap = function (elt) {
var val = enc(name) + "=" + enc(elt);
mapped[(last == name) ? "push" : "unshift"](val);
};
if (!control[name]) {
var value = map[name];
if (dojo.lang.isArray(value)) {
dojo.lang.forEach(value, domap);
} else {
domap(value);
}
}
}
return mapped.join("&");
};
dojo.io.setIFrameSrc = function (iframe, src, replace) {
try {
var r = dojo.render.html;
if (!replace) {
if (r.safari) {
iframe.location = src;
} else {
frames[iframe.name].location = src;
}
} else {
var idoc;
if (r.ie) {
idoc = iframe.contentWindow.document;
} else {
if (r.safari) {
idoc = iframe.document;
} else {
idoc = iframe.contentWindow;
}
}
if (!idoc) {
iframe.location = src;
return;
} else {
idoc.location.replace(src);
}
}
}
catch (e) {
dojo.debug(e);
dojo.debug("setIFrameSrc: " + e);
}
};
 
/trunk/api/js/dojo/src/io/cookie.js
New file
0,0 → 1,102
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.cookie");
dojo.io.cookie.setCookie = function (name, value, days, path, domain, secure) {
var expires = -1;
if ((typeof days == "number") && (days >= 0)) {
var d = new Date();
d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
expires = d.toGMTString();
}
value = escape(value);
document.cookie = name + "=" + value + ";" + (expires != -1 ? " expires=" + expires + ";" : "") + (path ? "path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "; secure" : "");
};
dojo.io.cookie.set = dojo.io.cookie.setCookie;
dojo.io.cookie.getCookie = function (name) {
var idx = document.cookie.lastIndexOf(name + "=");
if (idx == -1) {
return null;
}
var value = document.cookie.substring(idx + name.length + 1);
var end = value.indexOf(";");
if (end == -1) {
end = value.length;
}
value = value.substring(0, end);
value = unescape(value);
return value;
};
dojo.io.cookie.get = dojo.io.cookie.getCookie;
dojo.io.cookie.deleteCookie = function (name) {
dojo.io.cookie.setCookie(name, "-", 0);
};
dojo.io.cookie.setObjectCookie = function (name, obj, days, path, domain, secure, clearCurrent) {
if (arguments.length == 5) {
clearCurrent = domain;
domain = null;
secure = null;
}
var pairs = [], cookie, value = "";
if (!clearCurrent) {
cookie = dojo.io.cookie.getObjectCookie(name);
}
if (days >= 0) {
if (!cookie) {
cookie = {};
}
for (var prop in obj) {
if (obj[prop] == null) {
delete cookie[prop];
} else {
if ((typeof obj[prop] == "string") || (typeof obj[prop] == "number")) {
cookie[prop] = obj[prop];
}
}
}
prop = null;
for (var prop in cookie) {
pairs.push(escape(prop) + "=" + escape(cookie[prop]));
}
value = pairs.join("&");
}
dojo.io.cookie.setCookie(name, value, days, path, domain, secure);
};
dojo.io.cookie.getObjectCookie = function (name) {
var values = null, cookie = dojo.io.cookie.getCookie(name);
if (cookie) {
values = {};
var pairs = cookie.split("&");
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split("=");
var value = pair[1];
if (isNaN(value)) {
value = unescape(pair[1]);
}
values[unescape(pair[0])] = value;
}
}
return values;
};
dojo.io.cookie.isSupported = function () {
if (typeof navigator.cookieEnabled != "boolean") {
dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__", "CookiesAllowed", 90, null);
var cookieVal = dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
navigator.cookieEnabled = (cookieVal == "CookiesAllowed");
if (navigator.cookieEnabled) {
this.deleteCookie("__TestingYourBrowserForCookieSupport__");
}
}
return navigator.cookieEnabled;
};
if (!dojo.io.cookies) {
dojo.io.cookies = dojo.io.cookie;
}
 
/trunk/api/js/dojo/src/io/BrowserIO.js
New file
0,0 → 1,492
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.BrowserIO");
dojo.require("dojo.io.common");
dojo.require("dojo.lang.array");
dojo.require("dojo.lang.func");
dojo.require("dojo.string.extras");
dojo.require("dojo.dom");
dojo.require("dojo.undo.browser");
if (!dj_undef("window")) {
dojo.io.checkChildrenForFile = function (node) {
var hasFile = false;
var inputs = node.getElementsByTagName("input");
dojo.lang.forEach(inputs, function (input) {
if (hasFile) {
return;
}
if (input.getAttribute("type") == "file") {
hasFile = true;
}
});
return hasFile;
};
dojo.io.formHasFile = function (formNode) {
return dojo.io.checkChildrenForFile(formNode);
};
dojo.io.updateNode = function (node, urlOrArgs) {
node = dojo.byId(node);
var args = urlOrArgs;
if (dojo.lang.isString(urlOrArgs)) {
args = {url:urlOrArgs};
}
args.mimetype = "text/html";
args.load = function (t, d, e) {
while (node.firstChild) {
dojo.dom.destroyNode(node.firstChild);
}
node.innerHTML = d;
};
dojo.io.bind(args);
};
dojo.io.formFilter = function (node) {
var type = (node.type || "").toLowerCase();
return !node.disabled && node.name && !dojo.lang.inArray(["file", "submit", "image", "reset", "button"], type);
};
dojo.io.encodeForm = function (formNode, encoding, formFilter) {
if ((!formNode) || (!formNode.tagName) || (!formNode.tagName.toLowerCase() == "form")) {
dojo.raise("Attempted to encode a non-form element.");
}
if (!formFilter) {
formFilter = dojo.io.formFilter;
}
var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii;
var values = [];
for (var i = 0; i < formNode.elements.length; i++) {
var elm = formNode.elements[i];
if (!elm || elm.tagName.toLowerCase() == "fieldset" || !formFilter(elm)) {
continue;
}
var name = enc(elm.name);
var type = elm.type.toLowerCase();
if (type == "select-multiple") {
for (var j = 0; j < elm.options.length; j++) {
if (elm.options[j].selected) {
values.push(name + "=" + enc(elm.options[j].value));
}
}
} else {
if (dojo.lang.inArray(["radio", "checkbox"], type)) {
if (elm.checked) {
values.push(name + "=" + enc(elm.value));
}
} else {
values.push(name + "=" + enc(elm.value));
}
}
}
var inputs = formNode.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if (input.type.toLowerCase() == "image" && input.form == formNode && formFilter(input)) {
var name = enc(input.name);
values.push(name + "=" + enc(input.value));
values.push(name + ".x=0");
values.push(name + ".y=0");
}
}
return values.join("&") + "&";
};
dojo.io.FormBind = function (args) {
this.bindArgs = {};
if (args && args.formNode) {
this.init(args);
} else {
if (args) {
this.init({formNode:args});
}
}
};
dojo.lang.extend(dojo.io.FormBind, {form:null, bindArgs:null, clickedButton:null, init:function (args) {
var form = dojo.byId(args.formNode);
if (!form || !form.tagName || form.tagName.toLowerCase() != "form") {
throw new Error("FormBind: Couldn't apply, invalid form");
} else {
if (this.form == form) {
return;
} else {
if (this.form) {
throw new Error("FormBind: Already applied to a form");
}
}
}
dojo.lang.mixin(this.bindArgs, args);
this.form = form;
this.connect(form, "onsubmit", "submit");
for (var i = 0; i < form.elements.length; i++) {
var node = form.elements[i];
if (node && node.type && dojo.lang.inArray(["submit", "button"], node.type.toLowerCase())) {
this.connect(node, "onclick", "click");
}
}
var inputs = form.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
if (input.type.toLowerCase() == "image" && input.form == form) {
this.connect(input, "onclick", "click");
}
}
}, onSubmit:function (form) {
return true;
}, submit:function (e) {
e.preventDefault();
if (this.onSubmit(this.form)) {
dojo.io.bind(dojo.lang.mixin(this.bindArgs, {formFilter:dojo.lang.hitch(this, "formFilter")}));
}
}, click:function (e) {
var node = e.currentTarget;
if (node.disabled) {
return;
}
this.clickedButton = node;
}, formFilter:function (node) {
var type = (node.type || "").toLowerCase();
var accept = false;
if (node.disabled || !node.name) {
accept = false;
} else {
if (dojo.lang.inArray(["submit", "button", "image"], type)) {
if (!this.clickedButton) {
this.clickedButton = node;
}
accept = node == this.clickedButton;
} else {
accept = !dojo.lang.inArray(["file", "submit", "reset", "button"], type);
}
}
return accept;
}, connect:function (srcObj, srcFcn, targetFcn) {
if (dojo.evalObjPath("dojo.event.connect")) {
dojo.event.connect(srcObj, srcFcn, this, targetFcn);
} else {
var fcn = dojo.lang.hitch(this, targetFcn);
srcObj[srcFcn] = function (e) {
if (!e) {
e = window.event;
}
if (!e.currentTarget) {
e.currentTarget = e.srcElement;
}
if (!e.preventDefault) {
e.preventDefault = function () {
window.event.returnValue = false;
};
}
fcn(e);
};
}
}});
dojo.io.XMLHTTPTransport = new function () {
var _this = this;
var _cache = {};
this.useCache = false;
this.preventCache = false;
function getCacheKey(url, query, method) {
return url + "|" + query + "|" + method.toLowerCase();
}
function addToCache(url, query, method, http) {
_cache[getCacheKey(url, query, method)] = http;
}
function getFromCache(url, query, method) {
return _cache[getCacheKey(url, query, method)];
}
this.clearCache = function () {
_cache = {};
};
function doLoad(kwArgs, http, url, query, useCache) {
if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) {
var ret;
if (kwArgs.method.toLowerCase() == "head") {
var headers = http.getAllResponseHeaders();
ret = {};
ret.toString = function () {
return headers;
};
var values = headers.split(/[\r\n]+/g);
for (var i = 0; i < values.length; i++) {
var pair = values[i].match(/^([^:]+)\s*:\s*(.+)$/i);
if (pair) {
ret[pair[1]] = pair[2];
}
}
} else {
if (kwArgs.mimetype == "text/javascript") {
try {
ret = dj_eval(http.responseText);
}
catch (e) {
dojo.debug(e);
dojo.debug(http.responseText);
ret = null;
}
} else {
if (kwArgs.mimetype == "text/json" || kwArgs.mimetype == "application/json") {
try {
ret = dj_eval("(" + http.responseText + ")");
}
catch (e) {
dojo.debug(e);
dojo.debug(http.responseText);
ret = false;
}
} else {
if ((kwArgs.mimetype == "application/xml") || (kwArgs.mimetype == "text/xml")) {
ret = http.responseXML;
if (!ret || typeof ret == "string" || !http.getResponseHeader("Content-Type")) {
ret = dojo.dom.createDocumentFromText(http.responseText);
}
} else {
ret = http.responseText;
}
}
}
}
if (useCache) {
addToCache(url, query, kwArgs.method, http);
}
kwArgs[(typeof kwArgs.load == "function") ? "load" : "handle"]("load", ret, http, kwArgs);
} else {
var errObj = new dojo.io.Error("XMLHttpTransport Error: " + http.status + " " + http.statusText);
kwArgs[(typeof kwArgs.error == "function") ? "error" : "handle"]("error", errObj, http, kwArgs);
}
}
function setHeaders(http, kwArgs) {
if (kwArgs["headers"]) {
for (var header in kwArgs["headers"]) {
if (header.toLowerCase() == "content-type" && !kwArgs["contentType"]) {
kwArgs["contentType"] = kwArgs["headers"][header];
} else {
http.setRequestHeader(header, kwArgs["headers"][header]);
}
}
}
}
this.inFlight = [];
this.inFlightTimer = null;
this.startWatchingInFlight = function () {
if (!this.inFlightTimer) {
this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
}
};
this.watchInFlight = function () {
var now = null;
if (!dojo.hostenv._blockAsync && !_this._blockAsync) {
for (var x = this.inFlight.length - 1; x >= 0; x--) {
try {
var tif = this.inFlight[x];
if (!tif || tif.http._aborted || !tif.http.readyState) {
this.inFlight.splice(x, 1);
continue;
}
if (4 == tif.http.readyState) {
this.inFlight.splice(x, 1);
doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache);
} else {
if (tif.startTime) {
if (!now) {
now = (new Date()).getTime();
}
if (tif.startTime + (tif.req.timeoutSeconds * 1000) < now) {
if (typeof tif.http.abort == "function") {
tif.http.abort();
}
this.inFlight.splice(x, 1);
tif.req[(typeof tif.req.timeout == "function") ? "timeout" : "handle"]("timeout", null, tif.http, tif.req);
}
}
}
}
catch (e) {
try {
var errObj = new dojo.io.Error("XMLHttpTransport.watchInFlight Error: " + e);
tif.req[(typeof tif.req.error == "function") ? "error" : "handle"]("error", errObj, tif.http, tif.req);
}
catch (e2) {
dojo.debug("XMLHttpTransport error callback failed: " + e2);
}
}
}
}
clearTimeout(this.inFlightTimer);
if (this.inFlight.length == 0) {
this.inFlightTimer = null;
return;
}
this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
};
var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false;
this.canHandle = function (kwArgs) {
return hasXmlHttp && dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase() || "")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]));
};
this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F";
this.bind = function (kwArgs) {
if (!kwArgs["url"]) {
if (!kwArgs["formNode"] && (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"] || kwArgs["watchForURL"]) && (!djConfig.preventBackButtonFix)) {
dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request", "Use dojo.undo.browser.addToHistory() instead.", "0.4");
dojo.undo.browser.addToHistory(kwArgs);
return true;
}
}
var url = kwArgs.url;
var query = "";
if (kwArgs["formNode"]) {
var ta = kwArgs.formNode.getAttribute("action");
if ((ta) && (!kwArgs["url"])) {
url = ta;
}
var tp = kwArgs.formNode.getAttribute("method");
if ((tp) && (!kwArgs["method"])) {
kwArgs.method = tp;
}
query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
}
if (url.indexOf("#") > -1) {
dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
url = url.split("#")[0];
}
if (kwArgs["file"]) {
kwArgs.method = "post";
}
if (!kwArgs["method"]) {
kwArgs.method = "get";
}
if (kwArgs.method.toLowerCase() == "get") {
kwArgs.multipart = false;
} else {
if (kwArgs["file"]) {
kwArgs.multipart = true;
} else {
if (!kwArgs["multipart"]) {
kwArgs.multipart = false;
}
}
}
if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) {
dojo.undo.browser.addToHistory(kwArgs);
}
var content = kwArgs["content"] || {};
if (kwArgs.sendTransport) {
content["dojo.transport"] = "xmlhttp";
}
do {
if (kwArgs.postContent) {
query = kwArgs.postContent;
break;
}
if (content) {
query += dojo.io.argsFromMap(content, kwArgs.encoding);
}
if (kwArgs.method.toLowerCase() == "get" || !kwArgs.multipart) {
break;
}
var t = [];
if (query.length) {
var q = query.split("&");
for (var i = 0; i < q.length; ++i) {
if (q[i].length) {
var p = q[i].split("=");
t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + p[0] + "\"", "", p[1]);
}
}
}
if (kwArgs.file) {
if (dojo.lang.isArray(kwArgs.file)) {
for (var i = 0; i < kwArgs.file.length; ++i) {
var o = kwArgs.file[i];
t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content);
}
} else {
var o = kwArgs.file;
t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content);
}
}
if (t.length) {
t.push("--" + this.multipartBoundary + "--", "");
query = t.join("\r\n");
}
} while (false);
var async = kwArgs["sync"] ? false : true;
var preventCache = kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false);
var useCache = kwArgs["useCache"] == true || (this.useCache == true && kwArgs["useCache"] != false);
if (!preventCache && useCache) {
var cachedHttp = getFromCache(url, query, kwArgs.method);
if (cachedHttp) {
doLoad(kwArgs, cachedHttp, url, query, false);
return;
}
}
var http = dojo.hostenv.getXmlhttpObject(kwArgs);
var received = false;
if (async) {
var startTime = this.inFlight.push({"req":kwArgs, "http":http, "url":url, "query":query, "useCache":useCache, "startTime":kwArgs.timeoutSeconds ? (new Date()).getTime() : 0});
this.startWatchingInFlight();
} else {
_this._blockAsync = true;
}
if (kwArgs.method.toLowerCase() == "post") {
if (!kwArgs.user) {
http.open("POST", url, async);
} else {
http.open("POST", url, async, kwArgs.user, kwArgs.password);
}
setHeaders(http, kwArgs);
http.setRequestHeader("Content-Type", kwArgs.multipart ? ("multipart/form-data; boundary=" + this.multipartBoundary) : (kwArgs.contentType || "application/x-www-form-urlencoded"));
try {
http.send(query);
}
catch (e) {
if (typeof http.abort == "function") {
http.abort();
}
doLoad(kwArgs, {status:404}, url, query, useCache);
}
} else {
var tmpUrl = url;
if (query != "") {
tmpUrl += (tmpUrl.indexOf("?") > -1 ? "&" : "?") + query;
}
if (preventCache) {
tmpUrl += (dojo.string.endsWithAny(tmpUrl, "?", "&") ? "" : (tmpUrl.indexOf("?") > -1 ? "&" : "?")) + "dojo.preventCache=" + new Date().valueOf();
}
if (!kwArgs.user) {
http.open(kwArgs.method.toUpperCase(), tmpUrl, async);
} else {
http.open(kwArgs.method.toUpperCase(), tmpUrl, async, kwArgs.user, kwArgs.password);
}
setHeaders(http, kwArgs);
try {
http.send(null);
}
catch (e) {
if (typeof http.abort == "function") {
http.abort();
}
doLoad(kwArgs, {status:404}, url, query, useCache);
}
}
if (!async) {
doLoad(kwArgs, http, url, query, useCache);
_this._blockAsync = false;
}
kwArgs.abort = function () {
try {
http._aborted = true;
}
catch (e) {
}
return http.abort();
};
return;
};
dojo.io.transports.addTransport("XMLHTTPTransport");
};
}
 
/trunk/api/js/dojo/src/io/IframeIO.js
New file
0,0 → 1,212
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.IframeIO");
dojo.require("dojo.io.BrowserIO");
dojo.require("dojo.uri.*");
dojo.io.createIFrame = function (fname, onloadstr, uri) {
if (window[fname]) {
return window[fname];
}
if (window.frames[fname]) {
return window.frames[fname];
}
var r = dojo.render.html;
var cframe = null;
var turi = uri;
if (!turi) {
if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) {
dojo.debug("dojo.io.createIFrame: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html");
}
turi = (djConfig["dojoIframeHistoryUrl"] || dojo.uri.moduleUri("dojo", "../iframe_history.html")) + "#noInit=true";
}
var ifrstr = ((r.ie) && (dojo.render.os.win)) ? "<iframe name=\"" + fname + "\" src=\"" + turi + "\" onload=\"" + onloadstr + "\">" : "iframe";
cframe = document.createElement(ifrstr);
with (cframe) {
name = fname;
setAttribute("name", fname);
id = fname;
}
dojo.body().appendChild(cframe);
window[fname] = cframe;
with (cframe.style) {
if (!r.safari) {
position = "absolute";
}
left = top = "0px";
height = width = "1px";
visibility = "hidden";
}
if (!r.ie) {
dojo.io.setIFrameSrc(cframe, turi, true);
cframe.onload = new Function(onloadstr);
}
return cframe;
};
dojo.io.IframeTransport = new function () {
var _this = this;
this.currentRequest = null;
this.requestQueue = [];
this.iframeName = "dojoIoIframe";
this.fireNextRequest = function () {
try {
if ((this.currentRequest) || (this.requestQueue.length == 0)) {
return;
}
var cr = this.currentRequest = this.requestQueue.shift();
cr._contentToClean = [];
var fn = cr["formNode"];
var content = cr["content"] || {};
if (cr.sendTransport) {
content["dojo.transport"] = "iframe";
}
if (fn) {
if (content) {
for (var x in content) {
if (!fn[x]) {
var tn;
if (dojo.render.html.ie) {
tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>");
fn.appendChild(tn);
} else {
tn = document.createElement("input");
fn.appendChild(tn);
tn.type = "hidden";
tn.name = x;
tn.value = content[x];
}
cr._contentToClean.push(x);
} else {
fn[x].value = content[x];
}
}
}
if (cr["url"]) {
cr._originalAction = fn.getAttribute("action");
fn.setAttribute("action", cr.url);
}
if (!fn.getAttribute("method")) {
fn.setAttribute("method", (cr["method"]) ? cr["method"] : "post");
}
cr._originalTarget = fn.getAttribute("target");
fn.setAttribute("target", this.iframeName);
fn.target = this.iframeName;
fn.submit();
} else {
var query = dojo.io.argsFromMap(this.currentRequest.content);
var tmpUrl = cr.url + (cr.url.indexOf("?") > -1 ? "&" : "?") + query;
dojo.io.setIFrameSrc(this.iframe, tmpUrl, true);
}
}
catch (e) {
this.iframeOnload(e);
}
};
this.canHandle = function (kwArgs) {
return ((dojo.lang.inArray(["text/plain", "text/html", "text/javascript", "text/json", "application/json"], kwArgs["mimetype"])) && (dojo.lang.inArray(["post", "get"], kwArgs["method"].toLowerCase())) && (!((kwArgs["sync"]) && (kwArgs["sync"] == true))));
};
this.bind = function (kwArgs) {
if (!this["iframe"]) {
this.setUpIframe();
}
this.requestQueue.push(kwArgs);
this.fireNextRequest();
return;
};
this.setUpIframe = function () {
this.iframe = dojo.io.createIFrame(this.iframeName, "dojo.io.IframeTransport.iframeOnload();");
};
this.iframeOnload = function (errorObject) {
if (!_this.currentRequest) {
_this.fireNextRequest();
return;
}
var req = _this.currentRequest;
if (req.formNode) {
var toClean = req._contentToClean;
for (var i = 0; i < toClean.length; i++) {
var key = toClean[i];
if (dojo.render.html.safari) {
var fNode = req.formNode;
for (var j = 0; j < fNode.childNodes.length; j++) {
var chNode = fNode.childNodes[j];
if (chNode.name == key) {
var pNode = chNode.parentNode;
pNode.removeChild(chNode);
break;
}
}
} else {
var input = req.formNode[key];
req.formNode.removeChild(input);
req.formNode[key] = null;
}
}
if (req["_originalAction"]) {
req.formNode.setAttribute("action", req._originalAction);
}
if (req["_originalTarget"]) {
req.formNode.setAttribute("target", req._originalTarget);
req.formNode.target = req._originalTarget;
}
}
var contentDoc = function (iframe_el) {
var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null;
return doc;
};
var value;
var success = false;
if (errorObject) {
this._callError(req, "IframeTransport Request Error: " + errorObject);
} else {
var ifd = contentDoc(_this.iframe);
try {
var cmt = req.mimetype;
if ((cmt == "text/javascript") || (cmt == "text/json") || (cmt == "application/json")) {
var js = ifd.getElementsByTagName("textarea")[0].value;
if (cmt == "text/json" || cmt == "application/json") {
js = "(" + js + ")";
}
value = dj_eval(js);
} else {
if (cmt == "text/html") {
value = ifd;
} else {
value = ifd.getElementsByTagName("textarea")[0].value;
}
}
success = true;
}
catch (e) {
this._callError(req, "IframeTransport Error: " + e);
}
}
try {
if (success && dojo.lang.isFunction(req["load"])) {
req.load("load", value, req);
}
}
catch (e) {
throw e;
}
finally {
_this.currentRequest = null;
_this.fireNextRequest();
}
};
this._callError = function (req, message) {
var errObj = new dojo.io.Error(message);
if (dojo.lang.isFunction(req["error"])) {
req.error("error", errObj, req);
}
};
dojo.io.transports.addTransport("IframeTransport");
};
 
/trunk/api/js/dojo/src/io/cometd.js
New file
0,0 → 1,528
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.require("dojo.io.common");
dojo.provide("dojo.io.cometd");
dojo.require("dojo.AdapterRegistry");
dojo.require("dojo.json");
dojo.require("dojo.io.BrowserIO");
dojo.require("dojo.io.IframeIO");
dojo.require("dojo.io.ScriptSrcIO");
dojo.require("dojo.io.cookie");
dojo.require("dojo.event.*");
dojo.require("dojo.lang.common");
dojo.require("dojo.lang.func");
cometd = new function () {
this.initialized = false;
this.connected = false;
this.connectionTypes = new dojo.AdapterRegistry(true);
this.version = 0.1;
this.minimumVersion = 0.1;
this.clientId = null;
this._isXD = false;
this.handshakeReturn = null;
this.currentTransport = null;
this.url = null;
this.lastMessage = null;
this.globalTopicChannels = {};
this.backlog = [];
this.tunnelInit = function (childLocation, childDomain) {
};
this.tunnelCollapse = function () {
dojo.debug("tunnel collapsed!");
};
this.init = function (props, root, bargs) {
props = props || {};
props.version = this.version;
props.minimumVersion = this.minimumVersion;
props.channel = "/meta/handshake";
this.url = root || djConfig["cometdRoot"];
if (!this.url) {
dojo.debug("no cometd root specified in djConfig and no root passed");
return;
}
var bindArgs = {url:this.url, method:"POST", mimetype:"text/json", load:dojo.lang.hitch(this, "finishInit"), content:{"message":dojo.json.serialize([props])}};
var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
var r = ("" + window.location).match(new RegExp(regexp));
if (r[4]) {
var tmp = r[4].split(":");
var thisHost = tmp[0];
var thisPort = tmp[1] || "80";
r = this.url.match(new RegExp(regexp));
if (r[4]) {
tmp = r[4].split(":");
var urlHost = tmp[0];
var urlPort = tmp[1] || "80";
if ((urlHost != thisHost) || (urlPort != thisPort)) {
dojo.debug(thisHost, urlHost);
dojo.debug(thisPort, urlPort);
this._isXD = true;
bindArgs.transport = "ScriptSrcTransport";
bindArgs.jsonParamName = "jsonp";
bindArgs.method = "GET";
}
}
}
if (bargs) {
dojo.lang.mixin(bindArgs, bargs);
}
return dojo.io.bind(bindArgs);
};
this.finishInit = function (type, data, evt, request) {
data = data[0];
this.handshakeReturn = data;
if (data["authSuccessful"] == false) {
dojo.debug("cometd authentication failed");
return;
}
if (data.version < this.minimumVersion) {
dojo.debug("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version);
return;
}
this.currentTransport = this.connectionTypes.match(data.supportedConnectionTypes, data.version, this._isXD);
this.currentTransport.version = data.version;
this.clientId = data.clientId;
this.tunnelInit = dojo.lang.hitch(this.currentTransport, "tunnelInit");
this.tunnelCollapse = dojo.lang.hitch(this.currentTransport, "tunnelCollapse");
this.initialized = true;
this.currentTransport.startup(data);
while (this.backlog.length != 0) {
var cur = this.backlog.shift();
var fn = cur.shift();
this[fn].apply(this, cur);
}
};
this._getRandStr = function () {
return Math.random().toString().substring(2, 10);
};
this.deliver = function (messages) {
dojo.lang.forEach(messages, this._deliver, this);
};
this._deliver = function (message) {
if (!message["channel"]) {
dojo.debug("cometd error: no channel for message!");
return;
}
if (!this.currentTransport) {
this.backlog.push(["deliver", message]);
return;
}
this.lastMessage = message;
if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) {
switch (message.channel) {
case "/meta/subscribe":
if (!message.successful) {
dojo.debug("cometd subscription error for channel", message.channel, ":", message.error);
return;
}
this.subscribed(message.subscription, message);
break;
case "/meta/unsubscribe":
if (!message.successful) {
dojo.debug("cometd unsubscription error for channel", message.channel, ":", message.error);
return;
}
this.unsubscribed(message.subscription, message);
break;
}
}
this.currentTransport.deliver(message);
if (message.data) {
var tname = (this.globalTopicChannels[message.channel]) ? message.channel : "/cometd" + message.channel;
dojo.event.topic.publish(tname, message);
}
};
this.disconnect = function () {
if (!this.currentTransport) {
dojo.debug("no current transport to disconnect from");
return;
}
this.currentTransport.disconnect();
};
this.publish = function (channel, data, properties) {
if (!this.currentTransport) {
this.backlog.push(["publish", channel, data, properties]);
return;
}
var message = {data:data, channel:channel};
if (properties) {
dojo.lang.mixin(message, properties);
}
return this.currentTransport.sendMessage(message);
};
this.subscribe = function (channel, useLocalTopics, objOrFunc, funcName) {
if (!this.currentTransport) {
this.backlog.push(["subscribe", channel, useLocalTopics, objOrFunc, funcName]);
return;
}
if (objOrFunc) {
var tname = (useLocalTopics) ? channel : "/cometd" + channel;
if (useLocalTopics) {
this.globalTopicChannels[channel] = true;
}
dojo.event.topic.subscribe(tname, objOrFunc, funcName);
}
return this.currentTransport.sendMessage({channel:"/meta/subscribe", subscription:channel});
};
this.subscribed = function (channel, message) {
dojo.debug(channel);
dojo.debugShallow(message);
};
this.unsubscribe = function (channel, useLocalTopics, objOrFunc, funcName) {
if (!this.currentTransport) {
this.backlog.push(["unsubscribe", channel, useLocalTopics, objOrFunc, funcName]);
return;
}
if (objOrFunc) {
var tname = (useLocalTopics) ? channel : "/cometd" + channel;
dojo.event.topic.unsubscribe(tname, objOrFunc, funcName);
}
return this.currentTransport.sendMessage({channel:"/meta/unsubscribe", subscription:channel});
};
this.unsubscribed = function (channel, message) {
dojo.debug(channel);
dojo.debugShallow(message);
};
};
cometd.iframeTransport = new function () {
this.connected = false;
this.connectionId = null;
this.rcvNode = null;
this.rcvNodeName = "";
this.phonyForm = null;
this.authToken = null;
this.lastTimestamp = null;
this.lastId = null;
this.backlog = [];
this.check = function (types, version, xdomain) {
return ((!xdomain) && (!dojo.render.html.safari) && (dojo.lang.inArray(types, "iframe")));
};
this.tunnelInit = function () {
this.postToIframe({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"iframe"}])});
};
this.tunnelCollapse = function () {
if (this.connected) {
this.connected = false;
this.postToIframe({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
}
};
this.deliver = function (message) {
if (message["timestamp"]) {
this.lastTimestamp = message.timestamp;
}
if (message["id"]) {
this.lastId = message.id;
}
if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) {
switch (message.channel) {
case "/meta/connect":
if (!message.successful) {
dojo.debug("cometd connection error:", message.error);
return;
}
this.connectionId = message.connectionId;
this.connected = true;
this.processBacklog();
break;
case "/meta/reconnect":
if (!message.successful) {
dojo.debug("cometd reconnection error:", message.error);
return;
}
this.connected = true;
break;
case "/meta/subscribe":
if (!message.successful) {
dojo.debug("cometd subscription error for channel", message.channel, ":", message.error);
return;
}
dojo.debug(message.channel);
break;
}
}
};
this.widenDomain = function (domainStr) {
var cd = domainStr || document.domain;
if (cd.indexOf(".") == -1) {
return;
}
var dps = cd.split(".");
if (dps.length <= 2) {
return;
}
dps = dps.slice(dps.length - 2);
document.domain = dps.join(".");
return document.domain;
};
this.postToIframe = function (content, url) {
if (!this.phonyForm) {
if (dojo.render.html.ie) {
this.phonyForm = document.createElement("<form enctype='application/x-www-form-urlencoded' method='POST' style='display: none;'>");
dojo.body().appendChild(this.phonyForm);
} else {
this.phonyForm = document.createElement("form");
this.phonyForm.style.display = "none";
dojo.body().appendChild(this.phonyForm);
this.phonyForm.enctype = "application/x-www-form-urlencoded";
this.phonyForm.method = "POST";
}
}
this.phonyForm.action = url || cometd.url;
this.phonyForm.target = this.rcvNodeName;
this.phonyForm.setAttribute("target", this.rcvNodeName);
while (this.phonyForm.firstChild) {
this.phonyForm.removeChild(this.phonyForm.firstChild);
}
for (var x in content) {
var tn;
if (dojo.render.html.ie) {
tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>");
this.phonyForm.appendChild(tn);
} else {
tn = document.createElement("input");
this.phonyForm.appendChild(tn);
tn.type = "hidden";
tn.name = x;
tn.value = content[x];
}
}
this.phonyForm.submit();
};
this.processBacklog = function () {
while (this.backlog.length > 0) {
this.sendMessage(this.backlog.shift(), true);
}
};
this.sendMessage = function (message, bypassBacklog) {
if ((bypassBacklog) || (this.connected)) {
message.connectionId = this.connectionId;
message.clientId = cometd.clientId;
var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}};
return dojo.io.bind(bindArgs);
} else {
this.backlog.push(message);
}
};
this.startup = function (handshakeData) {
dojo.debug("startup!");
dojo.debug(dojo.json.serialize(handshakeData));
if (this.connected) {
return;
}
this.rcvNodeName = "cometdRcv_" + cometd._getRandStr();
var initUrl = cometd.url + "/?tunnelInit=iframe";
if (false && dojo.render.html.ie) {
this.rcvNode = new ActiveXObject("htmlfile");
this.rcvNode.open();
this.rcvNode.write("<html>");
this.rcvNode.write("<script>document.domain = '" + document.domain + "'");
this.rcvNode.write("</html>");
this.rcvNode.close();
var ifrDiv = this.rcvNode.createElement("div");
this.rcvNode.appendChild(ifrDiv);
this.rcvNode.parentWindow.dojo = dojo;
ifrDiv.innerHTML = "<iframe src='" + initUrl + "'></iframe>";
} else {
this.rcvNode = dojo.io.createIFrame(this.rcvNodeName, "", initUrl);
}
};
};
cometd.mimeReplaceTransport = new function () {
this.connected = false;
this.connectionId = null;
this.xhr = null;
this.authToken = null;
this.lastTimestamp = null;
this.lastId = null;
this.backlog = [];
this.check = function (types, version, xdomain) {
return ((!xdomain) && (dojo.render.html.mozilla) && (dojo.lang.inArray(types, "mime-message-block")));
};
this.tunnelInit = function () {
if (this.connected) {
return;
}
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"mime-message-block"}])});
this.connected = true;
};
this.tunnelCollapse = function () {
if (this.connected) {
this.connected = false;
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
}
};
this.deliver = cometd.iframeTransport.deliver;
this.handleOnLoad = function (resp) {
cometd.deliver(dojo.json.evalJson(this.xhr.responseText));
};
this.openTunnelWith = function (content, url) {
this.xhr = dojo.hostenv.getXmlhttpObject();
this.xhr.multipart = true;
if (dojo.render.html.mozilla) {
this.xhr.addEventListener("load", dojo.lang.hitch(this, "handleOnLoad"), false);
} else {
if (dojo.render.html.safari) {
dojo.debug("Webkit is broken with multipart responses over XHR = (");
this.xhr.onreadystatechange = dojo.lang.hitch(this, "handleOnLoad");
} else {
this.xhr.onload = dojo.lang.hitch(this, "handleOnLoad");
}
}
this.xhr.open("POST", (url || cometd.url), true);
this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
dojo.debug(dojo.json.serialize(content));
this.xhr.send(dojo.io.argsFromMap(content, "utf8"));
};
this.processBacklog = function () {
while (this.backlog.length > 0) {
this.sendMessage(this.backlog.shift(), true);
}
};
this.sendMessage = function (message, bypassBacklog) {
if ((bypassBacklog) || (this.connected)) {
message.connectionId = this.connectionId;
message.clientId = cometd.clientId;
var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}};
return dojo.io.bind(bindArgs);
} else {
this.backlog.push(message);
}
};
this.startup = function (handshakeData) {
dojo.debugShallow(handshakeData);
if (this.connected) {
return;
}
this.tunnelInit();
};
};
cometd.longPollTransport = new function () {
this.connected = false;
this.connectionId = null;
this.authToken = null;
this.lastTimestamp = null;
this.lastId = null;
this.backlog = [];
this.check = function (types, version, xdomain) {
return ((!xdomain) && (dojo.lang.inArray(types, "long-polling")));
};
this.tunnelInit = function () {
if (this.connected) {
return;
}
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"long-polling"}])});
this.connected = true;
};
this.tunnelCollapse = function () {
if (!this.connected) {
this.connected = false;
dojo.debug("clientId:", cometd.clientId);
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
}
};
this.deliver = cometd.iframeTransport.deliver;
this.openTunnelWith = function (content, url) {
dojo.io.bind({url:(url || cometd.url), method:"post", content:content, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, data, evt, args) {
cometd.deliver(data);
this.connected = false;
this.tunnelCollapse();
}), error:function () {
dojo.debug("tunnel opening failed");
}});
this.connected = true;
};
this.processBacklog = function () {
while (this.backlog.length > 0) {
this.sendMessage(this.backlog.shift(), true);
}
};
this.sendMessage = function (message, bypassBacklog) {
if ((bypassBacklog) || (this.connected)) {
message.connectionId = this.connectionId;
message.clientId = cometd.clientId;
var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"post", mimetype:"text/json", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) {
cometd.deliver(data);
})};
return dojo.io.bind(bindArgs);
} else {
this.backlog.push(message);
}
};
this.startup = function (handshakeData) {
if (this.connected) {
return;
}
this.tunnelInit();
};
};
cometd.callbackPollTransport = new function () {
this.connected = false;
this.connectionId = null;
this.authToken = null;
this.lastTimestamp = null;
this.lastId = null;
this.backlog = [];
this.check = function (types, version, xdomain) {
return dojo.lang.inArray(types, "callback-polling");
};
this.tunnelInit = function () {
if (this.connected) {
return;
}
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"callback-polling"}])});
this.connected = true;
};
this.tunnelCollapse = function () {
if (!this.connected) {
this.connected = false;
this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
}
};
this.deliver = cometd.iframeTransport.deliver;
this.openTunnelWith = function (content, url) {
var req = dojo.io.bind({url:(url || cometd.url), content:content, mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", load:dojo.lang.hitch(this, function (type, data, evt, args) {
cometd.deliver(data);
this.connected = false;
this.tunnelCollapse();
}), error:function () {
dojo.debug("tunnel opening failed");
}});
this.connected = true;
};
this.processBacklog = function () {
while (this.backlog.length > 0) {
this.sendMessage(this.backlog.shift(), true);
}
};
this.sendMessage = function (message, bypassBacklog) {
if ((bypassBacklog) || (this.connected)) {
message.connectionId = this.connectionId;
message.clientId = cometd.clientId;
var bindArgs = {url:cometd.url || djConfig["cometdRoot"], mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) {
cometd.deliver(data);
}), };
return dojo.io.bind(bindArgs);
} else {
this.backlog.push(message);
}
};
this.startup = function (handshakeData) {
if (this.connected) {
return;
}
this.tunnelInit();
};
};
cometd.connectionTypes.register("mime-message-block", cometd.mimeReplaceTransport.check, cometd.mimeReplaceTransport);
cometd.connectionTypes.register("long-polling", cometd.longPollTransport.check, cometd.longPollTransport);
cometd.connectionTypes.register("callback-polling", cometd.callbackPollTransport.check, cometd.callbackPollTransport);
cometd.connectionTypes.register("iframe", cometd.iframeTransport.check, cometd.iframeTransport);
dojo.io.cometd = cometd;
 
/trunk/api/js/dojo/src/io/xip_server.html
New file
0,0 → 1,378
<!--
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
Pieces taken from Dojo source to make this file stand-alone
-->
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<script type="text/javascript" src="isAllowed.js"></script>
<!--
BY DEFAULT THIS FILE DOES NOT WORK SO THAT YOU DON'T ACCIDENTALLY EXPOSE
ALL OF YOUR XHR-ENABLED SERVICES ON YOUR SITE.
In order for this file to work, you should define a function with the following signature:
function isAllowedRequest(request){
return false;
}
Return true out of the function if you want to allow the cross-domain request.
DON'T DEFINE THIS FUNCTION IN THIS FILE! Define it in a separate file called isAllowed.js
and include it in this page with a script tag that has a src attribute pointing to the file.
See the very first script tag in this file for an example. You do not have to place the
script file in the same directory as this file, just update the path above if you move it
somewhere else.
Customize the isAllowedRequest function to restrict what types of requests are allowed
for this server. The request object has the following properties:
- requestHeaders: an object with the request headers that are to be added to
the XHR request.
- method: the HTTP method (GET, POST, etc...)
- uri: The URI for the request.
- data: The URL-encoded data for the request. For a GET request, this would
be the querystring parameters. For a POST request, it wll be the
body data.
See xip_client.html for more info on the xip fragment identifier protocol.
-->
<script type="text/javascript">
// <!--
djConfig = {
parseWidgets: false,
baseScriptUri: "./"
}
// -->
</script>
<script type="text/javascript">
// <!--
//Core XHR handling taken from Dojo IO code.
dojo = {};
dojo.hostenv = {};
// These are in order of decreasing likelihood; this will change in time.
dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
dojo.hostenv.getXmlhttpObject = function(){
var http = null;
var last_e = null;
try{ http = new XMLHttpRequest(); }catch(e){}
if(!http){
for(var i=0; i<3; ++i){
var progid = dojo.hostenv._XMLHTTP_PROGIDS[i];
try{
http = new ActiveXObject(progid);
}catch(e){
last_e = e;
}
if(http){
dojo.hostenv._XMLHTTP_PROGIDS = [progid]; // so faster next time
break;
}
}
/*if(http && !http.toString) {
http.toString = function() { "[object XMLHttpRequest]"; }
}*/
}
if(!http){
throw "xip_server.html: XMLHTTP not available: " + last_e;
}
return http;
}
 
dojo.setHeaders = function(http, headers){
if(headers) {
for(var header in headers) {
var headerValue = headers[header];
http.setRequestHeader(header, headerValue);
}
}
}
 
//MSIE has the lowest limit for URLs with fragment identifiers,
//at around 4K. Choosing a slightly smaller number for good measure.
xipUrlLimit = 4000;
xipIdCounter = 1;
 
function xipServerInit(){
xipStateId = "";
xipCurrentHash = "";
xipRequestMessage = "";
xipResponseParts = [];
xipPartIndex = 0;
}
 
function pollHash(){
//Can't use location.hash because at least Firefox does a decodeURIComponent on it.
var urlParts = window.location.href.split("#");
if(urlParts.length == 2){
var newHash = urlParts[1];
if(newHash != xipCurrentHash){
try{
messageReceived(newHash);
}catch(e){
//Make sure to not keep processing the error hash value.
xipCurrentHash = newHash;
throw e;
}
xipCurrentHash = newHash;
}
}
}
 
function messageReceived(encodedData){
var msg = unpackMessage(encodedData);
switch(msg.command){
case "ok":
sendResponsePart();
break;
case "start":
xipRequestMessage = "";
xipRequestMessage += msg.message;
setClientUrl("ok");
break;
case "part":
xipRequestMessage += msg.message;
setClientUrl("ok");
break;
case "end":
setClientUrl("ok");
xipRequestMessage += msg.message;
sendXhr();
break;
}
}
 
function sendResponse(encodedData){
//Break the message into parts, if necessary.
xipResponseParts = [];
var resData = encodedData;
var urlLength = xipClientUrl.length;
var partLength = xipUrlLimit - urlLength;
var resIndex = 0;
 
while((resData.length - resIndex) + urlLength > xipUrlLimit){
var part = resData.substring(resIndex, resIndex + partLength);
//Safari will do some extra hex escaping unless we keep the original hex
//escaping complete.
var percentIndex = part.lastIndexOf("%");
if(percentIndex == part.length - 1 || percentIndex == part.length - 2){
part = part.substring(0, percentIndex);
}
xipResponseParts.push(part);
resIndex += part.length;
}
xipResponseParts.push(resData.substring(resIndex, resData.length));
xipPartIndex = 0;
sendResponsePart();
}
function sendResponsePart(){
if(xipPartIndex < xipResponseParts.length){
//Get the message part.
var partData = xipResponseParts[xipPartIndex];
//Get the command.
var cmd = "part";
if(xipPartIndex + 1 == xipResponseParts.length){
cmd = "end";
}else if (xipPartIndex == 0){
cmd = "start";
}
 
setClientUrl(cmd, partData);
xipPartIndex++;
}else{
xipServerInit();
}
}
 
function setClientUrl(cmd, message){
var clientUrl = makeClientUrl(cmd, message);
//Safari won't let us replace across domains.
if(navigator.userAgent.indexOf("Safari") == -1){
parent.location.replace(clientUrl);
}else{
parent.location = clientUrl;
}
}
 
function makeClientUrl(cmd, message){
var clientUrl = xipClientUrl + "#" + (xipIdCounter++) + ":" + cmd;
if(message){
clientUrl += ":" + message;
}
return clientUrl
}
 
function xhrDone(xhr){
/* Need to pull off and return the following data:
- responseHeaders
- status
- statusText
- responseText
*/
var response = {};
if(typeof(xhr.getAllResponseHeaders) != "undefined"){
var allHeaders = xhr.getAllResponseHeaders();
if(allHeaders){
response.responseHeaders = allHeaders;
}
}
if(xhr.status == 0 || xhr.status){
response.status = xhr.status;
}
if(xhr.statusText){
response.statusText = xhr.statusText;
}
if(xhr.responseText){
response.responseText = xhr.responseText;
}
//Build a string of the response object.
var result = "";
var isFirst = true;
for (var param in response){
if(isFirst){
isFirst = false;
}else{
result += "&";
}
result += param + "=" + encodeURIComponent(response[param]);
}
sendResponse(result);
}
 
function sendXhr(){
var request = {};
var nvPairs = xipRequestMessage.split("&");
var i = 0;
var nameValue = null;
for(i = 0; i < nvPairs.length; i++){
if(nvPairs[i]){
var nameValue = nvPairs[i].split("=");
request[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
}
}
 
//Split up the request headers, if any.
var headers = {};
if(request.requestHeaders){
nvPairs = request.requestHeaders.split("\r\n");
for(i = 0; i < nvPairs.length; i++){
if(nvPairs[i]){
nameValue = nvPairs[i].split(": ");
headers[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
}
}
 
request.requestHeaders = headers;
}
if(isAllowedRequest(request)){
//The request is allowed, so set up the XHR object.
var xhr = dojo.hostenv.getXmlhttpObject();
//Start timer to look for readyState.
var xhrIntervalId = setInterval(function(){
if(xhr.readyState == 4){
clearInterval(xhrIntervalId);
xhrDone(xhr);
}
}, 10);
 
//Actually start up the XHR request.
xhr.open(request.method, request.uri, true);
dojo.setHeaders(xhr, request.requestHeaders);
var content = "";
if(request.data){
content = request.data;
}
 
try{
xhr.send(content);
}catch(e){
if(typeof xhr.abort == "function"){
xhr.abort();
xhrDone({status: 404, statusText: "xip_server.html error: " + e});
}
}
}
}
 
function unpackMessage(encodedMessage){
var parts = encodedMessage.split(":");
var command = parts[1];
encodedMessage = parts[2] || "";
 
var config = null;
if(command == "init"){
var configParts = encodedMessage.split("&");
config = {};
for(var i = 0; i < configParts.length; i++){
var nameValue = configParts[i].split("=");
config[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
}
}
return {command: command, message: encodedMessage, config: config};
}
 
function onServerLoad(){
xipServerInit();
 
//Decode the init params
var config = unpackMessage(window.location.href.split("#")[1]).config;
 
xipStateId = config.id;
xipClientUrl = config.client;
xipUseFrameRecursion = config["fr"];
 
setInterval(pollHash, 10);
if(xipUseFrameRecursion == "true"){
var serverUrl = window.location.href.split("#")[0];
document.getElementById("iframeHolder").innerHTML = '<iframe src="'
+ makeClientUrl("init", 'id=' + xipStateId + '&server=' + encodeURIComponent(serverUrl)
+ '&fr=endpoint') + '" name="' + xipStateId + '_clientEndPoint"></iframe>';
}else{
setClientUrl("loaded");
}
}
 
if(typeof(window.addEventListener) == "undefined"){
window.attachEvent("onload", onServerLoad);
}else{
window.addEventListener('load', onServerLoad, false);
}
// -->
</script>
</head>
<body>
<h4>The Dojo Toolkit -- xip_server.html</h4>
 
<p>This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the the file
that should go on the server that will actually be doing the XHR request.</p>
<div id="iframeHolder"></div>
</body>
</html>
/trunk/api/js/dojo/src/io/RepubsubIO.js
New file
0,0 → 1,337
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
 
 
dojo.require("dojo.event.*");
dojo.require("dojo.io.BrowserIO");
dojo.provide("dojo.io.RepubsubIO");
dojo.io.repubsubTranport = new function () {
var rps = dojo.io.repubsub;
this.canHandle = function (kwArgs) {
if ((kwArgs["mimetype"] == "text/javascript") && (kwArgs["method"] == "repubsub")) {
return true;
}
return false;
};
this.bind = function (kwArgs) {
if (!rps.isInitialized) {
rps.init();
}
if (!rps.topics[kwArgs.url]) {
kwArgs.rpsLoad = function (evt) {
kwArgs.load("load", evt);
};
rps.subscribe(kwArgs.url, kwArgs, "rpsLoad");
}
if (kwArgs["content"]) {
var cEvt = dojo.io.repubsubEvent.initFromProperties(kwArgs.content);
rps.publish(kwArgs.url, cEvt);
}
};
dojo.io.transports.addTransport("repubsubTranport");
};
dojo.io.repubsub = new function () {
this.initDoc = "init.html";
this.isInitialized = false;
this.subscriptionBacklog = [];
this.debug = true;
this.rcvNodeName = null;
this.sndNodeName = null;
this.rcvNode = null;
this.sndNode = null;
this.canRcv = false;
this.canSnd = false;
this.canLog = false;
this.sndTimer = null;
this.windowRef = window;
this.backlog = [];
this.tunnelInitCount = 0;
this.tunnelFrameKey = "tunnel_frame";
this.serverBaseURL = location.protocol + "//" + location.host + location.pathname;
this.logBacklog = [];
this.getRandStr = function () {
return Math.random().toString().substring(2, 10);
};
this.userid = "guest";
this.tunnelID = this.getRandStr();
this.attachPathList = [];
this.topics = [];
this.parseGetStr = function () {
var baseUrl = document.location.toString();
var params = baseUrl.split("?", 2);
if (params.length > 1) {
var paramStr = params[1];
var pairs = paramStr.split("&");
var opts = [];
for (var x in pairs) {
var sp = pairs[x].split("=");
try {
opts[sp[0]] = eval(sp[1]);
}
catch (e) {
opts[sp[0]] = sp[1];
}
}
return opts;
} else {
return [];
}
};
var getOpts = this.parseGetStr();
for (var x in getOpts) {
this[x] = getOpts[x];
}
if (!this["tunnelURI"]) {
this.tunnelURI = ["/who/", escape(this.userid), "/s/", this.getRandStr(), "/kn_journal"].join("");
}
if (window["repubsubOpts"] || window["rpsOpts"]) {
var optObj = window["repubsubOpts"] || window["rpsOpts"];
for (var x in optObj) {
this[x] = optObj[x];
}
}
this.tunnelCloseCallback = function () {
dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain);
};
this.receiveEventFromTunnel = function (evt, srcWindow) {
if (!evt["elements"]) {
this.log("bailing! event received without elements!", "error");
return;
}
var e = {};
for (var i = 0; i < evt.elements.length; i++) {
var ee = evt.elements[i];
e[ee.name || ee.nameU] = (ee.value || ee.valueU);
this.log("[event]: " + (ee.name || ee.nameU) + ": " + e[ee.name || ee.nameU]);
}
this.dispatch(e);
};
this.widenDomain = function (domainStr) {
var cd = domainStr || document.domain;
if (cd.indexOf(".") == -1) {
return;
}
var dps = cd.split(".");
if (dps.length <= 2) {
return;
}
dps = dps.slice(dps.length - 2);
document.domain = dps.join(".");
};
this.parseCookie = function () {
var cs = document.cookie;
var keypairs = cs.split(";");
for (var x = 0; x < keypairs.length; x++) {
keypairs[x] = keypairs[x].split("=");
if (x != keypairs.length - 1) {
cs += ";";
}
}
return keypairs;
};
this.setCookie = function (keypairs, clobber) {
if ((clobber) && (clobber == true)) {
document.cookie = "";
}
var cs = "";
for (var x = 0; x < keypairs.length; x++) {
cs += keypairs[x][0] + "=" + keypairs[x][1];
if (x != keypairs.length - 1) {
cs += ";";
}
}
document.cookie = cs;
};
this.log = function (str, lvl) {
if (!this.debug) {
return;
}
while (this.logBacklog.length > 0) {
if (!this.canLog) {
break;
}
var blo = this.logBacklog.shift();
this.writeLog("[" + blo[0] + "]: " + blo[1], blo[2]);
}
this.writeLog(str, lvl);
};
this.writeLog = function (str, lvl) {
dojo.debug(((new Date()).toLocaleTimeString()) + ": " + str);
};
this.init = function () {
this.widenDomain();
this.openTunnel();
this.isInitialized = true;
while (this.subscriptionBacklog.length) {
this.subscribe.apply(this, this.subscriptionBacklog.shift());
}
};
this.clobber = function () {
if (this.rcvNode) {
this.setCookie([[this.tunnelFrameKey, "closed"], ["path", "/"]], false);
}
};
this.openTunnel = function () {
this.rcvNodeName = "rcvIFrame_" + this.getRandStr();
this.setCookie([[this.tunnelFrameKey, this.rcvNodeName], ["path", "/"]], false);
this.rcvNode = dojo.io.createIFrame(this.rcvNodeName);
dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain);
this.sndNodeName = "sndIFrame_" + this.getRandStr();
this.sndNode = dojo.io.createIFrame(this.sndNodeName);
dojo.io.setIFrameSrc(this.sndNode, this.initDoc + "?callback=repubsub.sndNodeReady&domain=" + document.domain);
};
this.rcvNodeReady = function () {
var statusURI = [this.tunnelURI, "/kn_status/", this.getRandStr(), "_", String(this.tunnelInitCount++)].join("");
this.log("rcvNodeReady");
var initURIArr = [this.serverBaseURL, "/kn?kn_from=", escape(this.tunnelURI), "&kn_id=", escape(this.tunnelID), "&kn_status_from=", escape(statusURI)];
dojo.io.setIFrameSrc(this.rcvNode, initURIArr.join(""));
this.subscribe(statusURI, this, "statusListener", true);
this.log(initURIArr.join(""));
};
this.sndNodeReady = function () {
this.canSnd = true;
this.log("sndNodeReady");
this.log(this.backlog.length);
if (this.backlog.length > 0) {
this.dequeueEvent();
}
};
this.statusListener = function (evt) {
this.log("status listener called");
this.log(evt.status, "info");
};
this.dispatch = function (evt) {
if (evt["to"] || evt["kn_routed_from"]) {
var rf = evt["to"] || evt["kn_routed_from"];
var topic = rf.split(this.serverBaseURL, 2)[1];
if (!topic) {
topic = rf;
}
this.log("[topic] " + topic);
if (topic.length > 3) {
if (topic.slice(0, 3) == "/kn") {
topic = topic.slice(3);
}
}
if (this.attachPathList[topic]) {
this.attachPathList[topic](evt);
}
}
};
this.subscribe = function (topic, toObj, toFunc, dontTellServer) {
if (!this.isInitialized) {
this.subscriptionBacklog.push([topic, toObj, toFunc, dontTellServer]);
return;
}
if (!this.attachPathList[topic]) {
this.attachPathList[topic] = function () {
return true;
};
this.log("subscribing to: " + topic);
this.topics.push(topic);
}
var revt = new dojo.io.repubsubEvent(this.tunnelURI, topic, "route");
var rstr = [this.serverBaseURL + "/kn", revt.toGetString()].join("");
dojo.event.kwConnect({once:true, srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc});
if (!this.rcvNode) {
}
if (dontTellServer) {
return;
}
this.log("sending subscription to: " + topic);
this.sendTopicSubToServer(topic, rstr);
};
this.sendTopicSubToServer = function (topic, str) {
if (!this.attachPathList[topic]["subscriptions"]) {
this.enqueueEventStr(str);
this.attachPathList[topic].subscriptions = 0;
}
this.attachPathList[topic].subscriptions++;
};
this.unSubscribe = function (topic, toObj, toFunc) {
dojo.event.kwDisconnect({srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc});
};
this.publish = function (topic, event) {
var evt = dojo.io.repubsubEvent.initFromProperties(event);
evt.to = topic;
var evtURLParts = [];
evtURLParts.push(this.serverBaseURL + "/kn");
evtURLParts.push(evt.toGetString());
this.enqueueEventStr(evtURLParts.join(""));
};
this.enqueueEventStr = function (evtStr) {
this.log("enqueueEventStr");
this.backlog.push(evtStr);
this.dequeueEvent();
};
this.dequeueEvent = function (force) {
this.log("dequeueEvent");
if (this.backlog.length <= 0) {
return;
}
if ((this.canSnd) || (force)) {
dojo.io.setIFrameSrc(this.sndNode, this.backlog.shift() + "&callback=repubsub.sndNodeReady");
this.canSnd = false;
} else {
this.log("sndNode not available yet!", "debug");
}
};
};
dojo.io.repubsubEvent = function (to, from, method, id, routeURI, payload, dispname, uid) {
this.to = to;
this.from = from;
this.method = method || "route";
this.id = id || repubsub.getRandStr();
this.uri = routeURI;
this.displayname = dispname || repubsub.displayname;
this.userid = uid || repubsub.userid;
this.payload = payload || "";
this.flushChars = 4096;
this.initFromProperties = function (evt) {
if (evt.constructor = dojo.io.repubsubEvent) {
for (var x in evt) {
this[x] = evt[x];
}
} else {
for (var x in evt) {
if (typeof this.forwardPropertiesMap[x] == "string") {
this[this.forwardPropertiesMap[x]] = evt[x];
} else {
this[x] = evt[x];
}
}
}
};
this.toGetString = function (noQmark) {
var qs = [((noQmark) ? "" : "?")];
for (var x = 0; x < this.properties.length; x++) {
var tp = this.properties[x];
if (this[tp[0]]) {
qs.push(tp[1] + "=" + encodeURIComponent(String(this[tp[0]])));
}
}
return qs.join("&");
};
};
dojo.io.repubsubEvent.prototype.properties = [["from", "kn_from"], ["to", "kn_to"], ["method", "do_method"], ["id", "kn_id"], ["uri", "kn_uri"], ["displayname", "kn_displayname"], ["userid", "kn_userid"], ["payload", "kn_payload"], ["flushChars", "kn_response_flush"], ["responseFormat", "kn_response_format"]];
dojo.io.repubsubEvent.prototype.forwardPropertiesMap = {};
dojo.io.repubsubEvent.prototype.reversePropertiesMap = {};
for (var x = 0; x < dojo.io.repubsubEvent.prototype.properties.length; x++) {
var tp = dojo.io.repubsubEvent.prototype.properties[x];
dojo.io.repubsubEvent.prototype.reversePropertiesMap[tp[0]] = tp[1];
dojo.io.repubsubEvent.prototype.forwardPropertiesMap[tp[1]] = tp[0];
}
dojo.io.repubsubEvent.initFromProperties = function (evt) {
var eventObj = new dojo.io.repubsubEvent();
eventObj.initFromProperties(evt);
return eventObj;
};
 
/trunk/api/js/dojo/src/io/ScriptSrcIO.js
New file
0,0 → 1,315
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.ScriptSrcIO");
dojo.require("dojo.io.BrowserIO");
dojo.require("dojo.undo.browser");
dojo.io.ScriptSrcTransport = new function () {
this.preventCache = false;
this.maxUrlLength = 1000;
this.inFlightTimer = null;
this.DsrStatusCodes = {Continue:100, Ok:200, Error:500};
this.startWatchingInFlight = function () {
if (!this.inFlightTimer) {
this.inFlightTimer = setInterval("dojo.io.ScriptSrcTransport.watchInFlight();", 100);
}
};
this.watchInFlight = function () {
var totalCount = 0;
var doneCount = 0;
for (var param in this._state) {
totalCount++;
var currentState = this._state[param];
if (currentState.isDone) {
doneCount++;
delete this._state[param];
} else {
if (!currentState.isFinishing) {
var listener = currentState.kwArgs;
try {
if (currentState.checkString && eval("typeof(" + currentState.checkString + ") != 'undefined'")) {
currentState.isFinishing = true;
this._finish(currentState, "load");
doneCount++;
delete this._state[param];
} else {
if (listener.timeoutSeconds && listener.timeout) {
if (currentState.startTime + (listener.timeoutSeconds * 1000) < (new Date()).getTime()) {
currentState.isFinishing = true;
this._finish(currentState, "timeout");
doneCount++;
delete this._state[param];
}
} else {
if (!listener.timeoutSeconds) {
doneCount++;
}
}
}
}
catch (e) {
currentState.isFinishing = true;
this._finish(currentState, "error", {status:this.DsrStatusCodes.Error, response:e});
}
}
}
}
if (doneCount >= totalCount) {
clearInterval(this.inFlightTimer);
this.inFlightTimer = null;
}
};
this.canHandle = function (kwArgs) {
return dojo.lang.inArray(["text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase())) && (kwArgs["method"].toLowerCase() == "get") && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])) && (!kwArgs["sync"] || kwArgs["sync"] == false) && !kwArgs["file"] && !kwArgs["multipart"];
};
this.removeScripts = function () {
var scripts = document.getElementsByTagName("script");
for (var i = 0; scripts && i < scripts.length; i++) {
var scriptTag = scripts[i];
if (scriptTag.className == "ScriptSrcTransport") {
var parent = scriptTag.parentNode;
parent.removeChild(scriptTag);
i--;
}
}
};
this.bind = function (kwArgs) {
var url = kwArgs.url;
var query = "";
if (kwArgs["formNode"]) {
var ta = kwArgs.formNode.getAttribute("action");
if ((ta) && (!kwArgs["url"])) {
url = ta;
}
var tp = kwArgs.formNode.getAttribute("method");
if ((tp) && (!kwArgs["method"])) {
kwArgs.method = tp;
}
query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
}
if (url.indexOf("#") > -1) {
dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
url = url.split("#")[0];
}
var urlParts = url.split("?");
if (urlParts && urlParts.length == 2) {
url = urlParts[0];
query += (query ? "&" : "") + urlParts[1];
}
if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) {
dojo.undo.browser.addToHistory(kwArgs);
}
var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++;
var content = kwArgs["content"];
var jsonpName = kwArgs.jsonParamName;
if (kwArgs.sendTransport || jsonpName) {
if (!content) {
content = {};
}
if (kwArgs.sendTransport) {
content["dojo.transport"] = "scriptsrc";
}
if (jsonpName) {
content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall";
}
}
if (kwArgs.postContent) {
query = kwArgs.postContent;
} else {
if (content) {
query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName);
}
}
if (kwArgs["apiId"]) {
kwArgs["useRequestId"] = true;
}
var state = {"id":id, "idParam":"_dsrid=" + id, "url":url, "query":query, "kwArgs":kwArgs, "startTime":(new Date()).getTime(), "isFinishing":false};
if (!url) {
this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.none"});
return;
}
if (content && content[jsonpName]) {
state.jsonp = content[jsonpName];
state.jsonpCall = function (data) {
if (data["Error"] || data["error"]) {
if (dojo["json"] && dojo["json"]["serialize"]) {
dojo.debug(dojo.json.serialize(data));
}
dojo.io.ScriptSrcTransport._finish(this, "error", data);
} else {
dojo.io.ScriptSrcTransport._finish(this, "load", data);
}
};
}
if (kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]) {
this._state[id] = state;
}
if (kwArgs["checkString"]) {
state.checkString = kwArgs["checkString"];
}
state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]);
if (kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false)) {
state.nocacheParam = "dojo.preventCache=" + new Date().valueOf();
} else {
state.nocacheParam = "";
}
var urlLength = state.url.length + state.query.length + state.constantParams.length + state.nocacheParam.length + this._extraPaddingLength;
if (kwArgs["useRequestId"]) {
urlLength += state.idParam.length;
}
if (!kwArgs["checkString"] && kwArgs["useRequestId"] && !state["jsonp"] && !kwArgs["forceSingleRequest"] && urlLength > this.maxUrlLength) {
if (url > this.maxUrlLength) {
this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.tooBig"});
return;
} else {
this._multiAttach(state, 1);
}
} else {
var queryParams = [state.constantParams, state.nocacheParam, state.query];
if (kwArgs["useRequestId"] && !state["jsonp"]) {
queryParams.unshift(state.idParam);
}
var finalUrl = this._buildUrl(state.url, queryParams);
state.finalUrl = finalUrl;
this._attach(state.id, finalUrl);
}
this.startWatchingInFlight();
};
this._counter = 1;
this._state = {};
this._extraPaddingLength = 16;
this._buildUrl = function (url, nameValueArray) {
var finalUrl = url;
var joiner = "?";
for (var i = 0; i < nameValueArray.length; i++) {
if (nameValueArray[i]) {
finalUrl += joiner + nameValueArray[i];
joiner = "&";
}
}
return finalUrl;
};
this._attach = function (id, url) {
var element = document.createElement("script");
element.type = "text/javascript";
element.src = url;
element.id = id;
element.className = "ScriptSrcTransport";
document.getElementsByTagName("head")[0].appendChild(element);
};
this._multiAttach = function (state, part) {
if (state.query == null) {
this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"query.null"});
return;
}
if (!state.constantParams) {
state.constantParams = "";
}
var queryMax = this.maxUrlLength - state.idParam.length - state.constantParams.length - state.url.length - state.nocacheParam.length - this._extraPaddingLength;
var isDone = state.query.length < queryMax;
var currentQuery;
if (isDone) {
currentQuery = state.query;
state.query = null;
} else {
var ampEnd = state.query.lastIndexOf("&", queryMax - 1);
var eqEnd = state.query.lastIndexOf("=", queryMax - 1);
if (ampEnd > eqEnd || eqEnd == queryMax - 1) {
currentQuery = state.query.substring(0, ampEnd);
state.query = state.query.substring(ampEnd + 1, state.query.length);
} else {
currentQuery = state.query.substring(0, queryMax);
var queryName = currentQuery.substring((ampEnd == -1 ? 0 : ampEnd + 1), eqEnd);
state.query = queryName + "=" + state.query.substring(queryMax, state.query.length);
}
}
var queryParams = [currentQuery, state.idParam, state.constantParams, state.nocacheParam];
if (!isDone) {
queryParams.push("_part=" + part);
}
var url = this._buildUrl(state.url, queryParams);
this._attach(state.id + "_" + part, url);
};
this._finish = function (state, callback, event) {
if (callback != "partOk" && !state.kwArgs[callback] && !state.kwArgs["handle"]) {
if (callback == "error") {
state.isDone = true;
throw event;
}
} else {
switch (callback) {
case "load":
var response = event ? event.response : null;
if (!response) {
response = event;
}
state.kwArgs[(typeof state.kwArgs.load == "function") ? "load" : "handle"]("load", response, event, state.kwArgs);
state.isDone = true;
break;
case "partOk":
var part = parseInt(event.response.part, 10) + 1;
if (event.response.constantParams) {
state.constantParams = event.response.constantParams;
}
this._multiAttach(state, part);
state.isDone = false;
break;
case "error":
state.kwArgs[(typeof state.kwArgs.error == "function") ? "error" : "handle"]("error", event.response, event, state.kwArgs);
state.isDone = true;
break;
default:
state.kwArgs[(typeof state.kwArgs[callback] == "function") ? callback : "handle"](callback, event, event, state.kwArgs);
state.isDone = true;
}
}
};
dojo.io.transports.addTransport("ScriptSrcTransport");
};
window.onscriptload = function (event) {
var state = null;
var transport = dojo.io.ScriptSrcTransport;
if (transport._state[event.id]) {
state = transport._state[event.id];
} else {
var tempState;
for (var param in transport._state) {
tempState = transport._state[param];
if (tempState.finalUrl && tempState.finalUrl == event.id) {
state = tempState;
break;
}
}
if (state == null) {
var scripts = document.getElementsByTagName("script");
for (var i = 0; scripts && i < scripts.length; i++) {
var scriptTag = scripts[i];
if (scriptTag.getAttribute("class") == "ScriptSrcTransport" && scriptTag.src == event.id) {
state = transport._state[scriptTag.id];
break;
}
}
}
if (state == null) {
throw "No matching state for onscriptload event.id: " + event.id;
}
}
var callbackName = "error";
switch (event.status) {
case dojo.io.ScriptSrcTransport.DsrStatusCodes.Continue:
callbackName = "partOk";
break;
case dojo.io.ScriptSrcTransport.DsrStatusCodes.Ok:
callbackName = "load";
break;
}
transport._finish(state, callbackName, event);
};
 
/trunk/api/js/dojo/src/io/xip_client.html
New file
0,0 → 1,261
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<script type="text/javascript">
// <!--
/*
This file is really focused on just sending one message to the server, and
receiving one response. The code does not expect to be re-used for multiple messages.
This might be reworked later if performance indicates a need for it.
xip fragment identifier/hash values have the form:
#id:cmd:realEncodedMessage
 
id: some ID that should be unique among messages. No inherent meaning,
just something to make sure the hash value is unique so the message
receiver knows a new message is available.
cmd: command to the receiver. Valid values are:
- init: message used to init the frame. Sent as the first URL when loading
the page. Contains some config parameters.
- loaded: the remote frame is loaded. Only sent from server to client.
- ok: the message that this page sent was received OK. The next message may
now be sent.
- start: the start message of a block of messages (a complete message may
need to be segmented into many messages to get around the limitiations
of the size of an URL that a browser accepts.
- part: indicates this is a part of a message.
- end: the end message of a block of messages. The message can now be acted upon.
If the message is small enough that it doesn't need to be segmented, then
just one hash value message can be sent with "end" as the command.
To reassemble a segmented message, the realEncodedMessage parts just have to be concatenated
together.
*/
 
//MSIE has the lowest limit for URLs with fragment identifiers,
//at around 4K. Choosing a slightly smaller number for good measure.
xipUrlLimit = 4000;
xipIdCounter = 1;
 
function xipInit(){
xipStateId = "";
xipIsSending = false;
xipServerUrl = null;
xipStateId = null;
xipRequestData = null;
xipCurrentHash = "";
xipResponseMessage = "";
xipRequestParts = [];
xipPartIndex = 0;
xipServerWindow = null;
xipUseFrameRecursion = false;
}
xipInit();
function send(encodedData){
if(xipUseFrameRecursion == "true"){
var clientEndPoint = window.open(xipStateId + "_clientEndPoint");
clientEndPoint.send(encodedData);
}else{
if(!xipIsSending){
xipIsSending = true;
xipRequestData = encodedData || "";
 
//Get a handle to the server iframe.
xipServerWindow = frames[xipStateId + "_frame"];
if (!xipServerWindow){
xipServerWindow = document.getElementById(xipStateId + "_frame").contentWindow;
}
sendRequestStart();
}
}
}
 
//Modify the server URL if it is a local path and
//This is done for local/same domain testing.
function fixServerUrl(ifpServerUrl){
if(ifpServerUrl.indexOf("..") == 0){
var parts = ifpServerUrl.split("/");
ifpServerUrl = parts[parts.length - 1];
}
return ifpServerUrl;
}
function pollHash(){
//Can't use location.hash because at least Firefox does a decodeURIComponent on it.
var urlParts = window.location.href.split("#");
if(urlParts.length == 2){
var newHash = urlParts[1];
if(newHash != xipCurrentHash){
try{
messageReceived(newHash);
}catch(e){
//Make sure to not keep processing the error hash value.
xipCurrentHash = newHash;
throw e;
}
xipCurrentHash = newHash;
}
}
}
 
function messageReceived(encodedData){
var msg = unpackMessage(encodedData);
 
switch(msg.command){
case "loaded":
xipMasterFrame.dojo.io.XhrIframeProxy.clientFrameLoaded(xipStateId);
break;
case "ok":
sendRequestPart();
break;
case "start":
xipResponseMessage = "";
xipResponseMessage += msg.message;
setServerUrl("ok");
break;
case "part":
xipResponseMessage += msg.message;
setServerUrl("ok");
break;
case "end":
setServerUrl("ok");
xipResponseMessage += msg.message;
xipMasterFrame.dojo.io.XhrIframeProxy.receive(xipStateId, xipResponseMessage);
break;
}
}
function sendRequestStart(){
//Break the message into parts, if necessary.
xipRequestParts = [];
var reqData = xipRequestData;
var urlLength = xipServerUrl.length;
var partLength = xipUrlLimit - urlLength;
var reqIndex = 0;
 
while((reqData.length - reqIndex) + urlLength > xipUrlLimit){
var part = reqData.substring(reqIndex, reqIndex + partLength);
//Safari will do some extra hex escaping unless we keep the original hex
//escaping complete.
var percentIndex = part.lastIndexOf("%");
if(percentIndex == part.length - 1 || percentIndex == part.length - 2){
part = part.substring(0, percentIndex);
}
xipRequestParts.push(part);
reqIndex += part.length;
}
xipRequestParts.push(reqData.substring(reqIndex, reqData.length));
xipPartIndex = 0;
sendRequestPart();
}
function sendRequestPart(){
if(xipPartIndex < xipRequestParts.length){
//Get the message part.
var partData = xipRequestParts[xipPartIndex];
 
//Get the command.
var cmd = "part";
if(xipPartIndex + 1 == xipRequestParts.length){
cmd = "end";
}else if (xipPartIndex == 0){
cmd = "start";
}
setServerUrl(cmd, partData);
xipPartIndex++;
}
}
function setServerUrl(cmd, message){
var serverUrl = makeServerUrl(cmd, message);
 
//Safari won't let us replace across domains.
if(navigator.userAgent.indexOf("Safari") == -1){
xipServerWindow.location.replace(serverUrl);
}else{
xipServerWindow.location = serverUrl;
}
}
function makeServerUrl(cmd, message){
var serverUrl = xipServerUrl + "#" + (xipIdCounter++) + ":" + cmd;
if(message){
serverUrl += ":" + message;
}
return serverUrl;
}
 
function unpackMessage(encodedMessage){
var parts = encodedMessage.split(":");
var command = parts[1];
encodedMessage = parts[2] || "";
 
var config = null;
if(command == "init"){
var configParts = encodedMessage.split("&");
config = {};
for(var i = 0; i < configParts.length; i++){
var nameValue = configParts[i].split("=");
config[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
}
}
return {command: command, message: encodedMessage, config: config};
}
 
function onClientLoad(){
//Decode the init params
var config = unpackMessage(window.location.href.split("#")[1]).config;
 
xipStateId = config.id;
 
//Remove the query param for the IE7 recursive case.
xipServerUrl = fixServerUrl(config.server).replace(/(\?|\&)dojo\.fr\=1/, "");
xipUseFrameRecursion = config["fr"];
if(xipUseFrameRecursion == "endpoint"){
xipMasterFrame = parent.parent;
}else{
xipMasterFrame = parent;
}
//Start counter to inspect hash value.
setInterval(pollHash, 10);
 
var clientUrl = window.location.href.split("#")[0];
document.getElementById("iframeHolder").innerHTML = '<iframe src="'
+ makeServerUrl("init", 'id=' + xipStateId + '&client=' + encodeURIComponent(clientUrl)
+ '&fr=' + xipUseFrameRecursion) + '" id="' + xipStateId + '_frame"></iframe>';
}
 
if(typeof(window.addEventListener) == "undefined"){
window.attachEvent("onload", onClientLoad);
}else{
window.addEventListener('load', onClientLoad, false);
}
// -->
</script>
</head>
<body>
<h4>The Dojo Toolkit -- xip_client.html</h4>
 
<p>This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the "client" file used
internally by dojo.io.XhrIframeProxy.</p>
<span id="iframeHolder"></span>
</body>
</html>
/trunk/api/js/dojo/src/io/RhinoIO.js
New file
0,0 → 1,114
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.RhinoIO");
dojo.require("dojo.io.common");
dojo.require("dojo.lang.func");
dojo.require("dojo.lang.array");
dojo.require("dojo.string.extras");
dojo.io.RhinoHTTPTransport = new function () {
this.canHandle = function (req) {
if (dojo.lang.find(["text/plain", "text/html", "text/xml", "text/javascript", "text/json", "application/json"], (req.mimetype.toLowerCase() || "")) < 0) {
return false;
}
if (req.url.substr(0, 7) != "http://") {
return false;
}
return true;
};
function doLoad(req, conn) {
var ret;
if (req.method.toLowerCase() == "head") {
} else {
var stream = conn.getContent();
var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream));
var text = "";
var line = null;
while ((line = reader.readLine()) != null) {
text += line;
}
if (req.mimetype == "text/javascript") {
try {
ret = dj_eval(text);
}
catch (e) {
dojo.debug(e);
dojo.debug(text);
ret = null;
}
} else {
if (req.mimetype == "text/json" || req.mimetype == "application/json") {
try {
ret = dj_eval("(" + text + ")");
}
catch (e) {
dojo.debug(e);
dojo.debug(text);
ret = false;
}
} else {
ret = text;
}
}
}
req.load("load", ret, req);
}
function connect(req) {
var content = req.content || {};
var query;
if (req.sendTransport) {
content["dojo.transport"] = "rhinohttp";
}
if (req.postContent) {
query = req.postContent;
} else {
query = dojo.io.argsFromMap(content, req.encoding);
}
var url_text = req.url;
if (req.method.toLowerCase() == "get" && query != "") {
url_text = url_text + "?" + query;
}
var url = new java.net.URL(url_text);
var conn = url.openConnection();
conn.setRequestMethod(req.method.toUpperCase());
if (req.headers) {
for (var header in req.headers) {
if (header.toLowerCase() == "content-type" && !req.contentType) {
req.contentType = req.headers[header];
} else {
conn.setRequestProperty(header, req.headers[header]);
}
}
}
if (req.contentType) {
conn.setRequestProperty("Content-Type", req.contentType);
}
if (req.method.toLowerCase() == "post") {
conn.setDoOutput(true);
var output_stream = conn.getOutputStream();
var byte_array = (new java.lang.String(query)).getBytes();
output_stream.write(byte_array, 0, byte_array.length);
}
conn.connect();
doLoad(req, conn);
}
this.bind = function (req) {
var async = req["sync"] ? false : true;
if (async) {
setTimeout(dojo.lang.hitch(this, function () {
connect(req);
}), 1);
} else {
connect(req);
}
};
dojo.io.transports.addTransport("RhinoHTTPTransport");
};
 
/trunk/api/js/dojo/src/io/XhrIframeProxy.js
New file
0,0 → 1,150
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.io.XhrIframeProxy");
dojo.require("dojo.experimental");
dojo.experimental("dojo.io.XhrIframeProxy");
dojo.require("dojo.io.IframeIO");
dojo.require("dojo.dom");
dojo.require("dojo.uri.Uri");
dojo.io.XhrIframeProxy = {xipClientUrl:djConfig["xipClientUrl"] || dojo.uri.moduleUri("dojo.io", "xip_client.html"), _state:{}, _stateIdCounter:0, needFrameRecursion:function () {
return (true == dojo.render.html.ie70);
}, send:function (facade) {
var stateId = "XhrIframeProxy" + (this._stateIdCounter++);
facade._stateId = stateId;
var frameUrl = this.xipClientUrl + "#0:init:id=" + stateId + "&server=" + encodeURIComponent(facade._ifpServerUrl) + "&fr=false";
if (this.needFrameRecursion()) {
var fullClientUrl = window.location.href;
if ((this.xipClientUrl + "").charAt(0) == "/") {
var endIndex = fullClientUrl.indexOf("://");
endIndex = fullClientUrl.indexOf("/", endIndex + 1);
fullClientUrl = fullClientUrl.substring(0, endIndex);
} else {
fullClientUrl = fullClientUrl.substring(0, fullClientUrl.lastIndexOf("/") + 1);
}
fullClientUrl += this.xipClientUrl;
var serverUrl = facade._ifpServerUrl + (facade._ifpServerUrl.indexOf("?") == -1 ? "?" : "&") + "dojo.fr=1";
frameUrl = serverUrl + "#0:init:id=" + stateId + "&client=" + encodeURIComponent(fullClientUrl) + "&fr=" + this.needFrameRecursion();
}
this._state[stateId] = {facade:facade, stateId:stateId, clientFrame:dojo.io.createIFrame(stateId, "", frameUrl)};
return stateId;
}, receive:function (stateId, urlEncodedData) {
var response = {};
var nvPairs = urlEncodedData.split("&");
for (var i = 0; i < nvPairs.length; i++) {
if (nvPairs[i]) {
var nameValue = nvPairs[i].split("=");
response[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
}
}
var state = this._state[stateId];
var facade = state.facade;
facade._setResponseHeaders(response.responseHeaders);
if (response.status == 0 || response.status) {
facade.status = parseInt(response.status, 10);
}
if (response.statusText) {
facade.statusText = response.statusText;
}
if (response.responseText) {
facade.responseText = response.responseText;
var contentType = facade.getResponseHeader("Content-Type");
if (contentType && (contentType == "application/xml" || contentType == "text/xml")) {
facade.responseXML = dojo.dom.createDocumentFromText(response.responseText, contentType);
}
}
facade.readyState = 4;
this.destroyState(stateId);
}, clientFrameLoaded:function (stateId) {
var state = this._state[stateId];
var facade = state.facade;
if (this.needFrameRecursion()) {
var clientWindow = window.open("", state.stateId + "_clientEndPoint");
} else {
var clientWindow = state.clientFrame.contentWindow;
}
var reqHeaders = [];
for (var param in facade._requestHeaders) {
reqHeaders.push(param + ": " + facade._requestHeaders[param]);
}
var requestData = {uri:facade._uri};
if (reqHeaders.length > 0) {
requestData.requestHeaders = reqHeaders.join("\r\n");
}
if (facade._method) {
requestData.method = facade._method;
}
if (facade._bodyData) {
requestData.data = facade._bodyData;
}
clientWindow.send(dojo.io.argsFromMap(requestData, "utf8"));
}, destroyState:function (stateId) {
var state = this._state[stateId];
if (state) {
delete this._state[stateId];
var parentNode = state.clientFrame.parentNode;
parentNode.removeChild(state.clientFrame);
state.clientFrame = null;
state = null;
}
}, createFacade:function () {
if (arguments && arguments[0] && arguments[0]["iframeProxyUrl"]) {
return new dojo.io.XhrIframeFacade(arguments[0]["iframeProxyUrl"]);
} else {
return dojo.io.XhrIframeProxy.oldGetXmlhttpObject.apply(dojo.hostenv, arguments);
}
}};
dojo.io.XhrIframeProxy.oldGetXmlhttpObject = dojo.hostenv.getXmlhttpObject;
dojo.hostenv.getXmlhttpObject = dojo.io.XhrIframeProxy.createFacade;
dojo.io.XhrIframeFacade = function (ifpServerUrl) {
this._requestHeaders = {};
this._allResponseHeaders = null;
this._responseHeaders = {};
this._method = null;
this._uri = null;
this._bodyData = null;
this.responseText = null;
this.responseXML = null;
this.status = null;
this.statusText = null;
this.readyState = 0;
this._ifpServerUrl = ifpServerUrl;
this._stateId = null;
};
dojo.lang.extend(dojo.io.XhrIframeFacade, {open:function (method, uri) {
this._method = method;
this._uri = uri;
this.readyState = 1;
}, setRequestHeader:function (header, value) {
this._requestHeaders[header] = value;
}, send:function (stringData) {
this._bodyData = stringData;
this._stateId = dojo.io.XhrIframeProxy.send(this);
this.readyState = 2;
}, abort:function () {
dojo.io.XhrIframeProxy.destroyState(this._stateId);
}, getAllResponseHeaders:function () {
return this._allResponseHeaders;
}, getResponseHeader:function (header) {
return this._responseHeaders[header];
}, _setResponseHeaders:function (allHeaders) {
if (allHeaders) {
this._allResponseHeaders = allHeaders;
allHeaders = allHeaders.replace(/\r/g, "");
var nvPairs = allHeaders.split("\n");
for (var i = 0; i < nvPairs.length; i++) {
if (nvPairs[i]) {
var nameValue = nvPairs[i].split(": ");
this._responseHeaders[nameValue[0]] = nameValue[1];
}
}
}
}});
 
/trunk/api/js/dojo/src/io/__package__.js
New file
0,0 → 1,13
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.kwCompoundRequire({common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]});
dojo.provide("dojo.io.*");
 
/trunk/api/js/dojo/src/flash.js
New file
0,0 → 1,444
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
 
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
 
http://dojotoolkit.org/community/licensing.shtml
*/
 
dojo.provide("dojo.flash");
dojo.require("dojo.string.*");
dojo.require("dojo.uri.*");
dojo.require("dojo.html.common");
dojo.flash = function () {
};
dojo.flash = {flash6_version:null, flash8_version:null, ready:false, _visible:true, _loadedListeners:new Array(), _installingListeners:new Array(), setSwf:function (fileInfo) {
if (fileInfo == null || dojo.lang.isUndefined(fileInfo)) {
return;
}
if (fileInfo.flash6 != null && !dojo.lang.isUndefined(fileInfo.flash6)) {
this.flash6_version = fileInfo.flash6;
}
if (fileInfo.flash8 != null && !dojo.lang.isUndefined(fileInfo.flash8)) {
this.flash8_version = fileInfo.flash8;
}
if (!dojo.lang.isUndefined(fileInfo.visible)) {
this._visible = fileInfo.visible;
}
this._initialize();
}, useFlash6:function () {
if (this.flash6_version == null) {
return false;
} else {
if (this.flash6_version != null && dojo.flash.info.commVersion == 6) {
return true;
} else {
return false;
}
}
}, useFlash8:function () {
if (this.flash8_version == null) {
return false;
} else {
if (this.flash8_version != null && dojo.flash.info.commVersion == 8) {
return true;
} else {
return false;
}
}
}, addLoadedListener:function (listener) {
this._loadedListeners.push(listener);
}, addInstallingListener:function (listener) {
this._installingListeners.push(listener);
}, loaded:function () {
dojo.flash.ready = true;
if (dojo.flash._loadedListeners.length > 0) {
for (var i = 0; i < dojo.flash._loadedListeners.length; i++) {
dojo.flash._loadedListeners[i].call(null);
}
}
}, installing:function () {
if (dojo.flash._installingListeners.length > 0) {
for (var i = 0; i < dojo.flash._installingListeners.length; i++) {
dojo.flash._installingListeners[i].call(null);
}
}
}, _initialize:function () {
var installer = new dojo.flash.Install();
dojo.flash.installer = installer;
if (installer.needed() == true) {
installer.install();
} else {
dojo.flash.obj = new dojo.flash.Embed(this._visible);
dojo.flash.obj.write(dojo.flash.info.commVersion);
dojo.flash.comm = new dojo.flash.Communicator();
}
}};
dojo.flash.Info = function () {
if (dojo.render.html.ie) {
document.writeln("<script language=\"VBScript\" type=\"text/vbscript\">");
document.writeln("Function VBGetSwfVer(i)");
document.writeln(" on error resume next");
document.writeln(" Dim swControl, swVersion");
document.writeln(" swVersion = 0");
document.writeln(" set swControl = CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" + CStr(i))");
document.writeln(" if (IsObject(swControl)) then");
document.writeln(" swVersion = swControl.GetVariable(\"$version\")");
document.writeln(" end if");
document.writeln(" VBGetSwfVer = swVersion");
document.writeln("End Function");
document.writeln("</script>");
}
this._detectVersion();
this._detectCommunicationVersion();
};
dojo.flash.Info.prototype = {version:-1, versionMajor:-1, versionMinor:-1, versionRevision:-1, capable:false, commVersion:6, installing:false, isVersionOrAbove:function (reqMajorVer, reqMinorVer, reqVer) {
reqVer = parseFloat("." + reqVer);
if (this.versionMajor >= reqMajorVer && this.versionMinor >= reqMinorVer && this.versionRevision >= reqVer) {
return true;
} else {
return false;
}
}, _detectVersion:function () {
var versionStr;
for (var testVersion = 25; testVersion > 0; testVersion--) {
if (dojo.render.html.ie) {
versionStr = VBGetSwfVer(testVersion);
} else {
versionStr = this._JSFlashInfo(testVersion);
}
if (versionStr == -1) {
this.capable = false;
return;
} else {
if (versionStr != 0) {
var versionArray;
if (dojo.render.html.ie) {
var tempArray = versionStr.split(" ");
var tempString = tempArray[1];
versionArray = tempString.split(",");
} else {
versionArray = versionStr.split(".");
}
this.versionMajor = versionArray[0];
this.versionMinor = versionArray[1];
this.versionRevision = versionArray[2];
var versionString = this.versionMajor + "." + this.versionRevision;
this.version = parseFloat(versionString);
this.capable = true;
break;
}
}
}
}, _JSFlashInfo:function (testVersion) {
if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
var descArray = flashDescription.split(" ");
var tempArrayMajor = descArray[2].split(".");
var versionMajor = tempArrayMajor[0];
var versionMinor = tempArrayMajor[1];
if (descArray[3] != "") {
var tempArrayMinor = descArray[3].split("r");
} else {
var tempArrayMinor = descArray[4].split("r");
}
var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
var version = versionMajor + "." + versionMinor + "." + versionRevision;
return version;
}
}
return -1;
}, _detectCommunicationVersion:function () {
if (this.capable == false) {
this.commVersion = null;
return;
}
if (typeof djConfig["forceFlashComm"] != "undefined" && typeof djConfig["forceFlashComm"] != null) {
this.commVersion = djConfig["forceFlashComm"];
return;
}
if (dojo.render.html.safari == true || dojo.render.html.opera == true) {
this.commVersion = 8;
} else {
this.commVersion = 6;
}
}};
dojo.flash.Embed = function (visible) {
this._visible = visible;
};
dojo.flash.Embed.prototype = {width:215, height:138, id:"flashObject", _visible:true, protocol:function () {
switch (window.location.protocol) {
case "https:":
return "https";
break;
default:
return "http";
break;
}
}, write:function (flashVer, doExpressInstall) {
if (dojo.lang.isUndefined(doExpressInstall)) {
doExpressInstall = false;
}
var containerStyle = new dojo.string.Builder();
containerStyle.append("width: " + this.width + "px; ");
containerStyle.append("height: " + this.height + "px; ");
if (this._visible == false) {
containerStyle.append("position: absolute; ");
containerStyle.append("z-index: 10000; ");
containerStyle.append("top: -1000px; ");
containerStyle.append("left: -1000px; ");
}
containerStyle = containerStyle.toString();
var objectHTML;
var swfloc;
if (flashVer == 6) {
swfloc = dojo.flash.flash6_version;
var dojoPath = djConfig.baseRelativePath;
swfloc = swfloc + "?baseRelativePath=" + escape(dojoPath);
objectHTML = "<embed id=\"" + this.id + "\" src=\"" + swfloc + "\" " + " quality=\"high\" bgcolor=\"#ffffff\" " + " width=\"" + this.width + "\" height=\"" + this.height + "\" " + " name=\"" + this.id + "\" " + " align=\"middle\" allowScriptAccess=\"sameDomain\" " + " type=\"application/x-shockwave-flash\" swLiveConnect=\"true\" " + " pluginspage=\"" + this.protocol() + "://www.macromedia.com/go/getflashplayer\">";
} else {
swfloc = dojo.flash.flash8_version;
var swflocObject = swfloc;
var swflocEmbed = swfloc;
var dojoPath = djConfig.baseRelativePath;
if (doExpressInstall) {
var redirectURL = escape(window.location);
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
var docTitle = escape(document.title);
swflocObject += "?MMredirectURL=" + redirectURL + "&MMplayerType=ActiveX" + "&MMdoctitle=" + docTitle + "&baseRelativePath=" + escape(dojoPath);
swflocEmbed += "?MMredirectURL=" + redirectURL + "&MMplayerType=PlugIn" + "&baseRelativePath=" + escape(dojoPath);
}
if (swflocEmbed.indexOf("?") == -1) {
swflocEmbed += "?baseRelativePath=" + escape(dojoPath) + "' ";
}
objectHTML = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" " + "codebase=\"" + this.protocol() + "://fpdownload.macromedia.com/pub/shockwave/cabs/flash/" + "swflash.cab#version=8,0,0,0\" " + "width=\"" + this.width + "\" " + "height=\"" + this.height + "\" " + "id=\"" + this.id + "\" " + "align=\"middle\"> " + "<param name=\"allowScriptAccess\" value=\"sameDomain\" /> " + "<param name=\"movie\" value=\"" + swflocObject + "\" /> " + "<param name=\"quality\" value=\"high\" /> " + "<param name=\"bgcolor\" value=\"#ffffff\" /> " + "<embed src=\"" + swflocEmbed + "' " + "quality=\"high\" " + "bgcolor=\"#ffffff\" " + "width=\"" + this.width + "\" " + "height=\"" + this.height + "\" " + "id=\"" + this.id + "\" " + "name=\"" + this.id + "\" " + "swLiveConnect=\"true\" " + "align=\"middle\" " + "allowScriptAccess=\"sameDomain\" " + "type=\"application/x-shockwave-flash\" " + "pluginspage=\"" + this.protocol() + "://www.macromedia.com/go/getflashplayer\" />" + "</object>";
}
objectHTML = "<div id=\"" + this.id + "Container\" style=\"" + containerStyle + "\"> " + objectHTML + "</div>";
document.writeln(objectHTML);
}, get:function () {
return document.getElementById(this.id);
}, setVisible:function (visible) {
var container = dojo.byId(this.id + "Container");
if (visible == true) {
container.style.visibility = "visible";
} else {
container.style.position = "absolute";
container.style.x = "-1000px";
container.style.y = "-1000px";
container.style.visibility = "hidden";
}
}, center:function () {
var elementWidth = this.width;
var elementHeight = this.height;
var scroll_offset = dojo.html.getScroll().offset;
var viewport_size = dojo.html.getViewport();
var x = scroll_offset.x + (viewport_size.width - elementWidth) / 2;
var y = scroll_offset.y + (viewport_size.height - elementHeight) / 2;
var container = dojo.byId(this.id + "Container");
container.style.top = y + "px";
container.style.left = x + "px";
}};
dojo.flash.Communicator = function () {
if (dojo.flash.useFlash6()) {
this._writeFlash6();
} else {
if (dojo.flash.useFlash8()) {
this._writeFlash8();
}
}
};
dojo.flash.Communicator.prototype = {_writeFlash6:function () {
var id = dojo.flash.obj.id;
document.writeln("<script language=\"JavaScript\">");
document.writeln(" function " + id + "_DoFSCommand(command, args){ ");
document.writeln(" dojo.flash.comm._handleFSCommand(command, args); ");
document.writeln("}");
document.writeln("</script>");
if (dojo.render.html.ie) {
document.writeln("<SCRIPT LANGUAGE=VBScript> ");
document.writeln("on error resume next ");
document.writeln("Sub " + id + "_FSCommand(ByVal command, ByVal args)");
document.writeln(" call " + id + "_DoFSCommand(command, args)");
document.writeln("end sub");
document.writeln("</SCRIPT> ");
}
}, _writeFlash8:function () {
}, _handleFSCommand:function (command, args) {
if (command != null && !dojo.lang.isUndefined(command) && /^FSCommand:(.*)/.test(command) == true) {
command = command.match(/^FSCommand:(.*)/)[1];
}
if (command == "addCallback") {
this._fscommandAddCallback(command, args);
} else {
if (command == "call") {
this._fscommandCall(command, args);
} else {
if (command == "fscommandReady") {
this._fscommandReady();
}
}
}
}, _fscommandAddCallback:function (command, args) {
var functionName = args;
var callFunc = function () {
return dojo.flash.comm._call(functionName, arguments);
};
dojo.flash.comm[functionName] = callFunc;
dojo.flash.obj.get().SetVariable("_succeeded", true);
}, _fscommandCall:function (command, args) {
var plugin = dojo.flash.obj.get();
var functionName = args;
var numArgs = parseInt(plugin.GetVariable("_numArgs"));
var flashArgs = new Array();
for (var i = 0; i < numArgs; i++) {
var currentArg = plugin.GetVariable("_" + i);
flashArgs.push(currentArg);
}
var runMe;
if (functionName.indexOf(".") == -1) {
runMe = window[functionName];
} else {
runMe = eval(functionName);
}
var results = null;
if (!dojo.lang.isUndefined(runMe) && runMe != null) {
results = runMe.apply(null, flashArgs);
}
plugin.SetVariable("_returnResult", results);
}, _fscommandReady:function () {
var plugin = dojo.flash.obj.get();
plugin.SetVariable("fscommandReady", "true");
}, _call:function (functionName, args) {
var plugin = dojo.flash.obj.get();
plugin.SetVariable("_functionName", functionName);
plugin.SetVariable("_numArgs", args.length);
for (var i = 0; i < args.length; i++) {
var value = args[i];
value = value.replace(/\0/g, "\\0");
plugin.SetVariable("_" + i, value);
}
plugin.TCallLabel("/_flashRunner", "execute");
var results = plugin.GetVariable("_returnResult");
results = results.replace(/\\0/g, "\x00");
return results;
}, _addExternalInterfaceCallback:function (methodName) {
var wrapperCall = function () {
var methodArgs = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++) {
methodArgs[i] = arguments[i];
}
return dojo.flash.comm._execFlash(methodName, methodArgs);
};
dojo.flash.comm[methodName] = wrapperCall;
}, _encodeData:function (data) {
var entityRE = /\&([^;]*)\;/g;
data = data.replace(entityRE, "&amp;$1;");
data = data.replace(/</g, "&lt;");
data = data.replace(/>/g, "&gt;");
data = data.replace("\\", "&custom_backslash;&custom_backslash;");
data = data.replace(/\n/g, "\\n");
data = data.replace(/\r/g, "\\r");
data = data.replace(/\f/g, "\\f");
data = data.replace(/\0/g, "\\0");
data = data.replace(/\'/g, "\\'");
data = data.replace(/\"/g, "\\\"");
return data;
}, _decodeData:function (data) {
if (data == null || typeof data == "undefined") {
return data;
}
data = data.replace(/\&custom_lt\;/g, "<");
data = data.replace(/\&custom_gt\;/g, ">");
data = eval("\"" + data + "\"");
return data;
}, _chunkArgumentData:function (value, argIndex) {
var plugin = dojo.flash.obj.get();
var numSegments = Math.ceil(value.length / 1024);
for (var i = 0; i < numSegments; i++) {
var startCut = i * 1024;
var endCut = i * 1024 + 1024;
if (i == (numSegments - 1)) {
endCut = i * 1024 + value.length;
}
var piece = value.substring(startCut, endCut);
piece = this._encodeData(piece);
plugin.CallFunction("<invoke name=\"chunkArgumentData\" " + "returntype=\"javascript\">" + "<arguments>" + "<string>" + piece + "</string>" + "<number>" + argIndex + "</number>" + "</arguments>" + "</invoke>");
}
}, _chunkReturnData:function () {
var plugin = dojo.flash.obj.get();
var numSegments = plugin.getReturnLength();
var resultsArray = new Array();
for (var i = 0; i < numSegments; i++) {
var piece = plugin.CallFunction("<invoke name=\"chunkReturnData\" " + "returntype=\"javascript\">" + "<arguments>" + "<number>" + i + "</number>" + "</arguments>" + "</invoke>");
if (piece == "\"\"" || piece == "''") {
piece = "";
} else {
piece = piece.substring(1, piece.length - 1);
}
resultsArray.push(piece);
}
var results = resultsArray.join("");
return results;
}, _execFlash:function (methodName, methodArgs) {
var plugin = dojo.flash.obj.get();
plugin.startExec();
plugin.setNumberArguments(methodArgs.length);
for (var i = 0; i < methodArgs.length; i++) {
this._chunkArgumentData(methodArgs[i], i);
}
plugin.exec(methodName);
var results = this._chunkReturnData();
results = this._decodeData(results);
plugin.endExec();
return results;
}};
dojo.flash.Install = function () {
};
dojo.flash.Install.prototype = {needed:function () {
if (dojo.flash.info.capable == false) {
return true;
}
if (dojo.render.os.mac == true && !dojo.flash.info.isVersionOrAbove(8, 0, 0)) {
return true;
}
if (!dojo.flash.info.isVersionOrAbove(6, 0, 0)) {
return true;
}
return false;
}, install:function () {
dojo.flash.info.installing = true;
dojo.flash.installing();
if (dojo.flash.info.capable == false) {
var installObj = new dojo.flash.Embed(false);
installObj.write(8);
} else {
if (dojo.flash.info.isVersionOrAbove(6, 0, 65)) {
var installObj = new dojo.flash.Embed(false);
installObj.write(8, true);
installObj.setVisible(true);
installObj.center();
} else {
alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
window.location.href = +dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
}
}
}, _onInstallStatus:function (msg) {
if (msg == "Download.Complete") {
dojo.flash._initialize();
} else {
if (msg == "Download.Cancelled") {
alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
window.location.href = dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
} else {
if (msg == "Download.Failed") {
alert("There was an error downloading the Flash Player update. " + "Please try again later, or visit macromedia.com to download " + "the latest version of the Flash plugin.");
}
}
}
}};
dojo.flash.info = new dojo.flash.Info();
 
/trunk/api/json/JSON.php
New file
0,0 → 1,806
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 
/**
* Converts to and from JSON format.
*
* JSON (JavaScript Object Notation) is a lightweight data-interchange
* format. It is easy for humans to read and write. It is easy for machines
* to parse and generate. It is based on a subset of the JavaScript
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
* This feature can also be found in Python. JSON is a text format that is
* completely language independent but uses conventions that are familiar
* to programmers of the C-family of languages, including C, C++, C#, Java,
* JavaScript, Perl, TCL, and many others. These properties make JSON an
* ideal data-interchange language.
*
* This package provides a simple encoder and decoder for JSON notation. It
* is intended for use with client-side Javascript applications that make
* use of HTTPRequest to perform server communication functions - data can
* be encoded into JSON notation for use in a client-side javascript, or
* decoded from incoming Javascript requests. JSON format is native to
* Javascript, and can be directly eval()'ed with no further parsing
* overhead
*
* All strings should be in ASCII or UTF-8 format!
*
* LICENSE: Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met: Redistributions of source code must retain the
* above copyright notice, this list of conditions and the following
* disclaimer. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* @category
* @package Services_JSON
* @author Michal Migurski <mike-json@teczno.com>
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
* @version CVS: $Id: JSON.php,v 1.1 2007-04-19 09:12:45 alexandre_tb Exp $
* @license http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
 
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_SLICE', 1);
 
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_STR', 2);
 
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_ARR', 3);
 
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_OBJ', 4);
 
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_CMT', 5);
 
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_LOOSE_TYPE', 16);
 
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
 
/**
* Converts to and from JSON format.
*
* Brief example of use:
*
* <code>
* // create a new instance of Services_JSON
* $json = new Services_JSON();
*
* // convert a complexe value to JSON notation, and send it to the browser
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
* $output = $json->encode($value);
*
* print($output);
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
*
* // accept incoming POST data, assumed to be in JSON notation
* $input = file_get_contents('php://input', 1000000);
* $value = $json->decode($input);
* </code>
*/
class Services_JSON
{
/**
* constructs a new JSON instance
*
* @param int $use object behavior flags; combine with boolean-OR
*
* possible values:
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
* "{...}" syntax creates associative arrays
* instead of objects in decode().
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
* Values which can't be encoded (e.g. resources)
* appear as NULL instead of throwing errors.
* By default, a deeply-nested resource will
* bubble up with an error, so all return values
* from encode() should be checked with isError()
*/
function Services_JSON($use = 0)
{
$this->use = $use;
}
 
/**
* convert a string from one UTF-16 char to one UTF-8 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf16 UTF-16 character
* @return string UTF-8 character
* @access private
*/
function utf162utf8($utf16)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
 
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
 
switch(true) {
case ((0x7F & $bytes) == $bytes):
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x7F & $bytes);
 
case (0x07FF & $bytes) == $bytes:
// return a 2-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
 
case (0xFFFF & $bytes) == $bytes:
// return a 3-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xE0 | (($bytes >> 12) & 0x0F))
. chr(0x80 | (($bytes >> 6) & 0x3F))
. chr(0x80 | ($bytes & 0x3F));
}
 
// ignoring UTF-32 for now, sorry
return '';
}
 
/**
* convert a string from one UTF-8 char to one UTF-16 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf8 UTF-8 character
* @return string UTF-16 character
* @access private
*/
function utf82utf16($utf8)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
}
 
switch(strlen($utf8)) {
case 1:
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return $utf8;
 
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x07 & (ord($utf8{0}) >> 2))
. chr((0xC0 & (ord($utf8{0}) << 6))
| (0x3F & ord($utf8{1})));
 
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr((0xF0 & (ord($utf8{0}) << 4))
| (0x0F & (ord($utf8{1}) >> 2)))
. chr((0xC0 & (ord($utf8{1}) << 6))
| (0x7F & ord($utf8{2})));
}
 
// ignoring UTF-32 for now, sorry
return '';
}
 
/**
* encodes an arbitrary variable into JSON format
*
* @param mixed $var any number, boolean, string, array, or object to be encoded.
* see argument 1 to Services_JSON() above for array-parsing behavior.
* if var is a strng, note that encode() always expects it
* to be in ASCII or UTF-8 format!
*
* @return mixed JSON string representation of input var or an error if a problem occurs
* @access public
*/
function encode($var)
{
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false';
 
case 'NULL':
return 'null';
 
case 'integer':
return (int) $var;
 
case 'double':
case 'float':
return (float) $var;
 
case 'string':
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
 
/*
* Iterate over every character in the string,
* escaping with a slash or encoding to UTF-8 where necessary
*/
for ($c = 0; $c < $strlen_var; ++$c) {
 
$ord_var_c = ord($var{$c});
 
switch (true) {
case $ord_var_c == 0x08:
$ascii .= '\b';
break;
case $ord_var_c == 0x09:
$ascii .= '\t';
break;
case $ord_var_c == 0x0A:
$ascii .= '\n';
break;
case $ord_var_c == 0x0C:
$ascii .= '\f';
break;
case $ord_var_c == 0x0D:
$ascii .= '\r';
break;
 
case $ord_var_c == 0x22:
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
$ascii .= '\\'.$var{$c};
break;
 
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
$ascii .= $var{$c};
break;
 
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
$c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
 
case (($ord_var_c & 0xF0) == 0xE0):
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}));
$c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
 
case (($ord_var_c & 0xF8) == 0xF0):
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}));
$c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
 
case (($ord_var_c & 0xFC) == 0xF8):
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}));
$c += 4;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
 
case (($ord_var_c & 0xFE) == 0xFC):
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}),
ord($var{$c + 5}));
$c += 5;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
}
}
 
return '"'.$ascii.'"';
 
case 'array':
/*
* As per JSON spec if any array key is not an integer
* we must treat the the whole array as an object. We
* also try to catch a sparsely populated associative
* array with numeric keys here because some JS engines
* will create an array with empty indexes up to
* max_index which can cause memory issues and because
* the keys, which may be relevant, will be remapped
* otherwise.
*
* As per the ECMA and JSON specification an object may
* have any string as a property. Unfortunately due to
* a hole in the ECMA specification if the key is a
* ECMA reserved word or starts with a digit the
* parameter is only accessible using ECMAScript's
* bracket notation.
*/
 
// treat as a JSON object
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
$properties = array_map(array($this, 'name_value'),
array_keys($var),
array_values($var));
 
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
 
return '{' . join(',', $properties) . '}';
}
 
// treat it like a regular array
$elements = array_map(array($this, 'encode'), $var);
 
foreach($elements as $element) {
if(Services_JSON::isError($element)) {
return $element;
}
}
 
return '[' . join(',', $elements) . ']';
 
case 'object':
$vars = get_object_vars($var);
 
$properties = array_map(array($this, 'name_value'),
array_keys($vars),
array_values($vars));
 
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
 
return '{' . join(',', $properties) . '}';
 
default:
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
? 'null'
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
}
}
 
/**
* array-walking function for use in generating JSON-formatted name-value pairs
*
* @param string $name name of key to use
* @param mixed $value reference to an array element to be encoded
*
* @return string JSON-formatted name-value pair, like '"name":value'
* @access private
*/
function name_value($name, $value)
{
$encoded_value = $this->encode($value);
 
if(Services_JSON::isError($encoded_value)) {
return $encoded_value;
}
 
return $this->encode(strval($name)) . ':' . $encoded_value;
}
 
/**
* reduce a string by removing leading and trailing comments and whitespace
*
* @param $str string string value to strip of comments and whitespace
*
* @return string string value stripped of comments and whitespace
* @access private
*/
function reduce_string($str)
{
$str = preg_replace(array(
 
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
 
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
 
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
 
), '', $str);
 
// eliminate extraneous space
return trim($str);
}
 
/**
* decodes a JSON string into appropriate variable
*
* @param string $str JSON-formatted string
*
* @return mixed number, boolean, string, array, or object
* corresponding to given JSON input string.
* See argument 1 to Services_JSON() above for object-output behavior.
* Note that decode() always returns strings
* in ASCII or UTF-8 format!
* @access public
*/
function decode($str)
{
$str = $this->reduce_string($str);
 
switch (strtolower($str)) {
case 'true':
return true;
 
case 'false':
return false;
 
case 'null':
return null;
 
default:
$m = array();
 
if (is_numeric($str)) {
// Lookie-loo, it's a number
 
// This would work on its own, but I'm trying to be
// good about returning integers where appropriate:
// return (float)$str;
 
// Return float or int, as appropriate
return ((float)$str == (integer)$str)
? (integer)$str
: (float)$str;
 
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
// STRINGS RETURNED IN UTF-8 FORMAT
$delim = substr($str, 0, 1);
$chrs = substr($str, 1, -1);
$utf8 = '';
$strlen_chrs = strlen($chrs);
 
for ($c = 0; $c < $strlen_chrs; ++$c) {
 
$substr_chrs_c_2 = substr($chrs, $c, 2);
$ord_chrs_c = ord($chrs{$c});
 
switch (true) {
case $substr_chrs_c_2 == '\b':
$utf8 .= chr(0x08);
++$c;
break;
case $substr_chrs_c_2 == '\t':
$utf8 .= chr(0x09);
++$c;
break;
case $substr_chrs_c_2 == '\n':
$utf8 .= chr(0x0A);
++$c;
break;
case $substr_chrs_c_2 == '\f':
$utf8 .= chr(0x0C);
++$c;
break;
case $substr_chrs_c_2 == '\r':
$utf8 .= chr(0x0D);
++$c;
break;
 
case $substr_chrs_c_2 == '\\"':
case $substr_chrs_c_2 == '\\\'':
case $substr_chrs_c_2 == '\\\\':
case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
$utf8 .= $chrs{++$c};
}
break;
 
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
// single, escaped unicode character
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
. chr(hexdec(substr($chrs, ($c + 4), 2)));
$utf8 .= $this->utf162utf8($utf16);
$c += 5;
break;
 
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
$utf8 .= $chrs{$c};
break;
 
case ($ord_chrs_c & 0xE0) == 0xC0:
// characters U-00000080 - U-000007FF, mask 110XXXXX
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 2);
++$c;
break;
 
case ($ord_chrs_c & 0xF0) == 0xE0:
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 3);
$c += 2;
break;
 
case ($ord_chrs_c & 0xF8) == 0xF0:
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 4);
$c += 3;
break;
 
case ($ord_chrs_c & 0xFC) == 0xF8:
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 5);
$c += 4;
break;
 
case ($ord_chrs_c & 0xFE) == 0xFC:
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 6);
$c += 5;
break;
 
}
 
}
 
return $utf8;
 
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
 
if ($str{0} == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = array();
} else {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = new stdClass();
}
}
 
array_push($stk, array('what' => SERVICES_JSON_SLICE,
'where' => 0,
'delim' => false));
 
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs);
 
if ($chrs == '') {
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
 
} else {
return $obj;
 
}
}
 
//print("\nparsing {$chrs}\n");
 
$strlen_chrs = strlen($chrs);
 
for ($c = 0; $c <= $strlen_chrs; ++$c) {
 
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
 
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
// found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
 
if (reset($stk) == SERVICES_JSON_IN_ARR) {
// we are in an array, so just push an element onto the stack
array_push($arr, $this->decode($slice));
 
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
// we are in an object, so figure
// out the property name and set an
// element in an associative array,
// for now
$parts = array();
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// "name":value pair
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
 
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// name:value pair, where name is unquoted
$key = $parts[1];
$val = $this->decode($parts[2]);
 
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
}
 
}
 
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
// found a quote, and we are not inside a string
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
//print("Found start of string at {$c}\n");
 
} elseif (($chrs{$c} == $top['delim']) &&
($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped
// we know that it's not escaped becase there is _not_ an
// odd number of backslashes at the end of the string so far
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
 
} elseif (($chrs{$c} == '[') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");
 
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
// found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
 
} elseif (($chrs{$c} == '{') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");
 
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
// found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
 
} elseif (($substr_chrs_c_2 == '/*') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a comment start, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
$c++;
//print("Found start of comment at {$c}\n");
 
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
// found a comment end, and we're in one now
array_pop($stk);
$c++;
 
for ($i = $top['where']; $i <= $c; ++$i)
$chrs = substr_replace($chrs, ' ', $i, 1);
 
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
 
}
 
}
 
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
 
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
return $obj;
 
}
 
}
}
}
 
/**
* @todo Ultimately, this should just call PEAR::isError()
*/
function isError($data, $code = null)
{
if (class_exists('pear')) {
return PEAR::isError($data, $code);
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
is_subclass_of($data, 'services_json_error'))) {
return true;
}
 
return false;
}
}
 
if (class_exists('PEAR_Error')) {
 
class Services_JSON_Error extends PEAR_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
}
}
 
} else {
 
/**
* @todo Ultimately, this class shall be descended from PEAR_Error
*/
class Services_JSON_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
 
}
}
 
}
?>