
function getXMLHttpRequest() {
	var xmlHttpReq = null;
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlHttpReq;
}

function AjaxRequest() {
	this.xmlHttpReq = getXMLHttpRequest();
	this.stateChangeHandler = null;
}

AjaxRequest.prototype.send = function(method, url, data, async) {
	if (this.xmlHttpReq == null) return false;
	var self = this;
	this.xmlHttpReq.open(method, url, async);
	this.xmlHttpReq.onreadystatechange = function() {
		if (self.stateChangeHandler != null) {self.stateChangeHandler();}
	};
	this.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	this.xmlHttpReq.setRequestHeader('Connection', 'close');
	this.xmlHttpReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
	this.xmlHttpReq.send(data);
	return true;
}

function getNodeValue(parent, tagName) {
	if (parent == null) return null;
	var e = parent.getElementsByTagName(tagName);
	return (e != null && e[0] != null && e[0].hasChildNodes()) ? e[0].firstChild.nodeValue : "";
}
/*
function submitFormResponseHandler(xmlHttpReq) {
	if (this.xmlHttpReq.readyState == 4 && this.xmlHttpReq.status == 200) {
		var response = this.xmlHttpReq.responseXML;
		if (response != null) {
			var code = getNodeValue(response, "code");
			var message = getNodeValue(response, "message");
			if (message != null && message != "") {
				alert(message);
			}
		}
	}
}
*/
function sendAuctionBid(form, url) {
	var qs = "";
	var req = new AjaxRequest();
	
	for (var i=0; i<form.elements.length; i++) {
		qs += form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value) + "&";
	}
	
	req.stateChangeHandler = function() {
		if (this.xmlHttpReq.readyState == 4 && this.xmlHttpReq.status == 200) {
			var response = this.xmlHttpReq.responseXML;
			if (response != null) {
				var code = getNodeValue(response, "code");
				var message = getNodeValue(response, "message");
				var values = response.getElementsByTagName('values')[0];
				if (values != null) {
					updateAuctionHtml(values);
				}
				if (message != null && message != "") {
					alert(message);
				}
				if (code != null && code == 1) {
					window.location = form.action;
				}
				if (code != null && code == 2 && form.lang != null) {
					window.location = '/login.php?lang=' + form.lang.value;
				}
			} else {
				alert(this.xmlHttpReq.responseText);
			}
		}
	};
	
	req.send("POST", "/ajax/" + url, qs, true);
	
}

function updateAuctionHtml(node) {
	var e;

	var auction_id = getNodeValue(node, "auction_id");

	if (auction_id == null) return;

	if ((e = document.getElementById("auction_" + auction_id + "_current_price")) != null) {
		e.innerHTML = getNodeValue(node, "current_price");
	}
	
	if ((e = document.getElementById("auction_" + auction_id + "_end_time")) != null) {
		e.innerHTML = getNodeValue(node, "end_time");
	}
	
	if ((e = document.getElementById("auction_" + auction_id + "_end_time2")) != null) {
		e.innerHTML = getNodeValue(node, "end_time2");
	}
	
	if ((e = document.getElementById("auction_" + auction_id + "_bids")) != null) {
		e.innerHTML = getNodeValue(node, "bids");
	}
	
}
