function showdiv(previous, next) {
	document.getElementById(previous).style.display = 'none';
	document.getElementById(next).style.display = 'block';
	return false;
}

function newRequest() {
	if (window.XMLHttpRequest) return new XMLHttpRequest();
	else if (window.ActiveXObject) {
		try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
	}
	return;
}

function ajaxaccept(msg) {
	showdiv('submitted','accepted');
	msg = msg.split('*');
	window[msg[0]](msg[1]);
}

function ajaxreject(reason) {
	showdiv('submitted','rejected');
	var id = document.getElementById('ajaxerror');
	while(id.firstChild) id.removeChild(id.firstChild);
	var reason = reason.split('*');
	for (msg in reason) {
		id.appendChild(document.createTextNode(reason[msg]));
		id.appendChild(document.createElement('br'));
	}
	return false;
}

function ajaxquery(page,query) {
	document.getElementById('accepted').style.display = 'none';
	showdiv('rejected','submitted');
	var request = newRequest();
	if (!request) return ajaxreject('Your browser does not support AJAX.');
	var requestTimer = setTimeout(function() {
		request.abort();
		ajaxreject('Request timed out!');
	}, 5000);

	request.open('POST',page,true);
	request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	request.onreadystatechange = function() {
		if (request.readyState != 4) return;
		clearTimeout(requestTimer);
		if (request.status != 200) return ajaxreject('Error in web service!');

		var response = request.responseText.split('^');
		window[response[0]](response[1]);
	};
	
	request.send(query);
	return false;
}
