var meldingen = new Array();
meldingen['nieuwsbrief_1'] = "U moet zich aanmelden op de nieuwsbrief.";
meldingen['titel'] = "U heeft geen titel ingevuld.";
meldingen['voorwaarden'] = "U dient akkoord te gaan de voorwaarden.";

// Reguliere expressies
var email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
var phone = /^([0-9\.\-\/]){8,11}$/;
var date = /^([0-9]{0,2})-([0-9]{0,2})-([0-9]{0,4})$/;
var password = /^[a-zA-Z0-9]\w{5,20}$/;

function controle(elmt){
	if(elmt){
		controle_veld(elmt);
	}else{
		
		for(i=0;i<velden.length;i++){
			if(!velden[i].disabled){
				controle_veld(velden[i]);
			}
		}
	}
	if(fouten < 1){
		return true;
	}else{
		return false;
	}
}
function controle_veld(veldobject){
	if(veldobject.nodeName.toLowerCase() == 'input' || veldobject.nodeName.toLowerCase() == 'select' || veldobject.nodeName.toLowerCase() == 'textarea'){
		if(veldobject.value){
			veldobject.value = veldobject.value.ltrim();
		}
			
		// Bij een e-mail veld
		if(veldobject.className.indexOf("email") > -1){
			if(!email.test(veldobject.value)){
				showmelding(veldobject.id, 'Er is geen (correct) e-mailadres ingevuld.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		
		// Bij een telefoon veld
		else if(veldobject.className.indexOf("phone") > -1){
			if(!phone.test(veldobject.value)){
				showmelding(veldobject.id, 'Er is geen (correct) telefoonnummer ingevuld.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		
		// Bij een datum veld
		else if(veldobject.className.indexOf("date") > -1){
			if(!date.test(veldobject.value)){
				showmelding(veldobject.id, 'Er is geen (correcte) datum ingevuld.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		
		// Bij een wachtwoord veld
		else if(veldobject.className.indexOf("password") > -1){
			if(!password.test(veldobject.value)){
				showmelding(veldobject.id, 'Er is geen (correct) wachtwoord ingevuld. Tenminste 6 letters/cijfers, en maximaal 21 letters/cijfers.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		
		// Bij een checkbox veld
		else if(veldobject.className.indexOf("checkbox") > -1){
			if(!veldobject.checked){
				showmelding(veldobject.id, 'U heeft de checkbox niet aangevinkt.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		
		// Bij een select veld
		else if(veldobject.className.indexOf("select") > -1){
			if(veldobject.selectedIndex != -1){
				if(veldobject.options[veldobject.selectedIndex].value < 1){
					showmelding(veldobject.id, 'U heeft geen optie geselecteerd.');
				}else{
					deletemelding(veldobject.id);
				}
			}else{
				showmelding(veldobject.id, 'U heeft geen optie geselecteerd.');
			}
		}
		
		// Bij een radio veld
		else if(veldobject.className.indexOf("radio") > -1){
			radios = document.getElementsByName(veldobject.name);
			checked = false;
			for(i=0;i<radios.length;i++){
				if(radios[i].checked){
					checked = true;
				}
			}
			if(!checked){
				showmelding(veldobject.id, 'U heeft de radio niet aangevinkt.', veldobject.name+'_melding');
			}else{
				deletemelding(veldobject.id, veldobject.name+'_melding');
			}
		}
		
		// Alleen verplicht, maar geen syntax
		else {
			if(veldobject.type != null && veldobject.type == 'radio'){
				if(veldobject.checked){
					deletemelding(veldobject.id, veldobject.name+'_melding');
				}
			}
			if(veldobject.value.length < 1){
				showmelding(veldobject.id, 'Er is geen tekst ingevuld.');
			}else{
				deletemelding(veldobject.id);
			}
		}
		return true;
	}else{
		return true;
	}
}
document.getElementsByClass = function(searchClass,node,tag){
    var classElements = new Array();
    if(node == null) node = document;
    if(tag == null) tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for(i=0, j=0; i<elsLen;i++){
        if(pattern.test(els[i].className)){
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
function showmelding(elmt_id, txt, idname){
	// Controleer of er geen alternatieve melding bestaat
	if(meldingen[elmt_id]){
		txt = meldingen[elmt_id];
	}
	var newAlinea = document.createElement("p");
	var newTekst = document.createTextNode(txt);
	if(idname != null){
		newAlinea.id = idname;
	}
	
	newAlinea.appendChild(newTekst);
	deletemelding(elmt_id);
	var label = document.getElementById(elmt_id).previousSibling;
	label.parentNode.insertBefore(newAlinea,label);
	fouten = fouten+1;
}
function deletemelding(elmt_id, idname){
	if(idname != null){
		if(document.getElementById(idname) != null){
			document.getElementsByClass('validate')[0].removeChild(document.getElementById(idname));
			fouten = fouten-1;
		}
		return true;
	}else{
		if(document.getElementById(elmt_id).previousSibling.previousSibling.nodeName.toLowerCase() == 'p'){
			document.getElementsByClass('validate')[0].removeChild(document.getElementById(elmt_id).previousSibling.previousSibling);
			fouten = fouten-1;
		}
		return true;		
	}

}
var velden = new Array();
var fouten = 0;
window.onload = function(){
	velden = document.getElementsByClass('required');
	for(i=0;i<velden.length;i++){
		if(!velden[i].disabled){
			if(velden[i].nodeName.toLowerCase() == 'input' || velden[i].nodeName.toLowerCase() == 'select' || velden[i].nodeName.toLowerCase() == 'textarea'){
				if(velden[i].nodeName.toLowerCase() == 'input' && velden[i].type == 'text'){
					velden[i].onchange = function(){controle(this);}
					velden[i].onblur = function(){controle(this);}
				}else if(velden[i].nodeName.toLowerCase() == 'select'){
					velden[i].onchange = function(){controle(this);}
				}else if(velden[i].nodeName.toLowerCase() == 'input' && (velden[i].type == 'checkbox' || velden[i].type == 'radio')){
					velden[i].onclick = function(){controle(this);}
				}else{
					velden[i].onblur = function(){controle(this);}
				}
				
			}
		}
	}
	
	if(velden.length > 0){
		if(document.all){
			pp = document.createElement("br");
			ppp = document.getElementsByTagName("label")[0];
			ppp.parentNode.insertBefore(pp,ppp);
		}
		document.getElementsByTagName("form")[0].onsubmit=function(){return controle();}
	}
	
}