//>>built define(["dojo","dijit","dojox","dojo/require!dojox/xmpp/bosh,dojox/xmpp/util,dojox/data/dom"],function(e,g,d){e.provide("dojox.xmpp.TransportSession");e.require("dojox.xmpp.bosh");e.require("dojox.xmpp.util");e.require("dojox.data.dom");d.xmpp.TransportSession=function(a){this.sendTimeout=1E3*(this.wait+20);a&&e.isObject(a)&&(e.mixin(this,a),this.useScriptSrcTransport&&(this.transportIframes=[]))};e.extend(d.xmpp.TransportSession,{rid:0,hold:1,polling:1E3,secure:!1,wait:60,lang:"en",submitContentType:"text/xml; charset\x3dutf\x3d8", serviceUrl:"/httpbind",defaultResource:"dojoIm",domain:"imserver.com",sendTimeout:0,useScriptSrcTransport:!1,keepAliveTimer:null,state:"NotReady",transmitState:"Idle",protocolPacketQueue:[],outboundQueue:[],outboundRequests:{},inboundQueue:[],deferredRequests:{},matchTypeIdAttribute:{},open:function(){this.status="notReady";this.rid=Math.round(1E9*Math.random());this.protocolPacketQueue=[];this.outboundQueue=[];this.outboundRequests={};this.inboundQueue=[];this.deferredRequests={};this.matchTypeIdAttribute= {};this.keepAliveTimer=setTimeout(e.hitch(this,"_keepAlive"),1E4);this.useScriptSrcTransport?d.xmpp.bosh.initialize({iframes:this.hold+1,load:e.hitch(this,function(){this._sendLogin()})}):this._sendLogin()},_sendLogin:function(){var a=this.rid++,b=d.xmpp.util.createElement("body",{content:this.submitContentType,hold:this.hold,rid:a,to:this.domain,secure:this.secure,wait:this.wait,"xml:lang":this.lang,"xmpp:version":"1.0",xmlns:d.xmpp.xmpp.BODY_NS,"xmlns:xmpp":"urn:xmpp:xbosh"},!0);this.addToOutboundQueue(b, a)},_sendRestart:function(){var a=this.rid++,b=d.xmpp.util.createElement("body",{rid:a,sid:this.sid,to:this.domain,"xmpp:restart":"true","xml:lang":this.lang,xmlns:d.xmpp.xmpp.BODY_NS,"xmlns:xmpp":"urn:xmpp:xbosh"},!0);this.addToOutboundQueue(b,a)},processScriptSrc:function(a,b){(a=d.xml.parser.parse(a,"text/xml"))&&this.processDocument(a,b)},_keepAlive:function(){"wait"==this.state||this.isTerminated()||(this._dispatchPacket(),this.keepAliveTimer=setTimeout(e.hitch(this,"_keepAlive"),1E4))},close:function(a){var b= this.rid++,c={sid:this.sid,rid:b,type:"terminate"},f=null;a?(f=new d.string.Builder(d.xmpp.util.createElement("body",c,!1)),f.append(a),f.append("\x3c/body\x3e")):f=new d.string.Builder(d.xmpp.util.createElement("body",c,!1));this.addToOutboundQueue(f.toString(),b);"Terminate"==this.state},dispatchPacket:function(a,b,c,f){a&&this.protocolPacketQueue.push(a);a=new e.Deferred;b&&c&&(a.protocolMatchType=b,a.matchId=c,a.matchProperty=f||"id","id"!=a.matchProperty&&(this.matchTypeIdAttribute[b]=a.matchProperty)); this.deferredRequests[a.protocolMatchType+"-"+a.matchId]=a;this.dispatchTimer||(this.dispatchTimer=setTimeout(e.hitch(this,"_dispatchPacket"),600));return a},_dispatchPacket:function(){clearTimeout(this.dispatchTimer);delete this.dispatchTimer;if(!this.sid)console.debug("TransportSession::dispatchPacket() No SID, packet dropped.");else if(!this.authId)console.debug("TransportSession::dispatchPacket() No authId, packet dropped [FIXME]");else if(!("error"!=this.transmitState&&0==this.protocolPacketQueue.length&& 0this.outboundQueue.length)return!1;var e=this.outboundQueue[0].rid; b==e?(this.removeFromOutboundQueue(b),this.processResponse(c,b),this.processInboundQueue()):b-ethis.authRetries--&&(console.error("Unable to obtain Authorization ID"),this.terminateSession());this.wait=a.getAttribute("wait");a.getAttribute("polling")&&(this.polling=1E3*parseInt(a.getAttribute("polling"))); this.inactivity=a.getAttribute("inactivity");this.setState("Ready")}e.forEach(a.childNodes,function(a){this.processProtocolResponse(a,b)},this);"idle"==this.transmitState&&this.dispatchPacket()}},processProtocolResponse:function(a,b){this.onProcessProtocolResponse(a);b=a.nodeName+"-"+a.getAttribute("id");var c=this.deferredRequests[b];c&&(c.callback(a),delete this.deferredRequests[b])},setState:function(a,b){if(this.state!=a){if(this["on"+a])this["on"+a](a,this.state,b);this.state=a}},isTerminated:function(){return"Terminate"== this.state},processError:function(a,b,c){if(this.isTerminated())return!1;if(200!=b){if(400<=b&&500>b)this.setState("Terminate",d);else return this.removeFromOutboundQueue(c),setTimeout(e.hitch(this,function(){this.dispatchPacket()}),200),!0;return!1}this.removeFromOutboundQueue(c);if(a&&a.firstChild&&"terminate"==a.firstChild.getAttribute("type")){a=a.firstChild.firstChild;var d="";a&&"conflict"==a.nodeName&&(d="conflict");this.setState("Terminate",d);return!1}this.transmitState="error";setTimeout(e.hitch(this, function(){this.dispatchPacket()}),200);return!0},onTerminate:function(a,b,c){},onProcessProtocolResponse:function(a){},onReady:function(a,b){}})});