]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/javascript/yui3/build/io/io-base.js
Release 6.5.0
[Github/sugarcrm.git] / include / javascript / yui3 / build / io / io-base.js
1 /*
2  Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3  Code licensed under the BSD License:
4  http://developer.yahoo.com/yui/license.html
5  version: 3.3.0
6  build: 3167
7  */
8 YUI.add('io-base',function(Y){var E_START='io:start',E_COMPLETE='io:complete',E_SUCCESS='io:success',E_FAILURE='io:failure',E_END='io:end',transactionId=0,_headers={'X-Requested-With':'XMLHttpRequest'},_timeout={},w=Y.config.win;function _xhr(){return w.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');}
9 function _id(){var id=transactionId;transactionId++;return id;}
10 function _create(c,i){var o={};o.id=Y.Lang.isNumber(i)?i:_id();c=c||{};if(!c.use&&!c.upload){o.c=_xhr();}
11 else if(c.use){if(c.use==='native'){if(w.XDomainRequest){o.c=new XDomainRequest();o.t=c.use;}
12 else{o.c=_xhr();}}
13 else{o.c=Y.io._transport[c.use];o.t=c.use;}}
14 else{o.c={};o.t='io:iframe';}
15 return o;}
16 function _destroy(o){if(w){if(o.c&&w.XMLHttpRequest){o.c.onreadystatechange=null;}
17 else if(Y.UA.ie===6&&!o.t){o.c.abort();}}
18 o.c=null;o=null;}
19 function _tE(e,c){var eT=new Y.EventTarget().publish('transaction:'+e),a=c.arguments,cT=c.context||Y;if(a){eT.on(c.on[e],cT,a);}
20 else{eT.on(c.on[e],cT);}
21 return eT;}
22 function _ioStart(id,c){var a=c.arguments;if(a){Y.fire(E_START,id,a);}
23 else{Y.fire(E_START,id);}
24 if(c.on&&c.on.start){_tE('start',c).fire(id);}}
25 function _ioComplete(o,c){var r=o.e?{status:0,statusText:o.e}:o.c,a=c.arguments;if(a){Y.fire(E_COMPLETE,o.id,r,a);}
26 else{Y.fire(E_COMPLETE,o.id,r);}
27 if(c.on&&c.on.complete){_tE('complete',c).fire(o.id,r);}}
28 function _ioEnd(o,c){var a=c.arguments;if(a){Y.fire(E_END,o.id,a);}
29 else{Y.fire(E_END,o.id);}
30 if(c.on&&c.on.end){_tE('end',c).fire(o.id);}
31 _destroy(o);}
32 function _ioSuccess(o,c){var a=c.arguments;if(a){Y.fire(E_SUCCESS,o.id,o.c,a);}
33 else{Y.fire(E_SUCCESS,o.id,o.c);}
34 if(c.on&&c.on.success){_tE('success',c).fire(o.id,o.c);}
35 _ioEnd(o,c);}
36 function _ioFailure(o,c){var r=o.e?{status:0,statusText:o.e}:o.c,a=c.arguments;if(a){Y.fire(E_FAILURE,o.id,r,a);}
37 else{Y.fire(E_FAILURE,o.id,r);}
38 if(c.on&&c.on.failure){_tE('failure',c).fire(o.id,r);}
39 _ioEnd(o,c);}
40 function _resend(o,uri,c,d){_destroy(o);c.xdr.use='flash';c.data=c.form&&d?d:null;return Y.io(uri,c,o.id);}
41 function _concat(s,d){s+=((s.indexOf('?')==-1)?'?':'&')+d;return s;}
42 function _setHeader(l,v){if(v){_headers[l]=v;}
43 else{delete _headers[l];}}
44 function _setHeaders(o,h){var p;h=h||{};for(p in _headers){if(_headers.hasOwnProperty(p)){if(!h[p]){h[p]=_headers[p];}}}
45 for(p in h){if(h.hasOwnProperty(p)){if(h[p]!=='disable'){o.setRequestHeader(p,h[p]);}}}}
46 function _ioCancel(o,s){if(o&&o.c){o.e=s;o.c.abort();}}
47 function _startTimeout(o,t){_timeout[o.id]=w.setTimeout(function(){_ioCancel(o,'timeout');},t);}
48 function _clearTimeout(id){w.clearTimeout(_timeout[id]);delete _timeout[id];}
49 function _handleResponse(o,c){var status;try{status=(o.c.status&&o.c.status!==0)?o.c.status:0;}
50 catch(e){status=0;}
51 if(status>=200&&status<300||status===1223){_ioSuccess(o,c);}
52 else{_ioFailure(o,c);}}
53 function _readyState(o,c){if(o.c.readyState===4){if(c.timeout){_clearTimeout(o.id);}
54 w.setTimeout(function(){_ioComplete(o,c);_handleResponse(o,c);},0);}}
55 function _io(uri,c,i){var f,o,d,m,r,s,oD,a,j,u=uri;c=Y.Object(c);o=_create(c.xdr||c.form,i);m=c.method?c.method=c.method.toUpperCase():c.method='GET';s=c.sync;oD=c.data;if(Y.Lang.isObject(c.data)&&Y.QueryString){c.data=Y.QueryString.stringify(c.data);}
56 if(c.form){if(c.form.upload){return Y.io.upload(o,uri,c);}
57 else{f=Y.io._serialize(c.form,c.data);if(m==='POST'||m==='PUT'){c.data=f;}
58 else if(m==='GET'){uri=_concat(uri,f);}}}
59 if(c.data&&m==='GET'){uri=_concat(uri,c.data);}
60 if(c.data&&m==='POST'){c.headers=Y.merge({'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'},c.headers);}
61 if(o.t){return Y.io.xdr(uri,o,c);}
62 if(!s){o.c.onreadystatechange=function(){_readyState(o,c);};}
63 try{o.c.open(m,uri,s?false:true);if(c.xdr&&c.xdr.credentials){o.c.withCredentials=true;}}
64 catch(e1){if(c.xdr){return _resend(o,u,c,oD);}}
65 _setHeaders(o.c,c.headers);_ioStart(o.id,c);try{o.c.send(c.data||'');if(s){d=o.c;a=['status','statusText','responseText','responseXML'];r=c.arguments?{id:o.id,arguments:c.arguments}:{id:o.id};for(j=0;j<4;j++){r[a[j]]=o.c[a[j]];}
66 r.getAllResponseHeaders=function(){return d.getAllResponseHeaders();};r.getResponseHeader=function(h){return d.getResponseHeader(h);};_ioComplete(o,c);_handleResponse(o,c);return r;}}
67 catch(e2){if(c.xdr){return _resend(o,u,c,oD);}}
68 if(c.timeout){_startTimeout(o,c.timeout);}
69 return{id:o.id,abort:function(){return o.c?_ioCancel(o,'abort'):false;},isInProgress:function(){return o.c?o.c.readyState!==4&&o.c.readyState!==0:false;}};}
70 _io.start=_ioStart;_io.complete=_ioComplete;_io.success=_ioSuccess;_io.failure=_ioFailure;_io.end=_ioEnd;_io._id=_id;_io._timeout=_timeout;_io.header=_setHeader;Y.io=_io;Y.io.http=_io;},'3.3.0',{requires:['event-custom-base','querystring-stringify-simple']});