var evals = new Array();

function addCheckCMD(cmd) {
	evals.push(cmd);
}

function checkForm(btnName) {
	if(runCheck())
		return true;
	else
		return false;
}

function runCheck() {
	for($i = 0; $i  < evals.length; $i++) {
		if(!eval(evals[$i])) return false;
	}
	return true;
}


function checkInput(feldname, name, min, max, type) {
	
	//var reg_ex_email = new RegExp("^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$");
	var reg_ex_email = new RegExp("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$");
	var reg_ex_bs = new RegExp("[a-zA-ZäöüÄÖÜß.-_]{"+min+","+max+"}$", "g");
	var reg_ex_zahl = new RegExp("[0-9]{"+min+","+max+"}$", "g");
	var reg_ex_bs_zahl = new RegExp("[a-zA-Z0-9äöüÄÖÜß.-_]{"+min+","+max+"}$", "g");
	var reg_ex_ICQ = new RegExp("[0-9-]{"+min+","+max+"}$", "g");
	
	var obj;
	
	if(document.getElementsByName(feldname)[0] != null)
		obj = document.getElementsByName(feldname)[0];
	else if(document.getElementById(feldname) != null)
		obj = document.getElementById(feldname);
		
	if(obj.value == "") return true;
	
	switch (type) {
	  case 0:
	  	if(obj.value.length < min || obj.value.length > max) {
	    	alert("Das Feld "+name+" hat eine ungültige Länge");
	    	return false;
	  	}
	    break;
	  case 1:
	  	if(!reg_ex_email.test(obj.value)) {
			alert("Das Feld "+name+" ist keine gültige Email Addresse.");
	    	return false;
	    }
	    break;
	  case 2:
	  	if(!reg_ex_bs.test(obj.value)) {
			alert("Das Feld "+name+" darf nur Buchstaben enthalten.");
			return false;
		}
	    break;
	  case 3:
	  	if(!reg_ex_zahl.test(obj.value)) {
			alert("Das Feld "+name+" darf nur Zahlen enthalten.");
			return false;
		}
	    break;
	  case 4:
	  	if(!reg_ex_bs_zahl.test(obj.value)) {
			alert("Das Feld "+name+" darf nur Buchstaben und Zahlen enthalten.");
			return false;
		}
	    break;
	  case 5:
	  	if(!(obj.value.length == 10 && checkValidDate(obj.value))) {
			alert("Das Feld "+name+" ist kein gültiges Datum z.b. dd-mm-jjjj.");
			return false;
		}
	    break;
	  case 6:
	  	if(!reg_ex_ICQ.test(obj.value)) {
			alert("Die ICQ Nummer ist ungültig, xxx-xxx-xxx oder xxxxxxxxx sind zulässig.");
			return false;
		}
	    break;
	}	
	
	return true;
}

function checkValidDate(strValue) {
	var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
	if(!objRegExp.test(strValue))
		return false; //doesn't match pattern, bad date
	else{
		var strSeparator = strValue.substring(2,3) 
		var arrayDate = strValue.split(strSeparator); 
		var arrayLookup = { '01' : 31,'03' : 31, 
		                        '04' : 30,'05' : 31,
		                        '06' : 30,'07' : 31,
		                        '08' : 31,'09' : 30,
		                        '10' : 31,'11' : 30,'12' : 31}
		var intDay = parseInt(arrayDate[0],10); 
	
		if(arrayLookup[arrayDate[1]] != null) {
			if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
				return true; 
    	}
    
		var intMonth = parseInt(arrayDate[1],10);
		if (intMonth == 2) { 
			var intYear = parseInt(arrayDate[2]);
			if (intDay > 0 && intDay < 29) {
				return true;
			}
			else if (intDay == 29) {
				if ((intYear % 4 == 0) && (intYear % 100 != 0) || (intYear % 400 == 0)) {
					// year div by 4 and ((not div by 100) or div by 400) ->ok
					return true;
				}   
			}
		}
	}  
	return false; //any other values, bad date
}