Removing atmosphere, revert to plain websockets

Project: http://git-wip-us.apache.org/repos/asf/incubator-wave/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-wave/commit/38bc93ea
Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave/tree/38bc93ea
Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave/diff/38bc93ea

Branch: refs/heads/master
Commit: 38bc93ea0fa9270785233170cc0f50eab6a59540
Parents: d35211b
Author: Pablo Ojanguren <pablo...@gmail.com>
Authored: Mon Apr 17 16:00:34 2017 +0200
Committer: wisebaldone <ehu...@gmail.com>
Committed: Tue Apr 25 00:40:52 2017 +1000

----------------------------------------------------------------------
 wave/build.gradle                               |   20 +-
 .../compile/runtime/javascript-2.1.5.war        |  Bin 35299 -> 0 bytes
 .../javascript/atmosphere-min.js                | 1028 ------
 .../javascript-2.1.5/javascript/atmosphere.js   | 3081 ------------------
 .../box/server/rpc/ServerRpcProvider.java       |  283 +-
 .../rpc/atmosphere/AtmosphereChannel.java       |  116 -
 .../atmosphere/AtmosphereClientInterceptor.java |  103 -
 .../rpc/atmosphere/GuiceAtmosphereFactory.java  |   71 -
 .../box/webclient/client/WaveSocketFactory.java |   52 +-
 .../webclient/client/WaveWebSocketClient.java   |   16 +-
 .../client/atmosphere/AtmosphereConnection.java |   53 -
 .../atmosphere/AtmosphereConnectionImpl.java    |  232 --
 .../AtmosphereConnectionListener.java           |   48 -
 .../atmosphere/AtmosphereConnectionState.java   |   53 -
 14 files changed, 68 insertions(+), 5088 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/38bc93ea/wave/build.gradle
