dojo.cometd=new function(){this.DISCONNECTED="DISCONNECTED";this.CONNECTING="CONNECTING";this.CONNECTED="CONNECTED";this.DISCONNECTING="DISCONNECING";this._initialized=false;this._connected=false;this._polling=false;this.connectionTypes=new dojo.AdapterRegistry(true);this.version="1.0";this.minimumVersion="0.9";this.clientId=null;this.messageId=0;this.batch=0;this._isXD=false;this.handshakeReturn=null;this.currentTransport=null;this.url=null;this.lastMessage=null;this._messageQ=[];this.handleAs="json-comment-optional";this._advice={};this._maxInterval=30000;this._backoffInterval=1000;this._deferredSubscribes={};this._deferredUnsubscribes={};this._subscriptions=[];this._extendInList=[];this._extendOutList=[];this.state=function(){return this._initialized?(this._connected?this.CONNECTED:this.CONNECTING):(this._connected?this.DISCONNECTING:this.DISCONNECTED)};this.init=function(M,L,E){L=L||{};L.version=this.version;L.minimumVersion=this.minimumVersion;L.channel="/meta/handshake";L.id=""+this.messageId++;this.url=M;if(!this.url){console.debug("no cometd root passed");return null}var C="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";var H=(""+window.location).match(new RegExp(C));if(H[4]){var J=H[4].split(":");var D=J[0];var G=J[1]||"80";H=this.url.match(new RegExp(C));if(H[4]){J=H[4].split(":");var K=J[0];var F=J[1]||"80";this._isXD=((K!=D)||(F!=G))}}if(!this._isXD){if(L.ext){if(L.ext["json-comment-filtered"]!==true&&L.ext["json-comment-filtered"]!==false){L.ext["json-comment-filtered"]=true}}else{L.ext={"json-comment-filtered":true}}}L=this._extendOut(L);var I={url:this.url,handleAs:this.handleAs,content:{"message":Wtf.encode([L])},load:dojo.hitch(this,function(O){this._finishInit(O)}),error:dojo.hitch(this,function(O){console.debug("handshake error!:",O);this._finishInit([{}])})};if(E){Wtf.apply(I,E)}this._props=L;for(var N in this._subscriptions){for(var B in this._subscriptions[N]){if(this._subscriptions[N][B].topic){dojo.unsubscribe(this._subscriptions[N][B].topic)}}}this._messageQ=[];this._subscriptions=[];this._initialized=true;this.batch=0;this.startBatch();var A;if(this._isXD){I.callbackParamName="jsonp";A=dojo.script.get(I)}else{A=dojo.xhrPost(I)}dojo.publish("/cometd/meta",[{cometd:this,action:"handshake",successful:true,state:this.state()}]);return A};this.publish=function(C,D,A){var B={data:D,channel:C};if(A){Wtf.apply(B,A)}this._sendMessage(B)};this.subscribe=function(G,B,H){if(B){var F="/cometd"+G;var E=this._subscriptions[F];if(!E||E.length==0){E=[];this._sendMessage({channel:"/meta/subscribe",subscription:G});var A=this._deferredSubscribes;A[G]=new dojo.Deferred();if(A[G]){A[G].cancel();delete A[G]}}for(var D in E){if(E[D].objOrFunc===B&&(!E[D].funcName&&!H||E[D].funcName==H)){return null}}var C=dojo.subscribe(F,B,H);E.push({topic:C,objOrFunc:B,funcName:H});this._subscriptions[F]=E}return this._deferredSubscribes[G]};this.unsubscribe=function(F,A,G){var E="/cometd"+F;var C=this._subscriptions[E];if(!C||C.length==0){return null}var D=0;for(var B in C){var H=C[B];if((!A)||(H.objOrFunc===A&&(!H.funcName&&!G||H.funcName==G))){dojo.unsubscribe(C[B].topic);delete C[B]}else{D++}}if(D==0){delete this._subscriptions[E];this._sendMessage({channel:"/meta/unsubscribe",subscription:F});this._deferredUnsubscribes[F]=new dojo.Deferred();if(this._deferredSubscribes[F]){this._deferredSubscribes[F].cancel();delete this._deferredSubscribes[F]}}return this._deferredUnsubscribes[F]};this.disconnect=function(){for(var B in this._subscriptions){for(var A in this._subscriptions[B]){if(this._subscriptions[B][A].topic){dojo.unsubscribe(this._subscriptions[B][A].topic)}}}this._subscriptions=[];this._messageQ=[];if(this._initialized&&this.currentTransport){this._initialized=false;this.currentTransport.disconnect()}if(!this._polling){this._connected=false;dojo.publish("/cometd/meta",[{cometd:this,action:"connect",successful:false,state:this.state()}])}this._initialized=false;dojo.publish("/cometd/meta",[{cometd:this,action:"disconnect",successful:true,state:this.state()}])};this.subscribed=function(B,A){};this.unsubscribed=function(B,A){};this.tunnelInit=function(B,A){};this.tunnelCollapse=function(){};this._backoff=function(){if(!this._advice||!this._advice.interval){this._advice={reconnect:"retry",interval:0}}if(this._advice.interval<this._maxInterval){this._advice.interval+=this._backoffInterval}};this._finishInit=function(A){A=A[0];this.handshakeReturn=A;if(A["advice"]){this._advice=A.advice}var B=A.successful?A.successful:false;if(A.version<this.minimumVersion){console.debug("cometd protocol version mismatch. We wanted",this.minimumVersion,"but got",A.version);B=false;this._advice.reconnect="none"}if(B){this.currentTransport=this.connectionTypes.match(A.supportedConnectionTypes,A.version,this._isXD);this.currentTransport._cometd=this;this.currentTransport.version=A.version;this.clientId=A.clientId;this.tunnelInit=dojo.hitch(this.currentTransport,"tunnelInit");this.tunnelCollapse=dojo.hitch(this.currentTransport,"tunnelCollapse");this.currentTransport.startup(A)}dojo.publish("/cometd/meta",[{cometd:this,action:"handshook",successful:B,state:this.state()}]);if(!B){console.debug("cometd init failed");this._backoff();if(this._advice&&this._advice["reconnect"]=="none"){console.debug("cometd reconnect: none")}else{if(this._advice&&this._advice["interval"]&&this._advice.interval>0){setTimeout(dojo.hitch(this,function(){this.init(this.url,this._props)}),this._advice.interval)}else{this.init(this.url,this._props)}}}};this._extendIn=function(B){var A=B;Wtf.each(dojo.cometd._extendInList,function(C){var D=C(A);if(D){A=D}});return A};this._extendOut=function(B){var A=B;Wtf.each(dojo.cometd._extendOutList,function(C){var D=C(A);if(D){A=D}});return A};this.deliver=function(A){Wtf.each(A,this._deliver,this);return A};this._deliver=function(C){C=this._extendIn(C);if(!C["channel"]){if(C["success"]!==true){console.debug("cometd error: no channel for message!",C);return }}this.lastMessage=C;if(C.advice){this._advice=C.advice}var A=null;if((C["channel"])&&(C.channel.length>5)&&(C.channel.substr(0,5)=="/meta")){switch(C.channel){case"/meta/connect":if(C.successful&&!this._connected){this._connected=this._initialized;this.endBatch()}else{if(!this._initialized){this._connected=false}}dojo.publish("/cometd/meta",[{cometd:this,action:"connect",successful:C.successful,state:this.state()}]);break;case"/meta/subscribe":A=this._deferredSubscribes[C.subscription];if(!C.successful){if(A){A.errback(new Error(C.error))}return }dojo.cometd.subscribed(C.subscription,C);if(A){A.callback(true)}break;case"/meta/unsubscribe":A=this._deferredUnsubscribes[C.subscription];if(!C.successful){if(A){A.errback(new Error(C.error))}return }this.unsubscribed(C.subscription,C);if(A){A.callback(true)}break}}this.currentTransport.deliver(C);if(C.data){try{var B="/cometd"+C.channel;dojo.publish(B,[C])}catch(D){console.debug(D)}}};this._sendMessage=function(A){if(this.currentTransport&&this._connected&&this.batch==0){return this.currentTransport.sendMessages([A])}else{this._messageQ.push(A);return null}};this.startBatch=function(){this.batch++};this.endBatch=function(){if(--this.batch<=0&&this.currentTransport&&this._connected){this.batch=0;var A=this._messageQ;this._messageQ=[];if(A.length>0){this.currentTransport.sendMessages(A)}}};this._onUnload=function(){dojo.addOnUnload(dojo.cometd,"disconnect")}};dojo.cometd.longPollTransport=new function(){this._connectionType="long-polling";this._cometd=null;this.check=function(C,A,B){return((!B)&&(C.indexOf("long-polling")>=0))};this.tunnelInit=function(){var A={channel:"/meta/connect",clientId:this._cometd.clientId,connectionType:this._connectionType,id:""+this._cometd.messageId++};A=this._cometd._extendOut(A);this.openTunnelWith({message:Wtf.encode([A])})};this.tunnelCollapse=function(){if(!this._cometd._initialized){return }if(this._cometd._advice){if(this._cometd._advice["reconnect"]=="none"){return }if((this._cometd._advice["interval"])&&(this._cometd._advice.interval>0)){setTimeout(dojo.hitch(this,function(){this._connect()}),this._cometd._advice.interval)}else{this._connect()}}else{this._connect()}};this._connect=function(){if(!this._cometd._initialized){return }if(this._cometd._polling){console.debug("wait for poll to complete or fail");return }if((this._cometd._advice)&&(this._cometd._advice["reconnect"]=="handshake")){this._cometd._connected=false;this._initialized=false;this._cometd.init(this._cometd.url,this._cometd._props)}else{if(this._cometd._connected){var A={channel:"/meta/connect",connectionType:this._connectionType,clientId:this._cometd.clientId,id:""+this._cometd.messageId++};A=this._cometd._extendOut(A);this.openTunnelWith({message:Wtf.encode([A])})}}};this.deliver=function(A){};this.openTunnelWith=function(B,A){this._cometd._polling=true;var C=dojo.xhrPost({url:(A||this._cometd.url),content:B,handleAs:this._cometd.handleAs,load:dojo.hitch(this,function(D){this._cometd._polling=false;this._cometd.deliver(D);this.tunnelCollapse()}),error:dojo.hitch(this,function(D){this._cometd._polling=false;console.debug("tunnel opening failed:",D);dojo.publish("/cometd/meta",[{cometd:this._cometd,action:"connect",successful:false,state:this._cometd.state()}]);this._cometd._backoff();this.tunnelCollapse()})})};this.sendMessages=function(A){for(var B=0;B<A.length;B++){A[B].clientId=this._cometd.clientId;A[B].id=""+this._cometd.messageId++;A[B]=this._cometd._extendOut(A[B])}return dojo.xhrPost({url:this._cometd.url,handleAs:this._cometd.handleAs,load:dojo.hitch(this._cometd,"deliver"),content:{message:Wtf.encode(A)}})};this.startup=function(A){if(this._cometd._connected){return }this.tunnelInit()};this.disconnect=function(){var A={channel:"/meta/disconnect",clientId:this._cometd.clientId,id:""+this._cometd.messageId++};A=this._cometd._extendOut(A);dojo.xhrPost({url:this._cometd.url,handleAs:this._cometd.handleAs,content:{message:Wtf.encode([A])}})}};dojo.cometd.callbackPollTransport=new function(){this._connectionType="callback-polling";this._cometd=null;this.check=function(C,A,B){return(C.indexOf("callback-polling")>=0)};this.tunnelInit=function(){var A={channel:"/meta/connect",clientId:this._cometd.clientId,connectionType:this._connectionType,id:""+this._cometd.messageId++};A=this._cometd._extendOut(A);this.openTunnelWith({message:Wtf.encode([A])})};this.tunnelCollapse=dojo.cometd.longPollTransport.tunnelCollapse;this._connect=dojo.cometd.longPollTransport._connect;this.deliver=dojo.cometd.longPollTransport.deliver;this.openTunnelWith=function(B,A){this._cometd._polling=true;dojo.script.get({load:dojo.hitch(this,function(C){this._cometd._polling=false;this._cometd.deliver(C);this.tunnelCollapse()}),error:dojo.hitch(this,function(C){this._cometd._polling=false;console.debug("tunnel opening failed:",C);dojo.publish("/cometd/meta",[{cometd:this._cometd,action:"connect",successful:false,state:this._cometd.state()}]);this._cometd._backoff();this.tunnelCollapse()}),url:(A||this._cometd.url),content:B,callbackParamName:"jsonp"})};this.sendMessages=function(A){for(var C=0;C<A.length;C++){A[C].clientId=this._cometd.clientId;A[C].id=""+this._cometd.messageId++;A[C]=this._cometd._extendOut(A[C])}var B={url:this._cometd.url,load:dojo.hitch(this._cometd,"deliver"),callbackParamName:"jsonp",content:{message:Wtf.encode(A)}};return dojo.script.get(B)};this.startup=function(A){if(this._cometd._connected){return }this.tunnelInit()};this.disconnect=dojo.cometd.longPollTransport.disconnect;this.disconnect=function(){var A={channel:"/meta/disconnect",clientId:this._cometd.clientId,id:""+this._cometd.messageId++};A=this._cometd._extendOut(A);dojo.script.get({url:this._cometd.url,callbackParamName:"jsonp",content:{message:Wtf.encode([A])}})}};dojo.cometd.connectionTypes.register("long-polling",dojo.cometd.longPollTransport.check,dojo.cometd.longPollTransport);dojo.cometd.connectionTypes.register("callback-polling",dojo.cometd.callbackPollTransport.check,dojo.cometd.callbackPollTransport);dojo.addOnUnload(dojo.cometd,"_onUnload")