// Initial Ajax code

function getCounter(pURL) {
	if (window.XMLHttpRequest) { // Mozilla, Safari, etc
		xmlhttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) { //IE
		xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
	}

	// if we have created the xmlhttp object we can send the request
	if (typeof(xmlhttp)=='object') {
		xmlhttp.onreadystatechange = xmlhttpCounterResults;
		d = new Date();
		xmlhttp.open('GET', pURL + '?r=' + d.getTime(), true);
		xmlhttp.send(null);
		// otherwise display an error message
	} else {
		alert('Your browser is not remote scripting enabled.');
	}
}

	// function to handle asynchronous call
function xmlhttpCounterResults() {
	if (xmlhttp.readyState==4) {
		if (xmlhttp.status==200) {
			startCounters();
		}
	}
}

// Real Counter Code

function startCounters(xmlHttp) {
	var xmlDoc=xmlhttp.responseXML.documentElement;

	start = xmlDoc.getElementsByTagName("start")[0].childNodes[0].nodeValue * 1;
	//cntToday = xmlDoc.getElementsByTagName("today")[0].childNodes[0].nodeValue * 1;
	time = xmlDoc.getElementsByTagName("time")[0].childNodes[0].nodeValue * 1;

	gap = xmlDoc.getElementsByTagName("gap")[0].childNodes[0].nodeValue * 1;
	base = xmlDoc.getElementsByTagName("base")[0].childNodes[0].nodeValue * 1;

	hipass = xmlDoc.getElementsByTagName("highpass")[0].childNodes[0].nodeValue * 1;
	dailyviews = xmlDoc.getElementsByTagName("dailyviews")[0].childNodes[0].nodeValue * 1;

	d = new Date();
	unixtime = parseInt(d.getTime() / 1000);
	if (unixtime < time) {
		time = unixtime - 1;
	}
	seed = (start - base > 0 ? start - base : 0);

	nowStart = start + (seed / gap * (unixtime - time));
	//nowToday = cntToday + (seed / gap * (unixtime - time));

	viewsSeed = dailyviews / 86400;
	viewsStart = viewsSeed * (unixtime - time);

	endCmd = ', ' + unixtime + ', ' + seed + ', ' + gap + ', ' + hipass + ')';

	// Call to counter function, it take: element name, startCounter, startTime(*), seed, gap
	updateCounter("general", nowStart, unixtime, seed, gap, hipass);
	//updateCounter("today", nowToday, unixtime, seed, gap, hipass);
	updateCounter("traffic", viewsStart, unixtime, viewsSeed, 1, 0);

	setInterval('updateCounter("general", ' + nowStart + endCmd, 5000);
	//setInterval('updateCounter("today", ' + nowToday + endCmd, 5000);
	setInterval('updateCounter("traffic", ' + viewsStart + ', ' + unixtime + ', ' + viewsSeed + ', 1, 0)', 1000);
}

function updateCounter(element, startCount, startTime, manyPerUnit, unit, hipass) {
	d = new Date();

	units = (parseInt(d.getTime()/1000) - startTime) / unit;
	stepCounter = startCount + (manyPerUnit * units);

	if (stepCounter < hipass) {
		document.getElementById(element).innerHTML = formatNumber(Math.round(hipass));
	} else {
		document.getElementById(element).innerHTML = formatNumber(Math.round(stepCounter));
	}
}

function formatNumber(number) {
	number += '';
	x = number.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}

//start!
//getCounter('/xml/counter.xml');