function SetFocus( field ) {
  field.focus();
}

function Trim( str ) {
  var trimmed;
  trimmed = str.toString().replace( /^ */g, '' );
  trimmed = trimmed.toString().replace( / *$/g, '' );
  return( trimmed );
}

function CompareFields(form, field1, field2, message) {
	var success = true;

	if(form.elements[field1].value != form.elements[field2].value) {
		success = false;
		alert(message);
	}
	return (success);
}

function CheckField (form, name, message, type, minlength, maxlength) {
	var str;
	var success = 1;
	var field;

	for (i = 0; i < form.elements.length; i++) {
		if (form.elements.item(i).name == name) {
			field = form.elements.item(i);
			break;
		}
	}

	str = Trim(field.value);

	if (str == '') {
		success = 0;
	}

	if (success) {
		// If number
		if (type == 1 || type == 2 || type == 5) {
			if (type == 1 || type == 5) {
				str = parseInt(str);
			} else {
				str = parseFloat(str);
			}

			if (minlength != null && str < minlength) {
				if (type != 5) {
					message += " \r\n(Минимальное значение - " + minlength + ")";
				}
				success = 0;
			}
			if (maxlength != null && str > maxlength) {
				if (type != 5) {
					message += " \r\n(Максимальное значение - " + maxlength + ")";
				}
				success = 0;
			}
		} else {
			if (minlength != null && str.length < minlength) {
				message += " \r\n(Минимальная длина строки - " + minlength + " симв.)";
				success = 0;
			}
			if (maxlength != null && str.length > maxlength) {
				message += " \r\n(Превышена максимальная длина строки - " + maxlength + " симв.)";
				success = 0;
			}
		}
	}

	//	У оперы проблемы с проверкой регулярного выражения email, т.о. изменяем тип на строку
	//type = (((window.opera + '') != 'undefined') && type == 3) ? 0 : type;

	// TYPE description
	// 0 - Text
	// 1 - Integer
	// 2 - Float
	// 3 - E-mail
	// 4 - AlphaNumeric
	// 5 - Integer in HTML <select>
	if (success) {
		switch (type) {
			case 5:
			case 1:
				if (!IsInt(str)) {
					success = 0;
				}
				break;
			case 2:
				if (!IsFloat(str)) {
					success = 0;
				}
				break;
			case 3:
				if (!IsEmail(str)) {
					message += " \r\n(Неправильный формат электронного адреса)";
					success = 0;
				}
				break;
			case 4:
				if (!IsAlphaNumeric(str)) {
					success = 0;
				}
				break;
		}
	}

	if (success == 0) {
	    	alert(message);
	    	SetFocus(field);

	    	return false;
	} else {
	    	return true;
	}
}

function IsInt (val) {
	var re = new RegExp(/^[0-9]+$/gi);

	return (re.exec(val) != null);
}

function IsFloat (val) {
	var re = new RegExp(/^[0-9]*\.?[0-9]+$/gi);

	return (re.exec(val) != null);
}

function IsEmail (val) {
	//var re = new RegExp(/^[^\.@]+(\.[^\.@]+)*@([^\.@]+\.)+[^\.@]+$/gi);
	var re = new RegExp(/^[^\s()<>@,;:\/]+@\w[\w\.-]*\.[a-z]{2,}$/i);

	return (re.exec(val) != null);
}

function IsAlphaNumeric (val) {
	var re = new RegExp(/^\w+$/gi);

	return (re.exec(val) != null);
}

function ConfirmWindow (question) {
	return window.confirm(question);
}

function CheckDate(day, month, year, message) {
	month = month - 1;
	dt = new Date(year, month, day);
	result = (dt.getDate() == day) && (dt.getMonth() == month) && (dt.getFullYear() == year);
	if (result == false) {
		month = month * 1 + 1;
		alert(message + " Date: " + day + "-" + month + "-" + year);
	}
	return result;
}
