/*
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 3.2.0
build: nightly
*/
YUI.add("io-base",function(d){var D="io:start",p="io:complete",b="io:success",f="io:failure",E="io:end",y=0,o={"X-Requested-With":"XMLHttpRequest"},z={},k=d.config.win;function l(){return k.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");}function e(){var w=y;y++;return w;}function x(G,w){var F={};F.id=d.Lang.isNumber(w)?w:e();G=G||{};if(!G.use&&!G.upload){F.c=l();}else{if(G.use){if(G.use==="native"){if(k.XDomainRequest){F.c=new XDomainRequest();F.t=G.use;}else{F.c=l();}}else{F.c=d.io._transport[G.use];F.t=G.use;}}else{F.c={};}}return F;}function i(w){if(k){if(w.c&&k.XMLHttpRequest){w.c.onreadystatechange=null;}else{if(d.UA.ie===6&&!w.t){w.c.abort();}}}w.c=null;w=null;}function q(H,I){var G=new d.EventTarget().publish("transaction:"+H),w=I.arguments,F=I.context||d;if(w){G.on(I.on[H],F,w);}else{G.on(I.on[H],F);}return G;}function u(G,F){var w=F.arguments;if(w){d.fire(D,G,w);}else{d.fire(D,G);}if(F.on&&F.on.start){q("start",F).fire(G);}}function g(G,H){var F=G.e?{status:0,statusText:G.e}:G.c,w=H.arguments;if(w){d.fire(p,G.id,F,w);}else{d.fire(p,G.id,F);}if(H.on&&H.on.complete){q("complete",H).fire(G.id,F);}}function j(F,G){var w=G.arguments;if(w){d.fire(E,F.id,w);}else{d.fire(E,F.id);}if(G.on&&G.on.end){q("end",G).fire(F.id);}i(F);}function t(F,G){var w=G.arguments;if(w){d.fire(b,F.id,F.c,w);}else{d.fire(b,F.id,F.c);}if(G.on&&G.on.success){q("success",G).fire(F.id,F.c);}j(F,G);}function h(G,H){var F=G.e?{status:0,statusText:G.e}:G.c,w=H.arguments;if(w){d.fire(f,G.id,F,w);}else{d.fire(f,G.id,F);}if(H.on&&H.on.failure){q("failure",H).fire(G.id,F);}j(G,H);}function a(G,w,H,F){i(G);H.xdr.use="flash";H.data=H.form&&F?F:null;return d.io(w,H,G.id);}function r(w,F){w+=((w.indexOf("?")==-1)?"?":"&")+F;return w;}function v(w,F){if(F){o[w]=F;}else{delete o[w];}}function c(G,w){var F;w=w||{};for(F in o){if(o.hasOwnProperty(F)){if(w[F]){continue;}else{w[F]=o[F];}}}for(F in w){if(w.hasOwnProperty(F)){G.setRequestHeader(F,w[F]);}}}function n(F,w){if(F&&F.c){F.e=w;F.c.abort();}}function s(F,w){z[F.id]=k.setTimeout(function(){n(F,"timeout");},w);}function m(w){k.clearTimeout(z[w]);delete z[w];}function B(G,H){var w;try{if(G.c.status&&G.c.status!==0){w=G.c.status;}else{w=0;}}catch(F){w=0;}if(w>=200&&w<300||w===1223){t(G,H);}else{h(G,H);}}function C(w,F){if(w.c.readyState===4){if(F.timeout){m(w.id);}k.setTimeout(function(){g(w,F);B(w,F);},0);}}function A(G,O,K){var L,F,M,H,w,S,J,Q,I,R=G;O=d.Object(O);F=x(O.xdr||O.form,K);H=O.method?O.method=O.method.toUpperCase():O.method="GET";S=O.sync;J=O.data;if(d.Lang.isObject(O.data)&&d.QueryString){O.data=d.QueryString.stringify(O.data);}if(O.form){if(O.form.upload){return d.io.upload(F,G,O);}else{L=d.io._serialize(O.form,O.data);if(H==="POST"||H==="PUT"){O.data=L;}else{if(H==="GET"){G=r(G,L);}}}}if(O.data&&H==="GET"){G=r(G,O.data);}if(O.data&&H==="POST"){O.headers=d.merge({"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},O.headers);}if(F.t){return d.io.xdr(G,F,O);}if(!S){F.c.onreadystatechange=function(){C(F,O);};}try{F.c.open(H,G,S?false:true);if(O.xdr&&O.xdr.credentials){F.c.withCredentials=true;}}catch(P){if(O.xdr){return a(F,R,O,J);}}c(F.c,O.headers);u(F.id,O);try{F.c.send(O.data||"");if(S){M=F.c;Q=["status","statusText","responseText","responseXML"];w=O.arguments?{id:F.id,arguments:O.arguments}:{id:F.id};for(I=0;I<4;I++){w[Q[I]]=F.c[Q[I]];}w.getAllResponseHeaders=function(){return M.getAllResponseHeaders();};w.getResponseHeader=function(T){return M.getResponseHeader(T);};g(F,O);B(F,O);return w;}}catch(N){if(O.xdr){return a(F,R,O,J);}}if(O.timeout){s(F,O.timeout);}return{id:F.id,abort:function(){return F.c?n(F,"abort"):false;},isInProgress:function(){return F.c?F.c.readyState!==4&&F.c.readyState!==0:false;}};}A.start=u;A.complete=g;A.success=t;A.failure=h;A.end=j;A._id=e;A._timeout=z;A.header=v;d.io=A;d.io.http=A;},"3.2.0",{requires:["event-custom-base"],optional:["querystring-stringify-simple"]});