/*
	Commonly used by php form class.
	Independent from other js-sources
*/

function validateStr(val, empty, max, min, preg) {
	if (!val.length) throw empty ? 1 : 0;
	if (max && val.length > max) throw 4;
	if (min && val.length < min) throw 3;
	if (preg && !val.match(preg)) throw 6;
}

function validateVal(val, empty, max, min) {
	if (val == null || isNaN(val) || (val + '') == '') throw empty ? 1 : 0;
	if (max && val > max) throw 4;
	if (min && val < min) throw 3;
}

function validateImg(val_elem, empty, val, maxX, maxY, minX, minY, maxSize) {
	if (!val_elem.length) throw empty ? 1 : 0;
	if (!val || !val.src) return;
	if (!val.src.match(/^file:/)) return;
	if (!val.src.match(/\.(jpg|jpeg)$/i)) throw 7;
	if (!val.complete) return;
	if (val.width < 2 || val.height < 2) return;
	if (maxX && val.width > maxX) throw 7;
	if (maxY && val.height > maxY) throw 7;
	if (minX && val.width < minX) throw 7;
	if (minY && val.height < minY) throw 7;
	if (maxSize && val.fileSize > maxSize) throw 4;
}

function validateFile(val, empty, maxSize) {
	if (!val || !val.value) throw empty ? 1 : 0;
	if (maxSize && val.fileSize > maxSize) throw 4;
}

function checkDate(month, day, year) {
	if (month < 1 || month > 12) return false;
	if (day < 1 || day > 31) return false;
	switch (month) {
	case 4:
	case 6:
	case 9:
	case 11:
		if (day > 30) return false;
		break;
	case 2:
		if (year % 4) {
			if (day > 28) return false;
		} else {
			if (day > 29) return false;
		}
		break;
	}

	return true;
}

function inputLimit(input, maxlen, left) {
	inputstr = input.value;
	strlen = inputstr.length;
	if (strlen > maxlen)
		input.value = inputstr.substring(0, maxlen);
	if (left)
		left = document.getElementById(left);
	if (left) {
		if (left.tagName == 'INPUT')
			left.value = maxlen - input.value.length;
		else
			left.innerHTML = maxlen - input.value.length;
	}
	return true;
}

function clearError(form, name)
{
	var ctrl;
	if (name)
		ctrl = new Array(form.elements[name]);
	else
		ctrl = form.elements;
	for (var i = 0; i < ctrl.length; i++) {
		if (ctrl[i].style.background)
			ctrl[i].style.background = 'transparent';
		ctrl[i].title = '';
	}

//	alert(form.name);
	var el = form.getElementsByTagName('P');
//	alert(el.length);
	for (var i = 0; i < el.length; i++) {
		if (el[i].className == 'errorElem')
			el[i].style.display = 'none';
	}
}

var FV_TYPE_STRING = 1;
var FV_TYPE_INTEGER = 2;
var FV_TYPE_BOOL = 3;
var FV_TYPE_FLOAT = 4;
var FV_TYPE_ARRAY = 5;

var FV_E_EMPTY = 1;
var FV_E_TYPE = 2;
var FV_E_MIN = 3;
var FV_E_MAX = 4;
var FV_E_ARRAY = 5;
var FV_E_PATTERN = 6;
var FV_E_CUSTOM = 7;

