function validateStr(val, empty, max, min, preg)
{
//	alert(val + ' ' + min);
	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) 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|gif|bmp)$/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 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;
}

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;

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();

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] = 'содержит ошибку';
	}
}
FV_choiseJSLanguage(1);

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;
}


// Actual func that regenerates image
var reqRndImageTimeOut;
var reqRndImage;
function doRegenerateRndImage(name, scriptPath)
{
	if (!reqRndImage)
		reqRndImage = new Subsys_JsHttpRequest_Js();
	if (reqRndImageTimeOut) {
		clearTimeout(reqRndImageTimeOut);
		reqRndImageTimeOut = null;
	}

	var rndSeq = document.getElementsByName(name + '_rndSeq');
	var img  = document.getElementsByName(name + '_img');
	reqRndImage.elRndSeq = rndSeq[0];
	reqRndImage.elImage = img[0];

	reqRndImage.onreadystatechange = function() {
		if (reqRndImage.readyState == 4) {
			try {
				reqRndImage.elRndSeq.value = reqRndImage.responseJS.rndSeq;
				reqRndImage.elImage.src = reqRndImage.responseJS.imageUrl;
			} catch (e) {
			}
		}
	}
	reqRndImage.caching = false;
	reqRndImage.open('GET', scriptPath, true);
	reqRndImage.send({});
}

// Regenerates image on request
function regenerateRndImage(name, scriptPath) {
	if (reqRndImageTimeOut)
		clearTimeout(reqRndImageTimeOut);
	reqRndImageTimeOut = setTimeout('doRegenerateRndImage("' + name + '", "' + scriptPath + '")', 600);
}

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