/*
(C) 2009, Computer Service Wieberdink, Putten
*/

function checkDate(input)
{
	var validformat=/^\d{2}\-\d{2}\-\d{4}$/ //Basic check for format validity
	var returnval=false
	if (!validformat.test(input))
	{
		return false;
	}
	else
	{
		var dayfield=input.split("-")[0];
		var monthfield=input.split("-")[1];
		var yearfield=input.split("-")[2];

		var dayobj = new Date(yearfield, monthfield-1, dayfield);

		if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
		{
			return false;
		}
	}

	return true
}

function validateElement(element)
{
	var hasError = false;
	var errorMessage = '';

	switch (element.getAttribute('validateType'))
	{
		case "text":
			if ((element.getAttribute('required') != "true" && element.value == "") || element.style.display == "none")
			{
				// Niet verplicht en ook niet ingevuld, dus goed
			}
			else if (element.getAttribute('required') == "true" && element.value == "")
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			break;

		case "email":
			if ((element.getAttribute('required') != "true" && element.value == "") || element.style.display == "none")
			{
				// Niet verplicht en ook niet ingevuld, dus goed
			}
			else if (element.getAttribute('required') == "true" && element.value == "")
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			else if (element.value.indexOf('@') == -1 || element.value.indexOf('.') == -1)
			{
				hasError = true;
				errorMessage = "Ongeldig email adres\n";
			}
			break;

		case "password":
			if ((element.getAttribute('required') != "true" && element.value == "") || element.style.display == "none")
			{
				// Niet verplicht en ook niet ingevuld, dus goed
			}
			else if (element.getAttribute('required') == "true" && element.value == "")
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			else if (element.value != document.getElementById('password2').value)
			{
				hasError = true;
				errorMessage = "Wachtwoorden matchen niet\n";
			}
			break;

		case "date":
			if (element.getAttribute('required') != "true" && element.value == "")
			{
				// Niet verplicht en ook niet ingevuld, dus goed
			}
			else if (element.getAttribute('required') == "true" && element.value == "")
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			else
			{
				if (checkDate(element.value) != true)
				{
					hasError = true;
					errorMessage = "Ongeldige datum: " + element.getAttribute('niceName') + "\n";
				}
			}
			break;

		case "number":
			if (element.getAttribute('required') != "true" && element.value == "")
			{
				// Niet verplicht en ook niet ingevuld, dus goed
			}
			else if (element.getAttribute('required') == "true" && element.value == "")
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			else
			{
				var intVal = parseInt(element.value, 10);
				if (isNaN(intVal)) {
					alert("Ongeldige getal: " + element.getAttribute('niceName'));
				}
				else if (element.getAttribute('max') != null)
				{
					if (intVal > element.getAttribute('max'))
					{
						hasError = true;
						errorMessage = "Ongeldige getal: " + element.getAttribute('niceName') + ". Maximum waarde voor dit veld is: " + element.getAttribute('max') + "\n";
					}
				}
			}
			break;

		case "select":
			if (element.selectedIndex < 1)
			{
				hasError = true;
				errorMessage = "Verplicht veld niet ingevuld: " + element.getAttribute('niceName') + "\n";
			}
			break;
	}

	if (hasError == true)
	{
		element.className = "haserror"
		element.title = errorMessage;
		element.focus();

		return false;
	}
	else
	{
		element.className = ""
		element.title = "";

		return true;
	}
}

function validateForm(elmForm)
{
	var hasErrors = false;

	for (var i = 0; i < elmForm.length ; i++)
	{
		if (elmForm[i].getAttribute('validate') == "true")
		{
			if (validateElement(elmForm[i]) == false)
			{
				hasErrors = true;
			}
		}
	}

	if (hasErrors)
	{
		return false;
	}
	else
	{
		return true;
	}
}
