var checkcaptha = false;

function checkMe(currentForm){
	checkcaptha = false;


///////////////// COLOR SETTING /////////////////
//									//
	var highlight = '#ffe6e6';		//
	var neutral = '#F3F1EF';		//
//									//
////////////// END COLOR SETTING //////////////

	var currentFormName = currentForm.name;
	var errors = '';
	
	var requiredPattern	= /(required)/;
	
	var emailName		= /(mail)/;
	var emailPattern	= /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	
	var leeftijdName	= /(leeftijd)/;
	var leeftijdPattern	= /^[0-9]{1}[0-9]*$/;
	
	var pcName			= /(post)[\s\-]?(code)/;
	var pcPattern		= /^[1-9][0-9]{3}[\s]?(([A-Z]|[a-z]){2})?$/;
	
	var phoneName		= /(telefoon)/;
	var mobileName		= /(mobiel)/;
	var phonePattern	= /^([0-9]{1}[^0-9]?){10}$/;
	
	var captchaName		= /(captcha)/;
	
	elementsInputs = currentForm.getElementsByTagName("input");
	for (var intCounter = 0; intCounter < elementsInputs.length; intCounter++){
		var change = false;
		
		if(elementsInputs[intCounter].type.toUpperCase()=='TEXT'){
		
			elementsInputs[intCounter].style.background = neutral;

		//check for mail
			if(emailName.test(elementsInputs[intCounter].name)){
				if ( (!elementsInputs[intCounter].value=='') && (!emailPattern.test(elementsInputs[intCounter].value)) ){
					errors += '<li><em>'+createInputName(elementsInputs[intCounter].value)+'</em> is geen geldig mail-adres</li>';
					change = true;
				}
			}
			
		//check for age
			if(leeftijdName.test(elementsInputs[intCounter].name)){
				if ( (!elementsInputs[intCounter].value=='') && (!leeftijdPattern.test(elementsInputs[intCounter].value)) ){
					errors += '<li><em>'+createInputName(elementsInputs[intCounter].value)+'</em> is geen geldige leeftijd</li>';
					change = true;
				}
			}
			
		//check for postcode
			if(pcName.test(elementsInputs[intCounter].name)){
				if ( (!elementsInputs[intCounter].value=='') && (!pcPattern.test(elementsInputs[intCounter].value)) ){
					errors += '<li><em>'+createInputName(elementsInputs[intCounter].value)+'</em> is geen geldige postcode</li>';
					change = true;
				}
			}
			
		//check for telefoonnummer
			if(phoneName.test(elementsInputs[intCounter].name) || mobileName.test(elementsInputs[intCounter].name)){
				if ( (!elementsInputs[intCounter].value=='') && (!phonePattern.test(elementsInputs[intCounter].value)) ){
					errors += '<li><em>'+createInputName(elementsInputs[intCounter].value)+'</em>is geen geldig telefoonnummer</li>';
					change = true;
				}
			}
			
		//check for captcha
			if(captchaName.test(elementsInputs[intCounter].name)){
				$.ajax({
					url:"securimage/checkcaptcha.php?check="+elementsInputs[intCounter].value,
					type: "GET",
					async: false, // set to false so order of operations is correct
					success: function(data){
						if(data == 'ok'){
							checkcaptha = true;
						}
					}
				});
				
				if(checkcaptha != true) {
					errors += '<li><em>'+createInputName(elementsInputs[intCounter].value)+'</em>Code komt niet overeen</li>';
					change = true;
				}
			}

		}
		
		if(elementsInputs[intCounter].type.toUpperCase()=='CHECKBOX'){
			if( requiredPattern.test(elementsInputs[intCounter].className) && elementsInputs[intCounter].checked==0){
				if(elementsInputs[intCounter].name=='akkoord'){
					errors += '<li>U dient akkoord te gaan.</li>';
				} else {
					errors += '<li>'+createInputName(elementsInputs[intCounter].name)+' is een verplicht veld</li>';
				}
			}
		}
		
		//check for required field
		if( requiredPattern.test(elementsInputs[intCounter].className) && elementsInputs[intCounter].value==''){
			var inputname = '';

			if(inputname=='') inputname = elementsInputs[intCounter].name;
			
			errors += '<li>'+createInputName(inputname)+' is een verplicht veld</li>';
			change = true;
		}
		
		//change the input to demo the error
		if(change == true){
			elementsInputs[intCounter].style.background = highlight;
		}
		
	}

	if(errors == ''){
		return true;
	} else {
		//document.getElementById('error-'+currentFormName).style.display = "block";
		//document.getElementById('error-'+currentFormName).innerHTML = '<ul>'+errors+'</ul>';
		return false;
	}
}


addLoadEvent(validateForms);
addLoadEvent(addSubmitButtons);

function addLoadEvent(func){
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload(); func();
		}
	}
}

function createInputName(veldnaam){
	var newName = veldnaam.replace(/[^A-Za-z0-9]{1}/g,' ');
	return newName;
}


function addSubmitButtons(){
	elementsForms = document.getElementsByTagName("form");
	for (var intCounter = 0; intCounter < elementsForms.length; intCounter++){
		
	//ADD FORMNAME BUTTON		
		var inputElementText = "<input type=\"hidden\" name=\"formulier\" value="+elementsForms[intCounter].name+" />";
		
	//ADD ERROR DIV
		var errorElement = document.createElement("div");
		errorElement.id = "error-"+elementsForms[intCounter].name;
		errorElement.className = "errorDiv";
		errorElement.style.display = "none";
		
		var savedContent = elementsForms[intCounter].innerHTML;
		elementsForms[intCounter].innerHTML = '';
		
		elementsForms[intCounter].appendChild(errorElement);
		//elementsForms[intCounter].appendChild(inputElement);
		
		elementsForms[intCounter].innerHTML += inputElementText + savedContent;
	}
}


function validateForms(){
	elementsForms = document.getElementsByTagName("form");
	for (var intCounter = 0; intCounter < elementsForms.length; intCounter++){
		elementsForms[intCounter].onsubmit = function () {
			return checkMe(this);
		}
	}
}


function checkThis(submitElement){
	if(checkMe(submitElement.form)){
		submitElement.form.submit();
	}
}

