	var isIE = document.all?true:false;
	var isNS = document.layers?true:false;
	if (isNS) document.captureEvents(Event.KEYPRESS);
	
	function getKeyCode(e) {
		if (isIE)
			return window.event.keyCode;
		if (isNS || !isIE)
			return e.which;
	}
	
	function setKeyCode(e, c) {
		if (isIE)
			window.event.keyCode = c;
		if (isNS)
			e.which = c;
	}
	
	function onlyInts(e) {	
		var _ret = true;
		var keyCode = getKeyCode(e);	
				
		if (keyCode < 48 || keyCode > 57) {
			setKeyCode(e, 0);
			_ret = false;
		}
		
		return (_ret); 
	}
	
	function onlyDigits(e) {
		var _ret = true;
		var keyCode = getKeyCode(e);
		if (keyCode == 44) {
			setKeyCode(e, 46);
			keyCode = 46;
		}
		if ((keyCode < 48 || keyCode > 57) && (keyCode != 46 && keyCode != 45)) {
			setKeyCode(e, 0);
			_ret = false;
		}
		
		return (_ret); 
	}
	
	function onlyChars(e) {	
		var _ret = true;
		var keyCode = getKeyCode(e);
		
		if (!((keyCode > 96 && keyCode < 123) || (keyCode > 64 && keyCode < 91))) {
			setKeyCode(e, 0);
			_ret = false;
		}
		
		return (_ret); 
	}
	
	function onlyCharsAllowSpace(e) {	
		var _ret = true;
		var keyCode = getKeyCode(e);
		
		if (!((keyCode > 96 && keyCode < 123) || (keyCode > 64 && keyCode < 91) || (keyCode==32))) {
			setKeyCode(e, 0);
			_ret = false;
		}
		
		return (_ret); 
	}

	function onlyUpper(e) {	
		var _ret = true;
		var keyCode = getKeyCode(e);
		if (keyCode > 96 && keyCode < 123) {
			setKeyCode(e, keyCode - 32);			
		}		
		return (_ret); 
	}
	
	function onlyInitials(obj) {
		var v = new String(obj.value);
		v = v.replace(/([A-Z])[\.]*/g, "$1.");
		obj.value = v;
	}
		
	function onlyText(e, o, l) {
		var _ret = true;
		var keyCode = getKeyCode(e);
		if (keyCode == 39) setKeyCode(e, 0);
		if (o.value.length > l) {
			setKeyCode(e, 0);
			o.value = o.value.substring(0, l);
			alert('Er mogen maar ' + l + ' karakters worden ingevoerd');
		}			
	}
	
	function onlyPhoneNumbers(obj) {
		return onlyPhoneNumbersA(obj, 'textinput', 'texterror');
	}
	
	function onlyPhoneNumbersA(obj, okClass, errorClass) {
		var d = obj.value;		
		if (isPhoneNumber(d)) {
			obj.className = okClass;
			return 0;
		} else {
			obj.className = errorClass;
			return 1;
		}
	}
	
	function onlyEmail(obj) {
		return onlyEmailA(obj, 'textinput', 'texterror');
	}
	
	function onlyEmailA(obj, okClass, errorClass) {
		var d = obj.value;		
		if (isEmail(d)) {
			obj.className = okClass;
			return 0;
		} else {
			obj.className = errorClass;
			return 1;
		}
	}
	
	function isPhoneNumber(fsNumber) {
		var reg = new RegExp("[0-9]{10}", "g");
		return (reg.test(fsNumber));
	}
	
	function onlyNumbers(e) {
		var _ret = true;
		var keyCode = getKeyCode(e);
		if (keyCode < 48 || keyCode > 57) {
			if (isIE) setKeyCode(e, 0);
			_ret = false;
		}
		if (!_ret && !isIE)
			e.preventDefault();
			
		return (_ret);
	}
		
	function onlyAccountNumber(obj) {
		return onlyAccountNumberA(obj, 'textinput', 'texterror');
	}
	
	function onlyAccountNumberA(obj, okClass, errorClass) {				
		var d = new String(obj.value);		
		if (isAccountNumber(d)) {	
			obj.className = okClass;
			return 0;
		} else {
			obj.className = errorClass;
			return 1;
		}
		return 0;
	}
	
	function isAccountNumber(d) {
		var sum = 0;		
		if (d.length > 7 && d != "undefined") {
			for (var i=0; i<d.length; i++) {
				var n = new Number(d.substring(i,i+1));
				sum += ((d.length-i) * n);
			}
			if (sum % 11 == 0) {			
				return true;
			} else {
				return false;
			}
		} else if (d.length == 0 || d == "") {
			return false;
		}
		return true;
	}
	
	function onlySofinumber(obj) {				
		var d = new String(obj.value);		
		var sum = 0;
		var n = 0;
		if (d.length > 7 && d != "undefined") {
			for (var i=0; i<d.length; i++) {
				n = new Number(d.substring(i,i+1));			
				if (i<d.length-1) sum += ((d.length-i) * n);
			}						
			if (sum % 11 == n) {			
				obj.className = 'textinput';
				return 0;
			} else {			
				obj.className = 'texterror';
				return 1;
			}
		} else if (d.length == 0 || d == "") {
			obj.className = 'texterror';
			return 1;
		}
		return 0;
	}
	
	function isNumber(val) {
		return (/^\d+$/.test(val));
	}
	
	function isBackSpaceOrDelete(e) {
		if (isIE)
			return (window.event.keyCode == 8 || window.event.keyCode == 46);
		if (isNS)
			return (e.which == 8 || e.which == 46);
		return false;		
	}
	
	function isANWBNumber(field) {
		if (field == "") {
			return false;
		}

		field = field.slice(-9,10); //als anwbnr 10 cijfers is, alleen de laatste 9 valideren

		var ok = true;
		if (field == 0 || field.length < 9)
			return false;
		if (field == '123456789')
			ok = false;				
		else
			{
			var totaal = 0;
			var elfteller = 9;
			var restwaarde = 0;
			var reknr = 0;
			for (i=0;i<field.length;i++) {
				reknr = field.charAt(i);
				totaal = totaal + elfteller * reknr;
				elfteller = elfteller - 1;
			}
					
			restwaarde = totaal % 11;
			if (restwaarde == 0)
				ok = true;
			else
			{
				var teken1 = field.charAt(field.length-1);
				var teken2 = field.charAt(field.length-2);
				if (teken1 == teken2)
				{
					restwaarde = restwaarde - teken1;
					if (restwaarde == 1)
						ok = true;
					else
						ok = false;
				}
				else
					ok = false;
			}
		}
		return ok;
	}	
	
	function isCurrency(val) {
		var v = new String(val);
		//return (/b[0-9]+\.([0-9]+\b)?|\.[0-9]+\b/.test(v));
		return (/^\d+(?:\.\d{0,2})?$/.test(v));
	}
	
	function isEmail(str){		
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		return (filter.test(str));
	}
    function noSpace(e) {
        var _ret = true;
        var keyCode = getKeyCode(e);
        if (keyCode == 32) {
            if (isIE) setKeyCode(e, 0);
            _ret = false;
        }
        if (!_ret && !isIE)
            e.preventDefault();
        return (_ret);
    }