//>>built define("dojox/json/ref",["dojo/_base/array","dojo/_base/json","dojo/_base/kernel","dojo/_base/lang","dojo/date/stamp","dojox"],function(_1,_2,_3,_4,_5,_6){ _4.getObject("json",true,_6); return _6.json.ref={resolveJson:function(_7,_8){ _8=_8||{}; var _9=_8.idAttribute||"id"; var _a=this.refAttribute; var _b=_8.idAsRef; var _c=_8.idPrefix||""; var _d=_8.assignAbsoluteIds; var _e=_8.index||{}; var _f=_8.timeStamps; var ref,_10=[]; var _11=/^(.*\/)?(\w+:\/\/)|[^\/\.]+\/\.\.\/|^.*\/(\/)/; var _12=this._addProp; var F=function(){ }; function _13(it,_14,_15,_16,_17,_18){ var i,_19,val,id=_9 in it?it[_9]:_15; if(_9 in it||((id!==undefined)&&_16)){ id=(_c+id).replace(_11,"$2$3"); } var _1a=_18||it; if(id!==undefined){ if(_d){ it.__id=id; } if(_8.schemas&&(!(it instanceof Array))&&(val=id.match(/^(.+\/)[^\.\[]*$/))){ _17=_8.schemas[val[1]]; } if(_e[id]&&((it instanceof Array)==(_e[id] instanceof Array))){ _1a=_e[id]; delete _1a.$ref; delete _1a._loadObject; _19=true; }else{ var _1b=_17&&_17.prototype; if(_1b){ F.prototype=_1b; _1a=new F(); } } _e[id]=_1a; if(_f){ _f[id]=_8.time; } } while(_17){ var _1c=_17.properties; if(_1c){ for(i in it){ var _1d=_1c[i]; if(_1d&&_1d.format=="date-time"&&typeof it[i]=="string"){ it[i]=_5.fromISOString(it[i]); } } } _17=_17["extends"]; } var _1e=it.length; for(i in it){ if(i==_1e){ break; } if(it.hasOwnProperty(i)){ val=it[i]; if((typeof val=="object")&&val&&!(val instanceof Date)&&i!="__parent"){ ref=val[_a]||(_b&&val[_9]); if(!ref||!val.__parent){ if(it!=_10){ val.__parent=_1a; } } if(ref){ delete it[i]; var _1f=ref.toString().replace(/(#)([^\.\[])/,"$1.$2").match(/(^([^\[]*\/)?[^#\.\[]*)#?([\.\[].*)?/); if(_e[(_c+ref).replace(_11,"$2$3")]){ ref=_e[(_c+ref).replace(_11,"$2$3")]; }else{ if((ref=(_1f[1]=="$"||_1f[1]=="this"||_1f[1]=="")?_7:_e[(_c+_1f[1]).replace(_11,"$2$3")])){ if(_1f[3]){ _1f[3].replace(/(\[([^\]]+)\])|(\.?([^\.\[]+))/g,function(t,a,b,c,d){ ref=ref&&ref[b?b.replace(/[\"\'\\]/,""):d]; }); } } } if(ref){ val=ref; }else{ if(!_14){ var _20; if(!_20){ _10.push(_1a); } _20=true; val=_13(val,false,val[_a],true,_1d); val._loadObject=_8.loader; } } }else{ if(!_14){ val=_13(val,_10==it,id===undefined?undefined:_12(id,i),false,_1d,_1a!=it&&typeof _1a[i]=="object"&&_1a[i]); } } } it[i]=val; if(_1a!=it&&!_1a.__isDirty){ var old=_1a[i]; _1a[i]=val; if(_19&&val!==old&&!_1a._loadObject&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")&&i!="$ref"&&!(val instanceof Date&&old instanceof Date&&val.getTime()==old.getTime())&&!(typeof val=="function"&&typeof old=="function"&&val.toString()==old.toString())&&_e.onUpdate){ _e.onUpdate(_1a,i,old,val); } } } } if(_19&&(_9 in it||_1a instanceof Array)){ for(i in _1a){ if(!_1a.__isDirty&&_1a.hasOwnProperty(i)&&!it.hasOwnProperty(i)&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")&&!(_1a instanceof Array&&isNaN(i))){ if(_e.onUpdate&&i!="_loadObject"&&i!="_idAttr"){ _e.onUpdate(_1a,i,_1a[i],undefined); } delete _1a[i]; while(_1a instanceof Array&&_1a.length&&_1a[_1a.length-1]===undefined){ _1a.length--; } } } }else{ if(_e.onLoad){ _e.onLoad(_1a); } } return _1a; }; if(_7&&typeof _7=="object"){ _7=_13(_7,false,_8.defaultId,true); _13(_10,false); } return _7; },fromJson:function(str,_21){ function ref(_22){ var _23={}; _23[this.refAttribute]=_22; return _23; }; try{ var _24=eval("("+str+")"); } catch(e){ throw new SyntaxError("Invalid JSON string: "+e.message+" parsing: "+str); } if(_24){ return this.resolveJson(_24,_21); } return _24; },toJson:function(it,_25,_26,_27){ var _28=this._useRefs; var _29=this._addProp; var _2a=this.refAttribute; _26=_26||""; var _2b={}; var _2c={}; function _2d(it,_2e,_2f){ if(typeof it=="object"&&it){ var _30; if(it instanceof Date){ return "\""+_5.toISOString(it,{zulu:true})+"\""; } var id=it.__id; if(id){ if(_2e!="#"&&((_28&&!id.match(/#/))||_2b[id])){ var ref=id; if(id.charAt(0)!="#"){ if(it.__clientId==id){ ref="cid:"+id; }else{ if(id.substring(0,_26.length)==_26){ ref=id.substring(_26.length); }else{ ref=id; } } } var _31={}; _31[_2a]=ref; return _2d(_31,"#"); } _2e=id; }else{ it.__id=_2e; _2c[_2e]=it; } _2b[_2e]=it; _2f=_2f||""; var _32=_25?_2f+_2.toJsonIndentStr:""; var _33=_25?"\n":""; var sep=_25?" ":""; if(it instanceof Array){ var res=_1.map(it,function(obj,i){ var val=_2d(obj,_29(_2e,i),_32); if(typeof val!="string"){ val="undefined"; } return _33+_32+val; }); return "["+res.join(","+sep)+_33+_2f+"]"; } var _34=[]; for(var i in it){ if(it.hasOwnProperty(i)){ var _35; if(typeof i=="number"){ _35="\""+i+"\""; }else{ if(typeof i=="string"&&(i.charAt(0)!="_"||i.charAt(1)!="_")){ _35=_2._escapeString(i); }else{ continue; } } var val=_2d(it[i],_29(_2e,i),_32); if(typeof val!="string"){ continue; } _34.push(_33+_32+_35+":"+sep+val); } } return "{"+_34.join(","+sep)+_33+_2f+"}"; }else{ if(typeof it=="function"&&_6.json.ref.serializeFunctions){ return it.toString(); } } return _2.toJson(it); }; var _36=_2d(it,"#",""); if(!_27){ for(var i in _2c){ delete _2c[i].__id; } } return _36; },_addProp:function(id,_37){ return id+(id.match(/#/)?id.length==1?"":".":"#")+_37; },refAttribute:"$ref",_useRefs:false,serializeFunctions:false}; });