//Validators
function CountChars(sStr){
			var i;
			var iChrCount;
			iChrCount = 0;
			for (i = 0; i < sStr.length; i++) {
					if((sStr.charAt(i)>='a' && sStr.charAt(i)<='z') || (sStr.charAt(i)>='A' && sStr.charAt(i)<='Z')){
						iChrCount++;
					}
			}
			return iChrCount;
}
function CountDigits(sStr){
			var i;
			var iDigCount;
			iDigCount = 0;
			for (i = 0; i < sStr.length; i++) {
					if(sStr.charAt(i)>='0' && sStr.charAt(i)<='9'){
						iDigCount++;
					}
			}
			return iDigCount;
}
function ExistsExcludedChars(sData,sArrayChars){

		var i; 
		var j;
		if (sArrayChars.length == 0){
			return true;
		}
		for (i = 0; i < sData.length; i++) {
			for (j = 0; j < sArrayChars.length; j++) {
				if(sData.charAt(i) == sArrayChars.charAt(j)){
					return true;
				}
			}
		}
	return false;
}
function ValidatorGetValue(id) {
    var control;
    control = document.getElementById(id);
    if (typeof(control.value) == "string") {
        return control.value;
    }
    if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
        var j;
        for (j=0; j < control.length; j++) {
            var inner = control[j];
            if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
                return inner.value;
            }
        }
    }
    return "";
}
function PasswordValidatorEvaluateIsValid (val) {
		try{
			var value = null;
			//debugger;
			value = ValidatorGetValue(val.controltovalidate);
			if (value == "" || value == null) {
				//if no value, return true: nothing to validate
				return true;
			}
			
			if (value.length < val.minimum || value.length > val.maximum){
				val.errormessage="Por favor, preencha  uma nova password com " + val.minimum + " a " + val.maximum + " caracteres!";
				return false;
			}
			if (CountChars(value) < val.chars) {
				val.errormessage= "Por favor, preencha  uma nova password que tenha no mínimo " + val.chars +" caracteres [a-Z]";
				return false;
			}
			
			if (CountDigits(value) < val.digits) {
				val.errormessage= "Por favor, preencha  uma nova password que tenha no mínimo " + val.digits +" digitos (caracteres [0-9])";
				return false;
			}
		} catch (e) {
				 //if an error occurs, return false
				return false;
		}
		return true;
}
function MinMaxStrValidatorEvaluateIsValid (val) {
		try{
			var value = null;
			//debugger;
			value = ValidatorGetValue(val.controltovalidate);
			if (value == "" || value == null) {
				//if no value, return true: nothing to validate
				return true;
			}
			
			if (value.length < val.minimum || value.length > val.maximum){
					return false;
			}
			if (CountChars(value) < val.chars) {
					return false;
			}
			
			if (CountDigits(value) < val.digits) {
				return false;
			}
			
			if (ExistsExcludedChars(value,val.excludedChars) == true) {
				return false;
			} 
		} catch (e) {
				 //if an error occurs, return false
				return false;
		}
		return true;
}
function OpenWindow(sStr) {
        window.open(sStr);
    }