var formulier;

optionGroupNotChecked = new Array();

validateForm = function() {
	ell = YAHOO.util.Dom.getElementsByClassName("required", "", "formulier");
	for (var i=0; i < ell.length; i++) {
		if (ell[i].tagName == "INPUT"){
			if ((ell[i].value == "") || (ell[i].value.length < 1) || !validateFormField(ell[i])) {
			    YAHOO.util.Dom.addClass(ell[i], 'requiredField');
			}
		} else if (ell[i].tagName == "DIV") {
			var inputs = ell[i].getElementsByTagName("INPUT");
            if (YAHOO.util.Dom.hasClass(ell[i], 'radioGroup')) {
                var checked = false;
    			for (var j=0; j<inputs.length; j++) {
                    if (inputs[j].getAttribute("type") == "radio") {
    					checked = inputs[j].checked;
    					if (checked) break;
    				}
    			}
				if (!checked) optionGroupNotChecked.push(ell[i]);
            }
		}
	}
	
	// loop through properties of object
	for (var k = 0; k < optionGroupNotChecked.length; k++) {
		showError(optionGroupNotChecked[k]);
	}
}

checkForErrorsAndSubmit = function() {
	el = YAHOO.util.Dom.getElementsByClassName("error", "", "formulier");
    el = el.concat(YAHOO.util.Dom.getElementsByClassName("requiredField", "", "formulier"));

	if(el.length == 0) {
		document.getElementById("formulier").submit();
	} else {
	    var msg = document.createElement('div');
	    msg.setAttribute('id', 'errorMsg');
	    
	    var txt = document.createTextNode('Het formulier bevat ongeldige invoer.');
	    msg.appendChild(txt);
	    
        formulier.parentNode.insertBefore(msg, formulier);

	    location.hash = '#errorMsg';
	}
}

showError = function(obj, txt) {
    if (!txt) {
        txt = "Dit veld is verplicht.";
    }

	var errorDiv = document.createElement("DIV");
	if (obj.id) {
        errorDiv.setAttribute('id', 'error_' + obj.id);
    }
	YAHOO.util.Dom.addClass(errorDiv, "error");
	var errorText = document.createTextNode(txt);
	errorDiv.appendChild(errorText);
	
	if(obj && (obj.tagName != "DIV")) {
		var root = obj.parentNode;
	} else {
		var root = obj;
	}
	
	var hasErrors = YAHOO.util.Dom.getElementsByClassName("error", "", root);

	if(hasErrors.length == 0) {
		root.appendChild(errorDiv);
	}
}

removeAllErrors = function() {
    // remove error indication at top of form
    var msg = document.getElementById('errorMsg');
    if (msg) msg.parentNode.removeChild(msg);

    // remove error messages
	ell = YAHOO.util.Dom.getElementsByClassName("error", "", "formulier");
	for(var i=ell.length-1; i >= 0 ; i--) {
		ell[i].parentNode.removeChild(ell[i]);
	}

    // remove error styles from inputs
	ell = YAHOO.util.Dom.getElementsByClassName("requiredField", "", "formulier");
	for(var j=ell.length-1; j >= 0 ; j--) {
	    YAHOO.util.Dom.removeClass(ell[j], "requiredField");
	}
	
	optionGroupNotChecked = new Array();
}