function FV_choiseJSLanguage(JS_LANG_ID)
{
	if (JS_LANG_ID == 2) {
		FV_FIELD = 'Поле';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_EMPTY] = 'не вказано';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_TYPE] = 'має невірний тип';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MIN] = 'закоротке';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MAX] = 'задовге';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_ARRAY] = 'має недопустиме значення';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_PATTERN] = 'має невірний формат';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_CUSTOM] = 'містить помилку';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_EMPTY] = 'не вказано';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_TYPE] = 'має невірний тип';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MIN] = 'замале';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MAX] = 'завелике';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_ARRAY] = 'має недопустиме значення';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_PATTERN] = 'має невірний формат';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_CUSTOM] = 'містить помилку';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_EMPTY] = 'не вказано';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_TYPE] = 'має невірний тип';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MIN] = 'замале';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MAX] = 'завелике';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_ARRAY] = 'має недопустиме значення';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_PATTERN] = 'має невірний формат';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_CUSTOM] = 'містить помилку';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_EMPTY] = 'не вказано';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_TYPE] = 'має невірний тип';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MIN] = 'замале';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MAX] = 'завелике';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_ARRAY] = 'має недопустиме значення';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_PATTERN] = 'має невірний формат';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_CUSTOM] = 'містить помилку';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_EMPTY] = 'не вказано';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_TYPE] = 'має невірний тип';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MIN] = 'замале';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MAX] = 'завелике';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_ARRAY] = 'має недопустиме значення';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_PATTERN] = 'має невірний формат';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_CUSTOM] = 'містить помилку';
	} else if (JS_LANG_ID == 3) {
		FV_FIELD = 'Field';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_EMPTY] = 'is empty';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_TYPE] = 'has wrong type';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MIN] = 'is to short';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MAX] = 'is to long';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_ARRAY] = 'has illegal value';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_PATTERN] = 'has wrong format';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_CUSTOM] = 'error';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_EMPTY] = 'is empty';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_TYPE] = 'has wrong type';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MIN] = 'is to small';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MAX] = 'is to big';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_ARRAY] = 'has illegal value';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_PATTERN] = 'has wrong format';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_CUSTOM] = 'error';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_EMPTY] = 'is empty';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_TYPE] = 'has wrong type';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MIN] = 'is to small';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MAX] = 'is to big';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_ARRAY] = 'has illegal value';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_PATTERN] = 'has wrong format';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_CUSTOM] = 'error';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_EMPTY] = 'is empty';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_TYPE] = 'has wrong type';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MIN] = 'is to small';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MAX] = 'is to big';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_ARRAY] = 'has illegal value';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_PATTERN] = 'has wrong format';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_CUSTOM] = 'error';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_EMPTY] = 'is empty';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_TYPE] = 'has wrong type';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MIN] = 'is to small';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MAX] = 'is to big';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_ARRAY] = 'has illegal value';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_PATTERN] = 'has wrong format';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_CUSTOM] = 'error';
	} else {
		FV_FIELD = 'Поле';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_EMPTY] = 'не указано';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_TYPE] = 'имеет неверный тип';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MIN] = 'слишком короткое';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_MAX] = 'слишком длинное';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_ARRAY] = 'содержит недопустимое значение';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_PATTERN] = 'имеет неверный формат';
		FV_E_TEXT[FV_TYPE_STRING][FV_E_CUSTOM] = 'содержит ошибку';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_EMPTY] = 'не указано';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_TYPE] = 'имеет неверный тип';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MIN] = 'слишком маленькое';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_MAX] = 'слишком большое';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_ARRAY] = 'содержит недопустимое значение';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_PATTERN] = 'имеет неверный формат';
		FV_E_TEXT[FV_TYPE_INTEGER][FV_E_CUSTOM] = 'содержит ошибку';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_EMPTY] = 'не указано';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_TYPE] = 'имеет неверный тип';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MIN] = 'слишком маленькое';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_MAX] = 'слишком большое';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_ARRAY] = 'содержит недопустимое значение';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_PATTERN] = 'имеет неверный формат';
		FV_E_TEXT[FV_TYPE_BOOL][FV_E_CUSTOM] = 'содержит ошибку';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_EMPTY] = 'не указано';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_TYPE] = 'имеет неверный тип';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MIN] = 'слишком маленькое';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_MAX] = 'слишком большое';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_ARRAY] = 'содержит недопустимое значение';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_PATTERN] = 'имеет неверный формат';
		FV_E_TEXT[FV_TYPE_FLOAT][FV_E_CUSTOM] = 'содержит ошибку';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_EMPTY] = 'не указано';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_TYPE] = 'имеет неверный тип';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MIN] = 'слишком маленькое';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_MAX] = 'слишком большое';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_ARRAY] = 'содержит недопустимое значение';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_PATTERN] = 'имеет неверный формат';
		FV_E_TEXT[FV_TYPE_ARRAY][FV_E_CUSTOM] = 'содержит ошибку';
	}
}

var FV_FIELD;
var FV_E_TEXT = new Array();
FV_E_TEXT[FV_TYPE_STRING] = new Array();
FV_E_TEXT[FV_TYPE_INTEGER] = new Array();
FV_E_TEXT[FV_TYPE_BOOL] = new Array();
FV_E_TEXT[FV_TYPE_FLOAT] = new Array();
FV_E_TEXT[FV_TYPE_ARRAY] = new Array();

FV_choiseJSLanguage(1);

function showError(form, name, desc, type, etype, err)
{
	var error, _error;
	if (typeof err == 'string' && err.length) {
		error = _error = err;
	} else if (typeof err == 'object' && err[etype]) {
		error = _error = err[etype];
	} else if (FV_E_TEXT[type][etype]) {
		_error = FV_E_TEXT[type][etype];
		if (desc.length) {
			error = FV_FIELD + ' ' + desc + ' ' + _error;
		} else {
			error = _error;
		}
	}

	var ctrl = form.elements[name];
	if (ctrl) {
		if (!ctrl.style && ctrl.length) {
			for (var i = 0; i < ctrl.length; i++) {
				ctrl[i].style.background = '#ffeded';
				if (_error)
					ctrl[i].title = _error;
			}
		} else {
			ctrl.style.background = '#ffeded';
			if (_error)
				ctrl.title = stripTags(_error);
		}
	}

	if (!error)
		return;

	var el = document.getElementById(name + '_errCtrl');
	if (el && el.className == 'errorElem') {
		el.innerHTML = error;
		el.style.display = 'block';
	}

	return stripTags(error) + '\n';
}

function setOptionsLeave(select, arr)
{
	setOptions(select, arr, 1);
}

function setOptions(select, arr, leave)
{
	select.length = leave ? leave : 0;
	for (var i in arr) {
		select.options[select.length] = new Option(arr[i], i, false, false);
	}
	select.selectedIndex = 0;
	select.disabled = false;
	return;
}

function disableSubmit(form)
{
	if (!form)
		form = document;
	var inSub = form.getElementsByTagName('INPUT');
	for (var i = 0; i < inSub.length; i++) {
		if (inSub[i].type == 'submit') {
			inSub[i].onclick = function () {return false;}
			inSub[i].style.color = '#888888';
		}
	}
	return;
}

function operaLabelBFix(name)
{
	if (b.opera) {
		var inp = document.getElementById(name);
		if (inp.onclick)
			inp.onclick();
	}
}