function parseForm(form) {
	var queryString = "";
	for(var i=0; i < form.elements.length; i++) {
		var item = form.elements[i];
		if(!item.disabled && item.name != "" && item.value != "") {
			queryString += queryString == "" ? "" : "&";
			queryString += item.name + "=" + item.value;
		}
	}
	return queryString;
}

var sendMailSubmitBtnText = null;

function sendMail(form) {
	var submitBtn = form.elements.submitBtn;
	submitBtn.disabled = true;

	if(sendMailSubmitBtnText == null)
		sendMailSubmitBtnText = submitBtn.value;

	submitBtn.value = "обработка...";

	var queryString = parseForm(form);
	if(queryString == "" || queryString.indexOf("&") == -1) {
		processSendMailError(1);
		return;
	}
	if (typeof XMLHttpRequest != "undefined") {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	var method = form.method;
	var url = form.action;
	var content = null;

	if(method == "get")
		url += "?" + queryString;
	else
		content = queryString;
	
	req.open(method, url, true);
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				sendMailCallback();
	        }
			else {
				processSendMailError(req.status);
			}
	    }
	};
	if(method == "post")
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");	
	req.send(content);
}

function processSendMailError(code) {
	if(code == 1)
		alert("Вы не заполнили ни одного поля.");
	else
		alert("Во время отправки произошла ошибка. Повторите попытку позденее...\r\nКод возврата " + code + ".");
	var submitBtn = document.getElementById("submitBtn");
	submitBtn.value = sendMailSubmitBtnText;
	submitBtn.disabled = false;
}

function sendMailCallback() {
	var retCode = req.responseXML.getElementsByTagName("returncode")[0].childNodes[0].nodeValue;
	var forms = document.getElementsByTagName("form");

	for(var i=0; i < forms.length; i++) {
		var form = forms[i];
		
		var submitBtn = form.elements.submitBtn;
		if(typeof(submitBtn))
			if(submitBtn.disabled) {
				if(retCode == 0)
					alert("Запрос успешно отправлен");
				else if(retCode == 10)
					alert("Вы не указали или указали не существующий e-mail");
				else if(retCode == 20)
					alert("Текст вашего сообщения похож на спам");
				else
					alert("Во время отправки произошла ошибка. Повторите попытку позденее...\r\nКод возврата " + retCode + ".");
				
				submitBtn.value = sendMailSubmitBtnText;
				submitBtn.disabled = false;
				if(retCode == 0)
					form.reset();
				return;
			}
	}
	
}