// JavaScript Document

function check_form() {
 
	var inputs = document.getElementsByTagName('input');
	
	for(i=0;i<inputs.length;i++){
		if(inputs[i].getAttribute('validatie')!=null) {
			var checks = inputs[i].getAttribute('validatie').split(';');
			var meldingen = inputs[i].getAttribute('melding').split(';');
			for(j=0;j<checks.length;j++) {
				if(checks[j]=='not_empty'&&inputs[i].value=='') {
					print_error(meldingen[j]);
					return false;	
				}
				
				if(checks[j]=='date'&&!isValidDate(inputs[i].value, 'yyyy/mm/dd')) {
					print_error(meldingen[j]);
					return false;	
				}
				
				if(checks[j]=='numchars'&&!isValidNumchar(inputs[i].value, 'yyyy/mm/dd')) {
					print_error(meldingen[j]);
					return false;	
				}
			
			}
			
			if(inputs[i].getAttribute('verplicht')!=null&&inputs[i].getAttribute('verplicht')=='1'&&inputs[i].value=='') {
				
				print_error(inputs[i].getAttribute('melding'));
				return false;
			}
		}
	}
	
	var textareas = document.getElementsByTagName('textarea');
	

	for(i=0;i<textareas.length;i++){
		if(textareas[i].getAttribute('verplicht')!=null&&textareas[i].getAttribute('verplicht')=='1'&&textareas[i].value=='') {
			
			alert('U heeft niet alle verplichte velden ingevoerd');
			return false;
		}
	}
	
	var selects = document.getElementsByTagName('select');
	
	for(i=0;i<selects.length;i++){
		if(selects[i].getAttribute('validatie')!=null) {
			var checks = selects[i].getAttribute('validatie').split(';');
			var meldingen = selects[i].getAttribute('melding').split(';');
			for(j=0;j<checks.length;j++) {
				if(checks[j]=='not_empty'&&selects[i].value=='') {
					print_error(meldingen[j]);
					return false;	
				}
				
			
			}
			
		
		}
	}
	
	return true;
}

function print_error(error) {
	alert(error);	
}

function isValidDate(date_string, format) {
	
    var days = [31,28,31,30,31,30,31,31,30,31,30,31];
    var year;
    var month;
    var day;
    var date_parts = null;
    var rtrn = true;

    if (/^m{1}[./-]d{1}[./-]y{1}$/.test(format)) {
        //US Date
        date_parts = date_string.match(/^(\d{1,2})[./-](\d{1,2})[./-](\d{2}|\d{4})$/);
        if (date_parts) {
            month = date_parts[1];
            day = date_parts[2];
            year = date_parts[3];
        }
    } else if (/^m{2}[./-]d{2}[./-]y{2}$/.test(format)) {
        //US Short Date
        date_parts = date_string.match(/^(\d{1,2})[./-](\d{1,2})[./-](\d{2})$/);
        if (date_parts) {
            month = date_parts[1];
            day = date_parts[2];
            year = date_parts[3];
        }
    } else if (/^m{2}[./-]d{2}[./-]y{4}$/.test(format)) {
        //US Long Date
        date_parts = date_string.match(/^(\d{1,2})[./-](\d{1,2})[./-](\d{4})$/);
        if (date_parts) {
            month = date_parts[1];
            day = date_parts[2];
            year = date_parts[3];
        }
    } else if (/^y{1}[./-]m{1}[./-]d{1}$/.test(format)) {
        //EU Date
        date_parts = date_string.match(/^(\d{2}|\d{4})[./-](\d{1,2})[./-](\d{1,2})$/);
        if (date_parts) {
            year = date_parts[1];
            month = date_parts[2];
            day = date_parts[3];
        }
    } else if (/^y{2}[./-]m{2}[./-]d{2}/.test(format)) {
        //EU Short Date
        date_parts = date_string.match(/^(\d{1,2})[./-](\d{1,2})[./-](\d{1,2})$/);
        if (date_parts) {
            year = date_parts[1];
            month = date_parts[2];
            day = date_parts[3];
        }
    } else if (/^y{4}[./-]m{2}[./-]d{2}/.test(format)) {
        //EU Long Date
        date_parts = date_string.match(/^(\d{4})[./-](\d{1,2})[./-](\d{1,2})$/);
        if (date_parts) {
            year = date_parts[1];
            month = date_parts[2];
            day = date_parts[3];
        }
    } else {
        rtrn = false;
    }
	
    if (date_parts) {
        if (1 <= month && month <= 12) {
            if (month == 2) {
                if (year % 4 != 0 ? false : ( year % 100 != 0? true: (year % 1000 != 0? false : true))) {
                    rtrn = (1 <= day && day <= 29);
                } else {
                    rtrn = (1 <= day && day <= 28);
                }
            } else {
                rtrn = (1 <= day && day <= days[month -1]);
            }
        }else {
		
            rtrn = false;
        }
    } else {
        rtrn = false;
    }
	
    return rtrn;
}//eof isValidDate

function isValidNumchar(value) {
  var objRegExp  = /([0-9a-zA-z])/;

  return objRegExp.test(value);
	
}