/*
 * Collection of functions to check forms and values. Also possible to print messages, only for intern usage in this js
 * @author Stefan Vissia
 * @since 02-11-2004
 */

var requiredForms = Array(); 
var requiredElements = Array();

function addRequireElement(aForm, element_name) {
		form_exists=false;
		form_id = -1;
		form_elements = null;
		for(f=0;f<requiredForms.length;f++) {
			//if(aForm.name == requiredForms[f]) {
			if(aForm == requiredForms[f]) {
				form_exists=true;
				form_id = f;
				form_elements = requiredElements[form_id];
			}
		}
		if(!form_exists) {
			//requiredForms[requiredForms.length] = aForm.name;
			requiredForms[requiredForms.length] = aForm;
			
			form_id = requiredForms.length - 1;
			form_elements = Array();		
		} 
		
		element_exists=false;
		if(!form_exists) {
			form_elements[form_elements.length] = element_name;
		} else {
			for(w=0;w<form_elements.length;w++) {
				if(form_elements[w] == element_name) {
					element_exists=true;
				}
			}	
			if(!element_exists) {
				form_elements[form_elements.length] = element_name;
			}
		}
		
		if(!element_exists) {
			requiredElements[form_id] = form_elements;
		}
}

function printmessage(message) {
	alert(message);
}


function checkformwithmail(aForm, email) {
	result=checkform(aForm);
	if(result) {
		result=checkemail(email);
		return result;
	} else {
		return result;
	}
}

function checkform(aForm,conForm) {
	error=false;
	result=true;
	form_elements = null;
	for(v=0;v<requiredForms.length;v++) {
		if(requiredForms[v] == aForm.name) {
			form_elements = requiredElements[v];
		}
	}
	
	if(form_elements!=null) {
		for(i=0;i<aForm.elements.length;i++) {
			required=false;
			for(j=0;j<form_elements.length;j++) {
				if(form_elements[j] == aForm.elements[i].name) {
					required=true;
				}
			}
			
			if(required) {
				if(Trim(aForm.elements[i].value)=="") {
					error=true;
					result=false;
					aForm.elements[i].style.backgroundColor="#eeeeee";
				}
			}
		}	
	}
		
	if(error) {
		if(conForm) {
			result = confirm("U heeft een of meer verplichte velden niet ingevuld.\nWeet u zeker dat u wilt doorgaan?\n");
			}else{
			printmessage("U heeft een of meer verplichte velden niet ingevuld.\n");
			}
	}	
	
	return result;
}

function checkemail (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	var message = "Het opgegeven e-mail adres is niet geldig.";

	if (matchArray==null) {
		printmessage(message);
		return false
	}

	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) {
			printmessage(message);
   		return false
	}

	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
	   		if (IPArray[i]>255) {
	   	printmessage(message);
			return false
	   	 }
    	}
    	return true
	}

	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
			printmessage(message);
   		return false
	}


	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
    		domArr[domArr.length-1].length>3) {
    	printmessage(message);
   		return false
	}


	if (len<2) {
			printmessage(message);
   		return false
	}


	return true;
}

function Trim(TRIM_VALUE){
	if(TRIM_VALUE.length < 1){
		return"";
	}
	
	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	
	if(TRIM_VALUE==""){
		return "";
	} else{
		return TRIM_VALUE;
	}
} 

function RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0){
		return"";
	}
	var iTemp = v_length -1;

	while(iTemp > -1){
		if(VALUE.charAt(iTemp) == w_space){
		} else {
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;

	} //End While
	return strTemp;
} //End Function

function LTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){
		} else{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function


function rollback(obj){
	
	return false;
	
}//End Function


function checkKeypress(obj,type,errorString)
{
	if(!errorString)
		errorString ='U dient hier een nummer in te voeren';
		
	var aKeyCode = window.event.keyCode;
	
	if(type == "number")
	{
		if((aKeyCode > 47) && (aKeyCode < 58)) 
		{
			//alert('Correct, this is a number')
		}else
		{
			alert(errorString);
			//obj.value = "";
		}
	}
}//End Function

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}//End Function


function checkInteger(obj,errorString){
	if(!errorString) errorString = 'Dit is geen getal';
	if(isInteger(obj.value)){
		//alert('dit is een getal');
		}else{
		alert(errorString);	
		obj.value = "";
		obj.focus();
		
		}
	}