/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.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(_1){ var _2=false; var _3=_1.getElementsByTagName("input"); dojo.lang.forEach(_3,function(_4){ if(_2){ return; } if(_4.getAttribute("type")=="file"){ _2=true; } }); return _2; }; dojo.io.formHasFile=function(_5){ return dojo.io.checkChildrenForFile(_5); }; dojo.io.updateNode=function(_6,_7){ _6=dojo.byId(_6); var _8=_7; if(dojo.lang.isString(_7)){ _8={url:_7}; } _8.mimetype="text/html"; _8.load=function(t,d,e){ while(_6.firstChild){ dojo.dom.destroyNode(_6.firstChild); } _6.innerHTML=d; }; dojo.io.bind(_8); }; dojo.io.formFilter=function(_c){ var _d=(_c.type||"").toLowerCase(); return !_c.disabled&&_c.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],_d); }; dojo.io.encodeForm=function(_e,_f,_10){ if((!_e)||(!_e.tagName)||(!_e.tagName.toLowerCase()=="form")){ dojo.raise("Attempted to encode a non-form element."); } if(!_10){ _10=dojo.io.formFilter; } var enc=/utf/i.test(_f||"")?encodeURIComponent:dojo.string.encodeAscii; var _12=[]; for(var i=0;i<_e.elements.length;i++){ var elm=_e.elements[i]; if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_10(elm)){ continue; } var _15=enc(elm.name); var _16=elm.type.toLowerCase(); if(_16=="select-multiple"){ for(var j=0;j=200)&&(_3a.status<300))||(_3a.status==304)||(_3a.status==1223)||(location.protocol=="file:"&&(_3a.status==0||_3a.status==undefined))||(location.protocol=="chrome:"&&(_3a.status==0||_3a.status==undefined))){ var ret; if(_39.method.toLowerCase()=="head"){ var _3f=_3a.getAllResponseHeaders(); ret={}; ret.toString=function(){ return _3f; }; var _40=_3f.split(/[\r\n]+/g); for(var i=0;i<_40.length;i++){ var _42=_40[i].match(/^([^:]+)\s*:\s*(.+)$/i); if(_42){ ret[_42[1]]=_42[2]; } } }else{ if(_39.mimetype=="text/javascript"){ try{ ret=dj_eval(_3a.responseText); } catch(e){ dojo.debug(e); dojo.debug(_3a.responseText); ret=null; } }else{ if(_39.mimetype.substr(0,9)=="text/json"||_39.mimetype.substr(0,16)=="application/json"){ try{ ret=dj_eval("("+_39.jsonFilter(_3a.responseText)+")"); } catch(e){ dojo.debug(e); dojo.debug(_3a.responseText); ret=false; } }else{ if((_39.mimetype=="application/xml")||(_39.mimetype=="text/xml")){ ret=_3a.responseXML; if(!ret||typeof ret=="string"||!_3a.getResponseHeader("Content-Type")){ ret=dojo.dom.createDocumentFromText(_3a.responseText); } }else{ ret=_3a.responseText; } } } } if(_3d){ addToCache(url,_3c,_39.method,_3a); } _39[(typeof _39.load=="function")?"load":"handle"]("load",ret,_3a,_39); }else{ var _43=new dojo.io.Error("XMLHttpTransport Error: "+_3a.status+" "+_3a.statusText); _39[(typeof _39.error=="function")?"error":"handle"]("error",_43,_3a,_39); } } function setHeaders(_44,_45){ if(_45["headers"]){ for(var _46 in _45["headers"]){ if(_46.toLowerCase()=="content-type"&&!_45["contentType"]){ _45["contentType"]=_45["headers"][_46]; }else{ _44.setRequestHeader(_46,_45["headers"][_46]); } } } } 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&&!_2d._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)-1){ dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url); url=url.split("#")[0]; } if(_4e["file"]){ _4e.method="post"; } if(!_4e["method"]){ _4e.method="get"; } if(_4e.method.toLowerCase()=="get"){ _4e.multipart=false; }else{ if(_4e["file"]){ _4e.multipart=true; }else{ if(!_4e["multipart"]){ _4e.multipart=false; } } } if(_4e["backButton"]||_4e["back"]||_4e["changeUrl"]){ dojo.undo.browser.addToHistory(_4e); } var _53=_4e["content"]||{}; if(_4e.sendTransport){ _53["dojo.transport"]="xmlhttp"; } do{ if(_4e.postContent){ _50=_4e.postContent; break; } if(_53){ _50+=dojo.io.argsFromMap(_53,_4e.encoding); } if(_4e.method.toLowerCase()=="get"||!_4e.multipart){ break; } var t=[]; if(_50.length){ var q=_50.split("&"); for(var i=0;i-1?"&":"?")+_50; } if(_5a){ _60+=(dojo.string.endsWithAny(_60,"?","&")?"":(_60.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf(); } if(!_4e.user){ _5d.open(_4e.method.toUpperCase(),_60,_59); }else{ _5d.open(_4e.method.toUpperCase(),_60,_59,_4e.user,_4e.password); } setHeaders(_5d,_4e); try{ _5d.send(null); } catch(e){ if(typeof _5d.abort=="function"){ _5d.abort(); } doLoad(_4e,{status:404},url,_50,_5b); } } if(!_59){ doLoad(_4e,_5d,url,_50,_5b); _2d._blockAsync=false; } _4e.abort=function(){ try{ _5d._aborted=true; } catch(e){ } return _5d.abort(); }; return; }; dojo.io.transports.addTransport("XMLHTTPTransport"); }; }