| /* |
| Copyright (c) 2004-2011, 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 |
| */ |
| |
| //>>built |
| define("dojo/io/script",["../main"],function(_1){ |
| _1.getObject("io",true,_1); |
| var _2=_1.isIE?"onreadystatechange":"load",_3=/complete|loaded/; |
| _1.io.script={get:function(_4){ |
| var _5=this._makeScriptDeferred(_4); |
| var _6=_5.ioArgs; |
| _1._ioAddQueryToUrl(_6); |
| _1._ioNotifyStart(_5); |
| if(this._canAttach(_6)){ |
| var _7=this.attach(_6.id,_6.url,_4.frameDoc); |
| if(!_6.jsonp&&!_6.args.checkString){ |
| var _8=_1.connect(_7,_2,function(_9){ |
| if(_9.type=="load"||_3.test(_7.readyState)){ |
| _1.disconnect(_8); |
| _6.scriptLoaded=_9; |
| } |
| }); |
| } |
| } |
| _1._ioWatch(_5,this._validCheck,this._ioCheck,this._resHandle); |
| return _5; |
| },attach:function(id,_a,_b){ |
| var _c=(_b||_1.doc); |
| var _d=_c.createElement("script"); |
| _d.type="text/javascript"; |
| _d.src=_a; |
| _d.id=id; |
| _d.async=true; |
| _d.charset="utf-8"; |
| return _c.getElementsByTagName("head")[0].appendChild(_d); |
| },remove:function(id,_e){ |
| _1.destroy(_1.byId(id,_e)); |
| if(this["jsonp_"+id]){ |
| delete this["jsonp_"+id]; |
| } |
| },_makeScriptDeferred:function(_f){ |
| var dfd=_1._ioSetArgs(_f,this._deferredCancel,this._deferredOk,this._deferredError); |
| var _10=dfd.ioArgs; |
| _10.id=_1._scopeName+"IoScript"+(this._counter++); |
| _10.canDelete=false; |
| _10.jsonp=_f.callbackParamName||_f.jsonp; |
| if(_10.jsonp){ |
| _10.query=_10.query||""; |
| if(_10.query.length>0){ |
| _10.query+="&"; |
| } |
| _10.query+=_10.jsonp+"="+(_f.frameDoc?"parent.":"")+_1._scopeName+".io.script.jsonp_"+_10.id+"._jsonpCallback"; |
| _10.frameDoc=_f.frameDoc; |
| _10.canDelete=true; |
| dfd._jsonpCallback=this._jsonpCallback; |
| this["jsonp_"+_10.id]=dfd; |
| } |
| return dfd; |
| },_deferredCancel:function(dfd){ |
| dfd.canceled=true; |
| if(dfd.ioArgs.canDelete){ |
| _1.io.script._addDeadScript(dfd.ioArgs); |
| } |
| },_deferredOk:function(dfd){ |
| var _11=dfd.ioArgs; |
| if(_11.canDelete){ |
| _1.io.script._addDeadScript(_11); |
| } |
| return _11.json||_11.scriptLoaded||_11; |
| },_deferredError:function(_12,dfd){ |
| if(dfd.ioArgs.canDelete){ |
| if(_12.dojoType=="timeout"){ |
| _1.io.script.remove(dfd.ioArgs.id,dfd.ioArgs.frameDoc); |
| }else{ |
| _1.io.script._addDeadScript(dfd.ioArgs); |
| } |
| } |
| return _12; |
| },_deadScripts:[],_counter:1,_addDeadScript:function(_13){ |
| _1.io.script._deadScripts.push({id:_13.id,frameDoc:_13.frameDoc}); |
| _13.frameDoc=null; |
| },_validCheck:function(dfd){ |
| var _14=_1.io.script; |
| var _15=_14._deadScripts; |
| if(_15&&_15.length>0){ |
| for(var i=0;i<_15.length;i++){ |
| _14.remove(_15[i].id,_15[i].frameDoc); |
| _15[i].frameDoc=null; |
| } |
| _1.io.script._deadScripts=[]; |
| } |
| return true; |
| },_ioCheck:function(dfd){ |
| var _16=dfd.ioArgs; |
| if(_16.json||(_16.scriptLoaded&&!_16.args.checkString)){ |
| return true; |
| } |
| var _17=_16.args.checkString; |
| return _17&&eval("typeof("+_17+") != 'undefined'"); |
| },_resHandle:function(dfd){ |
| if(_1.io.script._ioCheck(dfd)){ |
| dfd.callback(dfd); |
| }else{ |
| dfd.errback(new Error("inconceivable dojo.io.script._resHandle error")); |
| } |
| },_canAttach:function(_18){ |
| return true; |
| },_jsonpCallback:function(_19){ |
| this.ioArgs.json=_19; |
| }}; |
| return _1.io.script; |
| }); |