----------------------------------------------------------------------
diff --git a/wave/build.gradle b/wave/build.gradle
index f67a9fa..232a286 100644
--- a/wave/build.gradle
+++ b/wave/build.gradle
@@ -124,10 +124,26 @@ dependencies {
             [group: "commons-httpclient", name: "commons-httpclient", version: 
"3.1"],                          // [?, ?]
             [group: "commons-lang", name: "commons-lang", version: "2.5"],     
                                 // [?, ?]
             [group: "commons-fileupload", name: "commons-fileupload", version: 
"1.3.2"],                        // [11/2016, 6/2017]
+            [group: "commons-logging", name: "commons-logging-api", version: 
"1.1"],                            // [?, ?]
+            [group: "commons-logging", name: "commons-logging", version: 
"1.1.1"],                              // [?, ?]
+            [group: "com.google.code.findbugs", name: "jsr305", version: 
"2.0.1"],                              // [?, ?]
+            [group: "com.google.code.gson", name: "gson", version: "2.2.4"],   
                                 // [?, ?]
+            [group: "com.google.guava", name: "guava", version: "20.0"],       
                                 // [?, ?]
+            [group: "com.google.guava", name: "guava-gwt", version: "20.0"],   
                                 // [?, ?]
+            [group: "com.google.gxp", name: "google-gxp", version: 
"0.2.4-beta"],                               // [?, ?]
+            [group: "com.google.inject.extensions", name: 
"guice-assistedinject", version: "3.0"],              // [?, ?]
+            [group: "com.google.inject.extensions", name: "guice-servlet", 
version: "3.0"],                     // [?, ?]
+            [group: "com.google.inject", name: "guice", version: "3.0"],       
                                 // [?, ?]
+            [group: "com.google.protobuf", name: "protobuf-java", version: 
"2.6.1"],                            // [?, ?]
+            [group: "com.google.inject", name: "guice", version:"4.1.0"],      
                                // [?, ?]
+            [group: "com.google.inject.extensions", name: "guice-servlet", 
version:"4.1.0"],                   // [?, ?]
+            [group: "com.googlecode.protobuf-java-format", name: 
"protobuf-java-format", version: "1.2"],       // [?, ?]
+            [group: "com.typesafe", name: "config", version: "1.2.1"],         
                                 // [?, ?]
+            [group: "dom4j", name: "dom4j", version: "1.6.1"],                 
                                 // [?, ?]
+            [group: "eu.infomas", name: "annotation-detector", version: 
"3.0.0"],                               // [?, ?]
+            [group: "org.antlr", name: "antlr", version: "3.2"],               
                                 // [?, ?]
             [group: "org.apache.velocity", name: "velocity", version: 
"1.6.3"],                                 // [?, ?]
             [group: "org.apache.lucene", name: "lucene-core", version: 
"3.5.0"],                                // [?, ?]
-            [group: "org.atmosphere", name: "atmosphere-guice", version: 
"0.8.3"],                              // [?, ?]
-            [group: "org.atmosphere", name: "atmosphere-runtime", version: 
"2.1.0"],                            // [?, ?]
             [group: "org.bouncycastle", name: "bcprov-jdk16", version: 
"1.45"],                                 // [?, ?]
             [group: "org.eclipse.jetty", name: "jetty-annotations", version: 
"9.2.14.v20151106"],               // [?, ?]
             [group: "org.eclipse.jetty", name: "jetty-client", version: 
"9.2.14.v20151106"],                    // [?, ?]

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/38bc93ea/wave/dependencies/compile/runtime/javascript-2.1.5.war
----------------------------------------------------------------------
diff --git a/wave/dependencies/compile/runtime/javascript-2.1.5.war 
b/wave/dependencies/compile/runtime/javascript-2.1.5.war
deleted file mode 100644
index d6a099f..0000000
Binary files a/wave/dependencies/compile/runtime/javascript-2.1.5.war and 
/dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/38bc93ea/wave/dependencies/compile/runtime/javascript-2.1.5/javascript/atmosphere-min.js
----------------------------------------------------------------------
diff --git 
a/wave/dependencies/compile/runtime/javascript-2.1.5/javascript/atmosphere-min.js
 
b/wave/dependencies/compile/runtime/javascript-2.1.5/javascript/atmosphere-min.js
deleted file mode 100644
index 641d6c4..0000000
--- 
a/wave/dependencies/compile/runtime/javascript-2.1.5/javascript/atmosphere-min.js
+++ /dev/null
@@ -1,1028 +0,0 @@
-(function(a,b){if(typeof define==="function"&&define.amd){define(b)
-}else{a.atmosphere=b()
-}}(this,function(){var 
c="2.1.5-javascript",a={},d,g=[],f=[],e=0,b=Object.prototype.hasOwnProperty;
-a={onError:function(h){},onClose:function(h){},onOpen:function(h){},onReopen:function(h){},onMessage:function(h){},onReconnect:function(i,h){},onMessagePublished:function(h){},onTransportFailure:function(i,h){},onLocalMessage:function(h){},onFailureToReconnect:function(i,h){},onClientTimeout:function(h){},AtmosphereRequest:function(M){var
 
O={timeout:300000,method:"GET",headers:{},contentType:"",callback:null,url:"",data:"",suspend:true,maxRequest:-1,reconnect:true,maxStreamingLength:10000000,lastIndex:0,logLevel:"info",requestCount:0,fallbackMethod:"GET",fallbackTransport:"streaming",transport:"long-polling",webSocketImpl:null,webSocketBinaryType:null,dispatchUrl:null,webSocketPathDelimiter:"@@",enableXDR:false,rewriteURL:false,attachHeadersAsQueryString:true,executeCallbackBeforeReconnect:false,readyState:0,lastTimestamp:0,withCredentials:false,trackMessageLength:false,messageDelimiter:"|",connectTimeout:-1,reconnectInterval:0,dropHeaders:true,uuid:0,async:true,shared:false,readRes
 
ponsesHeaders:false,maxReconnectOnClose:5,enableProtocol:true,pollingInterval:0,onError:function(aA){},onClose:function(aA){},onOpen:function(aA){},onMessage:function(aA){},onReopen:function(aB,aA){},onReconnect:function(aB,aA){},onMessagePublished:function(aA){},onTransportFailure:function(aB,aA){},onLocalMessage:function(aA){},onFailureToReconnect:function(aB,aA){},onClientTimeout:function(aA){}};
-var 
W={status:200,reasonPhrase:"OK",responseBody:"",messages:[],headers:[],state:"messageReceived",transport:"polling",error:null,request:null,partialMessage:"",errorHandled:false,closedByClientTimeout:false};
-var Z=null;
-var o=null;
-var v=null;
-var E=null;
-var G=null;
-var ak=true;
-var l=0;
-var aw=false;
-var aa=null;
-var aq;
-var q=null;
-var J=a.util.now();
-var K;
-var az;
-ay(M);
-function ar(){ak=true;
-aw=false;
-l=0;
-Z=null;
-o=null;
-v=null;
-E=null
-}function A(){am();
-ar()
-}function 
L(aB,aA){if(W.partialMessage===""&&(aA.transport==="streaming")&&(aB.responseText.length>aA.maxStreamingLength)){W.messages=[];
-aA.reconnectingOnLength=true;
-aA.isReopen=true;
-ai(true);
-D();
-am();
-R(aB,aA,aA.pollingInterval)
-}}function D(){if(O.enableProtocol&&!O.firstMessage){var 
aC="X-Atmosphere-Transport=close&X-Atmosphere-tracking-id="+O.uuid;
-a.util.each(O.headers,function(aE,aG){var 
aF=a.util.isFunction(aG)?aG.call(this,O,O,W):aG;
-if(aF!=null){aC+="&"+encodeURIComponent(aE)+"="+encodeURIComponent(aF)
-}});
-var aA=O.url.replace(/([?&])_=[^&]*/,aC);
-aA=aA+(aA===O.url?(/\?/.test(O.url)?"&":"?")+aC:"");
-var aB={connected:false};
-var aD=new a.AtmosphereRequest(aB);
-aD.attachHeadersAsQueryString=false;
-aD.dropHeaders=true;
-aD.url=aA;
-aD.contentType="text/plain";
-aD.transport="polling";
-aD.method="GET";
-aD.data="";
-aD.async=false;
-n("",aD)
-}}function an(){if(O.reconnectId){clearTimeout(O.reconnectId);
-delete O.reconnectId
-}O.reconnect=false;
-aw=true;
-W.request=O;
-W.state="unsubscribe";
-W.responseBody="";
-W.status=408;
-W.partialMessage="";
-C();
-D();
-am()
-}function am(){W.partialMessage="";
-if(O.id){clearTimeout(O.id)
-}if(E!=null){E.close();
-E=null
-}if(G!=null){G.abort();
-G=null
-}if(v!=null){v.abort();
-v=null
-}if(Z!=null){if(Z.canSendMessage){Z.close()
-}Z=null
-}if(o!=null){o.close();
-o=null
-}at()
-}function at(){if(aq!=null){clearInterval(K);
-document.cookie=az+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
-aq.signal("close",{reason:"",heir:!aw?J:(aq.get("children")||[])[0]});
-aq.close()
-}if(q!=null){q.close()
-}}function ay(aA){A();
-O=a.util.extend(O,aA);
-O.mrequest=O.reconnect;
-if(!O.reconnect){O.reconnect=true
-}}function p(){return 
O.webSocketImpl!=null||window.WebSocket||window.MozWebSocket
-}function S(){return window.EventSource
-}function t(){if(O.shared){q=ah(O);
-if(q!=null){if(O.logLevel==="debug"){a.util.debug("Storage service available. 
All communication will be local")
-}if(q.open(O)){return
-}}if(O.logLevel==="debug"){a.util.debug("No Storage service available.")
-}q=null
-}O.firstMessage=e==0?true:false;
-O.isOpen=false;
-O.ctime=a.util.now();
-if(O.uuid===0){O.uuid=e
-}W.closedByClientTimeout=false;
-if(O.transport!=="websocket"&&O.transport!=="sse"){s(O)
-}else{if(O.transport==="websocket"){if(!p()){Q("Websocket is not supported, 
using request.fallbackTransport ("+O.fallbackTransport+")")
-}else{aj(false)
-}}else{if(O.transport==="sse"){if(!S()){Q("Server Side Events(SSE) is not 
supported, using request.fallbackTransport ("+O.fallbackTransport+")")
-}else{I(false)
-}}}}}function ah(aE){var 
aF,aD,aI,aA="atmosphere-"+aE.url,aB={storage:function(){function 
aJ(aN){if(aN.key===aA&&aN.newValue){aC(aN.newValue)
-}}if(!a.util.storage){return
-}var aM=window.localStorage,aK=function(aN){return 
a.util.parseJSON(aM.getItem(aA+"-"+aN))
-},aL=function(aN,aO){aM.setItem(aA+"-"+aN,a.util.stringifyJSON(aO))
-};
-return{init:function(){aL("children",aK("children").concat([J]));
-a.util.on(window,"storage",aJ);
-return aK("opened")
-},signal:function(aN,aO){aM.setItem(aA,a.util.stringifyJSON({target:"p",type:aN,data:aO}))
-},close:function(){var aN=aK("children");
-a.util.off(window,"storage",aJ);
-if(aN){if(aG(aN,aE.id)){aL("children",aN)
-}}}}
-},windowref:function(){var aJ=window.open("",aA.replace(/\W/g,""));
-if(!aJ||aJ.closed||!aJ.callbacks){return
-}return{init:function(){aJ.callbacks.push(aC);
-aJ.children.push(J);
-return aJ.opened
-},signal:function(aK,aL){if(!aJ.closed&&aJ.fire){aJ.fire(a.util.stringifyJSON({target:"p",type:aK,data:aL}))
-}},close:function(){if(!aI){aG(aJ.callbacks,aC);
-aG(aJ.children,J)
-}}}
-}};
-function aG(aM,aL){var aJ,aK=aM.length;
-for(aJ=0;
-aJ<aK;
-aJ++){if(aM[aJ]===aL){aM.splice(aJ,1)
-}}return aK!==aM.length
-}function aC(aJ){var aL=a.util.parseJSON(aJ),aK=aL.data;
-if(aL.target==="c"){switch(aL.type){case"open":N("opening","local",O);
-break;
-case"close":if(!aI){aI=true;
-if(aK.reason==="aborted"){an()
-}else{if(aK.heir===J){t()
-}else{setTimeout(function(){t()
-},100)
-}}}break;
-case"message":F(aK,"messageReceived",200,aE.transport);
-break;
-case"localMessage":ac(aK);
-break
-}}}function aH(){var aJ=new RegExp("(?:^|; 
)("+encodeURIComponent(aA)+")=([^;]*)").exec(document.cookie);
-if(aJ){return a.util.parseJSON(decodeURIComponent(aJ[2]))
-}}aF=aH();
-if(!aF||a.util.now()-aF.ts>1000){return
-}aD=aB.storage()||aB.windowref();
-if(!aD){return
-}return{open:function(){var aJ;
-K=setInterval(function(){var aK=aF;
-aF=aH();
-if(!aF||aK.ts===aF.ts){aC(a.util.stringifyJSON({target:"c",type:"close",data:{reason:"error",heir:aK.heir}}))
-}},1000);
-aJ=aD.init();
-if(aJ){setTimeout(function(){N("opening","local",aE)
-},50)
-}return aJ
-},send:function(aJ){aD.signal("send",aJ)
-},localSend:function(aJ){aD.signal("localSend",a.util.stringifyJSON({id:J,event:aJ}))
-},close:function(){if(!aw){clearInterval(K);
-aD.signal("close");
-aD.close()
-}}}
-}function ad(){var aB,aA="atmosphere-"+O.url,aF={storage:function(){function 
aG(aI){if(aI.key===aA&&aI.newValue){aC(aI.newValue)
-}}if(!a.util.storage){return
-}var aH=window.localStorage;
-return{init:function(){a.util.on(window,"storage",aG)
-},signal:function(aI,aJ){aH.setItem(aA,a.util.stringifyJSON({target:"c",type:aI,data:aJ}))
-},get:function(aI){return a.util.parseJSON(aH.getItem(aA+"-"+aI))
-},set:function(aI,aJ){aH.setItem(aA+"-"+aI,a.util.stringifyJSON(aJ))
-},close:function(){a.util.off(window,"storage",aG);
-aH.removeItem(aA);
-aH.removeItem(aA+"-opened");
-aH.removeItem(aA+"-children")
-}}
-},windowref:function(){var 
aH=aA.replace(/\W/g,""),aG=document.getElementById(aH),aI;
-if(!aG){aG=document.createElement("div");
-aG.id=aH;
-aG.style.display="none";
-aG.innerHTML='<iframe name="'+aH+'" />';
-document.body.appendChild(aG)
-}aI=aG.firstChild.contentWindow;
-return{init:function(){aI.callbacks=[aC];
-aI.fire=function(aJ){var aK;
-for(aK=0;
-aK<aI.callbacks.length;
-aK++){aI.callbacks[aK](aJ)
-}}
-},signal:function(aJ,aK){if(!aI.closed&&aI.fire){aI.fire(a.util.stringifyJSON({target:"c",type:aJ,data:aK}))
-}},get:function(aJ){return !aI.closed?aI[aJ]:null
-},set:function(aJ,aK){if(!aI.closed){aI[aJ]=aK
-}},close:function(){}}
-}};
-function aC(aG){var aI=a.util.parseJSON(aG),aH=aI.data;
-if(aI.target==="p"){switch(aI.type){case"send":al(aH);
-break;
-case"localSend":ac(aH);
-break;
-case"close":an();
-break
-}}}aa=function aE(aG){aB.signal("message",aG)
-};
-function 
aD(){document.cookie=az+"="+encodeURIComponent(a.util.stringifyJSON({ts:a.util.now()+1,heir:(aB.get("children")||[])[0]}))+";
 path=/"
-}aB=aF.storage()||aF.windowref();
-aB.init();
-if(O.logLevel==="debug"){a.util.debug("Installed StorageService "+aB)
-}aB.set("children",[]);
-if(aB.get("opened")!=null&&!aB.get("opened")){aB.set("opened",false)
-}az=encodeURIComponent(aA);
-aD();
-K=setInterval(aD,1000);
-aq=aB
-}function N(aC,aF,aB){if(O.shared&&aF!=="local"){ad()
-}if(aq!=null){aq.set("opened",true)
-}aB.close=function(){an()
-};
-if(l>0&&aC==="re-connecting"){aB.isReopen=true;
-ae(W)
-}else{if(W.error==null){W.request=aB;
-var aD=W.state;
-W.state=aC;
-var aA=W.transport;
-W.transport=aF;
-var aE=W.responseBody;
-C();
-W.responseBody=aE;
-W.state=aD;
-W.transport=aA
-}}}function z(aC){aC.transport="jsonp";
-var aB=O,aA;
-if((aC!=null)&&(typeof(aC)!=="undefined")){aB=aC
-}G={open:function(){var aE="atmosphere"+(++J);
-function aD(){var aF=aB.url;
-if(aB.dispatchUrl!=null){aF+=aB.dispatchUrl
-}var aH=aB.data;
-if(aB.attachHeadersAsQueryString){aF=X(aB);
-if(aH!==""){aF+="&X-Atmosphere-Post-Body="+encodeURIComponent(aH)
-}aH=""
-}var 
aG=document.head||document.getElementsByTagName("head")[0]||document.documentElement;
-aA=document.createElement("script");
-aA.src=aF+"&jsonpTransport="+aE;
-aA.clean=function(){aA.clean=aA.onerror=aA.onload=aA.onreadystatechange=null;
-if(aA.parentNode){aA.parentNode.removeChild(aA)
-}};
-aA.onload=aA.onreadystatechange=function(){if(!aA.readyState||/loaded|complete/.test(aA.readyState)){aA.clean()
-}};
-aA.onerror=function(){aA.clean();
-aB.lastIndex=0;
-if(aB.openId){clearTimeout(aB.openId)
-}if(aB.reconnect&&l++<aB.maxReconnectOnClose){N("re-connecting",aB.transport,aB);
-R(G,aB,aC.reconnectInterval);
-aB.openId=setTimeout(function(){ao(aB)
-},aB.reconnectInterval+1000)
-}else{af(0,"maxReconnectOnClose reached")
-}};
-aG.insertBefore(aA,aG.firstChild)
-}window[aE]=function(aH){if(aB.reconnect){if(aB.maxRequest===-1||aB.requestCount++<aB.maxRequest){if(!aB.executeCallbackBeforeReconnect){R(G,aB,aB.pollingInterval)
-}if(aH!=null&&typeof aH!=="string"){try{aH=aH.message
-}catch(aG){}}var aF=x(aH,aB,W);
-if(!aF){F(W.responseBody,"messageReceived",200,aB.transport)
-}if(aB.executeCallbackBeforeReconnect){R(G,aB,aB.pollingInterval)
-}}else{a.util.log(O.logLevel,["JSONP reconnect maximum try reached 
"+O.requestCount]);
-af(0,"maxRequest reached")
-}}};
-setTimeout(function(){aD()
-},50)
-},abort:function(){if(aA&&aA.clean){aA.clean()
-}}};
-G.open()
-}function j(aA){if(O.webSocketImpl!=null){return O.webSocketImpl
-}else{if(window.WebSocket){return new WebSocket(aA)
-}else{return new MozWebSocket(aA)
-}}}function k(){return X(O,a.util.getAbsoluteURL(O.url)).replace(/^http/,"ws")
-}function ax(){var aA=X(O);
-return aA
-}function I(aB){W.transport="sse";
-var aA=ax();
-if(O.logLevel==="debug"){a.util.debug("Invoking executeSSE");
-a.util.debug("Using URL: "+aA)
-}if(O.enableProtocol&&aB){var aD=a.util.now()-O.ctime;
-O.lastTimestamp=Number(O.stime)+Number(aD)
-}if(aB&&!O.reconnect){if(o!=null){am()
-}return
-}try{o=new EventSource(aA,{withCredentials:O.withCredentials})
-}catch(aC){af(0,aC);
-Q("SSE failed. Downgrading to fallback transport and resending");
-return
-}if(O.connectTimeout>0){O.id=setTimeout(function(){if(!aB){am()
-}},O.connectTimeout)
-}o.onopen=function(aE){y(O);
-if(O.logLevel==="debug"){a.util.debug("SSE successfully opened")
-}if(!O.enableProtocol){if(!aB){N("opening","sse",O)
-}else{N("re-opening","sse",O)
-}}else{if(O.isReopen){O.isReopen=false;
-N("re-opening",O.transport,O)
-}}aB=true;
-if(O.method==="POST"){W.state="messageReceived";
-o.send(O.data)
-}};
-o.onmessage=function(aF){y(O);
-if(!O.enableXDR&&aF.origin&&aF.origin!==window.location.protocol+"//"+window.location.host){a.util.log(O.logLevel,["Origin
 was not "+window.location.protocol+"//"+window.location.host]);
-return
-}W.state="messageReceived";
-W.status=200;
-aF=aF.data;
-var aE=x(aF,O,W);
-if(!aE){C();
-W.responseBody="";
-W.messages=[]
-}};
-o.onerror=function(aE){clearTimeout(O.id);
-if(W.closedByClientTimeout){return
-}ai(aB);
-am();
-if(aw){a.util.log(O.logLevel,["SSE closed normally"])
-}else{if(!aB){Q("SSE failed. Downgrading to fallback transport and resending")
-}else{if(O.reconnect&&(W.transport==="sse")){if(l++<O.maxReconnectOnClose){N("re-connecting",O.transport,O);
-if(O.reconnectInterval>0){O.reconnectId=setTimeout(function(){I(true)
-},O.reconnectInterval)
-}else{I(true)
-}W.responseBody="";
-W.messages=[]
-}else{a.util.log(O.logLevel,["SSE reconnect maximum try reached "+l]);
-af(0,"maxReconnectOnClose reached")
-}}}}}
-}function aj(aB){W.transport="websocket";
-if(O.enableProtocol&&aB){var aE=a.util.now()-O.ctime;
-O.lastTimestamp=Number(O.stime)+Number(aE)
-}var aA=k(O.url);
-if(O.logLevel==="debug"){a.util.debug("Invoking executeWebSocket");
-a.util.debug("Using URL: "+aA)
-}if(aB&&!O.reconnect){if(Z!=null){am()
-}return
-}Z=j(aA);
-if(O.webSocketBinaryType!=null){Z.binaryType=O.webSocketBinaryType
-}if(O.connectTimeout>0){O.id=setTimeout(function(){if(!aB){var 
aF={code:1002,reason:"",wasClean:false};
-Z.onclose(aF);
-try{am()
-}catch(aG){}return
-}},O.connectTimeout)
-}Z.onopen=function(aG){y(O);
-if(O.logLevel==="debug"){a.util.debug("Websocket successfully opened")
-}var aF=aB;
-if(Z!=null){Z.canSendMessage=true
-}if(!O.enableProtocol){aB=true;
-if(aF){N("re-opening","websocket",O)
-}else{N("opening","websocket",O)
-}}if(Z!=null){if(O.method==="POST"){W.state="messageReceived";
-Z.send(O.data)
-}}};
-Z.onmessage=function(aH){y(O);
-if(O.enableProtocol){aB=true
-}W.state="messageReceived";
-W.status=200;
-aH=aH.data;
-var aF=typeof(aH)==="string";
-if(aF){var aG=x(aH,O,W);
-if(!aG){C();
-W.responseBody="";
-W.messages=[]
-}}else{if(!u(O,aH)){return
-}W.responseBody=aH;
-C();
-W.responseBody=null
-}};
-Z.onerror=function(aF){clearTimeout(O.id)
-};
-Z.onclose=function(aF){clearTimeout(O.id);
-if(W.state==="closed"){return
-}var aG=aF.reason;
-if(aG===""){switch(aF.code){case 1000:aG="Normal closure; the connection 
successfully completed whatever purpose for which it was created.";
-break;
-case 1001:aG="The endpoint is going away, either because of a server failure 
or because the browser is navigating away from the page that opened the 
connection.";
-break;
-case 1002:aG="The endpoint is terminating the connection due to a protocol 
error.";
-break;
-case 1003:aG="The connection is being terminated because the endpoint received 
data of a type it cannot accept (for example, a text-only endpoint received 
binary data).";
-break;
-case 1004:aG="The endpoint is terminating the connection because a data frame 
was received that is too large.";
-break;
-case 1005:aG="Unknown: no status code was provided even though one was 
expected.";
-break;
-case 1006:aG="Connection was closed abnormally (that is, with no close frame 
being sent).";
-break
-}}if(O.logLevel==="warn"){a.util.warn("Websocket closed, reason: "+aG);
-a.util.warn("Websocket closed, wasClean: "+aF.wasClean)
-}if(W.closedByClientTimeout){return
-}ai(aB);
-W.state="closed";
-if(aw){a.util.log(O.logLevel,["Websocket closed normally"])
-}else{if(!aB){Q("Websocket failed. Downgrading to Comet and resending")
-}else{if(O.reconnect&&W.transport==="websocket"){am();
-if(l++<O.maxReconnectOnClose){N("re-connecting",O.transport,O);
-if(O.reconnectInterval>0){O.reconnectId=setTimeout(function(){W.responseBody="";
-W.messages=[];
-aj(true)
-},O.reconnectInterval)
-}else{W.responseBody="";
-W.messages=[];
-aj(true)
-}}else{a.util.log(O.logLevel,["Websocket reconnect maximum try reached 
"+O.requestCount]);
-if(O.logLevel==="warn"){a.util.warn("Websocket error, reason: "+aF.reason)
-}af(0,"maxReconnectOnClose reached")
-}}}}};
-var aC=navigator.userAgent.toLowerCase();
-var aD=aC.indexOf("android")>-1;
-if(aD&&Z.url===undefined){Z.onclose({reason:"Android 4.1 does not support 
websockets.",wasClean:false})
-}}function u(aD,aC){var aA=true;
-if(aD.transport==="polling"){return aA
-}if(a.util.trim(aC).length!==0&&aD.enableProtocol&&aD.firstMessage){aD.firstMessage=false;
-var aB=aC.split(aD.messageDelimiter);
-var aE=aB.length===2?0:1;
-aD.uuid=a.util.trim(aB[aE]);
-aD.stime=a.util.trim(aB[aE+1]);
-aA=false;
-if(aD.transport!=="long-polling"){ao(aD)
-}e=aD.uuid
-}else{if(aD.enableProtocol&&aD.firstMessage){aA=false
-}else{ao(aD)
-}}return aA
-}function y(aA){clearTimeout(aA.id);
-if(aA.timeout>0&&aA.transport!=="polling"){aA.id=setTimeout(function(){r(aA);
-D();
-am()
-},aA.timeout)
-}}function r(aA){W.closedByClientTimeout=true;
-W.state="closedByClient";
-W.responseBody="";
-W.status=408;
-W.messages=[];
-C()
-}function af(aA,aB){am();
-clearTimeout(O.id);
-W.state="error";
-W.reasonPhrase=aB;
-W.responseBody="";
-W.status=aA;
-W.messages=[];
-C()
-}function x(aE,aD,aA){if(!u(aD,aE)){return true
-}if(aE.length===0){return true
-}if(aD.trackMessageLength){aE=aA.partialMessage+aE;
-var aC=[];
-var aB=aE.indexOf(aD.messageDelimiter);
-while(aB!==-1){var aG=a.util.trim(aE.substring(0,aB));
-var aF=+aG;
-if(isNaN(aF)){throw new Error('message length "'+aG+'" is not a number')
-}aB+=aD.messageDelimiter.length;
-if(aB+aF>aE.length){aB=-1
-}else{aC.push(aE.substring(aB,aB+aF));
-aE=aE.substring(aB+aF,aE.length);
-aB=aE.indexOf(aD.messageDelimiter)
-}}aA.partialMessage=aE;
-if(aC.length!==0){aA.responseBody=aC.join(aD.messageDelimiter);
-aA.messages=aC;
-return false
-}else{aA.responseBody="";
-aA.messages=[];
-return true
-}}else{aA.responseBody=aE
-}return false
-}function Q(aA){a.util.log(O.logLevel,[aA]);
-if(typeof(O.onTransportFailure)!=="undefined"){O.onTransportFailure(aA,O)
-}else{if(typeof(a.util.onTransportFailure)!=="undefined"){a.util.onTransportFailure(aA,O)
-}}O.transport=O.fallbackTransport;
-var aB=O.connectTimeout===-1?0:O.connectTimeout;
-if(O.reconnect&&O.transport!=="none"||O.transport==null){O.method=O.fallbackMethod;
-W.transport=O.fallbackTransport;
-O.fallbackTransport="none";
-if(aB>0){O.reconnectId=setTimeout(function(){t()
-},aB)
-}else{t()
-}}else{af(500,"Unable to reconnect with fallback transport")
-}}function X(aC,aA){var aB=O;
-if((aC!=null)&&(typeof(aC)!=="undefined")){aB=aC
-}if(aA==null){aA=aB.url
-}if(!aB.attachHeadersAsQueryString){return aA
-}if(aA.indexOf("X-Atmosphere-Framework")!==-1){return aA
-}aA+=(aA.indexOf("?")!==-1)?"&":"?";
-aA+="X-Atmosphere-tracking-id="+aB.uuid;
-aA+="&X-Atmosphere-Framework="+c;
-aA+="&X-Atmosphere-Transport="+aB.transport;
-if(aB.trackMessageLength){aA+="&X-Atmosphere-TrackMessageSize=true"
-}if(aB.lastTimestamp!=null){aA+="&X-Cache-Date="+aB.lastTimestamp
-}else{aA+="&X-Cache-Date="+0
-}if(aB.contentType!==""){aA+="&Content-Type="+(aB.transport==="websocket"?aB.contentType:encodeURIComponent(aB.contentType))
-}if(aB.enableProtocol){aA+="&X-atmo-protocol=true"
-}a.util.each(aB.headers,function(aD,aF){var 
aE=a.util.isFunction(aF)?aF.call(this,aB,aC,W):aF;
-if(aE!=null){aA+="&"+encodeURIComponent(aD)+"="+encodeURIComponent(aE)
-}});
-return aA
-}function ao(aA){if(!aA.isOpen){aA.isOpen=true;
-N("opening",aA.transport,aA)
-}else{if(aA.isReopen){aA.isReopen=false;
-N("re-opening",aA.transport,aA)
-}}}function s(aC){var aA=O;
-if((aC!=null)||(typeof(aC)!=="undefined")){aA=aC
-}aA.lastIndex=0;
-aA.readyState=0;
-if((aA.transport==="jsonp")||((aA.enableXDR)&&(a.util.checkCORSSupport()))){z(aA);
-return
-}if(a.util.browser.msie&&+a.util.browser.version.split(".")[0]<10){if((aA.transport==="streaming")){if(aA.enableXDR&&window.XDomainRequest){P(aA)
-}else{av(aA)
-}return
-}if((aA.enableXDR)&&(window.XDomainRequest)){P(aA);
-return
-}}var aD=function(){aA.lastIndex=0;
-if(aA.reconnect&&l++<aA.maxReconnectOnClose){N("re-connecting",aC.transport,aC);
-R(aB,aA,aC.reconnectInterval)
-}else{af(0,"maxReconnectOnClose reached")
-}};
-if(aA.force||(aA.reconnect&&(aA.maxRequest===-1||aA.requestCount++<aA.maxRequest))){aA.force=false;
-var aB=a.util.xhr();
-aB.hasData=false;
-h(aB,aA,true);
-if(aA.suspend){v=aB
-}if(aA.transport!=="polling"){W.transport=aA.transport;
-aB.onabort=function(){ai(true)
-};
-aB.onerror=function(){W.error=true;
-try{W.status=XMLHttpRequest.status
-}catch(aF){W.status=500
-}if(!W.status){W.status=500
-}if(!W.errorHandled){am();
-aD()
-}}
-}aB.onreadystatechange=function(){if(aw){return
-}W.error=null;
-var aG=false;
-var aL=false;
-if(aA.transport==="streaming"&&aA.readyState>2&&aB.readyState===4){if(aA.reconnectingOnLength){return
-}am();
-aD();
-return
-}aA.readyState=aB.readyState;
-if(aA.transport==="streaming"&&aB.readyState>=3){aL=true
-}else{if(aA.transport==="long-polling"&&aB.readyState===4){aL=true
-}}y(O);
-if(aA.transport!=="polling"){var aF=200;
-if(aB.readyState===4){aF=aB.status>1000?0:aB.status
-}if(aF>=300||aF===0){W.errorHandled=true;
-am();
-aD();
-return
-}if((!aA.enableProtocol||!aC.firstMessage)&&aB.readyState===2){ao(aA)
-}}else{if(aB.readyState===4){aL=true
-}}if(aL){var aJ=aB.responseText;
-if(a.util.trim(aJ).length===0&&aA.transport==="long-polling"){if(!aB.hasData){R(aB,aA,aA.pollingInterval)
-}else{aB.hasData=false
-}return
-}aB.hasData=true;
-ag(aB,O);
-if(aA.transport==="streaming"){if(!a.util.browser.opera){var 
aI=aJ.substring(aA.lastIndex,aJ.length);
-aG=x(aI,aA,W);
-aA.lastIndex=aJ.length;
-if(aG){return
-}}else{a.util.iterate(function(){if(W.status!==500&&aB.responseText.length>aA.lastIndex){try{W.status=aB.status;
-W.headers=a.util.parseHeaders(aB.getAllResponseHeaders());
-ag(aB,O)
-}catch(aN){W.status=404
-}y(O);
-W.state="messageReceived";
-var aM=aB.responseText.substring(aA.lastIndex);
-aA.lastIndex=aB.responseText.length;
-aG=x(aM,aA,W);
-if(!aG){C()
-}L(aB,aA)
-}else{if(W.status>400){aA.lastIndex=aB.responseText.length;
-return false
-}}},0)
-}}else{aG=x(aJ,aA,W)
-}try{W.status=aB.status;
-W.headers=a.util.parseHeaders(aB.getAllResponseHeaders());
-ag(aB,aA)
-}catch(aK){W.status=404
-}if(aA.suspend){W.state=W.status===0?"closed":"messageReceived"
-}else{W.state="messagePublished"
-}var aH=aC.transport!=="streaming"&&aC.transport!=="polling";
-if(aH&&!aA.executeCallbackBeforeReconnect){R(aB,aA,aA.pollingInterval)
-}if(W.responseBody.length!==0&&!aG){C()
-}if(aH&&aA.executeCallbackBeforeReconnect){R(aB,aA,aA.pollingInterval)
-}L(aB,aA)
-}};
-try{aB.send(aA.data);
-ak=true
-}catch(aE){a.util.log(aA.logLevel,["Unable to connect to "+aA.url]);
-af(0,aE)
-}}else{if(aA.logLevel==="debug"){a.util.log(aA.logLevel,["Max re-connection 
reached."])
-}af(0,"maxRequest reached")
-}}function h(aC,aD,aB){var aA=aD.url;
-if(aD.dispatchUrl!=null&&aD.method==="POST"){aA+=aD.dispatchUrl
-}aA=X(aD,aA);
-aA=a.util.prepareURL(aA);
-if(aB){aC.open(aD.method,aA,aD.async);
-if(aD.connectTimeout>0){aD.id=setTimeout(function(){if(aD.requestCount===0){am();
-F("Connect timeout","closed",200,aD.transport)
-}},aD.connectTimeout)
-}}if(O.withCredentials){if("withCredentials" in aC){aC.withCredentials=true
-}}if(!O.dropHeaders){aC.setRequestHeader("X-Atmosphere-Framework",a.util.version);
-aC.setRequestHeader("X-Atmosphere-Transport",aD.transport);
-if(aD.lastTimestamp!=null){aC.setRequestHeader("X-Cache-Date",aD.lastTimestamp)
-}else{aC.setRequestHeader("X-Cache-Date",0)
-}if(aD.trackMessageLength){aC.setRequestHeader("X-Atmosphere-TrackMessageSize","true")
-}aC.setRequestHeader("X-Atmosphere-tracking-id",aD.uuid);
-a.util.each(aD.headers,function(aE,aG){var 
aF=a.util.isFunction(aG)?aG.call(this,aC,aD,aB,W):aG;
-if(aF!=null){aC.setRequestHeader(aE,aF)
-}})
-}if(aD.contentType!==""){aC.setRequestHeader("Content-Type",aD.contentType)
-}}function R(aB,aC,aD){if(aC.reconnect||(aC.suspend&&ak)){var aA=0;
-if(aB&&aB.readyState>1){aA=aB.status>1000?0:aB.status
-}W.status=aA===0?204:aA;
-W.reason=aA===0?"Server resumed the connection or down.":"OK";
-clearTimeout(aC.id);
-if(aC.reconnectId){clearTimeout(aC.reconnectId);
-delete aC.reconnectId
-}if(aD>0){O.reconnectId=setTimeout(function(){s(aC)
-},aD)
-}else{s(aC)
-}}}function ae(aA){aA.state="re-connecting";
-ab(aA)
-}function P(aA){if(aA.transport!=="polling"){E=V(aA);
-E.open()
-}else{V(aA).open()
-}}function V(aC){var aB=O;
-if((aC!=null)&&(typeof(aC)!=="undefined")){aB=aC
-}var aH=aB.transport;
-var aG=0;
-var aA=new window.XDomainRequest();
-var 
aE=function(){if(aB.transport==="long-polling"&&(aB.reconnect&&(aB.maxRequest===-1||aB.requestCount++<aB.maxRequest))){aA.status=200;
-P(aB)
-}};
-var aF=aB.rewriteURL||function(aJ){var 
aI=/(?:^|;\s*)(JSESSIONID|PHPSESSID)=([^;]*)/.exec(document.cookie);
-switch(aI&&aI[1]){case"JSESSIONID":return 
aJ.replace(/;jsessionid=[^\?]*|(\?)|$/,";jsessionid="+aI[2]+"$1");
-case"PHPSESSID":return 
aJ.replace(/\?PHPSESSID=[^&]*&?|\?|$/,"?PHPSESSID="+aI[2]+"&").replace(/&$/,"")
-}return aJ
-};
-aA.onprogress=function(){aD(aA)
-};
-aA.onerror=function(){if(aB.transport!=="polling"){am();
-if(l++<aB.maxReconnectOnClose){if(aB.reconnectInterval>0){aB.reconnectId=setTimeout(function(){N("re-connecting",aC.transport,aC);
-P(aB)
-},aB.reconnectInterval)
-}else{N("re-connecting",aC.transport,aC);
-P(aB)
-}}else{af(0,"maxReconnectOnClose reached")
-}}};
-aA.onload=function(){};
-var aD=function(aI){clearTimeout(aB.id);
-var aK=aI.responseText;
-aK=aK.substring(aG);
-aG+=aK.length;
-if(aH!=="polling"){y(aB);
-var aJ=x(aK,aB,W);
-if(aH==="long-polling"&&a.util.trim(aK).length===0){return
-}if(aB.executeCallbackBeforeReconnect){aE()
-}if(!aJ){F(W.responseBody,"messageReceived",200,aH)
-}if(!aB.executeCallbackBeforeReconnect){aE()
-}}};
-return{open:function(){var aI=aB.url;
-if(aB.dispatchUrl!=null){aI+=aB.dispatchUrl
-}aI=X(aB,aI);
-aA.open(aB.method,aF(aI));
-if(aB.method==="GET"){aA.send()
-}else{aA.send(aB.data)
-}if(aB.connectTimeout>0){aB.id=setTimeout(function(){if(aB.requestCount===0){am();
-F("Connect timeout","closed",200,aB.transport)
-}},aB.connectTimeout)
-}},close:function(){aA.abort()
-}}
-}function av(aA){E=w(aA);
-E.open()
-}function w(aD){var aC=O;
-if((aD!=null)&&(typeof(aD)!=="undefined")){aC=aD
-}var aB;
-var aE=new window.ActiveXObject("htmlfile");
-aE.open();
-aE.close();
-var aA=aC.url;
-if(aC.dispatchUrl!=null){aA+=aC.dispatchUrl
-}if(aC.transport!=="polling"){W.transport=aC.transport
-}return{open:function(){var aF=aE.createElement("iframe");
-aA=X(aC);
-if(aC.data!==""){aA+="&X-Atmosphere-Post-Body="+encodeURIComponent(aC.data)
-}aA=a.util.prepareURL(aA);
-aF.src=aA;
-aE.body.appendChild(aF);
-var aG=aF.contentDocument||aF.contentWindow.document;
-aB=a.util.iterate(function(){try{if(!aG.firstChild){return
-}var aJ=aG.body?aG.body.lastChild:aG;
-var aL=function(){var aN=aJ.cloneNode(true);
-aN.appendChild(aG.createTextNode("."));
-var aM=aN.innerText;
-aM=aM.substring(0,aM.length-1);
-return aM
-};
-if(!aG.body||!aG.body.firstChild||aG.body.firstChild.nodeName.toLowerCase()!=="pre"){var
 aI=aG.head||aG.getElementsByTagName("head")[0]||aG.documentElement||aG;
-var aH=aG.createElement("script");
-aH.text="document.write('<plaintext>')";
-aI.insertBefore(aH,aI.firstChild);
-aI.removeChild(aH);
-aJ=aG.body.lastChild
-}if(aC.closed){aC.isReopen=true
-}aB=a.util.iterate(function(){var aN=aL();
-if(aN.length>aC.lastIndex){y(O);
-W.status=200;
-W.error=null;
-aJ.innerText="";
-var aM=x(aN,aC,W);
-if(aM){return""
-}F(W.responseBody,"messageReceived",200,aC.transport)
-}aC.lastIndex=0;
-if(aG.readyState==="complete"){ai(true);
-N("re-connecting",aC.transport,aC);
-if(aC.reconnectInterval>0){aC.reconnectId=setTimeout(function(){av(aC)
-},aC.reconnectInterval)
-}else{av(aC)
-}return false
-}},null);
-return false
-}catch(aK){W.error=true;
-N("re-connecting",aC.transport,aC);
-if(l++<aC.maxReconnectOnClose){if(aC.reconnectInterval>0){aC.reconnectId=setTimeout(function(){av(aC)
-},aC.reconnectInterval)
-}else{av(aC)
-}}else{af(0,"maxReconnectOnClose reached")
-}aE.execCommand("Stop");
-aE.close();
-return false
-}})
-},close:function(){if(aB){aB()
-}aE.execCommand("Stop");
-ai(true)
-}}
-}function al(aA){if(q!=null){m(aA)
-}else{if(v!=null||o!=null){i(aA)
-}else{if(E!=null){Y(aA)
-}else{if(G!=null){U(aA)
-}else{if(Z!=null){H(aA)
-}else{af(0,"No suspended connection available");
-a.util.error("No suspended connection available. Make sure 
atmosphere.subscribe has been called and request.onOpen invoked before invoking 
this method")
-}}}}}}function n(aB,aA){if(!aA){aA=ap(aB)
-}aA.transport="polling";
-aA.method="GET";
-aA.async=false;
-aA.withCredentials=false;
-aA.reconnect=false;
-aA.force=true;
-aA.suspend=false;
-aA.timeout=1000;
-s(aA)
-}function m(aA){q.send(aA)
-}function B(aB){if(aB.length===0){return
-}try{if(q){q.localSend(aB)
-}else{if(aq){aq.signal("localMessage",a.util.stringifyJSON({id:J,event:aB}))
-}}}catch(aA){a.util.error(aA)
-}}function i(aB){var aA=ap(aB);
-s(aA)
-}function Y(aB){if(O.enableXDR&&a.util.checkCORSSupport()){var aA=ap(aB);
-aA.reconnect=false;
-z(aA)
-}else{i(aB)
-}}function U(aA){i(aA)
-}function T(aA){var aB=aA;
-if(typeof(aB)==="object"){aB=aA.data
-}return aB
-}function ap(aB){var aC=T(aB);
-var 
aA={connected:false,timeout:60000,method:"POST",url:O.url,contentType:O.contentType,headers:O.headers,reconnect:true,callback:null,data:aC,suspend:false,maxRequest:-1,logLevel:"info",requestCount:0,withCredentials:O.withCredentials,async:O.async,transport:"polling",isOpen:true,attachHeadersAsQueryString:true,enableXDR:O.enableXDR,uuid:O.uuid,dispatchUrl:O.dispatchUrl,enableProtocol:false,messageDelimiter:"|",maxReconnectOnClose:O.maxReconnectOnClose};
-if(typeof(aB)==="object"){aA=a.util.extend(aA,aB)
-}return aA
-}function H(aA){var aD=a.util.isBinary(aA)?aA:T(aA);
-var aB;
-try{if(O.dispatchUrl!=null){aB=O.webSocketPathDelimiter+O.dispatchUrl+O.webSocketPathDelimiter+aD
-}else{aB=aD
-}if(!Z.canSendMessage){a.util.error("WebSocket not connected.");
-return
-}Z.send(aB)
-}catch(aC){Z.onclose=function(aE){};
-am();
-Q("Websocket failed. Downgrading to Comet and resending "+aA);
-i(aA)
-}}function ac(aB){var aA=a.util.parseJSON(aB);
-if(aA.id!==J){if(typeof(O.onLocalMessage)!=="undefined"){O.onLocalMessage(aA.event)
-}else{if(typeof(a.util.onLocalMessage)!=="undefined"){a.util.onLocalMessage(aA.event)
-}}}}function F(aD,aA,aB,aC){W.responseBody=aD;
-W.transport=aC;
-W.status=aB;
-W.state=aA;
-C()
-}function 
ag(aA,aD){if(!aD.readResponsesHeaders){if(!aD.enableProtocol){aD.lastTimestamp=a.util.now();
-aD.uuid=J
-}}else{try{var aC=aA.getResponseHeader("X-Cache-Date");
-if(aC&&aC!=null&&aC.length>0){aD.lastTimestamp=aC.split(" ").pop()
-}var aB=aA.getResponseHeader("X-Atmosphere-tracking-id");
-if(aB&&aB!=null){aD.uuid=aB.split(" ").pop()
-}}catch(aE){}}}function ab(aA){au(aA,O);
-au(aA,a.util)
-}function au(aB,aC){switch(aB.state){case"messageReceived":l=0;
-if(typeof(aC.onMessage)!=="undefined"){aC.onMessage(aB)
-}break;
-case"error":if(typeof(aC.onError)!=="undefined"){aC.onError(aB)
-}break;
-case"opening":delete O.closed;
-if(typeof(aC.onOpen)!=="undefined"){aC.onOpen(aB)
-}break;
-case"messagePublished":if(typeof(aC.onMessagePublished)!=="undefined"){aC.onMessagePublished(aB)
-}break;
-case"re-connecting":if(typeof(aC.onReconnect)!=="undefined"){aC.onReconnect(O,aB)
-}break;
-case"closedByClient":if(typeof(aC.onClientTimeout)!=="undefined"){aC.onClientTimeout(O)
-}break;
-case"re-opening":delete O.closed;
-if(typeof(aC.onReopen)!=="undefined"){aC.onReopen(O,aB)
-}break;
-case"fail-to-reconnect":if(typeof(aC.onFailureToReconnect)!=="undefined"){aC.onFailureToReconnect(O,aB)
-}break;
-case"unsubscribe":case"closed":var 
aA=typeof(O.closed)!=="undefined"?O.closed:false;
-if(typeof(aC.onClose)!=="undefined"&&!aA){aC.onClose(aB)
-}O.closed=true;
-break
-}}function ai(aA){if(W.state!=="closed"){W.state="closed";
-W.responseBody="";
-W.messages=[];
-W.status=!aA?501:200;
-C()
-}}function C(){var aC=function(aF,aG){aG(W)
-};
-if(q==null&&aa!=null){aa(W.responseBody)
-}O.reconnect=O.mrequest;
-var aA=typeof(W.responseBody)==="string";
-var aD=(aA&&O.trackMessageLength)?(W.messages.length>0?W.messages:[""]):new 
Array(W.responseBody);
-for(var aB=0;
-aB<aD.length;
-aB++){if(aD.length>1&&aD[aB].length===0){continue
-}W.responseBody=(aA)?a.util.trim(aD[aB]):aD[aB];
-if(q==null&&aa!=null){aa(W.responseBody)
-}if(W.responseBody.length===0&&W.state==="messageReceived"){continue
-}ab(W);
-if(f.length>0){if(O.logLevel==="debug"){a.util.debug("Invoking "+f.length+" 
global callbacks: "+W.state)
-}try{a.util.each(f,aC)
-}catch(aE){a.util.log(O.logLevel,["Callback exception"+aE])
-}}if(typeof(O.callback)==="function"){if(O.logLevel==="debug"){a.util.debug("Invoking
 request callbacks")
-}try{O.callback(W)
-}catch(aE){a.util.log(O.logLevel,["Callback exception"+aE])
-}}}}this.subscribe=function(aA){ay(aA);
-t()
-};
-this.execute=function(){t()
-};
-this.close=function(){an()
-};
-this.disconnect=function(){D()
-};
-this.getUrl=function(){return O.url
-};
-this.push=function(aC,aB){if(aB!=null){var aA=O.dispatchUrl;
-O.dispatchUrl=aB;
-al(aC);
-O.dispatchUrl=aA
-}else{al(aC)
-}};
-this.getUUID=function(){return O.uuid
-};
-this.pushLocal=function(aA){B(aA)
-};
-this.enableProtocol=function(aA){return O.enableProtocol
-};
-this.request=O;
-this.response=W
-}};
-a.subscribe=function(h,k,j){if(typeof(k)==="function"){a.addCallback(k)
-}e=0;
-if(typeof(h)!=="string"){j=h
-}else{j.url=h
-}var i=new a.AtmosphereRequest(j);
-i.execute();
-g[g.length]=i;
-return i
-};
-a.unsubscribe=function(){if(g.length>0){var h=[].concat(g);
-for(var k=0;
-k<h.length;
-k++){var j=h[k];
-j.close();
-clearTimeout(j.response.request.id)
-}}g=[];
-f=[]
-};
-a.unsubscribeUrl=function(j){var h=-1;
-if(g.length>0){for(var l=0;
-l<g.length;
-l++){var k=g[l];
-if(k.getUrl()===j){k.close();
-clearTimeout(k.response.request.id);
-h=l;
-break
-}}}if(h>=0){g.splice(h,1)
-}};
-a.addCallback=function(h){if(a.util.inArray(h,f)===-1){f.push(h)
-}};
-a.removeCallback=function(i){var h=a.util.inArray(i,f);
-if(h!==-1){f.splice(h,1)
-}};
-a.util={browser:{},parseHeaders:function(i){var h,k=/^(.*?):[ 
\t]*([^\r\n]*)\r?$/mg,j={};
-while(h=k.exec(i)){j[h[1]]=h[2]
-}return j
-},now:function(){return new Date().getTime()
-},isArray:function(h){return Object.prototype.toString.call(h)==="[object 
Array]"
-},inArray:function(k,l){if(!Array.prototype.indexOf){var h=l.length;
-for(var j=0;
-j<h;
-++j){if(l[j]===k){return j
-}}return -1
-}return l.indexOf(k)
-},isBinary:function(h){return/^\[object\s(?:Blob|ArrayBuffer|.+Array)\]$/.test(Object.prototype.toString.call(h))
-},isFunction:function(h){return Object.prototype.toString.call(h)==="[object 
Function]"
-},getAbsoluteURL:function(h){var i=document.createElement("div");
-i.innerHTML='<a href="'+h+'"/>';
-return encodeURI(decodeURI(i.firstChild.href))
-},prepareURL:function(i){var j=a.util.now();
-var h=i.replace(/([?&])_=[^&]*/,"$1_="+j);
-return h+(h===i?(/\?/.test(i)?"&":"?")+"_="+j:"")
-},trim:function(h){if(!String.prototype.trim){return 
h.toString().replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"").replace(/\s+/g," ")
-}else{return h.toString().trim()
-}},param:function(l){var j,h=[];
-function k(m,n){n=a.util.isFunction(n)?n():(n==null?"":n);
-h.push(encodeURIComponent(m)+"="+encodeURIComponent(n))
-}function i(n,o){var m;
-if(a.util.isArray(o)){a.util.each(o,function(q,p){if(/\[\]$/.test(n)){k(n,p)
-}else{i(n+"["+(typeof p==="object"?q:"")+"]",p)
-}})
-}else{if(Object.prototype.toString.call(o)==="[object Object]"){for(m in 
o){i(n+"["+m+"]",o[m])
-}}else{k(n,o)
-}}}for(j in l){i(j,l[j])
-}return h.join("&").replace(/%20/g,"+")
-},storage:function(){try{return !!(window.localStorage&&window.StorageEvent)
-}catch(h){return false
-}},iterate:function(j,i){var k;
-i=i||0;
-(function h(){k=setTimeout(function(){if(j()===false){return
-}h()
-},i)
-})();
-return function(){clearTimeout(k)
-}
-},each:function(n,o,j){if(!n){return
-}var m,k=0,l=n.length,h=a.util.isArray(n);
-if(j){if(h){for(;
-k<l;
-k++){m=o.apply(n[k],j);
-if(m===false){break
-}}}else{for(k in n){m=o.apply(n[k],j);
-if(m===false){break
-}}}}else{if(h){for(;
-k<l;
-k++){m=o.call(n[k],k,n[k]);
-if(m===false){break
-}}}else{for(k in n){m=o.call(n[k],k,n[k]);
-if(m===false){break
-}}}}return n
-},extend:function(l){var k,j,h;
-for(k=1;
-k<arguments.length;
-k++){if((j=arguments[k])!=null){for(h in j){l[h]=j[h]
-}}}return l
-},on:function(j,i,h){if(j.addEventListener){j.addEventListener(i,h,false)
-}else{if(j.attachEvent){j.attachEvent("on"+i,h)
-}}},off:function(j,i,h){if(j.removeEventListener){j.removeEventListener(i,h,false)
-}else{if(j.detachEvent){j.detachEvent("on"+i,h)
-}}},log:function(j,i){if(window.console){var h=window.console[j];
-if(typeof h==="function"){h.apply(window.console,i)
-}}},warn:function(){a.util.log("warn",arguments)
-},info:function(){a.util.log("info",arguments)
-},debug:function(){a.util.log("debug",arguments)
-},error:function(){a.util.log("error",arguments)
-},xhr:function(){try{return new window.XMLHttpRequest()
-}catch(i){try{return new window.ActiveXObject("Microsoft.XMLHTTP")
-}catch(h){}}},parseJSON:function(h){return 
!h?null:window.JSON&&window.JSON.parse?window.JSON.parse(h):new 
Function("return "+h)()
-},stringifyJSON:function(j){var 
m=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,k={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};
-function h(n){return'"'+n.replace(m,function(o){var p=k[o];
-return typeof 
p==="string"?p:"\\u"+("0000"+o.charCodeAt(0).toString(16)).slice(-4)
-})+'"'
-}function i(o){return o<10?"0"+o:o
-}return window.JSON&&window.JSON.stringify?window.JSON.stringify(j):(function 
l(s,r){var q,p,n,o,u=r[s],t=typeof u;
-if(u&&typeof u==="object"&&typeof u.toJSON==="function"){u=u.toJSON(s);
-t=typeof u
-}switch(t){case"string":return h(u);
-case"number":return isFinite(u)?String(u):"null";
-case"boolean":return String(u);
-case"object":if(!u){return"null"
-}switch(Object.prototype.toString.call(u)){case"[object Date]":return 
isFinite(u.valueOf())?'"'+u.getUTCFullYear()+"-"+i(u.getUTCMonth()+1)+"-"+i(u.getUTCDate())+"T"+i(u.getUTCHours())+":"+i(u.getUTCMinutes())+":"+i(u.getUTCSeconds())+'Z"':"null";
-case"[object Array]":n=u.length;
-o=[];
-for(q=0;
-q<n;
-q++){o.push(l(q,u)||"null")
-}return"["+o.join(",")+"]";
-default:o=[];
-for(q in u){if(b.call(u,q)){p=l(q,u);
-if(p){o.push(h(q)+":"+p)
-}}}return"{"+o.join(",")+"}"
-}}})("",{"":j})
-},checkCORSSupport:function(){if(a.util.browser.msie&&!window.XDomainRequest&&+a.util.browser.version.split(".")[0]<11){return
 true
-}else{if(a.util.browser.opera&&+a.util.browser.version.split(".")<12){return 
true
-}else{if(a.util.trim(navigator.userAgent).slice(0,16)==="KreaTVWebKit/531"){return
 true
-}else{if(a.util.trim(navigator.userAgent).slice(-7).toLowerCase()==="kreatel"){return
 true
-}}}}var h=navigator.userAgent.toLowerCase();
-var i=h.indexOf("android")>-1;
-if(i){return true
-}return false
-}};
-d=a.util.now();
-(function(){var i=navigator.userAgent.toLowerCase(),h=/(chrome)[ 
\/]([\w.]+)/.exec(i)||/(webkit)[ \/]([\w.]+)/.exec(i)||/(opera)(?:.*version|)[ 
\/]([\w.]+)/.exec(i)||/(msie) ([\w.]+)/.exec(i)||/(trident)(?:.*? 
rv:([\w.]+)|)/.exec(i)||i.indexOf("compatible")<0&&/(mozilla)(?:.*? 
rv:([\w.]+)|)/.exec(i)||[];
-a.util.browser[h[1]||""]=true;
-a.util.browser.version=h[2]||"0";
-if(a.util.browser.trident){a.util.browser.msie=true
-}if(a.util.browser.msie||(a.util.browser.mozilla&&+a.util.browser.version.split(".")[0]===1)){a.util.storage=false
-}})();
-a.util.on(window,"unload",function(h){a.unsubscribe()
-});
-a.util.on(window,"keypress",function(h){if(h.charCode===27||h.keyCode===27){if(h.preventDefault){h.preventDefault()
-}}});
-a.util.on(window,"offline",function(){a.unsubscribe()
-});
-return a
-}));
\ No newline at end of file

Reply via email to