var v_changecolor = true;
var v_errorclass = "input_error";
var v_stdclass = "border";
	
function v_highlight(element)
{
	if (v_changecolor)
	{
		if (!element.getAttribute("v_normalclass"))
		{
			v_normalclass = element.className;
			if (v_normalclass == "")
				v_normalclass = v_stdclass;
				
			element.setAttribute("v_normalclass", v_normalclass);
		}
		element.className = v_errorclass;
	}
}
	
function v_normalize(element)
{
	if ((element.type.indexOf("checkbox") != 0) && (element.type.indexOf("button") != 0) && (element.type.indexOf("submit") != 0)) // is not a checkbox and not a button and not an submit
	{
		if (element.getAttribute("v_normalclass"))
		{
			v_normalclass = element.getAttribute("v_normalclass");
			element.className = v_normalclass;
		}
		else
		{
			element.className = v_stdclass;
		}
	}
}
	
// returnt true bij error
function v_checkpattern(element)
{
	var pattern = element.getAttribute("pattern");
	
	if (String(pattern) != "null")
	{
		var value = String(element.value);
		var offendingChar = value.match(pattern);
		if (offendingChar == null)
		{
			v_highlight(element);
			str = element.getAttribute("errorMsg");
			
			if ( String(str) == "null" ) str = "errorMsg mist!";
			
			alert(str);
			return true;
		}
		else
      {
//			alert(offendingChar);
			return false;
      }
	}
}
	
/* v_checkrequired, controleert:
	of een text of textarea leeg is;
	of er een optie uit een dropdown geselecteerd is. De eerste optie moet
	value 0 of een lege string hebben.
	Dit wordt alleen gecontroleerd bij velden met attribuut required='true'
*/
function v_checkrequired(element)
{
	var isOK = true;
	if ( element.getAttribute("required") ) 
	{
		if ( eval(element.getAttribute("required")) ) 
		{
			if (element.type.indexOf("select") == 0) // is select-box
			{
				value = element.options[ element.selectedIndex ].value;
				if ( value == '' || value=='0' )
				{ 
					isOK = false;
				}
			}
			else // the rest 
			{
				if (element.value == "") isOK = false;
			}
		}
		if (!isOK)
		{
			v_highlight(element);
			return true;		
		}
		else {
			v_normalize(element);
		}
	} 
	else
		return false;
}
	
function v_checkmax( element )
{
	maximum = element.getAttribute( 'max' )
	if ( maximum )
	{
		if(parseFloat(element.value)>parseFloat(maximum) )
		{
			v_highlight(element);
			alert( 'Het veld ' + element.name + ' mag maximaal ' + maximum + ' zijn.' );
			return true;
		}
	}
	return false;
}
	
function v_checkmin( element )
{
	if (element.getAttribute( 'min' ))
	{
		if( parseFloat( element.value ) < parseFloat( element.getAttribute('min') ) )
		{
			v_highlight(element);
		}
	}
	return false;
}

function v_checkeval(element)
{
	if ( element.getAttribute( 'eval' ) )
	{
		if( eval( element.getAttribute( 'eval') ) )
		{
			v_highlight(element);
			alert('less');
			return true;
		}
	}
	return false;
}
	
function validate_form(what)
{
	var v_error = false;
	var elements = what.elements;

	for (var i = 0; i < elements.length; i++)
	{
		var element = elements.item(i);
		 if ( element.getAttribute("required") ) v_normalize(element);
	}
	
	for (var i = 0; i < elements.length; i++) 
	{
		var element = elements.item(i);
		if ( v_checkrequired( element ) )
			v_error = true; 
		else if ( v_checkpattern( element ) ) 
			v_error=true;
		else if ( v_checkmax( element ) ) 
			v_error=true;
		else if ( v_checkmin( element ) ) 
			v_error=true;
		else if ( v_checkeval( element ) ) 
			v_error=true;
	}
	if (v_error) alert('rood gemarkeerde velden zijn verplicht.\n\nOnjuiste invoer');
	return !v_error;
}
