function big_setEventHandler(the_element, s_event, o_handler) {
	var arr_event = s_event.split(',');
	var i=0;
	for (i=0; i<arr_event.length; i++) {
		if (the_element.addEventListener) {
			the_element.addEventListener(arr_event[i], o_handler, false);
		} else if(the_element.attachEvent) {
			the_element.attachEvent('on' + arr_event[i], function() {o_handler(event)});
		}
	}
}

function big_StopEvent(ev) {
	if (ev) {
		if (ev.stopPropagation && ev.preventDefault) {
			ev.stopPropagation();
			ev.preventDefault();
		} else {
			ev.cancelBubble = true;
		}
		//
		if (ev.target && ev.target.focus) {
			ev.target.focus();
		} else if (ev.srcElement && ev.srcElement.focus) {
			ev.srcElement.focus();
		}
	}
	//
	return false;
}

function big_checkForm(s_form, s_fields, b_check_password, b_check_email) {
	// form name validation
	var the_form = document.forms[s_form];
	if (!the_form) {
		alert("Передан неверный идентификатор формы");
		return false;
	}
	// required form elements
	if (typeof(s_fields) !== 'string') var s_fields = '';
	var arr_fields = s_fields.split(/\s*[,;]\s*/ig);
	var b_need_all = (!(arr_fields.length) || !(s_fields.length));
	var arr_field_names = new Array();
	if (!b_need_all) {
		var f = 0;
		for (f=0; f<arr_fields.length; f++) {
			arr_field_names[arr_fields[f]] = 1;
		}
	}

	var arr_input_elements = the_form.elements;
	var i_element = 0;
	for (i_element=0; i_element<arr_input_elements.length; i_element++) {
		var the_element = arr_input_elements[i_element];
		var s_el_name = the_element.name;
		if (b_need_all || (typeof(arr_field_names[s_el_name]) !== 'undefined' && arr_field_names[s_el_name] === 1)) {
			var s_el_type = the_element.type;
			s_el_type = s_el_type.toUpperCase();
			var s_el_tagname = the_element.tagName;
			s_el_tagname = s_el_tagname.toUpperCase();
			if ((s_el_type === 'TEXT' || s_el_type === 'PASSWORD' || s_el_tagname === 'TEXTAREA') && !the_element.value.length) {
				the_element.focus();
				s_alert = "Необходимо заполнить все обязательные поля";
				if (the_element.className === 'm') {
					var theLabel = the_element.parentNode.parentNode;
					if (!(theLabel && theLabel.tagName && theLabel.tagName.toUpperCase() === 'LABEL')) {
						theLabel = document.getElementById('for_'+s_el_name);
					}
					if (theLabel && theLabel.tagName && theLabel.tagName.toUpperCase() === 'LABEL' && theLabel.title) {
						s_alert += "\r\n" + "Не заполнено поле \"" + theLabel.title + "\"";
					}
				}
				alert(s_alert);
				return false;
			}
		}
	}
	//
	if (b_check_password) {
		if (the_form.elements['password'] && the_form.elements['password_check'] && the_form.elements['password'].value !== the_form.elements['password_check'].value) {
			var theLabel_1 = the_form.elements['password'].previousSibling;
			var theLabel_2 = the_form.elements['password_check'].previousSibling;
			s_alert = "Значения полей \"" + theLabel_1.childNodes[0].nodeValue + "\" и \"" + theLabel_2.childNodes[0].nodeValue + "\" не совпадают";
			//
			alert(s_alert);
			return false;
		}
	}
	//
	if (b_check_email) {
		if (the_form.elements['email']) {
			var s_email = the_form.elements['email'].value;
			var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
			if (!regexp.test(s_email)) {
				alert("Неверный синтаксис электронного адреса (email)");
				return false;
			}
		}
	}
	//
	return true;
}
