	function testEmail(field)
	{
		var err = false;
		var value = field.value;
		if (value != "")
		{
			var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
			var r2 = new RegExp("^[a-zA-Z0-9_.%+-]+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
			err = r1.test(value) || !r2.test(value);
		}

		return(err);
	}

	//@param errorEmpty De foutmelding als het veld leeg is. Als het veld niet verplicht is, moet de errorEmpty gelijk zijn aan ""
	function checkEmail(fieldName, errorEmpty, errorIllegal)
	{
		var isValidEmail = true;
		if (errorEmpty != "")
		{
			isValidEmail = checkTextEmpty(fieldName, errorEmpty);
		}
		
		if (isValidEmail)
		{
			msg = "";
			var field = document.getElementById(fieldName);
			var err = testEmail(field);
			if (err)
			{
				msg = errorIllegal;
			}
			processMessage(fieldName, msg);			
			isValidEmail = msg == "";
		}
		return isValidEmail;
	}
	
	function processMessage(fieldName, msg)
	{
		if (msg == "")
		{
			clearError(fieldName);
		}
		else
		{
			showError(fieldName, msg);
		}
	}
	
	function showError(fieldName, msg)
	{
		var div = document.getElementById(fieldName + "_div");
		if (div)
		{
			if (div.className != "")
			{
				if (div.className.indexOf("error") < 0)
				{
					div.className = div.className + " error_border error";
				}
			}
			else
			{
				div.className = "error";
			}
		}
		var warning = document.getElementById(fieldName + "_warning");
		if (warning)
		{
			warning.innerHTML = msg;
		}
		
		if (document.getElementById("webmagier"))
		{
			if (document.getElementById("webmagier").value == "true")
			{
				if (document.getElementById(tabFields[fieldName] + "_link"))
				{
					document.getElementById(tabFields[fieldName] + "_link").className = "error";
				}
			}
		}
	}
	
	function clearError(fieldName)
	{
		var warning = document.getElementById(fieldName + "_warning");
		warning.innerHTML = "";
		var div = document.getElementById(fieldName + "_div");
		if (div.className == "error")
		{
			div.className = "";
		}
		else
		{
			div.className = div.className.replace(" error_border error", "");
		}
	}

	function checkTinyMCEEmpty(fieldId, errorString)
	{
		tinyMCE.triggerSave(true, true);
		var msg = "";
		var field = document.getElementById(fieldId);
		uppCase = field.value.toUpperCase();
		if (uppCase == "" ||
			uppCase == "<P>&NBSP;</P>" ||
			uppCase == "<BR>" ||
			uppCase == "<P><BR></P>")
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}

	function checkIntegerAndEmpty(fieldId, errorString)
	{
		var msg = "";
		var field = document.getElementById(fieldId);
		if (field.value == 0) 
		{
			field.value = ""
		}
		var oldstring = field.value;
		var newstring = parseInt(oldstring).toString();
		if (oldstring.length != newstring.length || newstring == "NaN")
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}

	function checkTextEmpty(fieldId, errorString)
	{
		var msg = "";
		var field = document.getElementById(fieldId);
		if (field.value == "")
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}
	
	function isTranslationTextEmpty(fieldId)
	{
		var msg = "";
		var field = document.getElementById(fieldId);
		return field.value == "";
	}

	//msgEmpty1: als wachtwoord leeg is
	//msgEmpty2: als wachtwoord herhaling leeg is
	//msgDifferent: als wachtwoord ongelijk aan herhaling wachtwoord is.
	function checkWachtwoord(fieldId1, fieldId2, msgEmpty1, msgEmpty2, msgDifferent)
	{
		var msg1 = "";
		var msg2 = "";
		var field1 = document.getElementById(fieldId1);
		var field2 = document.getElementById(fieldId2);
		if (field1.value == "")
		{
			msg1 = msgEmpty1;
		}

		if (field2.value == "")
		{
			msg2 = msgEmpty2;
		}

		if(msg1 == "" && msg2 == "" && field1.value != field2.value)
		{
			msg1 = msgDifferent;
			msg2 = msgDifferent;
		}
		processMessage(fieldId1, msg1);
		processMessage(fieldId2, msg2);
		return msg1 == "" && msg2 == "";
	}

	function isChecked(field)
	{
		return field.checked;
	}

	function checkCheckboxEmpty(fieldId, errorString)
	{
		var msg = "";
		var field = document.getElementById(fieldId);
		if (!field.checked)
		{
			msg = errorString;
		}

		processMessage(fieldId, msg);
		return msg == "";
	}

	function checkCheckboxListEmpty(fieldId)
	{
		var field = document.getElementById(fieldId);
		return field.checked;
	}

	function getRadioNumberChecked(field)
	{
		checked = -1;
		for (j = 0; j < field.length; j++)
		{
			checked = field[j].checked ? j : checked
		}
		return checked;
	}

	function checkRadioEmpty(fieldId, formId, errorString)
	{
		var msg = "";
		var checked = false;
		//alleen als je aan het form het element opvraagt, krijg je een list met length terug
		//als het document.getElementById(fieldId) gebruikt, is length undefined!
		var field = eval('document.forms["' + formId + '"].' + fieldId);
		for (j = 0; j < field.length; j++)
		{
			checked = checked || field[j].checked;
		}

		if (checked == false)
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}
	
	function checkManyToManyCheckboxesEmpty(fieldId, formId, errorString)
	{
		var msg = "";
		var checked = false;
		var form = document.getElementById(formId);
		for (var i=0; i < form.elements.length; i++) 
		{
		    var e = form.elements[i];
		    if ( (e.type=='checkbox') && (!e.disabled) && (e.name.substr(0, fieldId.length) == fieldId)) 
		    {
		      checked = checked || e.checked ;
		    }
		    }

		if (checked == false)
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}

	function checkFieldsDifferent(fieldId1, fieldId2, errorString)
	{
		var	msg = "";
		var field1 = document.getElementById(fieldId1);
		var field2 = document.getElementById(fieldId2);
		if (field1.value == field2.value)
		{
			msg = errorString;
		}

		processMessage(fieldId1, msg);
		processMessage(fieldId2, msg);
		return msg == "";
	}

	function checkSelectEmpty(fieldId, errorString)
	{
		var msg = "";
		var field = document.getElementById(fieldId);

		if (field.value == "")
		{
			msg = errorString
		}
		
		processMessage(fieldId, msg);
		
		return msg == "";
	}
	
	function checkExtendedModuleLinkEmpty(fieldId, errorString, emptyValue)
	{
		var msg = "";
		

		if (document.getElementById(fieldId + "_value_div").innerHTML == emptyValue)
		{
			msg = errorString
		}
		
		processMessage(fieldId, msg);
		
		return msg == "";
	}

	function checkSelectMoreOptionEmpty(fieldId, moreOptionFieldValue, moreOptionFieldId, errorString, errorStringMoreOption)
	{
		var msg = "";

		if (checkSelectEmpty(fieldId, errorString))
		{
			var field = document.getElementById(fieldId);
			var moreOptionField = document.getElementById(moreOptionFieldId);

			if (field.value == moreOptionFieldValue && moreOptionField.value == "")
			{
				msg = errorStringMoreOption;
			}
			processMesage(fieldId, msg);
		}
		
		return msg == "";
	}

	function checkDependantFields(fieldId1, fieldId2, errorString1, errorString2)
	{
		var msg1 = "";
		var msg2 = "";

		var field1 = document.getElementById(fieldId1);
		var warning1 = document.getElementById(fieldId1 + "_warning");
		var field2 = document.getElementById(fieldId2);
		var warning2 = document.getElementById(fieldId2 + "_warning");

		if (field1.value != "" && field2.value == "")
		{
			msg1 = "";
			msg2 = errorString2;
		}

		if (field1.value == "" && field2.value != "")
		{
			msg1 = errorString1;
			msg2 = "";
		}
		processMessage(fieldId1, msg1);
		processMessage(fieldId2, msg2);
		return msg1 == "" && msg2 == "";
	}

	function setCheckedValue(radioObj, newValue) {
		if(!radioObj)
			return;
		var radioLength = radioObj.length;
		if(radioLength == undefined) {
			radioObj.checked = (radioObj.value == newValue.toString());
			return;
		}
		for(var i = 0; i < radioLength; i++) {
			radioObj[i].checked = false;
			if(radioObj[i].value == newValue.toString()) {
				radioObj[i].checked = true;
			}
		}
	}

	function checkBothNotEmpty(fieldId1, fieldId2, errorString)
	{
		var isValid = checkTextEmpty(fieldId1, errorString);
		isValid = checkTextEmpty(fieldId2, errorString) && isValid;
		return isValid;
	}

	//checkt alleen op dag/maand/jaar, niet op tijd!!!
	function isValidDateSpan(fieldId, startDate, endDate, errorString, errorStringDateSpan)
	{
		var msg = "";

		var dayField = document.getElementById(fieldId + "_date");
		var monthField = document.getElementById(fieldId + "_month");
		var yearField = document.getElementById(fieldId + "_year");

		var day = dayField.value;
		var month = monthField.value - 1;
		var year = yearField.value;

		var dteDate;
    	var dteDate = new Date(year, month, day, 0, 0);
		if (!((day == dteDate.getDate()) && (month == dteDate.getMonth()) && (year == dteDate.getFullYear())))
		{
			msg = errorString;
		}
		else
		{
			if(startDate!=null)
			{
				startDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());
				if(dteDate<startDate)
				{
					msg = errorStringDateSpan;
				}
			}
			else if(endDate!=null)
			{
				endDate = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
				if(dteDate>endDate)
				{
					msg = errorStringDateSpan;
				}
			}
		}
		processMessage(fieldId, msg);
		return msg == "";
	}
	
	function isDateEmpty(fieldId)
	{
		var dayField = document.getElementById(fieldId + "_date");
		var monthField = document.getElementById(fieldId + "_month");
		var yearField = document.getElementById(fieldId + "_year");
		return dayField.value == "" && monthField.value == "" && yearField.value == "";
	}

	function checkDateEmpty(fieldId, errorString)
	{
		var msg = "";

		if (isDateEmpty(fieldId))
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}	
	
	function checkMovieFieldEmpty(fieldId, isRequired, errorStringRequired, errorStringWidthHeight)
	{
		var msg = "";

		if (isRequired && document.getElementById(fieldId).value == "")
		{
			msg = errorStringRequired;
		}
		else if (document.getElementById(fieldId).value != "" && (document.getElementById(fieldId + "_width").value == "" || document.getElementById(fieldId + "_height").value == ""))
		{
			msg = errorStringWidthHeight;
		}

		processMessage(fieldId, msg);
		return msg == "";		
	}
	
	function checkOneOfTwoDatesNotEmpty(fieldId1, fieldId2, errorString)
	{
		var msg = "";
		
		if (isValidDateNoProcess(fieldId1) && isValidDateNoProcess(fieldId2))
		{
			if(isDateEmpty(fieldId1) && isDateEmpty(fieldId2))
			{
				msg = errorString;
				showError(fieldId1, '');
				showError(fieldId2, msg);
			}
			else
			{
				clearError(fieldId1);
				clearError(fieldId2);
			}
		}

		return msg == "";
	}
	
	function isValidDateNoProcess(fieldId)
	{
		var isValid = true;
		var dayField = document.getElementById(fieldId + "_date");
		var monthField = document.getElementById(fieldId + "_month");
		var yearField = document.getElementById(fieldId + "_year");
		if (dayField.value != "" || monthField.value != "" || yearField.value != "")
		{
			var day = dayField.value;
			var month = monthField.value - 1;
			var year = yearField.value;
	
	    	var dteDate;
	    	var dteDate = new Date(year, month, day);
			if (!((day == dteDate.getDate()) && (month == dteDate.getMonth()) && (year == dteDate.getFullYear())))
			{
				isValid = false;
			}
		}
		return isValid;
	}
	
	function isValidDate(fieldId, errorString)
	{
		var msg = "";
		if (!isValidDateNoProcess(fieldId))
		{
			msg = errorString;
		}
		processMessage(fieldId, msg);
		return msg == "";
	}