/* Script written 18/08/2008
  * Author: James O'Brien (www.jimmed.net)
  * Feel free to re-use any of this script as you see fit
  * It was written in a rush, with the good bits stolen shamelessly from the god at www.quirksmode.org
  */
  
// Configuration
var barWidth = 420;
  
// Debug/status handling
var statusBar = null;
function setStatus(msg) {
	statusBar.innerHTML = msg;
}

// Cross-browser event handling
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}

// AJAX/AJAT handling
var req = null;
function sendRequest(url,callback) {
	req = createXMLHTTPObject();
	if (!req) {
		setStatus('AJAX unavailable');
		return;
	};
	req.open("GET",url,true);
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
			status('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(false);
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

// Checking for updates
var oldHash = 0;
function checkForUpdates() {
	setStatus('Checking for updates...');
	sendRequest('hash.php', hashCheck);
}
function getInitialHash() {
	sendRequest('hash.php', getHash);
}
function getHash(req) {
	oldHash = req.responseText;
}
function getNewData() {
	sendRequest('data.txt', updateData);
}
function loadPage(name) {
	sendRequest('modules/' + name + '.php', updatePage);
}

// Handling updates
function hashCheck(req) {
	var newHash = req.responseText;
	if(oldHash == newHash){
		setStatus('Donations will auto-update');
	}
	else {
		setStatus('New update available');
		getNewData();
		oldHash = newHash;
	}
}
function updateData(req) {
	var data = req.responseText.split('/');
	var percentage = data[0];
	var currentamount = data[1];
	document.getElementById('bar').innerHTML = percentage + '%';
	document.getElementById('currentamount').innerHTML = currentamount;
	document.getElementById('currentamount').style.width = ((percentage/100)*barWidth)+'px';
	setStatus('New update received');
}
function updatePage(req) {
	var text = req.responseText;
	document.getElementById('intro').innerHTML = text;
}

// Set event handlers
function init() {
	statusBar = document.getElementById('statusBar');
	setStatus('Donations will auto-update');
	getInitialHash();
	setInterval(checkForUpdates, 60000);
}
//addEventSimple(document, 'load', init);
