/* Vibe v3.0.0-Alpha1 | http://vibe-project.github.io/projects/vibe-javascript-client/ | (c) 2014, The Vibe Project | http://www.apache.org/licenses/LICENSE-2.0 */
(function(k,t){if("function"===typeof define&&define.amd)define([],function(){return t(k)});else if("object"===typeof exports){var x=require("jsdom").jsdom().createWindow();x.WebSocket=require("ws");x.EventSource=require("eventsource");module.exports=t(x);module.exports.util.corsable=!0}else k.vibe=t(k)})(this,function(k){function t(c){var b,a,h,f,d,e,m=[],k=function(k,r){r=r||[];a=!c||[k,r];h=!0;e=f||0;f=0;for(d=m.length;e',n.body.appendChild(c));d=c.firstChild.contentWindow;return{init:function(){d.callbacks=[a];d.fire=function(b){var a;for(a=0;ab._heartbeat&&(a(),d.once("close",function(){clearTimeout(c)}));g.connecting.lock();r=w=l=null}).on("close",function(){m="closed";var a,c,f=g.close.order;for(a in g)c=g[a],c.order';return encodeURI(decodeURI(b.firstChild.href))},on:function(c,b,a){c.addEventListener?c.addEventListener(b,a,!1):c.attachEvent&&c.attachEvent("on"+b,a)},off:function(c,b,a){c.removeEventListener?c.removeEventListener(b,a,!1):c.detachEvent&&c.detachEvent("on"+b,a)},url:function(c,b){var a,h=[];b=b||{};b._=v++;for(a in b)h.push(encodeURIComponent(a)+"="+encodeURIComponent(b[a]));return c+(/\?/.test(c)?"&":"?")+h.join("&").replace(/%20/g,"+")},xhr:function(){try{return new k.XMLHttpRequest}catch(c){try{return new k.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}},
parseJSON:k.JSON?k.JSON.parse:function(c){return Function("return "+c)()},stringifyJSON:k.JSON?k.JSON.stringify:function(c){function b(a){return'"'+a.replace(h,function(a){var b=f[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'}function a(a){return 10>a?"0"+a:a}var h=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',
"\\":"\\\\"};return function g(c,f){var h,e,k,l=f[c];k=typeof l;l&&"object"===typeof l&&"function"===typeof l.toJSON&&(l=l.toJSON(c),k=typeof l);switch(k){case "string":return b(l);case "number":return isFinite(l)?String(l):"null";case "boolean":return String(l);case "object":if(!l)return"null";switch(D.call(l)){case "[object Date]":return isFinite(l.valueOf())?'"'+l.getUTCFullYear()+"-"+a(l.getUTCMonth()+1)+"-"+a(l.getUTCDate())+"T"+a(l.getUTCHours())+":"+a(l.getUTCMinutes())+":"+a(l.getUTCSeconds())+
'Z"':"null";case "[object Array]":e=l.length;k=[];for(h=0;hc.indexOf("android")&&/version\/(.+) (safari)/.exec(c)||[];b[c[1]||
""]=!0;b.version=c[2]||"0";b.vmajor=b.version.split(".")[0];b.trident&&(b.msie=!0);return b}();var q,F=[];q={session:function(c,b){function a(a,b){var c,d=a.length;for(c=0;c';c.firstChild.value=a;e.on(c.lastChild,"load",function(){n.body.removeChild(c)});n.body.appendChild(c);c.submit()};a.close=function(){a.abort();var c=n.createElement("script"),f=n.head||n.getElementsByTagName("head")[0]||n.documentElement;c.async=
!1;c.src=e.url(b.url,{id:b.id,when:"abort"});c.onload=c.onreadystatechange=function(){if(!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,c.parentNode&&c.parentNode.removeChild(c)};f.insertBefore(c,f.firstChild)};return a},sse:function(c,b){var a,h=k.EventSource,f=q.httpbase(c,b);if(h&&!(b.crossOrigin&&e.browser.safari&&7>e.browser.vmajor))return f.open=function(){var b=f.uri.open();a=new h(b,{withCredentials:!0});a.onopen=function(){c.fire("open")};a.onmessage=
function(a){c.receive(a.data)};a.onerror=function(){a.close();c.fire("close","done")}},f.abort=function(){a.close()},f},streambase:function(c,b){var a="",h=q.httpbase(c,b);h.parse=function(b){if(b=b.replace(/^\s+/,"")){var d=(a+b).split("\n\n");for(b=0;be.browser.vmajor||e.browser.opera&&13>e.browser.vmajor||b.crossOrigin&&!e.corsable))return h.open=function(){var b,
d,g=h.uri.open();a=e.xhr();a.onreadystatechange=function(){3===a.readyState&&200===a.status?(d=a.responseText.length,b?d>b&&h.parse(a.responseText.substring(b)):(c.fire("open"),h.parse(a.responseText)),b=d):4===a.readyState&&c.fire("close",200===a.status?"done":"error")};a.open("GET",g);e.corsable&&(a.withCredentials=!0);a.send(null)},h.abort=function(){a.abort()},h},streamxdr:function(c,b){var a,h=k.XDomainRequest,e=q.streambase(c,b);if(h&&b.xdrURL)return e.open=function(){var d,g,k=b.xdrURL.call(c,
e.uri.open());a=new h;a.onprogress=function(){g=a.responseText.length;d?e.parse(a.responseText.substring(d)):(c.fire("open"),e.parse(a.responseText));d=g};a.onerror=function(){c.fire("close","error")};a.onload=function(){c.fire("close","done")};a.open("GET",k);a.send()},e.abort=function(){a.abort()},e},streamiframe:function(c,b){var a,e,f=k.ActiveXObject,d=q.streambase(c,b);if(f&&!b.crossOrigin){try{new f("htmlfile")}catch(g){return}d.open=function(){function b(a){var c;(function s(){c=setTimeout(function(){!1!==
a()&&s()},1)})();return function(){clearTimeout(c)}}var g,k,n=d.uri.open();a=new f("htmlfile");a.open();a.close();g=a.createElement("iframe");g.src=n;a.body.appendChild(g);k=g.contentDocument||g.contentWindow.document;e=b(function(){function a(){var b;b=g.cloneNode(!0);b.appendChild(k.createTextNode("."));b=b.innerText.replace(/\r\n/g,"\n");return b.substring(0,b.length-1)}var g;if(k.firstChild){g=k.body.lastChild;if(!g)return c.fire("close","error"),!1;c.fire("open");d.parse(a());g.innerText="";
e=b(function(){var b=a();b&&(g.innerText="",d.parse(b));if("complete"===k.readyState)return c.fire("close","done"),!1});return!1}})};d.abort=function(){e();a.execCommand("Stop")};return d}},longpollbase:function(c,b){var a=q.httpbase(c,b);a.uri.poll=function(a){return e.url(b.url,{id:b.id,when:"poll",lastEventIds:a.join(",")})};a.open=function(){a.connect(a.uri.open(),function(){function b(f){a.connect(a.uri.poll(f),function(a){if(a){var g=[];a=e.parseJSON(a);var f=e.isArray(a)?a:[a];for(a=0;a