	///////////////////////////////////////////
	////////// CHECK INPUT FUNCTIONS //////////
	///////////////////////////////////////////

	function loadFunctions() {
		// Focus first element of form
		$$('form input')[0].focus();

		// All fields with the class 'required'
		var oRequired = $$('.required');

		for (var iCnt = 0; iCnt < oRequired.length; iCnt++) {
			if ((trim(oRequired[iCnt].value).length > 0)) {
				oRequired[iCnt].setStyle("background-image", "url('../media/img/icon/val-success.png')");
			}
			
			oRequired[iCnt].addEvent('keyup', blurOut);
		}

		function blurOut() {
			if ((trim(this.value).length == 0) || (this.value == null)) {
				this.setStyle("background-image", "url('../media/img/icon/val-error.png')");
			} else {
				// Commented out because feedback isn't necessary until after submitting
				// this.setStyle("background-image", "url('img/icon/val-success.png')");
				// this.style.border = '0';
			}
		}
	}

	function fieldIsEmpty(elemId, alertText) {
		//checks if field is empty
		if (!$(elemId)) { alert('SCRIPTFOUT: ' + elemId + ' object is niet gevonden'); return false; }

		var elem = $(elemId);
		if (elem.type.indexOf('textarea') > -1 || elem.type.indexOf('text') > -1 || elem.type.indexOf('password') > -1) {
			// check if text is empty --------------------------------------------------------
			if ((trim(elem.value).length == 0) || (elem.value == null)) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}
		} else if (elem.type.indexOf('select') > -1) {
			// check if selection is made (dropdown) -----------------------------------------
			if ((trim(elem.value).length == 0) || (elem.value == null)) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}
		} else if (elem.type.indexOf('radio') > -1 || elem.type.indexOf('checkbox') > -1) {
			//check if selection is made (radio/checkbox)------------------------------------

			var iSelected = 0;
			var oBox = $$(elem.name);

			for (var iBox = 0; iBox < oBox.length; iBox++) {
				if (oBox[iBox].checked == true) { iSelected++; }
			}

			if (iSelected == 0) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}
		}
	}

	function setErrText(objName, txt, direction) {
		var objField = $(objName);
		if (direction == 'do') {
			objField.setStyle("background-image", "url('../media/img/icon/val-error.png')");
		} else {
			objField.setStyle("background-image", "url('../media/img/icon/val-success.png')");
		}
	}

	function compare_values(elemId1, elemId2, alertText) {
		var elem1 = $(elemId1);
		var elem2 = $(elemId2);
		if (elem1.value != elem2.value) {
			setErrText(elemId2, alertText, 'do');
			return true;
		} else {
			setErrText(elemId2, '', 'undo');
			return false;
		}
	}

	function checkNumber(elemId, alertText, maxNumber) {
		var isNum = true;
		var strChar;
		var ValidChars = "0123456789.";
		var elem = $(elemId);

		for (var iCnt = 0; iCnt < elem.value.length && isNum == true; iCnt++) {
			strChar = elem.value.charAt(iCnt);

			if (ValidChars.indexOf(strChar) == -1) {
				isNum = false;
			}
		}

		if (typeof(maxNumber) != 'undefined' && isNum == true) {
			if (elem.value > maxNumber) { isNum = false; }
		}

		if (!isNum) {
			setErrText(elemId, alertText, 'do');
			return true;
		} else {
			setErrText(elemId, '', 'undo');
			return false;
		}
	}


	function checkSeperateDate(elemId_day, elemId_month, elemId_day_year, alertText) {
		var elem = $(elemId_day).value + '-' + $(elemId_month).value + '-' + $(elemId_day_year).value;

		var dateCheck = true;
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2,4})$/;
		var matchArray = elem.match(datePat); // is the format ok?

		if (matchArray == null) {
			dateCheck = false;
		} else {
			day = matchArray[1];
			month = matchArray[3];
			year = matchArray[5];

			if (month < 1 || month > 12) { dateCheck = false; }
			if (day < 1 || day > 31) { dateCheck = false; }
			if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) { dateCheck=false; }
			
			if (month == 2) {
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day > 29 || (day==29 && !isleap)) { dateCheck = false; }
			}
		}

		if (!dateCheck) {
				setErrText(elemId_day, alertText, 'do');
				return true;
		} else {
				setErrText(elemId_day, '', 'undo');
				return false;
		}
	}


	function checkDate(elemId, alertText) {
		var elem = $(elemId);
		var dateCheck = true;
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2,4})$/;
		var matchArray = elem.value.match(datePat); // is the format ok?

		if (matchArray == null) {
			dateCheck = false;
		} else {
			day = matchArray[1];
			month = matchArray[3];
			year = matchArray[5];

			if (month < 1 || month > 12) { dateCheck = false; }
			if (day < 1 || day > 31) { dateCheck = false; }
			if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) { dateCheck = false; }
			
			if (month == 2) {
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day > 29 || (day == 29 && !isleap)) { dateCheck = false; }
			}
		}

		if (!dateCheck) {
			setErrText(elemId, alertText, 'do');
			return true;
		} else {
			setErrText(elemId, '', 'undo');
			return false;
		}
	}

	function checkLength(elemId, alertText, minLength, maxLength) {
		var elem = $(elemId);
		var elemTxt = elem.value.replace(/^\s*|\s*$/g,"");		//verwijderen van omsingelde spaties, oftewel trim

		if ((elemTxt.length >= minLength) && (elemTxt.length <= maxLength)) {
			setErrText(elemId, '', 'undo');
			return false;
		} else {
			setErrText(elemId, alertText, 'do');
			return true;
		}
	}

	function dateInPast(elemIdMonth, elemIdYear, alertText) {
		//check if input mm and yyyy is before given date

		var eMonth = $(elemIdMonth);
		var eYear = $(elemIdYear);

		var now = new Date();
		now = now.getTime();

		var dateToCheck = new Date();
		dateToCheck.setYear(eYear.value);
		dateToCheck.setMonth(eMonth.value);
		var checkDate = dateToCheck.getTime();

		if (now < checkDate) {
			setErrText(elemIdMonth, alertText, 'do');
			return true;
		} else {
			setErrText(elemIdMonth, '', 'undo');
			return false;
		}
	}

	function checkAllCheckboxes(grpName) {
		var oFrm = $('contentForm');
		var iSelected = 0;

		for (var iCnt = 0; iCnt < oFrm.elements.length; i++) {
			if (oFrm.elements[iCnt].type) {
				if (oFrm.elements[iCnt].type.indexOf('checkbox') > -1) {
					if (oFrm.elements[iCnt].name == grpName ) {
						if (oFrm.elements[iCnt].checked) { iSelected++; }
					}
				}
			}
		}

		return iSelected;
	}



	function validate_email(elemId, alertText) {
		var elem = $(elemId);

		if (!emailCheck(elem.value)) {
				setErrText(elemId, alertText, 'do');
				return true;
		} else {
				setErrText(elemId, '', 'undo');
				return false;
		}
	}


	function emailCheck(emailStr) {
		var emailPat = /^(.+)@(.+)$/
		var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars = "\[^\\s" + specialChars + "\]"
		var quotedUser = "(\"[^\"]*\")"
		var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom = validChars + '+'
		var word = "(" + atom + "|" + quotedUser + ")"
		var userPat = new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$")
		var matchArray = emailStr.match(emailPat)
		
		if (matchArray == null) { return false; }

		var user = matchArray[1];
		var domain = matchArray[2];

		if (user.match(userPat) == null) { return false; }

		var IPArray = domain.match(ipDomainPat);
		
		if (IPArray != null) {
				for (var iCnt = 1; iCnt <= 4; iCnt++) {
					if (IPArray[iCnt] > 255) { return false; }
				}

				return true
		}

		var domainArray = domain.match(domainPat);
		if (domainArray == null) { return false; }

		var atomPat = new RegExp(atom, "g");
		var domArr = domain.match(atomPat);
		var len = domArr.length;

		if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3) { return false; }
		if (len < 2) { return false; }
		
		return true;
	}
