/* Portal v1.0.1 | http://github.com/flowersinthesand/portal | (c) 2011-2013, Donghwan Kim | http://www.apache.org/licenses/LICENSE-2.0 */ (function(){function y(a){var c=[],b,d,g,e,l,m,q=function(b,n){n=n||[];d=!a||[b,n];g=!0;m=e||0;e=0;for(l=c.length;m',document.body.appendChild(b));e=b.firstChild.contentWindow;return{init:function(){e.callbacks=[c];e.fire=function(a){var b;for(b=0;bb._heartbeat&&(a(),h.one("close",c));e.connecting.lock();for(s=n=p=null;q.length;)h.send.apply(h, q.shift())},close:function(){g="closed";var a,c,d=e.close.order;for(a in e)c=e[a],c.order';return encodeURI(decodeURI(c.firstChild.href))},iterate:function(a){var c;(function f(){c= setTimeout(function(){!1!==a()&&f()},1)})();return function(){clearTimeout(c)}},each:function(a,c){var b;for(b=0;ba?"0"+a:a}var d=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,g={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f", "\r":"\\r",'"':'\\"',"\\":"\\\\"};return window.JSON&&window.JSON.stringify?window.JSON.stringify(a):function l(a,d){var f,g,p,k=d[a];p=typeof k;k&&"object"===typeof k&&"function"===typeof k.toJSON&&(k=k.toJSON(a),p=typeof k);switch(p){case "string":return c(k);case "number":return isFinite(k)?String(k):"null";case "boolean":return String(k);case "object":if(!k)return"null";switch(w.call(k)){case "[object Date]":return isFinite(k.valueOf())?'"'+k.getUTCFullYear()+"-"+b(k.getUTCMonth()+1)+"-"+b(k.getUTCDate())+ "T"+b(k.getUTCHours())+":"+b(k.getUTCMinutes())+":"+b(k.getUTCSeconds())+'Z"':"null";case "[object Array]":g=k.length;p=[];for(f=0;fa.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];d.support.browser[a[1]||""]=!0;d.support.browser.version=a[2]||"0";if(d.support.browser.msie||d.support.browser.mozilla&&"1"===d.support.browser.version.split(".")[0])d.support.storage=!1})();d.find=function(a){var c;if(!arguments.length){for(c in r)if(r[c])return r[c];return null}return r[d.support.getAbsoluteURL(a)]||null}; d.open=function(a,c){a=d.support.getAbsoluteURL(a);r[a]=A(a,c);return d.find(a)};d.defaults={transports:["ws","sse","stream","longpoll"],timeout:!1,heartbeat:!1,_heartbeat:5E3,lastEventId:0,sharing:!1,prepare:function(a){a()},reconnect:function(a){return 2*(a||250)},idGenerator:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var c=16*Math.random()|0;return("x"===a?c:c&3|8).toString(16)})},urlBuilder:function(a,c,b){return a+(/\?/.test(a)?"&":"?")+"when="+b+"&"+ d.support.param(c)},inbound:d.support.parseJSON,outbound:d.support.stringifyJSON,credentials:!1,notifyAbort:!1,xdrURL:function(a){var c=/(?:^|; )(JSESSIONID|PHPSESSID)=([^;]*)/.exec(document.cookie);switch(c&&c[1]){case "JSESSIONID":return a.replace(/;jsessionid=[^\?]*|(\?)|$/,";jsessionid="+c[2]+"$1");case "PHPSESSID":return a.replace(/\?PHPSESSID=[^&]*&?|\?|$/,"?PHPSESSID="+c[2]+"&").replace(/&$/,"");default:return!1}},streamParser:function(a){var c=/\r\n|[\r\n]/g,b=[],d=this.data("data"),g=[], e=0,l;for(a=a.replace(/^\s+/g,"");l=c.exec(a);)b.push(a.substring(e,l.index)),e=l.index+l[0].length;b.push(a.length===e?"":a.substring(e));d||(d=[],this.data("data",d));for(e=0;e';e.firstChild.value=c;d.support.on(e.lastChild,"load",function(){document.body.removeChild(e);b()});document.body.appendChild(e);e.submit()};return{send:function(a){e.push(a); g||(g=!0,b())}}},sse:function(a,c){var b,f=window.EventSource;if(f)return d.support.extend(d.transports.httpbase(a,c),{open:function(){var d=a.data("url");b=c.crossDomain?new f(d,{withCredentials:c.credentials}):new f(d);b.onopen=function(b){a.data("event",b).fire("open")};b.onmessage=function(b){a.data("event",b)._fire(b.data)};b.onerror=function(c){b.close();a.data("event",c).fire("close","done")}},close:function(){b.close()}})},stream:function(a){a.data("candidates").unshift("streamxhr","streamxdr", "streamiframe")},streamxhr:function(a,c){var b;if(!(d.support.browser.msie&&10>+d.support.browser.version||c.crossDomain&&!d.support.corsable))return d.support.extend(d.transports.httpbase(a,c),{open:function(){var f;b=d.support.xhr();b.onreadystatechange=function(){function c(){var e=a.data("index"),d=b.responseText.length;e?d>e&&a._fire(b.responseText.substring(e,d),!0):a.fire("open")._fire(b.responseText,!0);a.data("index",d)}3===b.readyState&&200===b.status?d.support.browser.opera&&!f?f=d.support.iterate(c): c():4===b.readyState&&(f&&f(),a.fire("close",200===b.status?"done":"error"))};b.open("GET",a.data("url"));d.support.corsable&&(b.withCredentials=c.credentials);b.send(null)},close:function(){b.abort()}})},streamiframe:function(a,c){var b,f,g=window.ActiveXObject;if(g&&!c.crossDomain){try{new g("htmlfile")}catch(e){return}return d.support.extend(d.transports.httpbase(a,c),{open:function(){var c,e;b=new g("htmlfile");b.open();b.close();c=b.createElement("iframe");c.src=a.data("url");b.body.appendChild(c); e=c.contentDocument||c.contentWindow.document;f=d.support.iterate(function(){function b(){var a=c.cloneNode(!0);a.appendChild(e.createTextNode("."));a=a.innerText;return a.substring(0,a.length-1)}var c;if(e.firstChild){c=e.body.lastChild;if(!c)return a.fire("close","error"),!1;a.fire("open")._fire(b(),!0);c.innerText="";f=d.support.iterate(function(){var d=b();d&&(c.innerText="",a._fire(d,!0));if("complete"===e.readyState)return a.fire("close","done"),!1});return!1}})},close:function(){f();b.execCommand("Stop")}})}}, streamxdr:function(a,c){var b,f=window.XDomainRequest;if(f&&c.xdrURL&&c.xdrURL.call(a,"t"))return d.support.extend(d.transports.httpbase(a,c),{open:function(){var d=c.xdrURL.call(a,a.data("url"));a.data("url",d);b=new f;b.onprogress=function(){var c=a.data("index"),d=b.responseText.length;c?a._fire(b.responseText.substring(c,d),!0):a.fire("open")._fire(b.responseText,!0);a.data("index",d)};b.onerror=function(){a.fire("close","error")};b.onload=function(){a.fire("close","done")};b.open("GET",d);b.send()}, close:function(){b.abort()}})},longpoll:function(a){a.data("candidates").unshift("longpollajax","longpollxdr","longpolljsonp")},longpollajax:function(a,c){var b,f,g=0;if(!c.crossDomain||d.support.corsable)return d.support.extend(d.transports.httpbase(a,c),{open:function(){function e(){var l=a.buildURL(g?"poll":"open",{count:++g});a.data("url",l);b=d.support.xhr();b.onreadystatechange=function(){var c;f||4!==b.readyState||(200===b.status?(c=b.responseText)||1===g?(1===g&&a.fire("open"),c&&a._fire(c), e()):a.fire("close","done"):a.fire("close","error"))};b.open("GET",l);d.support.corsable&&(b.withCredentials=c.credentials);b.send(null)}e()},close:function(){f=!0;b.abort()}})},longpollxdr:function(a,c){var b,f=0,g=window.XDomainRequest;if(g&&c.xdrURL&&c.xdrURL.call(a,"t"))return d.support.extend(d.transports.httpbase(a,c),{open:function(){function d(){var l=c.xdrURL.call(a,a.buildURL(f?"poll":"open",{count:++f}));a.data("url",l);b=new g;b.onload=function(){var c=b.responseText;c||1===f?(1===f&& a.fire("open"),c&&a._fire(c),d()):a.fire("close","done")};b.onerror=function(){a.fire("close","error")};b.open("GET",l);b.send()}d()},close:function(){b.abort()}})},longpolljsonp:function(a,c){var b,f,g=0,e=z.pop()||"socket_"+ ++u;return d.support.extend(d.transports.httpbase(a,c),{open:function(){function c(){var d=a.buildURL(g?"poll":"open",{callback:e,count:++g}),q=document.head||document.getElementsByTagName("head")[0]||document.documentElement;a.data("url",d);b=document.createElement("script"); b.async=!0;b.src=d;b.clean=function(){b.clean=b.onerror=b.onload=b.onreadystatechange=null;b.parentNode&&b.parentNode.removeChild(b)};b.onload=b.onreadystatechange=function(){if(!b.readyState||/loaded|complete/.test(b.readyState))b.clean(),f?(f=!1,c()):1===g?(a.fire("open"),c()):a.fire("close","done")};b.onerror=function(){b.clean();a.fire("close","error")};q.insertBefore(b,q.firstChild)}window[e]=function(b){f=!0;1===g&&a.fire("open");a._fire(b)};a.one("close",function(){window[e]=function(){};z.push(e)}); c()},close:function(){b.clean&&b.clean()}})}};d.finalize=function(){var a,c;for(a in r)c=r[a],"closed"!==c.state()&&c.close(),delete r[a]};d.support.on(window,"unload",function(){v=!0;d.finalize()});d.support.on(window,"online",function(){var a,c;for(a in r)c=r[a],"waiting"===c.state()&&c.open()});d.support.on(window,"offline",function(){var a,c;for(a in r)c=r[a],"opened"===c.state()&&c.fire("close","error")});window.portal=d})();