
function loadXML(url)
	{
	if (window.XMLHttpRequest)
		{
		req = new XMLHttpRequest();
		req.onreadystatechange = parse_xml_and_show;
		req.open("GET", url, true);
		req.send(null);
		}
	else if (window.ActiveXObject)
		{
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req)
			{
			req.onreadystatechange = parse_xml_and_show;
			req.open("GET", url, true);
			req.send();
			}
		}
	}

if (!prf_maxitems) {var prf_maxitems=5;};
var prf_xmlwait=5;

function prf_renewxml()
	{
	loadXML('/cgi-bin/xml.cgi?nocahe='+Math.random());
	setTimeout('prf_renewxml()', prf_xmlwait*1000);
	}

var prf_prevsec=0;
var prf_nowsec=0;
var prf_nextsec=0;
var prf_seenids=[];
var prf_showtexts=[];
	var prf_showseconds=[];
	var prf_showids=[];
var prf_waittexts=[];
	var prf_waitseconds=[];
	var prf_waitids=[];
var prf_count=0; 
var prf_countstyles=2; 
	var prf_showtextsatonce=[];
	var prf_shownextatonce=true; 
//var prf_separams={'yandex':'/yandsearch?text=','google':'/search?hl=ru&q=','mail':'/search?q=','rambler':'/search?query='};


function pixshowpart(obj,nowpix,maxpix,dpix,dt)
	{
	nowpix+=dpix;
	nowpix=Math.min(nowpix,maxpix);
	obj.style.height=Math.round(nowpix)+"px";
	if (nowpix<maxpix) {setTimeout(function() { pixshowpart(obj,nowpix,maxpix,dpix,dt); }, dt);};
	};

function pixshow(id,maxtime)
	{
	var obj=document.getElementById(id);
	obj.style.overflow="hidden";
	obj.style.height="0px";
	obj.style.display="";
	var dn=100; //за скока раз
	var dt=maxtime/dn; //за 100?
	var dpix=obj.scrollHeight/dn;
	if (dpix<1.5) {dpix=1; dn=obj.scrollHeight; dt=Math.round(maxtime/dn);}
	else {
		if (dpix<10) {dpix=Math.round(dpix); dn=Math.round(obj.scrollHeight/dpix); dt=Math.round(maxtime/dn);}
		else {dpix=Math.round(dpix);};
		};
	pixshowpart(obj,0,obj.scrollHeight,dpix,dt);
	};

function prf_nextitem()
	{
	if (prf_nowsec==0) { if (prf_showseconds.length) { prf_nowsec=prf_showseconds[0];} else { if (prf_waitseconds.length) {prf_nowsec=prf_waitseconds[prf_waitseconds.length-1];};};};
	if (prf_waittexts.length==0) {setTimeout('prf_nextitem()', 30000);} else
		{
//		prf_shownextatonce=true;
//		while(prf_shownextatonce)
//			{
		prf_showtexts.unshift(prf_waittexts.pop());
		prf_showseconds.unshift(prf_waitseconds.pop());
		prf_showids.unshift(prf_waitids.pop());
		prf_prevsec=prf_showseconds[1];
		prf_nowsec=prf_showseconds[0];
		prf_nextsec=prf_waitseconds[prf_waitseconds.length-1];
		if (prf_showtexts.length>prf_maxitems-1)
			{
			prf_showtexts.pop();
			prf_showseconds.pop();
			prf_showids.pop();
			};
//			};
		var prf_showcnt = document.getElementById('counter');
//		prf_showcnt.innerHTML=(prf_nextsec-prf_nowsec)+' секунд ждем, через '+prf_xmlwait+' обновляемся<br>'+prf_showtexts.join('<br>')+'';
//		prf_showcnt.innerHTML='<div class="start">'+prf_showtextsatonce.join('<br>')+'</div>'+prf_showcnt.innerHTML;
//		prf_showcnt.innerHTML=(prf_nextsec-prf_nowsec)+' секунд ждем, через '+prf_xmlwait+' обновляемся<br><div class="start" id="'+prf_showids[0]+'">'+prf_showtexts[0]+'</div>'+prf_showcnt.innerHTML;
		prf_showcnt.innerHTML='<span class=small>следующий через '+(prf_nextsec-prf_nowsec)+' сек.</span><div style="display:none" id="st'+prf_showids[0]+'">'+prf_showtexts.join('</div><div>')+'</div>';
		var prf_slidetime=Math.min(900,Math.max(300,Math.round(1000*(prf_nowsec-prf_prevsec)*0.9)));
		pixshow('st'+prf_showids[0],prf_slidetime);
		setTimeout('prf_nextitem()', Math.max(0,(prf_nextsec-prf_nowsec)*1000-0*prf_slidetime+0) );
		};
	};

