// Variable definition and assignment for error handling.
var errfound = false;

function validate( formulier )
{
	errfound = false;

	unaccentuate_formfields( formulier );

	validateEmailAdres( formulier.email,      "nl" );
        validateNaam(       formulier.realname,   "nl" );
	validateWaardering( formulier.waardering, "nl" );
	validateRecensie(   formulier.recensie,   "nl" );

	return ! errfound;
}

function validateEmail( formulier, lang )
{
	errfound = false;

	unaccentuate_formfields( formulier );

	if ( lang == "nl" )
	{
		validateEmailAdres( formulier.recipient, lang );
	        validateNaam(       formulier.Voor,      lang );
		validateEmailAdres( formulier.email,     lang );
	        validateNaam(       formulier.Van,       lang );
	}
	else
	{
		validateEmailAdres( formulier.recipient, lang );
	        validateNaam(       formulier.For,       lang );
		validateEmailAdres( formulier.email,     lang );
	        validateNaam(       formulier.From,      lang );
	}

	return ! errfound;
}

function validateEmailAdres( elem, lang )
{
	if ( lang == "nl" )
	{
		errmsg1 = "Dit is een verplicht veld! Voer gewenste e-mail adres in.";
		errmsg2 = "Dit is een ongeldig e-mail adres!";
	}
	else
	{
		errmsg1 = "This is a required field! Enter the e-mail address.";
		errmsg2 = "This is an invalid e-mail address!";
	}

	if ( elem.value == 0 || elem.value == "" )
		error( elem, errmsg1 );

	/*
	Notes:
	'exclude' checks 5 conditions:
	a) characters that should not be in the address
	b) characters that should not be at the start
	c) & d) characters that shouldn't be together
	e) there's not more than one '@'
	'check' checks there's at least one '@', later followed by at least one '.'
	'checkend' checks the address ends with a period followed by 2 or 3 alpha characters
	*/
/*
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[a-zA-Z]{2,3}$/;

	if(	(	(elem.search(exclude)  != -1 ) ||
			(elem.search(check)		)   == -1 ) ||
		(elem.search(checkend)		    == -1 )   )
	{
		error( elem, errmsg2 );
	}
*/
}

function validateNaam( elem, lang )
{
	if ( lang == "nl" )
	{
		errmsg1 = "Dit is een verplicht veld! Voer gewenste naam in.";
	}
	else
	{
		errmsg1 = "This is a required field! Enter the name.";
	}

	if ( elem.value == 0 || elem.value == "" )
		error( elem, errmsg1 );
}

function validateWaardering( elem, lang )
{
	if ( lang == "nl" )
	{
		errmsg1 = "Dit is een verplicht veld! Voer gewenste waardering in.";
	}
	else
	{
		errmsg1 = "This is a required field! Enter the rating.";
	}

	if ( elem.options[elem.selectedIndex].value == "0" )
		error( elem, errmsg1 );
}

function validateRecensie( elem, lang )
{
	if ( lang == "nl" )
	{
		errmsg1 = "Dit is een verplicht veld! Voer de recensie in.";
	}
	else
	{
		errmsg1 = "This is a required field! Enter the review.";
	}

	if ( elem.value == 0 || elem.value == "" )
		error( elem, errmsg1 );
}

function error( elem, text )
{
  if (errfound) return;

  window.alert( text );
  if ( !elem.disabled )			// don't try to set the focus on a disabled field. This will cause (as it should) an error.
  {
  	elem.focus();
  }
  if ( elem.type == "text" )
  {
     elem.select();
  }
  accentuate_field( elem, "#FF9999" );
  errfound = true;
}

function accentuate_field( elem, color )
{
	if ( is.ie )
	{
		if ( elem.type == "text"            ||
		     elem.type == "checkbox"        ||
		     elem.type == "select-one"      ||
		     elem.type == "select-multiple"   )
		{
			elem.style.backgroundColor=color;
		}
	}
}

function unaccentuate_formfields( form )
{
	if ( is.ie )
	{
		for ( var i = 0 ; i < form.elements.length ; i++ )
		{
			accentuate_field( form.elements[i], "#FFFFFF" );
		}
	}
}

function showTip( ctrl, tiptext )
{
	var tipdiv;

	if ( is.ie4up )
	{
		ctrl.title = tiptext;	
	}
	else
	{
		if ( is.nav4up )
		{
			tipdiv = document.layers["tooltip"];

			// set the tooltip text
			tipdiv.document.open();
			tipdiv.document.write( "<TABLE border=1 cellspacing=0 cellpadding=2 bordercolor=black><TR><TD bgcolor=FFFFFF>" );
			tipdiv.document.write( "<FONT face=Verdana, Arial, Helvetica size=-2>" );
			tipdiv.document.write( tiptext );
			tipdiv.document.write( "</FONT>" );
			tipdiv.document.write( "</TD></TR></TABLE>" );
			tipdiv.document.close();

			// set the tooltip location and show it
			tipdiv.top        = ctrl.y + 20; 
			tipdiv.left       = ctrl.x;
			tipdiv.visibility = "show";
		}
	}
}

function hideTip()
{
	if ( is.nav4up )
	{
		document.layers["tooltip"].visibility = "hidden";
	}
}
