function checkPrushForm(form, input_required_fields, maxMissedFields) {
	if (!form) {
		alert("Form object expected in first argument");
		return false;
	}
	if (!maxMissedFields) maxMissedFields = 3;
	var missed_fields = new Array();
	var focus_field, email_field;
	var required_fields = (input_required_fields) ? input_required_fields : ['lname', 'fname', 'mname', 'email'];
	for (var i in required_fields) {
		var field = form[required_fields[i]];
		if (!field) continue;
		if (!checkIfFieldFilled(field)) {
			missed_fields.push(getFieldLabel(field));
			if(!focus_field) focus_field = field;
		}
		if (field.id == 'email_frm') email_field = field;
	}

	if (focus_field) {
		if (typeof focus_field.length == "undefined") {
			focus_field.focus();
		}
		else {
			if (focus_field.length > 0) {
				focus_field = (focus_field.item) ? focus_field.item(0) : focus_field[0];
				if(focus_field) focus_field.focus();
			}
		}
	}
	var sz = missed_fields.length;
	if (sz > 0) {
		if (sz == 1) {
			alert("Необходимо заполнить поле \"" + missed_fields.pop() + "\".");
			return false;
		}
		else {
			var str = "";
			var isTooMuchMissedFields;
			if (sz > maxMissedFields) {
				isTooMuchMissedFields = true;
				sz = maxMissedFields;
			}
			else isTooMuchMissedFields = false;
			for (var j = 0; j < sz; j++) {
				if (j > 0) {
					if (j == sz - 1) str += " и";
					else str += ",";
				}
				str += " \"" + missed_fields[j] + "\"";
			}
			if (isTooMuchMissedFields) str += "... и остальные обязательные поля";
			alert("Необходимо заполнить поля" + str + ".");
			return false;
		}
	}
	if (email_field) {
		var reg = /[\w\-]+@[\w\-]+\.[\w]+/;
		if (!reg.test(email_field.value)) {
			alert('Некорректный e-mail');
			email_field.focus(); 
			return false;
		}
	}
	saveDataForm(form);
	return true;
}


function checkIfFieldFilled(field) {
	if(typeof field != "object") {
		alert("Expected object, " + (typeof field) + " given");
		return false;
	}
	
	var fieldType = (field.type) ? field.type : "checkboxArray";
	switch(fieldType) {
		case "text":
		case "password":
		case "file":
		case "textarea":
		case "checkbox":
		case "select":
		case "select-one":
			return (field.value.length == 0) ? false : true;
			break;
			
		case "checkboxArray":
			var res = false;
			var i;

			for(i = 0; i < field.length; i++) {
				var item = (field.item) ? field.item(i) : field[i];
				if(item.checked) {
					return true;
				}
			}
			return (i > 0) ? res : true;
			break;

		default:
			alert("Don't know, hot to deal with " + field.type + " input");
			break;
	}

	return true;
}


function getFieldLabel(field) {
	var labels = document.getElementsByTagName("label");

	if(!field.type) {
		field = (field.item) ? field.item(0) : field[0];
	}

	var field_id = field.id;
	var sz = labels.length;
	var i;

	for(i = 0; i < sz; i++) {
		var label = labels.item(i);

		if (!label.attributes['for']) continue;
		if (label.attributes['for'].nodeValue == field_id) {
			var res = label.textContent;
			
			if (!res) {	//WORKAROUND for IE7
				res = label.innerHTML;
			}

			res = res.replace(/<[\/]?[A-z0-9+]>/g, "");

			if (res.substring(res.length - 1, res.length) == ":") {
				res = res.substring(0, res.length - 1);
			}
			
			if (res.substring(res.length - 1, res.length) == "*") {
				res = res.substring(0, res.length - 1);
			}

			if (res == "UMI.CMS Free") {
				res = "На какой редакции UMI.CMS вы планируете делать сайт?";
			}

			return res;
		}
	}

	return false;
}


var previousCollapsedNode = {};

function changeDivVisible(sDivId, sCollapseGrpName) {
	var oDiv, pNode;
	if (pNode = previousCollapsedNode[sCollapseGrpName]) {
		if (pNode.id != sDivId) {
			pNode.style.display = 'none';
		}
	}
	if (oDiv = document.getElementById(sDivId)) {
		oDiv.style.display = (oDiv.style.display != 'none' ? oDiv.style.display = 'none' : oDiv.style.display = 'block');
		previousCollapsedNode[sCollapseGrpName] = oDiv;
	}
}

function regWebinar(linkObj) {
	var url = '/users/regWebinar/?ajax=1';
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
			//var notice = document.createElement('div');
			//notice.className = 'webinar_resp_text';
			//notice.innerHTML = transport.responseText;
			//if (linkObj.nextSibling !== null) linkObj.parentNode.removeChild(linkObj.nextSibling);
			//linkObj.parentNode.appendChild(notice);
			document.getElementById(linkObj).innerHTML = transport.responseText;
			document.getElementById(linkObj).style.color = 'red';
		}
	});
}

function systemPresence(c) {
	var div = document.getElementById('hid');
	var form = document.getElementById('single');
	if (c == 'none') {
		div.style.display = 'none';
		form.attributes['onsubmit'].nodeValue = "return checkPrushForm(this, ['data[email_from]', 'message']);";
	}
	if (c == 'block') {
		div.style.display = 'block';
		form.attributes['onsubmit'].nodeValue = "return checkPrushForm(this, ['data[email_from]', 'message', 'data[cms_keycode]']);";
	}
}


function switchDiv(obj, link){
		var el = document.getElementById(obj);
        if ( el.style.display != 'none' ) {
                el.style.display = 'none';
				link.innerHTML = 'показать';
        }
        else {
                el.style.display = 'block';
				link.innerHTML = 'скрыть';
        }
		return false;
}