// THE validate function
function getMM() 
{
    document.MM_args = getMM.arguments;
    var Doorgaan = MM_validateForm();
	if (Doorgaan) 
	{
		obj = document.getElementById('SubmitButton');
		if (obj) 
		{
			obj.disabled=true;
		}
	}
	document.MM_returnValue = Doorgaan;
}

function MM_validateForm()
{
	if(document.getElementById("Bedrijf").value!='' && document.getElementById("Naam").value!='' && document.getElementById("Email").value!='')
	{
	    // validaties
	
	    var valVereist = "veldVoorwaarde.charAt(0) == 'R'";
	
	    var valEmail = "veldVoorwaarde.indexOf('isEmail') != -1";
	    var valPostcode = "veldVoorwaarde.indexOf('isPostcode') != -1";
	    var valDatum = "veldVoorwaarde.indexOf('isDatum') != -1";
	    var valTelefoon = "veldVoorwaarde.indexOf('isTelefoon') != -1";
	    var valSpeciaal = "veldVoorwaarde.indexOf('isSpecial') != -1";
			var valHTTP = "veldVoorwaarde.indexOf('isHTTP') != -1";
	
	    // fout berichten
	    var errVoor = "- het veld '";
	    var errEenFout = "De volgende fout is opgetreden:\n";
	    var errMeerFouten = "De volgende fouten zijn opgetreden:\n";
	    var errVereist = "' is vereist\n";
	
	    var errEmail = "' bevat geen geldig e-mailadres\n";
	    var errPostcode = "' bevat geen geldige postcode\n";
	    var errDatum = "' bevat geen geldige datum\n";
	    var errTelefoon = "' bevat geen geldig telefoonnummer\n";
	    var errAangevinkt = "' is niet aangevinkt\n";
	    var errMaxtekensBegin = "' bevat meer dan ";
	    var errMaxtekensEind = " tekens\n";
	    var errType = "' bevat tekens die niet geaccepteerd worden\n";
	    var errScheidingstekens = errType;
		var errHTTP = "' bevat links, wat niet is toegestaan\n";
	    
	    var i, p, q, num, min, max, errors = '', args = document.MM_args, intFouten = 0;
	
	    var veldVoorwaarde, veldNaam, veldType, val;
	    for (i=0; i<(args.length-2); i+=3)
	        {
					veldNaam = args[i]
	        if (veldNaam.substring(0,2)=='id') {
						veldFriendlyNaam = veldNaam.replace(veldNaam.substring(0,veldNaam.indexOf('_')+1),"")
					} else {
						veldFriendlyNaam = veldNaam;
					}
					veldType = args[i+1];
	        if (veldType == 'checkbox') { veldType = 'check' } // voor compatibiliteit met custom forms
					veldVoorwaarde = args[i+2];
	        val = MM_findObj(args[i]);
	
	    
	        // check of veld bestaat
	        if (val) {
	            switch (veldType) {
	                case "radio": {
	                    if(eval(valVereist)) {
							var clk = 0;
	                        for (j=0;j<val.length;j++) {
	                            if (val[j].checked) var clk = 1; }
	                        if (clk!=1)  {
																errors += errVoor+veldFriendlyNaam+errVereist;
	                            intFouten++; } }
	                    break; }
									case "check": {
										if(eval(valVereist)) {
	                        	if (!val.checked)  {
	                            		errors += errVoor+veldFriendlyNaam+errAangevinkt;
	                            		intFouten++;
					}
				}
	                    	break;
			}
	                default: {
											if ((val = val.value)!="") {
	                        // email validatie
	                        if (eval(valEmail)) {
								var enter = "\n";
	                            var pAt = val.indexOf('@');
	                            var pPoint = val.lastIndexOf('.');
	                            var tBeforeAt = val.substring(0,pAt).length;
	                            var tBetweenAtPoint = val.substring(pAt+1,pPoint).length;
	                            var tAfterPoint = val.substring(pPoint+1,val.length).length;
	                            if (!((pAt != -1) && (pPoint != -1) && (pPoint > pAt) && (tBeforeAt > "0") && (tBetweenAtPoint > "1") && (tAfterPoint > "1")))
	                                { errors += errVoor+veldFriendlyNaam+errEmail;
	                                intFouten++; } }
	
	                        // diverse voorwaarden validatie
	                        else if (eval(valSpeciaal)) {
	                                var arrVoorwaarde = veldVoorwaarde.split("|");
	                                for (v=(arrVoorwaarde.length - 1);v>=0;v--)
	                                    {
	                                    switch (arrVoorwaarde[v].charAt(0))
	                                        {
	                                        case "s":
	                                            {
	                                            // var arrS = arrVoorwaarde[v].split("¦");
	                                            // var varS = arrS[1];
	                                            // var arrS = null;
	                                            var varS = arrVoorwaarde[v].substring(1,arrVoorwaarde[v].length)
	                                            var regS = eval('/[' + varS + ']/gi');
	                                            val = val.replace(regS,""); break;
	                                            }
	                                        case "m":
	                                            {
	                                            // var arrM = arrVoorwaarde[v].split("¦");
	                                            // var varM = arrM[1];
	                                            // var arrM = null;
	                                            var varM = arrVoorwaarde[v].substring(1,arrVoorwaarde[v].length)
	                                            if (val.length > parseFloat(varM)) 
	                                                {errors += errVoor+veldFriendlyNaam+errMaxtekensBegin+varM+errMaxtekensEind;
	                                                intFouten++;}
	                                            break;
	                                            }
	                                        case "t":
	                                            {
	                                            // var arrT = arrVoorwaarde[v].split("¦");
	                                            // var varT = arrT[1];
	                                            // var arrT = null;
	                                            var varT = arrVoorwaarde[v].substring(1,arrVoorwaarde[v].length)
	                                            var regT = null;
	                                            switch (varT)
	                                                {
							case "a": {var regT = /[a-zA-Z]/gi; break;}
	                                                case "an": {var regT = /[a-zA-Z0-9]/gi; break;}
	                                                case "n": {var regT = /[0-9]/gi; break;}
	                                                }
	                                            for (t=0;t<val.length;t++)
	                                                { if (val.charAt(t).search(regT)==-1) {errors += errVoor+veldFriendlyNaam+errType; intFouten++; break;} }
	                                            break;
	                                            }
	                                        }
	                                    }
	                                }
	
	                        // telefoon validatie
	                        else if (eval(valTelefoon)) {
	                            var IsTelefoon = false;
	                            if ((isSignedInteger(stripCharsInBag(val,telScheidingstekens))) && (stripCharsInBag(val,telScheidingstekens).length == 10)) IsTelefoon = true;
	                            if (!IsTelefoon) {
	                            errors+=errVoor+veldFriendlyNaam+errTelefoon;
	                            intFouten++; } }
	
	                        // datum validatie
	                        else if (eval(valDatum)) {
	                            var IsDatum = false;
	                            if (isNumber(stripCharsInBag(val,datScheidingstekens))) {
	                                var datScheidingsteken = " ";
	                                for (x=0;x<val.length;x++) {
	                                    var c = val.charAt(x);
	                                    if (datScheidingstekens.indexOf(c) != -1) {
	                                        datScheidingsteken = c;
	                                        break; } }
	                                if (datScheidingsteken != " ") {
	                                    var arrDatum = val.split(datScheidingsteken);
	                                    if ((arrDatum.length <= 3) && (arrDatum.length >= 2)) {
	                                        if (arrDatum.length == 2) IsDatum = isDate(arrDatum[0],arrDatum[1]);
	                                        else IsDatum = ((isYear(arrDatum[2])) & (isDate(arrDatum[0],arrDatum[1],arrDatum[2])));
	                                            } } }
	
	                            if (!IsDatum) {
	                            errors+=errVoor+veldFriendlyNaam+errDatum;
	                            intFouten++; } }
	
	                        else if (eval(valHTTP)) {
															if (val.indexOf("http://") != -1) {
	                                errors+=errVoor+veldNaam+errHTTP;
																	intFouten++;
															}
													}
	
	                        // validatie postcode
	                        else if (eval(valPostcode)) {
	                            if (val.length < 6 || val.length > 7) {
	                                errors+=errVoor+veldFriendlyNaam+errPostcode;
	                                intFouten++; }
	                            else {
	                                var isCorrect = 1;
	                                for (j = 0; (j < 4) && (isCorrect == 1); j++) {
	                                    if (val.charAt(j) < "0" || val.charAt(j) > "9") {
	                                        errors+=errVoor+veldFriendlyNaam+errPostcode;
	                                        intFouten++;
	                                        isCorrect = 0; } }
	                                if (isCorrect = 1) {
	                                    if (val.indexOf(' ') != -1) {
	                                        var startAt = 5 }
	                                    else {
	                                        var startAt = 4 }
	                                    for (j=startAt; (j < (startAt + 2)) && (isCorrect == 1); j++) {
	                                        var letter = val.charAt(j)
	                                        if ((letter < "a" || letter > "z") && (letter < "A" || letter > "Z")) {
	                                            errors+=errVoor+veldNaam+errPostcode;
	                                            intFouten++;
	                                            isCorrect = 0; } } } }
	                            } // einde validaties met waarde
	                        } // waarde is leeg: is waarde vereist?
	                    else if (eval(valVereist)) {
	                        // Hier wordt de ID verwijdert t/m _ van customforms
														errors += errVoor+veldFriendlyNaam+errVereist;
	                        intFouten++; }
	                    } // einde validaties
	                } // einde switch
	            } else {
					        alert(veldNaam + ' bestaat niet.');
							} // einde object val
	        } // einde for ... next loop van alle args
	
	    // als er fouten zijn: alert(fouten)
	    if (errors) {
	        if (intFouten > 1) alert(errMeerFouten+errors);
	        else alert(errEenFout+errors); }
	
	    document.MM_returnValue = (errors == '');
	    return document.MM_returnValue; 
    }
}

