/*CHECKFIELD vars

vArgChecker v0.8

R	varchar veld verplicht
E	email, : option emailnamefield ,emailnamefield2 doublechecker
4   captcha
P	Postcode verplicht
N	nummer verplicht
NO	nummer optioneel
T	telefoon verplicht
TO	telefoon optioneel
I	Radiobutton verplicht
C	checkbox verplicht
BL	Geboortedatum+ legal age check 18 jaar


function returns 
object.myStatus true or false
object.message = htmlmessage code
*/

function vArgChecker(myArgs,cssOk,cssError,translateFields) {
	if (translateFields == undefined) translateFields = {};

	function isEmail( email ) {
		var re1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\,)/;
		var re2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
		var l = true;
		if (email.length < 8) l = false;
		return ( !re1.test(email) && re2.test(email) && l );
	}
	
	function isPostcode( postcode ) {
		var re2 = /^([1-9])([0-9]){3}\h*([a-zA-Z]){2}$/;
		return (re2.test(postcode));
	}
	
	function isTelefoon( telefoon ) {
		var tel = telefoon.replace("-","").replace(" ","");
		var re2 = /^([0]|[0]{2}[3][1]|[+][3][1])[0-9]{9}$/;
		return (re2.test(tel));
	}
	
	
	function checkBirthDay(v) {
		if (Number(v) && v > 0 && v < 32 ){
			return true;
		}else {
			return false;
		};
	}
	
	function checkCaptcha(v) {
		if (Number(v) && v==4 ){
			return true;
		}else {
			return false;
		};
	}
	
	
	function checkBirthMonth(v) {
		if (Number(v) && v > 0 && v < 13 ){
			return true;
		}else {
			return false;
		};
	}
	
	function checkBirthYear(v) {
		var now_date = new Date();
		if (Number(v) && v > 1900 && v < now_date.getFullYear() ){
			return true;
		}else {
			return false;
		};
	}
	
	function checkBirthLegal(d,m,y,legalAge) {
		var check = false;
		var now_date = new Date();
		var currentDate = {day:now_date.getDate() ,month:(now_date.getMonth()+1),year:now_date.getFullYear(),hour:now_date.getHours()};
		if (y <(currentDate.year-legalAge) ||(y ==(currentDate.year-legalAge) && (m < currentDate.month ||(m== currentDate.month && d <= currentDate.day)))) {
			check = true;
		}
		return check;
	
	}

// Main function


	function translate(id){
		if (translateFields[id] != undefined) {
			return translateFields[id];
		}else {
			return id;
		}
	}

	var myStatus = true;
	var formname = myArgs[0];
	var successdiv = myArgs[1];
	var myMessage = "";

	for (i = 2; i < myArgs.length; i=i+2 ) {

		if (myArgs[i+1] =="BL" || myArgs[i+1] =="B") {
			var myElement1 = eval('document.forms[\''+formname+'\'].'+myArgs[i]+"1");
			var myElement2 = eval('document.forms[\''+formname+'\'].'+myArgs[i]+"2");
			var myElement3 = eval('document.forms[\''+formname+'\'].'+myArgs[i]+"3");
			$("#"+myElement1.id+", #"+myElement2.id+", #"+myElement3.id).css(cssOk);
		}else {
			var myElement = eval('document.forms[\''+formname+'\'].'+myArgs[i]);
			if (myElement.style != undefined) {$("#"+myElement.id).css(cssOk)};
		}

		switch(myArgs[i+1]) {
			case 'R': //varfield
			if (myElement.value == ''){ 
				$("#"+myElement.id).css(cssError);
				if( myElement.id == "input_naam"){
					$("#naamError").html("U heeft geen naam ingevuld.");
					$("#naamError").show();	
				}
				else {
					$("#vraagError").html("U heeft geen vraag of reactie ingevuld.");
					$("#vraagError").show();	
				}
				
				
				//myMessage += translate(myElement.id)+" is niet correct ingevuld.\n";
				myStatus=false;
			};
			break;
			case 'E': //email 
			if (myElement.value == '' || !isEmail(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				$("#emailError").html("Email adres is niet correct ingevuld (naam@voorbeeld.com).");
				$("#emailError").show();
				
				//myMessage += "Email adres is niet " +myElement.id +  " correct ingevuld.\n";
				myStatus=false;
			};
			// email2 checkup
				if ($("#"+myElement.id).val() != $("#"+myElement.id+"2").val() && $("#"+myElement.id+"2").attr('id') != undefined){ 
					$("#"+myElement.id+"2").css(cssError);
					myMessage += "<br>- <span class=\"vBoxErrorField\">Bevestigingsemail</span> is niet gelijk.";
					myStatus=false;
				}else if($("#"+myElement.id+"2").attr('id') != undefined) {
					$("#"+myElement.id+"2").css(cssError);
				}
			break;
			case 'P': //postcode 
			if (myElement.value == '' || !isPostcode(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};
			break;
			case 'N': //Number 
			if (myElement.value == '' || !Number(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};

			case '4': //Captcha 
			if (myElement.value == '' || !checkCaptcha(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};
			
			break;
			case 'NO': //Number but not optional
			if (myElement.value != '' && !Number(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};
			break;
			case 'T': //Telephone 
			if (myElement.value == '' || !isTelefoon(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};
			break;
			case 'TO': //Telephone
			if (myElement.value != '' && !isTelefoon(myElement.value)){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.id)+"</span> is niet correct.";
				myStatus=false;
			};
			break;

			case 'I': //radiobuttons
			var radioChecked = false;
			var radioLength = eval('document.forms[formname].'+myArgs[i]+'.length');
			for (r=0;r < radioLength;r++) {
				 if (eval('document.forms[formname].'+myArgs[i]+'['+r+'].checked'))  radioChecked = true;
			}
			if (!radioChecked) {
				//eval('document.getElementById(\''+myArgs[i]+'_alert\').style.border = \'solid 1px #FF0000\';');
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myArgs[i])+"</span> is niet gekozen.";
				myStatus=false;
			}
			break;
			case 'C': //checkbox 
			if (!$("#"+myElement.id).attr('checked')){ 
				$("#"+myElement.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement.name)+"</span> is niet aangevinkt.";
				myStatus=false;
			};
			break;
			case 'BL': //birthcheck + legal age 
			var birthCheck = true;
			if (!checkBirthDay($("#"+myElement1.id).val()) ){ 
				$("#"+myElement1.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement1.id)+"</span> is niet correct.";
				birthCheck=false;
			}
			if ( !checkBirthMonth($("#"+myElement2.id).val())){ 
				$("#"+myElement2.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement2.id)+"</span> is niet correct.";
				birthCheck=false;
			}
			if ( !checkBirthYear($("#"+myElement3.id).val())){ 
				$("#"+myElement3.id).css(cssError);
				myMessage += "<br>- <span class=\"vBoxErrorField\">"+translate(myElement3.id)+"</span> is niet correct.";
				birthCheck=false;
			}
			if (birthCheck && !checkBirthLegal($("#"+myElement1.id).val(), $("#"+myElement2.id).val(), $("#"+myElement3.id).val(), 18) ){ 
				$("#"+myElement1.id+", #"+myElement2.id+", #"+myElement3.id).css(cssError);
				myMessage += "<br>- Je bent nog geen 18 jaar.";
				birthCheck=false;
			};
			myStatus = birthCheck;
			break;
		}
	}
	return {'status' : myStatus, 'message' : myMessage };
}
