blob: 9e901db3eb67388efe403d9d959f5f1650986e82 [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojo.parser"]){
dojo._hasResource["dojo.parser"]=true;
dojo.provide("dojo.parser");
dojo.require("dojo.date.stamp");
dojo.parser=new function(){
var d=dojo;
var _2=d._scopeName+"Type";
var _3="["+_2+"]";
var _4=0,_5={};
var _6=function(_7,_8){
var _9=_8||_5;
if(dojo.isIE){
var cn=_7["__dojoNameCache"];
if(cn&&_9[cn]===_7){
return cn;
}
}
var _b;
do{
_b="__"+_4++;
}while(_b in _9);
_9[_b]=_7;
return _b;
};
function _c(_d){
if(d.isString(_d)){
return "string";
}
if(typeof _d=="number"){
return "number";
}
if(typeof _d=="boolean"){
return "boolean";
}
if(d.isFunction(_d)){
return "function";
}
if(d.isArray(_d)){
return "array";
}
if(_d instanceof Date){
return "date";
}
if(_d instanceof d._Url){
return "url";
}
return "object";
};
function _e(_f,_10){
switch(_10){
case "string":
return _f;
case "number":
return _f.length?Number(_f):NaN;
case "boolean":
return typeof _f=="boolean"?_f:!(_f.toLowerCase()=="false");
case "function":
if(d.isFunction(_f)){
_f=_f.toString();
_f=d.trim(_f.substring(_f.indexOf("{")+1,_f.length-1));
}
try{
if(_f.search(/[^\w\.]+/i)!=-1){
_f=_6(new Function(_f),this);
}
return d.getObject(_f,false);
}
catch(e){
return new Function();
}
case "array":
return _f?_f.split(/\s*,\s*/):[];
case "date":
switch(_f){
case "":
return new Date("");
case "now":
return new Date();
default:
return d.date.stamp.fromISOString(_f);
}
case "url":
return d.baseUrl+_f;
default:
return d.fromJson(_f);
}
};
var _11={};
function _12(_13){
if(!_11[_13]){
var cls=d.getObject(_13);
if(!d.isFunction(cls)){
throw new Error("Could not load class '"+_13+"'. Did you spell the name correctly and use a full path, like 'dijit.form.Button'?");
}
var _15=cls.prototype;
var _16={};
for(var _17 in _15){
if(_17.charAt(0)=="_"){
continue;
}
var _18=_15[_17];
_16[_17]=_c(_18);
}
_11[_13]={cls:cls,params:_16};
}
return _11[_13];
};
this._functionFromScript=function(_19){
var _1a="";
var _1b="";
var _1c=_19.getAttribute("args");
if(_1c){
d.forEach(_1c.split(/\s*,\s*/),function(_1d,idx){
_1a+="var "+_1d+" = arguments["+idx+"]; ";
});
}
var _1f=_19.getAttribute("with");
if(_1f&&_1f.length){
d.forEach(_1f.split(/\s*,\s*/),function(_20){
_1a+="with("+_20+"){";
_1b+="}";
});
}
return new Function(_1a+_19.innerHTML+_1b);
};
this.instantiate=function(_21,_22){
var _23=[];
_22=_22||{};
d.forEach(_21,function(_24){
if(!_24){
return;
}
var _25=_2 in _22?_22[_2]:_24.getAttribute(_2);
if(!_25||!_25.length){
return;
}
var _26=_12(_25),_27=_26.cls,ps=_27._noScript||_27.prototype._noScript;
var _29={},_2a=_24.attributes;
for(var _2b in _26.params){
var _2c=_2b in _22?{value:_22[_2b],specified:true}:_2a.getNamedItem(_2b);
if(!_2c||(!_2c.specified&&(!dojo.isIE||_2b.toLowerCase()!="value"))){
continue;
}
var _2d=_2c.value;
switch(_2b){
case "class":
_2d="className" in _22?_22.className:_24.className;
break;
case "style":
_2d="style" in _22?_22.style:(_24.style&&_24.style.cssText);
}
var _2e=_26.params[_2b];
if(typeof _2d=="string"){
_29[_2b]=_e(_2d,_2e);
}else{
_29[_2b]=_2d;
}
}
if(!ps){
var _2f=[],_30=[];
d.query("> script[type^='dojo/']",_24).orphan().forEach(function(_31){
var _32=_31.getAttribute("event"),_25=_31.getAttribute("type"),nf=d.parser._functionFromScript(_31);
if(_32){
if(_25=="dojo/connect"){
_2f.push({event:_32,func:nf});
}else{
_29[_32]=nf;
}
}else{
_30.push(nf);
}
});
}
var _34=_27["markupFactory"];
if(!_34&&_27["prototype"]){
_34=_27.prototype["markupFactory"];
}
var _35=_34?_34(_29,_24,_27):new _27(_29,_24);
_23.push(_35);
var _36=_24.getAttribute("jsId");
if(_36){
d.setObject(_36,_35);
}
if(!ps){
d.forEach(_2f,function(_37){
d.connect(_35,_37.event,null,_37.func);
});
d.forEach(_30,function(_38){
_38.call(_35);
});
}
});
d.forEach(_23,function(_39){
if(_39&&_39.startup&&!_39._started&&(!_39.getParent||!_39.getParent())){
_39.startup();
}
});
return _23;
};
this.parse=function(_3a){
var _3b=d.query(_3,_3a);
var _3c=this.instantiate(_3b);
return _3c;
};
}();
(function(){
var _3d=function(){
if(dojo.config["parseOnLoad"]==true){
dojo.parser.parse();
}
};
if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){
dojo._loaders.splice(1,0,_3d);
}else{
dojo._loaders.unshift(_3d);
}
})();
}