/* <script language="JavaScript" type="text/javascript"> activate colorcoding */

/*

javascript form eval function
Parametre:
	form_obj: formularen som skal valideres (som regel "this")
	fields_required: et array med navnene på de felter/elementer i formularen der er obligatoriske
	fields_name: et array med en "menneskevenlig" udgave af navnene i fields_required (index skal matche!)

Note:
	checker automatisk om email er korrekt format på felter med navnene: email, e-mail og mail (både MAJUSKLER og minuskler)

Eksempel:	
	<script src="formular_validate_form.js" type="text/javascript">
		var fields_required = Array("firstname", "lastname", "address", "zip", "city", "pri_phone", "mail");
		var fields_name = Array("Fornavn", "Efternavn", "Adresse", "Post nr.", "By", "Tlf. nr.", "E-mail");
	</script>
	<form action="foo.php" onsubmit="return validate_form(this, fields_required, fields_name);"></form>

WARNING
	validatoren kan ikke håndtere arrays, fx multiple checkboxes med samme name[], etc.
*/

function validate_form(form_obj, fields_required, fields_name)
{
	var msg					= "Venligst udfyld felterne:\n";
	var email_re			= /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;
	var success				= true;

	// run through each required field in the form
	for (var i = 0; i < fields_required.length; i++)
	{
		// get an easy handle on the field-object
		var field_obj = form_obj.elements[fields_required[i]];

		if (field_obj)
		{
			// and then evaluate each different type of field differently
			switch(field_obj.type)
			{
				case "select-one":
					if (field_obj.selectedIndex == -1 || field_obj.options[field_obj.selectedIndex].text == "")
					{
						msg += " - " + fields_name[i] + "\n";
						success = false;
					}
					break;
				case "select-multiple":
					if (field_obj.selectedIndex == -1)
					{
						msg += " - " + fields_name[i] + "\n";
						success = false;
					}
					break;
				case "text":
				case "textarea":
					if (field_obj.value == "" || field_obj.value == null)
					{
						msg += " - " + fields_name[i] + "\n";
						success = false;
					}
					break;
				default:
					if (field_obj.value == "" || field_obj.value == null)
					{
						msg += " - " + fields_name[i] + "\n";
						success = false;
					}
			}

			// finally check emailformat
			if (field_obj.name.toLowerCase() == "mail" || field_obj.name.toLowerCase() == "email" || field_obj.name.toLowerCase() == "e-mail")
			{
				if (!email_re.test(field_obj.value))
				{
					msg += " - Email format\n";
					success = false;
				}
			}
		}
	}

	if (success)
	{
		return true;
	}
	else
	{
		alert(msg);
		return false;
	}

	return false;
}
