var perPage = 30; var page = 1; var selectors; var current = {language: document.documentElement.lang, period: 'today', group: '', geo: '', country: '', region: '', search: '', nick: '', page: 1}; var totalRows = 0; function updateLiveInternetCounter() { new Image().src = '//counter.yadro.ru/hit?r='+ ((typeof(screen)=='undefined')?'':';s'+screen.width+ '*'+screen.height+'*'+(screen.colorDepth?screen.colorDepth: screen.pixelDepth))+';u'+escape(document.URL)+ ';'+Math.random(); } function niceNumber(n) { n = Math.floor(n); if (Math.abs(n) < 1000) return n; return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' '); } function safeText(s) { return s.replace(/&/g,'&').replace(//g,'>'); } function emptyRow(nick) { return {nick: nick, visitors: 0, visitorsDiv: null, rowDiv: null}; } function aHref(key, value, cloud, aux) { var period = key == 'period' ? value : current.period; var geo = key == 'geo' ? value : current.geo; var group = key == 'group' ? value : current.group; var search = key == 'search' ? value : current.search; var page = key == 'page' ? value : 1; var language = key == 'language' ? value : current.language; return " 1 ? 'page=' + page + ';' : '') + "' " + (cloud >= 0 ? ' class="cloud' + cloud + '" ' : '') + aux + " onClick='return getRows(\"" + key + "\", \"" + encodeURIComponent(value) + "\");'>"; } function getSelectors() { var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0"); request.open("GET", '/rating/index.json?what=selectors;lang=' + current.language, true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { selectors = JSON.parse(request.responseText); showMessages(); showSelectors(); prevInit(); getRows(); } } request.send(null); } function showSelectors() { var h = ''; var i; for (i = 0; i < selectors.language.length; i++) { if (selectors.language[i][0] == current.language) current.languageTitle = selectors.language[i][1]; } for (i = 0; i < selectors.period.length; i++) { if (selectors.period[i][0] == current.period) { current.periodName = selectors.period[i][1]; break; } } if (i == selectors.period.length) current.periodName = selectors.period[0][1]; for (i = 0; i < selectors.group.length; i++) { if (selectors.group[i][0] == current.group) { current.groupName = selectors.group[i][1]; break; } } if (i == selectors.group.length) current.groupName = selectors.group[0][1]; for (i = 0; i < selectors.country.length; i++) { if (selectors.country[i][0] == current.country) { current.countryName = selectors.country[i][1]; break; } } if (i == selectors.country.length) current.countryName = selectors.country[0][1]; for (i = 0; i < selectors.region.length; i++) { if (selectors.region[i][0] == current.geo) { current.regionName = selectors.region[i][1]; break; } } if (i == selectors.region.length) current.regionName = selectors.region[0][1]; h += '
' + '' + current.groupName + '
'; for (i = 0; i < selectors.group.length; i++) { h += aHref('group', selectors.group[i][0], selectors.group[i][2], '') + selectors.group[i][1] + ''; } h += '
'; h += '
' + '' + current.regionName + '
'; for (i = 0; i < selectors.region.length; i++) { h += aHref('geo', selectors.region[i][0], selectors.region[i][2], '') + selectors.region[i][1] + ''; } h += '
'; h += '
' + '' + current.countryName + '
'; for (i = 0; i < selectors.country.length; i++) { h += aHref('geo', selectors.country[i][0], selectors.country[i][2], '') + selectors.country[i][1] + ''; } h += '
'; h += '
'; for (i = 0; i < selectors.period.length; i++) { h += aHref('period', selectors.period[i][0], -1, selectors.period[i][0] == current.period ? 'class="act"' : '') + selectors.period[i][1] + ''; } h += '
'; /* h += '
' + '
' + '
'; for (i = 0; i < selectors.language.length; i++) { h += '
' + aHref('language', selectors.language[i][0], -1, '') + '' + selectors.language[i][1] + '
'; } h += '
'; */ document.getElementById("selectors").innerHTML = h; h = '' + aHref('search', '') + current.groupName + ' [' + (current.geo == current.country ? current.countryName : current.regionName) + ', ' + current.periodName + (current.search ? ', ' + selectors.messages["search"] + ': «' + safeText(current.search) + '»' : '') + ']'; document.getElementById("rating_title").innerHTML = h; } function showMessages() { for (var key in selectors.messages){ var e = document.getElementById('msg_' + key); if (e) e.innerHTML = selectors.messages[key]; } document.title = "Ядро: " + selectors.messages["rating_title"]; } function getRows(key, value) { if (key) { updateLiveInternetCounter(); current.page = 1; value = decodeURIComponent(value); if (key == 'period') current.period = value; else if (key == 'geo') current.geo = value; else if (key == 'group') current.group = value; else if (key == 'search') current.search = value; else if (key == 'page') current.page = parseInt(value); else if (key == 'language') { current.language = value; document.cookie = "lang=" + encodeURIComponent(value) + '; expires=Wed, 17-Aug-2016 18:14:04 GMT; path=/'; getSelectors(); return true; } var g = current.geo.split('/'); current.country = g[0]; current.region = g.length > 1 ? g[1] : ''; showSelectors(); } var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0"); request.open("GET", '/rating/' + current.geo + '/' + current.group + '/' + current.period + '.tsv?' + (current.page > 1 ? 'page=' + current.page : '') + (current.search ? ';search=' + encodeURIComponent(current.search) : ''), true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) handleRows(request.responseText); } request.send(null); return true; } function handleRows(text) { var count = 0; var rows = text.split('\n'); var header = rows[0].split('\t'); //var now = header[4]; data = new Array(rows.length - 1); totalRows = parseInt(header[1]); for (var i = 1; i < rows.length; i++) { // 0:url 1:title 2:visitors 3:delta 4:shift 5:id 6:mark // 7:domain 8:prevDelta 9:visitorsDiv 10:timestamp var v = rows[i].split('\t'); if (v.length < 4) continue; var d = emptyRow(v[0]); d.url = v[1]; d.title = v[2]; d.visitors = parseInt(v[3]); d.domain = (d.url.indexOf('/') > 0) ? d.url.substring(0, d.url.indexOf('/')) : d.url; d.share = parseInt(v[4]); d.access = v[5]; //d.mark = v[6] ? ' result-hot' : ''; d.pos = count; data[count++] = d; } showPage(); } function rowCode(i) { var d = data[i]; var pos = (current.page - 1) * perPage + i + 1; if (!d) return ""; var code = '
'+ // onclick="location.href=\'http://'+ d.url +'\'"> '+ '
' + niceNumber(pos) + '
'+ ''+ '
' + niceNumber(d.visitors) + '
'+ '
'; return code; } function pagesNavigation() { var h = ''; if (current.geo) h = '' + selectors.messages.stat_of_group + ', ' + niceNumber(totalRows) + ' ' + selectors.messages.sites; else h = ''; document.getElementById("stat_of_group").innerHTML = h; var pagesCount = Math.floor((totalRows - 1) / perPage) + 1; if (current.page > pagesCount) current.page = pagesCount; if (pagesCount <= 1) { document.getElementById('paging').innerHTML = ''; return; } h = ''; for (var p = 1; p <= pagesCount; p++) { if (p == current.page) { h +='' + p + ' '; } else if (p == 3 && current.page > 6) { h += '... '; p = current.page - 3; } else if (p == current.page + 3 && pagesCount > current.page + 5) { h += '... '; p = pagesCount - 2; } else { h += aHref('page', p, -1, '') + p + ' '; } } document.getElementById('paging').innerHTML = h; } function showPage() { document.body.scrollTop = 0 + 'px'; document.body.scrollLeft = 0 + 'px'; var h = ''; for (i = 0; i < data.length; i++) h += rowCode(i); var d = document.getElementById('rows'); if (d) d.innerHTML = h; pagesNavigation(); } function doSearch() { var i = document.getElementById("inp_search"); if (i) getRows("search", encodeURIComponent(i.value)); return false; } function prevInit() { if ( Modernizr.touch ) { $('.city').click(function() { if($(this).hasClass('show')){ $(this).removeClass('show'); } else { $('.city').removeClass('show'); $('.sort').removeClass('show'); $(this).addClass('show'); } }); $('.sort').click(function() { if($(this).hasClass('show')){ $(this).removeClass('show'); } else { $('.city').removeClass('show'); $('.sort').removeClass('show'); $(this).addClass('show'); } }); } else { $('.city').hover( function(){ $(this).stop(true,true).addClass('show'); }, function(){ $(this).stop(true,true).removeClass('show'); } ); }; $("body").click(function (event) { if(event.target.id == "flag_ico"){ $(".hbl").removeClass("act"); $(".flag-block").addClass("act") }else if(event.target.id == "personal_ico"){ $(".hbl").removeClass("act"); $(".personal-block").addClass("act") }else if(event.target.id == "search_ico" || event.target.id == "form_search" || event.target.id == "inp_search" || event.target.id == "btn_search" || event.target.id == "bl_search"){ var i = document.getElementById("inp_search"); if (i) i.value = current.search; $(".hbl").removeClass("act"); $(".search-block").addClass("act") }else{ $(".hbl").removeClass("act"); } }); $("#btn_search").click(function () { return doSearch(); //$('#form_search').submit(); //return false; }); // $(window).scroll(function(){ // var top = $(this).scrollTop(); // var elem = $('#header'); // elem.css('top', top); // }); } function setParameters(str) { var p = str.substr(1).split(';'); for (var i = 0; i < p.length; i++) { var a = p[i].split('='); a[1] = decodeURIComponent(a[1]); var s = a[1]; if (a.length > 1) s = s.replace(/[ -,:-?\\]/g, ""); if (a[0] == 'page') current.page = parseInt(a[1]); else if (a[0] == 'group') current.group = s; else if (a[0] == 'period') current.period = s; else if (a[0] == 'search') current.search = a[1]; else if (a[0] == 'lang') current.language = a[1]; else if (a[0] == 'nick') current.nick = a[1]; else if (a[0] == 'country') current.country = s; else if (a[0] == 'region') current.region = s; else if (a[0] == 'geo') { var g = a[1].split('/'); current.geo = a[1]; current.country = g[0]; current.region = g.length > 1 ? g[1] : ''; } } } if (document.cookie) { var p = document.cookie.split(';'); for (var i = 0; i < p.length; i++) { var a = p[i].split('='); a[0] = a[0].replace(/ /g, ""); if (a.length > 1) a[1] = a[1].replace(/[ -,:-?\\]/g, ""); if (a[0] == 'lang') current.language = a[1]; } } if (document.location.pathname) { // for compability with old addressing: /rating/ru/495/today.html var p = document.location.pathname.split('/'); if (p.length > 3) { var i = 2; if (p[i].length == 2) { current.country = p[i++]; if (p.length > i + 1 && parseInt(p[i])) { current.region = p[i++]; current.geo = current.country + '/' + current.region; } else { current.geo = current.country; } if (p.length > i + 1) current.group = p[i++]; } } var a = p[p.length - 1].split('.'); if (a.length > 1) current.period = a[0]; if (document.location.search) setParameters(document.location.search); } if (document.location.hash) setParameters(document.location.hash); getSelectors();