function parse_xml_and_show()
	{
	if (req && req.readyState == 4)
		{
		if (req.status == 200)
			{
			var traffdoc = req.responseXML.documentElement;
			if (traffdoc && traffdoc.nodeName == 'traff')
				{
				var traffictotals = traffdoc.getElementsByTagName('searchengine');
				var senum1st=0;
				for (var i = 0; i< traffictotals.length; i++)
					{
					var sename = traffictotals[i].getAttribute('id');
					var senum = traffictotals[i].firstChild.data;
					var setd = document.getElementById(sename+'_sum');
					setd.innerHTML=senum;
					if (!senum1st) {senum1st=senum;};
					var seline = document.getElementById(sename+'_width');
//					seline.style.width=Math.round(senum/100)+'px';
					seline.style.width=Math.round(100*senum/senum1st)+'%';
					};
				var items = traffdoc.getElementsByTagName('visit');
				var prf_lastsec=0;
				for (var i = 0; i<items.length; i++)
					{
					var item  = items[i];
					var iid=item.getAttribute('id');
					if (!prf_seenids[iid])
						{
						prf_seenids[iid]=true;
//						var htmlcode='<font size="-1">'+item.getAttribute('time')+'</font> <img src="/static/'+item.getAttribute('se')+'_ico.gif" alt="'+item.getAttribute('se')+'" width="16" height="16" vspace="0" border="0" align="absmiddle"> '+item.firstChild.data+' | <font size="-1" color=green>'+item.getAttribute('urlhost')+'</font>';
//						var htmlcode='<font size="-1">'+item.getAttribute('time')+'</font> <img src="/static/'+item.getAttribute('se')+'_ico.gif" alt="'+item.getAttribute('se')+'" width="16" height="16" vspace="0" border="0" align="absmiddle"> <a href="http:/'+'/'+item.getAttribute('refhost')+prf_separams[item.getAttribute('se')]+unescape(item.firstChild.data)+'" target=_blank>'+item.firstChild.data+'</a> | <font size="-1" color=green>'+item.getAttribute('urlhost')+'</font>';
						prf_count++;
						var htmlcode='<span class="prf'+(prf_count%prf_countstyles)+'"><span class="small">'+item.getAttribute('time')+'</span> <img src="/static/'+item.getAttribute('se')+'_ico.gif" alt="'+item.getAttribute('se')+'" width="16" height="16" vspace="0" border="0" align="absmiddle"> <a href="'+item.getAttribute('prooflink')+'" title="визит из '+item.getAttribute('refhost')+' на '+item.getAttribute('urlhost')+': '+item.firstChild.data+'" target=_blank>'+item.firstChild.data+'</a> <span class=small style="color:green">'+item.getAttribute('urlhost')+'</span></span>';
						if (prf_showtexts.length<prf_maxitems-1)
							{
							prf_showtexts.unshift(htmlcode);
							prf_showseconds.unshift(item.getAttribute('sec'));
							prf_showids.unshift(item.getAttribute('id'));
							}
						else
							{
							prf_waittexts.unshift(htmlcode);
							prf_waitseconds.unshift(item.getAttribute('sec'));
							prf_waitids.unshift(item.getAttribute('id'));
							};
						};
					};
				if (prf_nowsec==0 && prf_showtexts.length)
					{
					var prf_showcnt = document.getElementById('counter');
					prf_showcnt.innerHTML='<div>'+prf_showtexts.join('</div><div>')+'</div>';
					prf_nowsec=prf_showseconds[0];
					prf_nextsec=prf_waitseconds[prf_waitseconds.length-1]?prf_waitseconds[prf_waitseconds.length-1]:(prf_nowsec);
					prf_nextitem();
//					setTimeout('prf_nextitem()', (prf_nextsec-prf_nowsec)*1000 );
					};
				if (prf_waitseconds.length)
					{
					var prf_maxsec=prf_waitseconds[0]?prf_waitseconds[0]:(prf_nowsec+30);
					prf_xmlwait=Math.min(30,Math.max(1,Math.round((prf_maxsec-prf_nowsec)/2)));//следующее обновление хмл
					} else {prf_xmlwait=30;};
				}
			}
		}
	}
