Участник:Afinogenoff/articlecount.js

Материал из свободной русской энциклопедии «Традиция»
Перейти к: навигация, поиск

Замечание: Чтобы после сохранения вступили в силу изменения стилей, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=styles&skin=common&*, если используете скин Common.

Чтобы вступили в силу изменения скриптов, перезагрузите файл //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=vector&*, если используете скин Vector, или //traditio.wiki/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=common&*, если используете скин Common.

Гаджеты и импортируемые скрипты загружаются отдельными файлами.

var basecount=195133;
var basetime=new Date(Date.UTC(2007, 7, 14, 12, 31, 0, 0))
var curcount=0;
var updrest=10;

function LiveCountReq() {
   req.onreadystatechange = processCount;
   req.open("GET", "http://wiki.traditio.ru/index.php/Special:Statistics?action=raw&randomseed="+Math.floor(Math.random()*10000000), true);
   req.send(null);
 }
 function processCount() {
   if (req.readyState == 4) {
     if (req.status == 200) {
       curcount=req.responseText.substring(req.responseText.indexOf('good=',1)+5, 
                                             req.responseText.indexOf(';views=',1)); 
       var curtime=new Date;
       var progn=(250000-basecount)*
                 (curtime.valueOf()-basetime.valueOf())/
                 (curcount-basecount)+basetime.valueOf();
       var progd=new Date(progn);
       document.getElementById('articlecount').innerHTML=curcount;
       var secs=Math.floor((progd-curtime)/1000)
       var days=Math.floor(secs/24/60/60);
       var hours=Math.floor((secs-days*24*60*60)/60/60);
       var mins=Math.floor((secs-days*24*60*60-hours*60*60)/60);
       var lsecs=Math.floor(secs-days*24*60*60-hours*60*60-mins*60);
       document.getElementById('articlecountdown').innerHTML=Math.floor(days/10)+''+days%10+'d '+Math.floor(hours/10)+hours%10+':'+Math.floor(mins/10)+mins%10+':'+Math.floor(lsecs/10)+lsecs%10;
     } else {
       document.getElementById('articlecount').innerHTML='??????';
       document.getElementById('articlecountdown').innerHTML='??????';
     }
     updrest-=1;
     if (updrest>0) {
       setTimeout('LiveCountReq();',60000); 
     } else {
       document.getElementById('articlecount').innerHTML='??????';
       document.getElementById('articlecountdown').innerHTML='??????';
     }
   }
 }
 function updateLastMouse(e) {
   if (updrest<1) {
     updrest=10;
     setTimeout('LiveCountReq();',1000); 
   } else {
     updrest=10;
   }
 }
 function addLiveCount()
 {
    req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }
    if (req) {
      document.getElementById('p-logo').innerHTML='<a style="background-image: url(http://wiki.traditio.ru/images/c/c2/T-logo.png);" href="/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0" title="Перейти на заглавную страницу [z]" accesskey="z"></a><div id="articlecount" style="display:block;position:absolute;left:5px;top:100px;align:center; color:#222222; font-size: 8pt;opacity:0.7;background:#FFFFFF;padding:0em 0.25em;">??????</div><div id="articlecountdown" style="display:block;position:absolute;left:60px;top:100px;align:center; color:#773333; font-size: 8pt;opacity:0.7;background:#FFFFFF;padding:0em 0.25em;">??????</div>'


   if (window.addEventListener) 
     window.addEventListener("mousemove", updateLastMouse, false);
   else 
     if (window.attachEvent) 
       window.attachEvent("mousemove", updateLastMouse);
   LiveCountReq(); 
    }
 }
 addOnloadHook(addLiveCount);