function getHttpRequestObject() {
	var request = false;
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return request;
}
function ajaxSendForm(form, callback) {
	if (typeof(form) == "string") {
		form = document.getElementById(form);
	}

	request = getHttpRequestObject();
//	if (request == false) {
//		alert('Cannot create XMLHTTP instance');
//	}

	var postString = null;
	var parameters = "";
	var post = (form.method == "post");
	if (post) {
		postString = "";

		for (var i=0; i<form.elements.length; i++) {
			var elm = form.elements[i];

			if (i != 0) {
				postString += "&";
			}

			switch (elm.tagName) {
				case "select":
					break;
				default:
					postString += form.elements[i].name +"="+ encodeURI(form.elements[i].value);
			}
		}
	}
	else {
	}

	request.onreadystatechange = callback;
	request.open(form.method, form.action + parameters, true);
	if (post) {
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}
	request.send(postString);
}
function clearMessages(container) {
	if (typeof(container) == "string") {
		container = document.getElementById(container);
	}
	while (container.hasChildNodes()) {
		container.removeChild(container.firstChild);
	}
}

function ajaxAddMessages(container){
	dataNode = request.responseXML.getElementsByTagName("messages")[0];
	ajaxAddMessageItems(dataNode,container,"message")
}
function ajaxAddErrors(container){
	dataNode = request.responseXML.getElementsByTagName("errors")[0];
	ajaxAddMessageItems(dataNode,container,"error")
}
function ajaxAddMessageItems(dataNode,container,className)
{
	if (dataNode && dataNode.hasChildNodes()) {
		if (typeof(container) == "string") {
			container = document.getElementById(container);
		}
		var list = document.createElement("ul");
		for (var i=0; i<dataNode.childNodes.length; i++) {
			var msg = document.createElement("li");
			msg.className = className;
			msg.innerHTML = dataNode.childNodes[i].firstChild.nodeValue;
			list.appendChild(msg);
		}
		container.appendChild(list);
	}
}
function ajaxHideMessages() {
	clearMessageCount--;
	if (clearMessageCount != 0) {
		return
	}

	var container = document.getElementById("messages");
	container.style.display = "none";
}

function showAjaxResult() {
	if (request.readyState != 4) return;
	if (request.status != 200) return;

	alert(request.responseText);
}

