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);
}

/**
* arInputData массив входных данных, необходимых для заполнения
* form объект формы
* strNone строка типа 'вы не заполнили поле ...'
* arLabelColor - массив цветов для подсвечивания текста в случае правильного/неправильного ввода данных
*/
function CheckAllFields (arInputData, form, strNone, arLabelColor) {
	var str;
	var field;
	var label;

	//массив для определения правильности заполненного поля
	arSuccess = new Array();

	message = '';

	//	У оперы проблемы с проверкой регулярного выражения email, т.о. изменяем тип на строку
	//type = (((window.opera + '') != 'undefined') && type == 3) ? 0 : type;

	//
	// TYPE description
	// 0 - text
	// 1 - int
	// 2 - float
	// 3 - e-mail
	// 4 - AlphaNumeric

	for (strKey in arInputData) {
		arSuccess[strKey] = 1;

		label = document.getElementById('label_' + strKey);
		field = document.getElementById(strKey);
		str = Trim(field.value);

		if (str == '') {
			arSuccess[strKey] = 0;
		}

		if (arSuccess[strKey] && (arInputData[strKey]['minlength'] != null) && (str.length < arInputData[strKey]['minlength'])) {
			message += " \r\n(Минимальная длина строки - " + arInputData[strKey]['minlength'] + " симв.)";
			arSuccess[strKey] = 0;
		}
		if (arSuccess[strKey] && (arInputData[strKey]['maxlength'] != null) && (str.length > arInputData[strKey]['maxlength'])) {
			message += " \r\n(Превышена максимальная длина строки - " + arInputData[strKey]['maxlength'] + " симв.)";
			arSuccess[strKey] = 0;
		}

		if (arSuccess[strKey]) {
			switch (arInputData[strKey]['type']){
				case 1:
					if (!IsInt(str)) {
						arSuccess[strKey] = 0;
					}
				break;
				case 2:
					if (!IsFloat(str)) {
						arSuccess[strKey] = 0;
					}
				break;
				case 3:
					if (!IsEmail(str)) {
						message += " \r\n(Неправильный формат электронного адреса)";
						arSuccess[strKey] = 0;
					}
				break;
				case 4:
					if (!IsAlphaNumeric(str)) {
						arSuccess[strKey] = 0;
					}
				break;

			}
		}

		if (arSuccess[strKey] == 0) {
			message += strNone + ' ' + arInputData[strKey]['message'] + '\n';
			label.style.color = arLabelColor['incorrect'];
		} else {
			label.style.color = arLabelColor['correct'];
		}
	}

	for (strElement in arSuccess) {
		if (arSuccess[strElement] == 0) {
			alert(message);
			SetFocus( document.getElementById(strElement) );
			return (false);
		}
	}

	return (true);
}


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);
		}
	}

	str = Trim( field.value );

	if (str == '') {
		success = 0;
	}

	if (success && (minlength != null) && (str.length < minlength)) {
		message += " \r\n(Минимальная длина строки - " + minlength + " симв.)";
		success = 0;
	}
	if (success && (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 - int
	// 2 - float
	// 3 - e-mail
	// 4 - AlphaNumeric
	if (success) {
		switch (type){
			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 pattern = /^[0-9]+$/gi;
  	var b = val.match( pattern );
  	return( b != null );
}

function IsFloat( val ) {
  var pattern = /^[0-9]*\.?[0-9]+$/gi;
  return( pattern.exec( val )!=null );
}

function IsEmail( val ) {
	//var pattern = /^[^\.@]+(\.[^\.@]+)*@([^\.@]+\.)+[^\.@]+$/gi;
	var pattern = /^[^\s()<>@,;:\/]+@\w[\w\.-]*\.[a-z]{2,}$/i;
	return pattern.test( val );
}

function IsAlphaNumeric( val ) {
  var pattern = /^\w+$/gi;
  return( pattern.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;
}