
// ---------------------------------------------------------------------------------------

function validate(obj, param) {
	var id=obj.id;
	var errorfieldid=obj.id + "_error";
	var commands=param.split("|");
	for (a=0; a<commands.length; a++) {
		var param=commands[a];
		var params=param.split(",");
		var part_num=0;
		var answ=0;
		if (params[0]=="isMinLength") answ=(validate_isMinLength(obj.value,params[1]));
		else if (params[0]=="isLength") answ=(validate_isLength(obj.value,params[1]));
		else if (params[0]=="isBetween") answ=(validate_isBetween(obj.value,params[1],params[2]));
		else if (params[0]=="isEmail") answ=(validate_isEmail(obj.value));
		else if (params[0]=="notEmpty") answ=(validate_notEmpty(obj.value));
		else if (params[0]=="isInt") answ=(validate_isInt(obj.value));
		else if (params[0]=="isAlphaNum") answ=(validate_isAlphaNum(obj.value));
		else if (params[0]=="isEqual") answ=(validate_isEqual(obj.value,params[1]));
		else if (params[0]=="isNotEqual") answ=(validate_isEqual(obj.value,params[1]));
		
		if (answ==0) alert("Onbekende validatiemethode: "+params[0]);
		if (answ==-1) {
			change_class(id,"formerror");
			change_class(errorfieldid,"formmessage_active");
			// bij fout gelijk stoppen; andere validaties die evt positief zijn
			// resulteren toch in een false validatie.
			return;
			}
		else {
			change_class(id,"formokay");
			change_class(errorfieldid,"formmessage");
			}
		}
	}

// ---------------------------------------------------------------------------------------

function validate_isAlphaNum(checkStr) {
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	var allValid = 1;
	for (i = 0;  i < checkStr.length;  i++) {
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
			break;
		if (j == checkOK.length) {
			allValid = -1;
			break;
			}
		}
	return (allValid);
	}


// ---------------------------------------------------------------------------------------

function validate_isMinLength(obj, minimalLength) {
	if (obj.length>=minimalLength) return(1); else return(-1);
	}

// ---------------------------------------------------------------------------------------

function validate_isLength(obj, l) {
	if (obj.length==l) return(1); else return(-1);
	}

// ---------------------------------------------------------------------------------------

function validate_isMaxLength(obj, maxLength) {
	if (obj.length<=maxLength) return(1); else return(-1);
	}

// ---------------------------------------------------------------------------------------

function validate_isBetween(obj, lmin, lmax) {
	if (obj.length>=lmin && obj.length<=lmax) return(1); else return(-1);
	}
	
// ---------------------------------------------------------------------------------------

function validate_notEmpty(val) {
	var len=parseInt(val.length);
	if (len==0) return(-1); 
	else return(1);
	}
// ---------------------------------------------------------------------------------------

function validate_isEmail(argvalue) {
	if (argvalue.indexOf(" ") != -1)
		return (-1);
	else if (argvalue.indexOf("@") == -1)
		return (-1);
	else if (argvalue.indexOf("@") == 0)
		return (-1);
	else if (argvalue.indexOf("@") == (argvalue.length-1))
		return (-1);
	var retSize = customSplit(argvalue, "@", "arrayString");
	if (arrayString[1].indexOf(".") == -1)
		return (-1);
	else if (arrayString[1].indexOf(".") == 0)
		return (-1);
	else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
		return (-1);
	}
	return (1);
}

// ---------------------------------------------------------------------------------------

function validate_isInt(argvalue) {
 
 if (argvalue.length == 0)
    return (-1);

  for (var n = 0; n < argvalue.length; n++)
    if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
      return (-1);

  return (1);
}

// ---------------------------------------------------------------------------------------

function validate_isEqual(objVal1, obj2) {
 	if (document.getElementById(obj2)) {
		obj2v=document.getElementById(obj2);
		}	
	else alert("validate_isEqual: object ID to compare with ('"+obj2+"') does not exist.");
	if (objVal1==obj2v.value) return(1);
	else return(-1);
	}
	
// ---------------------------------------------------------------------------------------

function validate_isNotEqual(objVal1, obj2) {
 	if (document.getElementById(obj2)) {
		obj2v=document.getElementById(obj2);
		}	
	else alert("validate_isEqual: object ID to compare with ('"+obj2+"') does not exist.");
	if (objVal1!=obj2v.value) return(1);
	else return(-1);
	}

// ---------------------------------------------------------------------------------------

function change_class(id,cl) {
    if (document.getElementById(id)) {
		document.getElementById(id).className = cl;
		}
	else alert("class '"+ id + "' cannot be found, this is why the error is not shown.");
	}