/**
* (c) 2006 Vortex Webdesign
* Routines used for basic form validation
* Written by Mike De Smet
* http://www.vortex-webdesign.be
* @uses vortexFunctions.js
*/

var global_field = null;

function validateNumeric(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = tobj.value;
	var cmp = "0123456789";
	var tst = false;

	for (var i=0 ; i<to_validate.length ; i++)
	{
		tst = to_validate.charAt(i);
		if (cmp.indexOf(tst)<0)
			return false;
	}
	
	return true;
}

function global_field_hide() 
{ 
	global_field.style.visibility = 'hidden';
}

function global_field_show()
{
	global_field.style.visibility = 'visible';
}

function global_field_blink(tfield)
{
	if (global_field)
		global_field_show();
	global_field = tfield;
	var amount_show = 300;
	var amount_hide = 100;
	var times  = 4;
	var i = 1;
	
	global_field.style.visibility = 'visible';
	
	for (j = 0 ; j < times ; j++)
	{
		setTimeout('global_field_hide()',amount_show + i);
		i += amount_show;
		setTimeout('global_field_show()',amount_hide + i);
		i += amount_hide;
	}
}

function setFocusDelayed()
{
	if (global_field)
		if (global_field.style.visibility != 'hidden')
			global_field.focus();
}

function setFocus(tfield)
{
	if (global_field)
		global_field_show();
	global_field = tfield;
	setTimeout( 'setFocusDelayed()', 100 );
}

function validateRequired(tobj,objName)
{
	var to_validate = tobj.value;
//	to_validate = to_validate;
	return (to_validate != '');
}

function validateNumeric(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = tobj.value;
	for (var i=0 ; i<to_validate.length ; i++)
	{
		cmp = "-0123456789";
		tst = to_validate.substring(i,i+1);
		if (cmp.indexOf(tst)<0)
			return false;
	}
	
	return true;
}

function validateFloat(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var tobj = tobj.value;
	for (var i=0 ; i<to_validate.length ; i++)
	{
		cmp = "-0123456789.";
		tst = to_validate.substring(i,i+1);
		if (cmp.indexOf(tst)<0)
			return false;
	}
	
	return true;
}

function validateEmail(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = tobj.value;
	var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
	to_validate = trim(to_validate);
	return (email.test(to_validate));
}

function validateEreg(tobj,objName,expr)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = tobj.value;
	var tExpression = eval(expr);
	return (tExpression.test(to_validate));
}

function validatePositive(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (to_validate >= 0);
}

function validateNegative(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (to_validate <= 0);
}

function validateValue(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (to_validate == tvalue);
}

function validateMinSize(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (strlen(to_validate) >= tvalue);
}

function validateMaxSize(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (strlen(to_validate) <= tvalue);
}

function validateMin(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	
	if (!is_float(to_validate))
		return false;
	
	to_validate = floatval(to_validate);
	
	return (to_validate >= tvalue);
}

function validateMax(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	
	if (!is_float(to_validate))
		return false;
		
	to_validate = floatval(to_validate);
	
	return (to_validate <= tvalue);
}

function validateNotzero(tobj,objName)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = trim(tobj.value);
	return (to_validate != 0);
}

function validateOptions(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = tobj.value;
	var possibilities = explode('--:--',tvalue);
	return in_array(to_validate,possibilities);
}

function validateLooseOptions(tobj,objName,tvalue)
{
	if (!validateRequired(tobj,objName))
		return true;
	var to_validate = strtolower(tobj.value);
	var possibilities = explode('--:--',tvalue);
	return in_array(to_validate,possibilities);
}

function doFormError(tobj,objName)
{
	objName = makeSafeName(objName);
	var oldval = eval( 'default_value_' + objName + ';' );
	
	if (oldval != '')
		tobj.value = oldval;

	alert(eval( 'error_text_' + objName + ';' ));
	
	if (tobj)
	{
		global_field_blink(tobj);
		setFocus(tobj);
	}
}

function makeSafeName(objName)
{
	var strSafe;
	strSafe = strtr(objName,'$@{}',"_");
//	strSafe = objName.replace(/["'\[\]{}]/gi,'_');
	return strSafe;
}