// variabelen
var telScheidingstekens = "- ";
var datScheidingstekens = "-/index.html";

// dagen per maand
var daysInMonth = new Array(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

// common functions
function checkMaxchars(what,limit) {
    if (what.value.length > limit) return false;
    else return true; }
    
function stripCharsInBag (s, bag) {
    var i, returnString = "";
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c; }
    return returnString; }
    
function isSignedInteger(s) {
    var IsSignedInteger = true;
    var startPos = 0;
    if ((s.charAt(0) == "-") || (s.charAt(0) == "+")) startPos = 1;
    for (x=startPos;x<s.length;x++) {
        if(!((s.charAt(x) >= "0") && (s.charAt(x) <= "9"))) IsSignedInteger = false; }
    return IsSignedInteger; }

function isNumber(s) {
    for (x=0;x<s.length;x++) {
        if(!((s.charAt(x) >= "0") && (s.charAt(x) <= "9"))) return false; }
    return true; }

function isIntegerInRange(s, a, b) {
    if (!isNumber(s)) return false;
    var num = parseInt(s);
    return ((num >= a) && (num <= b)); }
    
function daysInFebruary (year) {
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); }
    
function isDate() {
    var intDay = parseInt(isDate.arguments[0]);
    var intMonth = parseFloat(isDate.arguments[1]);
    var datCurrent = new Date();
    var intYear = ((isDate.arguments[2]!=null) ? isDate.arguments[2] : datCurrent.getYear());
    if (! isYear(intYear) );
    if (!(isIntegerInRange(intDay,1,31) && isIntegerInRange(intMonth,1,12))) return false;
    if (intDay > daysInMonth[intMonth]) return false; 
    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
    return true; }
    
function isYear(s) {
    if (!isNumber(s)) return false;
    return (isIntegerInRange(s,0,99) || isIntegerInRange(s,1900,2100)); }


function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x; }

