function $console(){return typeof console!=="undefined"}String.implement({parseQueryString:function(){var B=this.split(/[&;]/),A={};if(B.length){B.each(function(H){try{var C=H.indexOf("="),D=C<0?[""]:H.substr(0,C).match(/[^\]\[]+/g),E=decodeURIComponent(H.substr(C+1)),G=A;D.each(function(J,I){var K=G[J];if(I<D.length-1){G=G[J]=K||{}}else{if($type(K)=="array"){K.push(E)}else{G[J]=$defined(K)?[K,E]:E}}})}catch(F){throw new Error(F.message+' "'+H.substr(C+1)+'"')}})}return A},cleanQueryString:function(A){return this.split("&").filter(function(E){var B=E.indexOf("="),C=B<0?"":E.substr(0,B),D=E.substr(B+1);return A?A.run([C,D]):$chk(D)}).join("&")}});Elements.from=function(E,D){if($pick(D,true)){E=E.stripScripts()}var B,C=E.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i);if(C){B=new Element("table");var A=C[1].toLowerCase();if(["td","th","tr"].contains(A)){B=new Element("tbody").inject(B);if(A!="tr"){B=new Element("tr").inject(B)}}}return(B||new Element("div")).set("html",E).getChildren()};Element.implement({update:function(E){var B=function(G,J){if(G&&G.length>0&&J){for(var H=0,F=J.length;H<F;H++){var I=G[H%G.length];var K=I.clone(true);K.inject(I.getParent());D(new Elements([K]),J[H])}G.destroy()}};var A=function(G,J){if(G&&G.length>0&&J){for(var H=0,F=G.length;H<F;H++){var I=G[H];if(I.getFirst()){J.replaces(I.getFirst())}else{J.inject(I)}}}};var C=function(G,I){if(G&&G.length>0){for(var H=0,F=G.length;H<F;H++){G[H].set("text",I)}}};function D(G,J){if(G&&G.length>0){switch($type(J)){case"object":for(key in J){for(var H=0,F=G.length;H<F;H++){var I=G[H].retrieve(key);if(!I){I=G[H].getElements(key);G[H].store(key)}D(I,J[key])}}break;case"array":B(G,J);break;case"element":A(G,J);break;default:C(G,J);break}}}D(new Elements([this]),E)}});if(VisitStreamer==undefined){var VisitStreamer={}}if(VisitStreamer.UI==undefined){VisitStreamer.UI={}}if(VisitStreamer.UI.Format==undefined){VisitStreamer.UI.Format={}}VisitStreamer.Exception=new Class({initialize:function(A){this.message=A;this.name="VisitStreamer.Exception"}});VisitStreamer.Client=new Class({Implements:[Events,Options],options:{clientUrl:"/static/client.swf",keyExpiration:false,autoConnect:false,containerElement:false,throttle:200,debug:"me"},initialize:function(E,B,D,C){if(!E){throw new VisitStreamer.Exception("host must be specified")}if(!B){throw new VisitStreamer.Exception("port must be specified")}if(!D){throw new VisitStreamer.Exception("key must be specified")}this.setOptions(C);this.host=E;this.port=B;this.key=D;this.callbackBuffer=[];this.callbackInterval=null;this.lastCallback=0;this.bytesReceived=0;this.clientId="vsClient:"+$time().toString(36);this.loaded=false;this.status=VisitStreamer.Client.DISCONNECTED;if(!this.options.containerElement){this.containerElement=new Element("div",{id:this.clientId+":Container"})}else{this.containerElement=this.options.containerElement}this.boundKeyExpirationHandler=this.keyExpirationHandler.bind(this);var A=this;this.client=new Swiff(this.options.clientUrl,{id:this.clientId,container:this.containerElement,width:700,height:87,vars:{host:this.host,port:this.port,key:this.key,debug:this.options.debug},callBacks:{onLoad:function(){try{A.callbackBuffer.push({callback:"load"});A.onCallback()}catch(F){if(console){console.error(F.message,F)}}},onData:function(G){try{if(!G&&G.length==0){return }var F=$time();A.callbackBuffer.push({callback:"data",data:G,receivedTime:F});A.onCallback()}catch(H){if(console){console.error(H.message,H)}}},onStatus:function(G,F){try{A.callbackBuffer.push({callback:"status",code:G,message:F});A.onCallback()}catch(H){if(console){console.error(H.message,H)}}}}});this.scheduleKeyEvent()},scheduleKeyEvent:function(){if(this.keyExpirationInterval){this.cancelKeyEvent()}if(this.options.keyExpiration){this.keyExpirationInterval=setTimeout(this.boundKeyExpirationHandler,this.options.keyExpiration*1000)}},cancelKeyEvent:function(){this.keyExpirationInterval=$clear(this.keyExpirationInterval)},keyExpirationHandler:function(){this.fireEvent("key")},setKey:function(A){this.key=A;this.client.remote("setKey",A);this.scheduleKeyEvent()},connect:function(){if(!this.loaded){throw new VisitStreamer.Exception("client is not loaded")}this.client.remote("connect")},disconnect:function(){if(!this.loaded){throw new VisitStreamer.Exception("client is not loaded")}this.client.remote("disconnect");this.cancelKeyEvent()},onCallback:function(){if(!this.eventInterval){var A=this;if(!this.boundCallbackHandler){this.boundCallbackHandler=function(){A.callbackHandler();A.callbackInterval=$clear(A.callbackInterval)}}var C=$time();var B=this.options.throttle-(C-this.lastEvent);if(B<=0){B=1}this.callbackInterval=setTimeout(this.boundCallbackHandler,B);this.lastEvent=C}},callbackHandler:function(){var A;while(A=this.callbackBuffer.shift()){switch(A.callback){case"load":this.loadHandler();break;case"status":this.statusHandler(A.code,A.message);break;case"data":this.dataHandler(A.data,A.receivedTime);break}}},parseData:function(B){var C=B.split(/[&;]/);var A={};if(C.length){C.each(function(D){var E=D.indexOf("=");var F=E<0?[""]:D.substr(0,E).match(/[^\]\[]+/g);try{var G=decodeURIComponent(D.substr(E+1))}catch(I){if(console){console.error('Invalid value: "'+D+'"');return }}var H=A;F.each(function(K,J){var L=H[K];if(J<F.length-1){H=H[K]=L||{}}else{if($type(L)=="array"){L.push(G)}else{H[K]=$defined(L)?[L,G]:G}}})})}return A},dataHandler:function(G,A){var E=[];this.bytesReceived+=G.length;var C=G.split("\n");for(var D=0;D<C.length;D++){var B=C[D];if(B.length>0){var F=this.parseData(C[D]);E.push(F)}}if(E.length>0){this.fireEvent("update",[E,A])}},statusHandler:function(B,A){if(B==VisitStreamer.Client.CONNECTED){this.bytesReceived=0}this.fireEvent("status",[B,A])},loadHandler:function(){this.loaded=true;if(this.options.autoConnect){this.connect()}this.fireEvent("load")}});VisitStreamer.Client.DISCONNECTED=0;VisitStreamer.Client.CONNECTING=1;VisitStreamer.Client.CONNECTED=2;VisitStreamer.Pageview=new Class({initialize:function(B,A){this.pid=B;this.sid=A;this.startTime=false;this.endTime=false;this.enterEvent=false;this.leaveEvent=false},pageEntered:function(C,A){var B=A-C.t*1000;this.startTime=A-B;this.enterEvent=C},pageLeft:function(C,A){var B=A-C.t*1000;this.endTime=A-B;this.leaveEvent=C},pageExpired:function(A){this.endTime=A},getTitle:function(){if(this.enterEvent){return this.enterEvent.title}return null},getUrl:function(){if(this.enterEvent){return this.enterEvent.url}return null},getLength:function(A){return Math.floor(((this.endTime||(A?A:$time()))-this.startTime)/1000)},destroy:function(){delete this.enterEvent;delete this.leaveEvent},toLogString:function(){function A(D){var E=[],B,C;for(B in D){C=D[B];if($type(C)=="object"){E.push(B+":{ "+A(C)+"}")}else{if($type(C)!="function"){E.push(B+": "+C)}}}return E.join("; ")}return A(this)}});VisitStreamer.Session=new Class({initialize:function(A){this.sid=A;this.startTime=false;this.endTime=false;this.expireTime=false;this.pageviews={};this.activePages=0;this.totalPages=0;this.lastPageview=false;this.firstPageview=false},pageEntered:function(A){if(this.pageviews[A.pid]){throw new VisitStreamer.Exception("pageview id:"+A.pid+" already exists")}this.pageviews[A.pid]=A;this.totalPages++;if(!this.firstPageview){this.firstPageview=A}if(!this.lastPageview){this.lastPageview=A}else{if(this.lastPageview.startTime<=A.startTime){this.lastPageview=A}}if(!this.startTime){this.startTime=A.startTime-(A.enterEvent.sag||0)*1000}this.activePages++;if(this.activePages>0){this.endTime=false;this.expireTime=false}},pageLeft:function(A){this.activePages--;if(this.activePages<=0){this.activePages=0;this.endTime=A.endTime;this.expireTime=this.endTime+VisitStreamer.Session.expiration*1000}},pageExpired:function(A){this.activePages--;if(this.activePages<=0){this.activePages=0;this.endTime=A.endTime;this.expireTime=this.endTime}},getSessionNumber:function(){if(this.firstPageview){return this.firstPageview.enterEvent.sn}return null},getReferrer:function(){if(this.firstPageview){return this.firstPageview.enterEvent.ref}return null},getReferrerTitle:function(){return VisitStreamer.UI.Format.referrer(this.getReferrer())},getReferrerIconUrl:function(){function B(E){if(!E){return false}var C=E;var D=E.indexOf("://");if(D<0){return false}D=E.indexOf("/",D+3);if(D>-1){C=C.substring(0,D)}return C.toLowerCase()}var A=B(this.getReferrer());return A+"/favicon.ico"},getIPTitle:function(){if(this.firstPageview){var A=this.firstPageview.enterEvent;var B="";if(A.city){B+=A.city}if("US"==A.cc&&A.reg){B+=", "+A.reg}if(A.cc){B+=(B.length>0?" ":"")+"("+A.cc+")"}return A.ip+(B.length>0?" - "+B:"")}return null},getCountryCode:function(){if(this.firstPageview){var A=this.firstPageview.enterEvent;if(A.cc){return A.cc.toLowerCase()}}return null},getUserAgent:function(){if(this.firstPageview){return this.firstPageview.enterEvent.ua}return null},getUserAgentTitle:function(){var E=VisitStreamer.UserAgentParser;var C=this.getUserAgent();var A=null;var B=E.getBrowser(C);if(B){A=B.name+" "+B.version}else{A="Unknown"}var D=E.getOS(C);if(D){A+=" / "+D}return A},getLength:function(A){return Math.floor(((this.endTime||(A?A:$time()))-this.startTime)/1000)},isExpired:function(A){return this.expireTime?this.expireTime<(A?A:$time()):false},getPageviewsCount:function(){return this.totalPages},getActivePageviewsCount:function(){return this.activePages},destroy:function(){for(var B in this.pageviews){var A=this.pageviews[B];A.destroy();delete this.pageviews[B]}}});VisitStreamer.Session.expiration=5*60;VisitStreamer.DB=new Class({Implements:[Events],initialize:function(){this.sessions={};this.pageviews={}},handleUpdate:function(D,B){for(var C=0,A=D.length;C<A;C++){this.handleEventUpdate(D[C],B)}},handleEventUpdate:function(C,A){var D,B;D=this.getSessionByPid(C.pid);if(!D&&C.sid){D=this.getSession(C.sid);if(!D&&C.sid){D=this.createSession(C.sid)}}switch(C.e){case"e":if(!D){throw new VisitStreamer.Exception("session not found")}this.std=A-C.t*1000;B=this.createPageview(C.pid,C.sid);B.pageEntered(C,A);D.pageEntered(B);this.fireEvent("update",[D,B]);break;case"l":if(!D){throw new VisitStreamer.Exception("session not found")}this.std=A-C.t*1000;B=D.pageviews[C.pid];if(!B){throw new VisitStreamer.Exception("page id: "+C.pid+" not found in the session id: "+D.sid)}B.pageLeft(C,A);D.pageLeft(B);this.fireEvent("update",[D,B]);break}},getSession:function(A){return this.sessions[A]||false},getSessionByPid:function(B){var A=this.pageviews[B]||false;if(A){return this.sessions[A.sid]||false}else{return false}},createSession:function(A){if(this.sessions[A]){throw new VisitStreamer.Exception("session id:"+A+" already exists")}var B=new VisitStreamer.Session(A);this.sessions[A]=B;return B},createPageview:function(C,B){if(this.pageviews[C]){throw new VisitStreamer.Exception("pageview id:"+C+" already exists")}var A=new VisitStreamer.Pageview(C,B);this.pageviews[C]=A;return A},deleteSession:function(D){this.fireEvent("delete",[D]);var B=D.sid;for(var C in D.pageviews){var A=D.pageviews[C];this.deletePageview(A)}delete this.sessions[B];D.destroy()},deletePageview:function(A){var B=A.pid;delete this.pageviews[B];A.destroy()},expire:function(E){for(var B in this.sessions){var D=this.sessions[B];for(var C in D.pageviews){var A=D.pageviews[C];A.pageExpired(E);D.pageExpired(A);this.fireEvent("update",[D,A])}}},clear:function(){for(var A in this.sessions){var B=this.sessions[A];this.deleteSession(B)}}});VisitStreamer.UI.Chart=new Class({Implements:[Options],options:{label:false,data:[],lastEstimate:false},initialize:function(B,A){this.setOptions(A);this.chartElement=new Element("div",{"class":"chart"});if(this.options.label){this.labelElement=new Element("span",{"class":"label",html:this.options.label.replace(/\n/g,"<br/>")}).inject(this.chartElement)}this.barsElement=new Element("dl",{"class":"bars"}).inject(this.chartElement);this.lastElement=new Element("span",{"class":"last",title:"Last"}).inject(this.chartElement);this.maxElement=new Element("span",{"class":"max",title:"Max"});this.minElement=new Element("span",{"class":"min",title:"Min"});new Element("span",{"class":"min-max"}).grab(this.maxElement).grab(this.minElement).inject(this.chartElement);this.setData(this.options.data,this.options.lastEstimate);this.chartElement.inject(B)},setData:function(C,A){var B=undefined;var J=undefined;for(var D=0;D<C.length;D++){var I=C[D];if(!isNaN(I)){if(I>J||J==undefined){J=I}if(I<B||B==undefined){B=I}}}if(A){if(A>J){J=A}if(A<B){B=A}}this.barsElement.empty();var G=false,E=false,H;for(var D=0;D<C.length;D++){var I=C[D];if(!isNaN(I)){}var L=0,K=[];if(J!=0){var L=(I/J)*100;if(I==B&&!E){K.push("min");E=true}if(I==J&&!G){K.push("max");G=true}}H=new Element("dd").grab(new Element("span",{"class":K.join(" "),title:C[D],styles:{height:L+"%"}}));H.inject(this.barsElement)}var F=C[C.length-1];if(isNaN(F)){F=0}if(A&&A>=F){L=(A/J)*100;H.grab(new Element("span",{title:"Estimated: "+C[D],"class":"estimate",styles:{height:L+"%"}}),"top")}this.lastElement.set("text",F);this.minElement.set("text",B);this.maxElement.set("text",J)}});VisitStreamer.UI.Format.time=function(A){var B=new Date();B.setTime(A);return B.toLocaleTimeString()};VisitStreamer.UI.Format.timeInterval=function(D){var F=[60*60*24*7,60*60*24,60*60,60,1];var A=["wk.","d.","hr.","min.","sec."];var C=[],E;for(var B=0;B<F.length&&C.length<2;B++){E=Math.floor(D/F[B]);if(E>0){C.push(E+" "+A[B]);D-=E*F[B]}}if(C.length==0){C.push("0 sec.")}return C.join(" ")};VisitStreamer.SearchEngines={google:"q",yahoo:"p",msn:"q",bing:"q",aol:"query",aol:"encquery",lycos:"query",ask:"q",altavista:"q",netscape:"query",cnn:"query",looksmart:"qt",about:"terms",mamma:"query",alltheweb:"q",gigablast:"q",voila:"rdata",virgilio:"qs",live:"q",baidu:"wd",alice:"qs",yandex:"text",najdi:"q",aol:"q","club-internet":"query",mama:"query",seznam:"q",search:"q",wp:"szukaj",onet:"qt",netsprint:"q","google.interia":"q",szukacz:"q",yam:"k",pchome:"q",kvasir:"searchExpr",sesam:"q",ozu:"q",terra:"query",nostrum:"query",mynet:"q",ekolay:"q","search.ilse":"search_for"};VisitStreamer.UI.Format.referrer=function(B){var G=function(L){var K=L.indexOf("://");if(K<0){return false}var J=L.substring(K+3);K=J.indexOf("/",K);if(K>-1){J=J.substring(0,K)}return J.toLowerCase()};var F=function(M,L){var J=false;var K=M.indexOf("?"+L+"=");if(K<0){K=M.indexOf("&"+L+"=")}if(K>-1){J=M.substring(K+L.length+2);K=J.indexOf("&");if(K>-1){J=J.substring(0,K)}}if(J){J=decodeURIComponent(J).replace(/\+/g," ")}return J};var H=G(B);if(!H){return B}if(H.indexOf("www.")==0){H=H.substring(4)}var E=VisitStreamer.SearchEngines;for(var I in E){var A=E[I];if(H.indexOf(I)>-1){var D=F(B,A)}if("google"==I){var C=F(B,"cd")}}return H+(D?" - "+D:"")+(C?" - (Rank "+C+")":"")};VisitStreamer.UserAgentParser={BrowserPatterns:$H({opera:"Opera","msie|microsoft internet explorer|internet explorer":"Internet Explorer","netscape|netscape6":"Netscape",galeon:"Galeon",phoenix:"Phoenix",firefox:"Firefox","firebird|mozilla firebird":"Firebird",seamonkey:"Seamonkey",camino:"Camino",safari:"Safari",chrome:"Google Chrome","k-meleon":"K-Meleon",mozilla:"Mozilla",konqueror:"Konqueror",blackberry:"Blackberry",icab:"iCab",lynx:"Lynx",links:"Links",iron:"Iron"}),OSPatterns:$H({iPod:"iPod",iPhone:"iPhone","Nintendo Wii":"Nintendo Wii","PlayStation Portable":"PlayStation Portable","PlayStation 3":"PlayStation 3",Android:"Android","PalmOS|Palm OS":"Palm OS",BlackBerry:"BlackBerry","Windows NT 6.1|Windows 7":"Windows 7","Windows NT 6.0|Windows Vista":"Windows Vista","Windows NT 5.2|Windows Server 2003":"WS3","Windows NT 5.1|Windows XP":"Windows XP","Win98|Windows 98":"Windows 98","Windows NT 5.0|Windows 2000":"Windows 2000","Windows NT 4.0|WinNT|Windows NT":"Windows NT","Win 9x 4.90|Windows ME":"Windows ME","Win32|Win95|Windows 95":"Windows 95","Mac_PowerPC|Mac PPC|PPC|Mac PowerPC|Mac OS":"Mac OS",Linux:"Linux",SunOS:"SunOS",FreeBSD:"FreeBSD",AIX:"AIX",IRIX:"IRIX","HP-UX":"HP-UX","OS/2":"OS/2",NetBSD:"NetBSD"})};VisitStreamer.UserAgentParser.getBrowser=function(K){if(!K){return false}var C=VisitStreamer.UserAgentParser.BrowserPatterns;if(!VisitStreamer.UserAgentParser.BrowserRegExps){VisitStreamer.UserAgentParser.BrowserRegExps=[new RegExp("(mozilla)[\\/\\sa-z;.0-9-(]+rv:([0-9]+)([.0-9a-z]+)\\) gecko\\/[0-9]{8}$","gi"),new RegExp("(chrome|iron)[\\/\\sa-z(]*([0-9]+)([\\.0-9a-z]+)?","gi"),new RegExp("("+C.getKeys().join("|")+")[\\/\\sa-z(]*([0-9]+)([\\.0-9a-z]+)?","gi")];for(k in C){var H=k.split("|");if(H.length>1){for(var E=0;E<H.length;E++){C[H[E]]=C[k]}}}VisitStreamer.UserAgentParser.BrowserVersionRegExp=new RegExp("version[\\/\\sa-z(]*([0-9]+)([\\.0-9a-z]+)?","gi")}var B=VisitStreamer.UserAgentParser.BrowserRegExps;var A=VisitStreamer.UserAgentParser.BrowserVersionRegExp;var F;for(var E=0,G=B.length;E<G;E++){var J=B[E];J.lastIndex=0;var F=J.exec(K),D;while((D=J.exec(K))){F=D}if(F){break}}if(!F){return false}A.lastIndex=0;var I=A.exec(K);if(I){F[2]=I[1];F[3]=I[2]}var L={name:C[F[1].toLowerCase()],version:""+F[2]+(F[3]?F[3]:"")};return L};VisitStreamer.UserAgentParser.getOS=function(L){if(!L){return false}var B=VisitStreamer.UserAgentParser.OSPatterns;if(!VisitStreamer.UserAgentParser.OSIndex){var I={};var M=B.getKeys();for(var E=0,C=M.length;E<C;E++){var H=M[E].toLowerCase().split("|");for(var K=0,G=H.length;K<G;K++){I[H[K]]=B[M[E]]}}VisitStreamer.UserAgentParser.OSIndex=I}var J=VisitStreamer.UserAgentParser.OSIndex;var A=L.toLowerCase();for(var D in J){var F=A.indexOf(D.toLowerCase());if(F>-1){return J[D]}}return false};VisitStreamer.UI.Visits=new Class({Implements:[Options],options:{},initialize:function(B,A){this.setOptions(A);if(B.get("tag")!="ul"){throw new VisitStreamer.Exception("container element must be ul element")}if(!B.id){throw new VisitStreamer.Exception("container element must have id specified")}this.containerElement=B;this.empty=undefined;this.setEmpty(true)},setEmpty:function(A){if(this.empty!=A){if(A){this.containerElement.addClass("empty")}else{this.containerElement.removeClass("empty")}this.empty=A}},handleUpdate:function(D,A){var C=this.getSessionElement(D);if(!C){C=this.createSessionElement(D);C.inject(this.containerElement,"top");this.setEmpty(false)}this.updateSessionElement(C,D);var B=this.getPageviewElement(D,A);if(!B){B=this.createPageviewElement(A);C.retrieve(".path").grab(B)}this.updatePageviewElement(B,A)},handleDelete:function(B){var A=this.getSessionElement(B);if(!A){throw new VisitStreamer.Exception("Session not found. sid: "+B.sid)}A.destroy()},updateSession:function(E){var D=this.getSessionElement(E);if(!D){throw new VisitStreamer.Exception("Session not found. sid: "+E.sid)}if(!D.hasClass("expired")){this.updateSessionElement(D,E);for(var B in E.pageviews){var A=E.pageviews[B];var C=this.getPageviewElement(E,A);if(!C){throw new VisitStreamer.Exception("Pageview not found. pid: "+A.pid)}if(C.hasClass("active")){this.updatePageviewElement(C,A)}}}},getPageviewElement:function(C,A){var B=this.getSessionElement(C);if(!B){throw new VisitStreamaer.Exception("session id: "+C.sid+"not found")}return B.getElementById(this.getPageviewElementId(A))},getPageviewElementId:function(A){return this.containerElement.id+":pid:"+A.pid},createPageviewElement:function(A){pageviewElement=new Element("li",{id:this.getPageviewElementId(A),"class":"pageview",html:'<span class="started"></span><span class="length"></span><div class="title"></div><div class="url"></div>'});pageviewElement.store(":empty",true);pageviewElement.store(".started",pageviewElement.getElement(".started"));pageviewElement.store(".length",pageviewElement.getElement(".length"));pageviewElement.store(".title",pageviewElement.getElement(".title"));pageviewElement.store(".url",pageviewElement.getElement(".url"));return pageviewElement},updatePageviewElement:function(D,B){var A=VisitStreamer.UI.Format.time,C=VisitStreamer.UI.Format.timeInterval;if(D.retrieve(":empty")){D.eliminate(":empty");var E=D.retrieve(".title");E.set("text",B.getTitle()||"[No Title]");var F=D.retrieve(".url");F.set("text",B.getUrl())}D.retrieve(".started").set("text",A(B.startTime));D.retrieve(".length").set("text",C(B.getLength()));if(!B.endTime){D.addClass("active")}else{D.removeClass("active")}},getSessionElement:function(A){return this.containerElement.getElementById(this.getSessionElementId(A))},getSessionElementId:function(A){return this.containerElement.id+":sid:"+A.sid},createSessionElement:function(B){sessElement=new Element("li",{id:this.getSessionElementId(B),"class":"session",html:'<div class="head"><div class="time"><span class="started"></span><span class="length"></span></div><div class="ref"></div><div class="info"><div class="right"><label>Pageviews:</label><a href="#showAll" class="selected">All (<span class="pageviews"></span>)</a> | <a href="#showActive">Active (<span class="active-pageviews"></span>)</a><span class="debug"> - <a href="#showLog">Log</a></span></div><label class="first">Visit Number:</label><span class="visit"></span><div class="ended-block"><label>Ended:</label><span class="ended"></span></div><label>IP:</label><span class="ip"></span><label>Browser:</label><span class="ua"></span></div></div><ol class="path display-all"></ol><div class="log"></div>'});sessElement.store(":empty",true);sessElement.store(".path",sessElement.getElement(".path"));sessElement.store(".log",sessElement.getElement(".log"));var A=sessElement.getElement("div.head");sessElement.store(".ref",A.getElement(".ref"));sessElement.store(".visit",A.getElement(".visit"));sessElement.store(".started",A.getElement(".time > .started"));sessElement.store(".length",A.getElement(".time > .length"));var C=sessElement.getElement("div.info");sessElement.store(".ua",C.getElement(".ua"));sessElement.store(".ip",C.getElement(".ip"));sessElement.store(".ended",C.getElement("div > .ended"));sessElement.store(".pageviews",C.getElement("div.right > a > .pageviews"));sessElement.store(".active-pageviews",C.getElement("div.right > a > .active-pageviews"));sessElement.getElement("a[href$=showLog]").addEvent("click",this.onShowLogClick);sessElement.getElement("a[href$=showAll]").addEvent("click",this.onShowAllClick);sessElement.getElement("a[href$=showActive]").addEvent("click",this.onShowActiveClick);return sessElement},updateSessionElement:function(H,J){var N=VisitStreamer.UI.Format.time,L=VisitStreamer.UI.Format.timeInterval;if(H.retrieve(":empty")){H.eliminate(":empty");var E=H.retrieve(".ref");var B;if(J.getReferrer()){B=new Element("a",{href:J.getReferrer(),text:J.getReferrerTitle(),target:"_blank"});var K=J.getReferrerIconUrl();if(K){E.setStyle("background-image","url("+K+")")}E.grab(B)}else{B="[Direct]";E.set("text",B)}var M=H.retrieve(".visit");M.set("text",J.getSessionNumber());var D=H.retrieve(".ua");D.set("text",J.getUserAgentTitle());D.set("title",J.getUserAgent());var F=H.retrieve(".ip");F.set("text",J.getIPTitle());var C=J.getCountryCode();if(C){F.addClass("flag");var G=F.getStyle("background-image");F.setStyle("background-image",G.replace(/\w*.png/,C+".png"))}}var I=N(J.startTime);H.retrieve(".started").set("text",I);var A=L(J.getLength());H.retrieve(".length").set("text",A);if(J.endTime){H.retrieve(".ended").set("text",N(J.endTime))}H.retrieve(".pageviews").set("text",J.getPageviewsCount());H.retrieve(".active-pageviews").set("text",J.getActivePageviewsCount());if(J.activePages>0){H.addClass("active")}else{H.removeClass("active")}if(J.isExpired()){H.addClass("expired")}else{H.removeClass("expired")}},onShowLogClick:function(B){B.stop();var A=B.target.getParent(".session");A.toggleClass("display-log")},onShowAllClick:function(D){D.stop();var A=D.target;var B=A.getParent(".session");var C=B.getElement(".path");C.addClass("display-all");C.removeClass("display-active");B.getElement("a[href$=showAll]").addClass("selected");B.getElement("a[href$=showActive]").removeClass("selected")},onShowActiveClick:function(D){D.stop();var A=D.target;var B=A.getParent(".session");var C=B.getElement(".path");C.removeClass("display-all");C.addClass("display-active");B.getElement("a[href$=showAll]").removeClass("selected");B.getElement("a[href$=showActive]").addClass("selected")}});VisitStreamer.UI.VisitsChart=new Class({Implements:[Options],options:{label:"Active\nVisits"},initialize:function(B,A){this.setOptions(A);this.chart=new VisitStreamer.UI.Chart(B,{label:this.options.label});this.chart.lastElement.set("text",0);this.chart.barsElement.destroy();this.chart.minElement.destroy();this.chart.maxElement.destroy()},refresh:function(B,E){var E=new Date(E);var C=0;for(var A in B.sessions){var D=B.sessions[A];if(!D.isExpired(E)){C++}}this.chart.lastElement.set("text",C)}});VisitStreamer.UI.PageviewsChart=new Class({Implements:[Options],options:{label:"Pageviews\nper 5 minutes",interval:5*60*1000,intervalCount:24},initialize:function(D,A){this.setOptions(A);var C=[];C.length=this.options.intervalCount;for(var B=0;B<C.length;B++){C[B]=0}this.chart=new VisitStreamer.UI.Chart(D,{label:this.options.label,data:C})},refresh:function(J,D){var F=[];F.length=this.options.intervalCount;for(var G=0;G<F.length;G++){F[G]=0}var D=new Date(D)-J.std;var A=this.options.interval;for(var H in J.pageviews){var C=J.pageviews[H];var E=F.length-(Math.floor(D/A)-Math.floor(C.startTime/A));if(E>0&&(E-1<F.length)){F[E-1]+=1}}var B=Math.floor((F[F.length-1]+F[F.length-2])/2);var I=D%A;if(I>0){B=Math.floor(((F[F.length-1]+F[F.length-2])/(I+A))*A)}this.chart.setData(F,B)}});
