var gField = null
var gErrMsgs = ""
var gFirstErrField = null

// Validation Functions BEGIN

function isNotEmpty() 
{
	var inputStr = gField.value
	if (inputStr != null && inputStr != '') return true
	return false
}

function  isEmail()
{
	if (!isNotEmpty()) return true
	var inputStr = gField.value
	var dog = inputStr.indexOf("@")
	var point = inputStr.lastIndexOf(".")
	if (dog == -1 || point == -1 || inputStr.length - dog < 4 || point - dog < 2) return false
	return true
}

// Validation Functions END


/*
Begin validation dispatching mechanism
*/
function dispatcher(validationFunc, errMsg) {
	this.doValidate = validationFunc
	this.strErr = errMsg;
}
var dispatchLookup = new Array()
dispatchLookup["isNotEmpty"] = new dispatcher(isNotEmpty, "Field %s is empty.")
dispatchLookup["isEmail"] = new dispatcher(isEmail, "Field %s is not a valid E-mail adress.")

	repl_str = function (mainStr,searchStr,replaceStr) 
	{
		foundOffset = mainStr.indexOf(searchStr);
		if (foundOffset != -1) 
		{
			var left = mainStr.substring(0, foundOffset);
			var right = mainStr.substring(foundOffset+searchStr.length, mainStr.length);
			return left + replaceStr + right;		
		}
		return mainStr;
	}

// main validation function called by form event handlers
function validate(field, fieldname, method) {
	gField = field
	var args = validate.arguments
	for (i = 2; i < args.length; i++) 
	{
		if (!dispatchLookup[args[i]].doValidate()) 
		{
			var tmpStr = dispatchLookup[args[i]].strErr
			tmpStr = repl_str(tmpStr, "%s", fieldname)
			gErrMsgs += "- " +  tmpStr + "\n"
			if (gFirstErrField == null) gFirstErrField = field
			return false
		}
	}
	return true
}

function validate_clear()
{
	gErrMsgs = ""
	gFirstErrField = null
}

function validate_selection() 
{
	gFirstErrField.focus();
	gFirstErrField.select();
}

function validate_errmsg()
{
	if (gErrMsgs != null && gErrMsgs != '') 
	{
		window.alert("You have made errors during data input:\n" + gErrMsgs + "Correct errors and repeat submition, please.")
		setTimeout("validate_selection()", 0)
	}
				
}