var protocol = "http"; function getProtocol() { protocol = window.location.protocol; } function Top100CounterClass() { } Top100CounterClass.prototype.DrawNotInvisibleWarning = function() { document.write('Top 100 Counter cannot be invisible') } Top100CounterClass.prototype.DrawCounter = function(id, cl) { getProtocol(); var query = this.GetQuery(id, cl) var imgTag = '' imgTag += 'Top100 counter' imgTag += '' document.write(imgTag); this.DrawUnloadObject(id); } Top100CounterClass.prototype.IDrawCounter = function(id) { getProtocol(); var query = this.GetQuery(id) var scrTag = ''; document.write(scrTag); this.DrawUnloadObject(id); } Top100CounterClass.prototype.DrawUnloadObject = function(id) { this.attachUEvent(id,window); } Top100CounterClass.prototype.attachUEvent = function(id,obj) { var _this=this; var CID=id var S=new Date(); var orgEvnt=obj.onunload; obj.onunload=unloadE function unloadE() { _this.OnUnloadEvnt(orgEvnt,CID,S) } } Top100CounterClass.prototype.OnUnloadEvnt = function(obj,id,start_time) { var end_time=new Date(); var k=end_time-start_time; var time_sec=Math.ceil(k/1000); var img= new Image(); img.src = protocol + "//counter.top100.penki.lt/LogEntranceTime.aspx?cid=" + id + "&t=" + time_sec + "&" + Math.random(); if (obj) { return obj() } } Top100CounterClass.prototype.GetQuery = function(id , cl) { var FlashVersion = this.DetectFlashVersion(); var ScreenResolution = this.DetectScreenResolution(); var ColorDepth = this.DetectColorDepth(); var JAVAEnabled = this.DetectJAVA(); var Speed = this.DetectConnectionSpeed(); var PageCharacterSet = this.DetectPageCharacterSet(); var Referer = this.GetReferer(); var isNewVisit = this.IsNewVisit(); var isStartPage = this.IsStartPage(); var query = "cid=" + id + "&r=" + escape(Referer) + "&s=" + escape(ScreenResolution) + "&c=" + escape(ColorDepth) + "&j=" + escape(JAVAEnabled) + "&f=" + escape(FlashVersion) + "&p=" + escape(Speed) + "&n=" + escape(isNewVisit) + "&st=" + escape(isStartPage) + "&e=" + escape(PageCharacterSet); if (cl) { query +="&cl=" + escape(cl); } query += "&" + Math.random(); return query; } Top100CounterClass.prototype.IsNewVisit = function() { var cookie_name = "__visited"; var cookie_value = this.getCookie(cookie_name); var isNew = false; if (!cookie_value||cookie_value=="") { isNew = true; } var end_date = new Date(); end_day = end_date.getDay(); end_day = end_date.getDate() + 15 - end_day; var exp_date_long = new Date(end_date.getFullYear(), end_date.getMonth(), end_day); this.setCookie(cookie_name,"false",exp_date_long) return isNew } Top100CounterClass.prototype.IsStartPage = function() { var isFirst=true var url=this.GetReferer(); if (window.location) { var i=url.indexOf(window.location.host); i=parseInt(i); if (i>0&&i<10) { isFirst=false } } return isFirst; } Top100CounterClass.prototype.DetectFlashVersion = function() { var flash_version = "-"; var browser = navigator; if (browser.plugins && browser.plugins.length) { for (var i = 0; i < browser.plugins.length; i++) { if (browser.plugins[i].name.indexOf('Shockwave Flash')!= -1) { flash_version=browser.plugins[i].description.split('Shockwave Flash ')[1]; flash_version=flash_version.split(' ')[0]; break; } } } else if (window.ActiveXObject) { for (var i = 10; i >= 2; i--) { try { var fl_ver=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+i+"');"); if (fl_ver) { flash_version=i + '.0'; break; } } catch(e) {} } } return flash_version; } Top100CounterClass.prototype.DetectScreenResolution = function () { var screen_resolution = "-"; if (screen) { screen_resolution = screen.width + "x" + screen.height; } else if (self.java) { var javaObj = java.awt.Toolkit.getDefaultToolkit(); var screen_size = javaObj.getScreenSize(); screen_resolution = screen_size.width + "x" + screen_size.height; } return screen_resolution; } Top100CounterClass.prototype.DetectColorDepth = function () { var screen_colorDepth = "-"; if (screen) { screen_colorDepth = screen.colorDepth + "-bit"; } return screen_colorDepth; } Top100CounterClass.prototype.DetectJAVA = function () { return navigator.javaEnabled() ? true : false; } Top100CounterClass.prototype.DetectConnectionSpeed = function () { var cookie_name = "__conn_speed"; var cookie_name_long = "__conn_speed_long"; var cookie_value = this.getCookie(cookie_name); var speed=""; if (!cookie_value||cookie_value=="") { cookie_value = this.getCookie(cookie_name_long); if (cookie_value&&cookie_value!="") { speed=cookie_value; } setTimeout("(new Top100CounterClass()).CountConnectionSpeed()",5 * 1000); } else { speed=cookie_value; } return speed; } Top100CounterClass.prototype.CountConnectionSpeed = function () { var test_image; var curr_date; var start_time; curr_date = new Date(); start_time = curr_date.getTime(); test_image = new Image(1,1); test_image.onload = function () { var end_date = new Date(); var end_time = end_date.getTime(); var time_elapsed = end_time - start_time; var image_size = 569; var connection_type = ""; var connectSpeed = (Math.floor((((image_size * 8) / (time_elapsed / 1000)) / 1024) * 10) / 10); if(connectSpeed <= 28.8) { connection_type = "Dial-up 28.8k"; } else if(connectSpeed <= 33.6) { connection_type = "Dial-up 33.6k"; } else if(connectSpeed <= 53.3) { connection_type = "Dial-up 56k"; } else if(connectSpeed <= 128.0) { connection_type = "ISDN 128k"; } else if(connectSpeed <= 256.0) { connection_type = "ISDN 256k"; } else if(connectSpeed <= 512.0) { connection_type = "ISDN 512k"; } else if(connectSpeed <= 800.0) { connection_type = "Cable/DSL 800k"; } else if(connectSpeed <= 1500.0) { connection_type = "Cable/DSL 1.5Mbps"; } else if(connectSpeed <= 1544.0) { connection_type = "Full T1 1.544Mbps"; } else if(connectSpeed <= 3000.0) { connection_type = "N x T1 3.0Mbps"; } else if(connectSpeed <= 6000.0) { connection_type = "T3 6.0Mbps"; } else if(connectSpeed <= 15000.0) { connection_type = "T3 15Mbps"; } else if(connectSpeed <= 30000.0) { connection_type = "T3 30Mbps"; } else { connection_type = "over 30Mbps"; } var _t=new Top100CounterClass(); _t.SaveSpeed( connection_type); } test_image.src = protocol + "//counter.top100.penki.lt/images/speed.gif?" + Math.random(); } Top100CounterClass.prototype.SaveSpeed =function (connection_type) { var cdate = new Date(); var exp_date = new Date( cdate.getFullYear(), cdate.getMonth(), cdate.getDate(), cdate.getHours(), cdate.getMinutes()+1, cdate.getSeconds()); var exp_date_long = new Date( cdate.getFullYear(), cdate.getMonth() + 1, cdate.getDate(), 0,0,0); var cookie_name = "__conn_speed"; var cookie_name_long = "__conn_speed_long"; this.setCookie(cookie_name,connection_type,exp_date) this.setCookie(cookie_name_long,connection_type,exp_date_long) } Top100CounterClass.prototype.DetectPageCharacterSet =function () { var r=""; if (document.charset) { r=document.charset; } else if (document.characterSet) { r=document.characterSet; } else { var _eds_charset1 = document.getElementsByTagName('meta'); var _eds_strtmp=''; for(var _eds_i=0;_eds_i<_eds_charset1.length;_eds_i++) { _eds_strtmp= _eds_charset1[_eds_i].content.toLowerCase(); if(_eds_strtmp.indexOf('charset')>0) { _eds_strtmp = _eds_strtmp.split('=')[1]; _eds_strtmp = _eds_strtmp.toLowerCase(); r = _eds_strtmp; break; } } } if(r == "") { r = "utf-8"; } return r; } Top100CounterClass.prototype.GetReferer = function () { return document.referrer; } Top100CounterClass.prototype.getCookie = function (name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } Top100CounterClass.prototype.setCookie = function (name, value, expires, path, domain, secure) { var d=new Date(); if (!expires) expires=new Date(d.getFullYear(), d.getMonth() + 6, d.getDate()) document.cookie= name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function DrawTop100Counter(id,cl) { var TOP100= new Top100CounterClass() TOP100.DrawCounter(id,cl); } function DrawTop100ICounter(id) { var TOP100= new Top100CounterClass() TOP100.IDrawCounter(id); } DrawTop100Counter('34702');