function valida (f) {
	var campos = "";
	for (var i = 0; i < f.length; i++) { 
		var id = f[i].id;
		if (id.toLowerCase().indexOf('empty_') != -1) {
			if (!isEmpty(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('numero_') != -1) {
			if (!isNumber(f[i].value) && !isEmpty(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('dinheiro_') != -1) {
			if (!isMoney(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('nome_') != -1) {
			if (!isName(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('email_') != -1) {
			if (!isEmail(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('url_') != -1) {
			if (!isUrl(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('data_') != -1) {
			if (!isDate(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('niver_') != -1) {
			if (!isDate(f[i].value, true)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('cpf_') != -1) {
			if (!isCpf(f[i].value, true)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('cnpj_') != -1) {
			if (!isCnpj(f[i].value, true)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('rg_') != -1) {
			if (!isRg(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('cep_') != -1) {
			if (!isCep(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('senha_') != -1) {
			if (!isSenha(f[i].value, f.compara.value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		} else if (id.toLowerCase().indexOf('tel_') != -1) {
			if (!isTel(f[i].value)) {
				campos += "\t » " + id.substring(id.indexOf("_",2)+1).toUpperCase().addcomm_replace("_"," ") + "\n";
			}
		}
	}
	if (campos) {
		var msg = "Os campos:\n\n" + campos + "\n estão preenchidos de forma incorreta. \n Por favor verifique se os dados estão \n corretamente preenchidos";
		alert(msg);
		return false;
	} else {
		return true;
	}
}
/*#####################################*/
function isEmpty (v) {
	return (v);
}
function isNumber(v){
	return (!isNaN(v));
}
function isMoney(v){
	return (v.match(/^([0-9]{1,3}\.?)+\,[0-9]{2}$/));
}
function isName(v){
	return (v.match(/\w[^ ]+.+/));
}
function isEmail(v){
	return (v.match(/^[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9-]{2,64}(\.[a-z0-9-]{2,64})*\.[a-z]{2,4}$/));
}
function isUrl(v){
	return (v.match(/^(ht|f)tp\:\/\/[a-zd][a-zd-]{1,64}(\.[a-zd][a-zd-]{2,64})*\.[a-z]{2,4}.+$/));
}
function isDate(date, b) {
	if (date==null) return false;
	arrDdate = date.split('/');
	dia = arrDdate[0]; mes = arrDdate[1]; ano = arrDdate[2]
	if (
		( isNaN(parseInt(dia)) || isNaN(parseInt(mes)) || isNaN(parseInt(ano)) ) ||
		(ano < 1900 || ano > 9999) || 
		(mes < 1 || mes > 12) || 
		(dia < 1 || dia > 31) || 
		(mes == 2 && dia > 28 && (ano % 4 != 0)) || 
		(mes == 2 && dia > 29 && (ano % 4 == 0)) || 
		(dia > 30 && (mes == 4 || mes == 6 || mes == 9 || mes== 11))
	) { 
		return false;
	} else {
		if (b){
			data = new Date (ano,mes,dia);
			dateInicio = new Date(1900,01,01);
			dateFim = new Date(2005,01,01);
			if(data<dateInicio || data>dateFim)return false;
		}
		return true;
	}
}
function isCpf(v){
	var s=null;
	var r=null;
	if(v.length !=11 || v.match(/1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}/))return false;
	s=0;
	for(var i=0;i<9;i++)s+=parseInt(v.charAt(i))*(10-i);r=11-(s%11);
	if(r==10||r==11)r=0;
	if(r!=parseInt(v.charAt(9)))return false;
	s=0;
	for(var i=0;i<10;i++)s+=parseInt(v.charAt(i))*(11-i);
	r=11-(s%11);
	if(r==10||r==11)r=0;
	if(r!=parseInt(v.charAt(10)))return false;
	return true;
}
function isCnpj(v){
	var dig1=0;
	var dig2=0;
	var x;
	var Mult1='543298765432';
	var Mult2='6543298765432';
	for(x=0;x<=11;x++){
		dig1=dig1+(parseInt(v.slice(x,x+1))*parseInt(Mult1.slice(x,x+1)));
	}
	for(x=0;x<=12;x++){
		dig2=dig2+(parseInt(v.slice(x, x+1))*parseInt(Mult2.slice(x,x+1)));
	}
	dig1=(dig1*10)%11;dig2=(dig2*10)%11;
	if(dig1==10){
		dig1=0;
	}
	if(dig2==10){
		dig2=0;
	}
	if(dig1!=parseInt(v.slice(12, 13))){
		return false;
	}else{
		if(dig2!=parseInt(v.slice(13, 14))){
			return false;
		}else{
			return true;
		}
	}
}
function isRg(v) {
	v = v.addcomm_replace(" ","");
	v = v.addcomm_replace(".","");
	v = v.addcomm_replace("-","");
	return (v.match(/[0-9xX]{9}/))
}
function isCep(v) {
	v = v.addcomm_replace(" ","");
	v = v.addcomm_replace("-","");
	return (v.match(/[0-9]{8}/))
}
function isSenha(v, c) {
	if (isEmpty(v)) {
		if (v == c) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}
function isTel(v) {
	v = v.addcomm_replace(" ","");
	v = v.addcomm_replace("-","");
	v = v.addcomm_replace(".","");
	v = v.addcomm_replace("(","");
	v = v.addcomm_replace(")","");
	if (v.length < 11) {
		return (v.match(/\d{7,11}/));
	} else {
		return false
	}
}
/*#####################################*/
String.prototype.addcomm_replace = function(a,b) {
	var str = "";
	for (lS=0; lS < this.length; lS++){
		if (this.charAt(lS) == a) { str += b } else { str += this.charAt(lS) }
	}
	return str;
}
function fncContaTexto(parCampo, numMaximo, parContador) {
	if (parCampo.value.length > numMaximo) {
		parCampo.value = parCampo.value.substring(0, numMaximo);
	} else if (parContador) {
		parContador.value = numMaximo - parCampo.value.length;
	} 
}
function popup(u, w, h, n, s, r, ext){
	var topo 	= (screen.availHeight - h) / 2;
	var esq 	= (screen.availWidth - w) / 2;
	var scrl 	= (s) ? 'yes' : 'no';
	var red 	= (r) ? 'yes' : 'no';
	window.open (u, n, 'width=' + w + ', height=' + h + ', top=' + topo + ', left=' + esq + ', scrollbars=' + scrl + ', resizable=' +  red);
}
/*#####################################*/
var mask;

function fncGetMask (id) {
	if (id.toLowerCase().indexOf('cep_') != -1) {
		mask 	= "99999-999";
	} else if (id.toLowerCase().indexOf('cpf_') != -1) {
		mask 	= "99999-999";
	} else if (id.toLowerCase().indexOf('cnpj_') != -1) {
		mask 	= "99.999.999/9999-99";
	} else if (id.toLowerCase().indexOf('data_') != -1) {
		mask	= "99/99/9999";
	} else if (id.toLowerCase().indexOf('tel_') != -1) {
		mask	= "(99) 9999-9999";
	} else if (id.toLowerCase().indexOf('tel2_') != -1) {
		mask = "9999-9999";
	} else if (id.toLowerCase().indexOf('numero_') != -1) {
		mask	= "999999999999999999999999999999999999999999999999999999999";
	} else if (id.toLowerCase().indexOf('cartao_') != -1) {
		mask 	= "9999.9999.9999.9999";
	} else if (id.toLowerCase().indexOf('conta_') != -1) {
		mask 	= "9999-9";
	} else {
		mask = "";
	}
}

function mascara(campo) {
	var i, nCount, valor, fldLen, mskLen,bolmascara, sCod, tecla, mascara;
	
	tecla = event.keyCode;
	// verifica o tipo
	fncGetMask (campo.id);
	mascara = mask2;
	// Limpa todos os caracteres de formatação que já estiverem no campo.
	valor = campo.value;
	valor = valor.toString();
	valor = valor.addcomm_replace("-", "" );
	valor = valor.addcomm_replace(".", "" );
	valor = valor.addcomm_replace("/", "" );
	valor = valor.addcomm_replace("(", "" );
	valor = valor.addcomm_replace(")", "" );
	valor = valor.addcomm_replace(" ", "" );
	fldLen = valor.length;
	mskLen = mascara.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
		if(i >= mascara.length) return false;
		bolmascara = ((mascara.charAt(i) == "-") || (mascara.charAt(i) == ".") || (mascara.charAt(i) == "/"))
		bolmascara = bolmascara || ((mascara.charAt(i) == "(") || (mascara.charAt(i) == ")") || (mascara.charAt(i) == " "))
		
		if (bolmascara) {
			sCod += mascara.charAt(i);
			mskLen++; 
		}else {
			sCod += valor.charAt(nCount);
			nCount++;
		}
		i++;
	}

	campo.value = sCod;
	  
	if (tecla != 8) { // backspace alert(tecla)
		if (mascara.charAt(i-1) == "9") { // apenas números...
			return ((tecla > 47) && (tecla < 58)); } // números de 0 a 9
		else { // qualquer caracter...
			return true;
		} 
	}
	else {
		return true;
	}
	
}
String.prototype.addcomm_replace = function(a,b) {
	var str = "";
	for (var lS=0; lS < this.length; lS++){
		if (this.charAt(lS) == a) { str += b } else { str += this.charAt(lS) }
	}
	return str;
}
function limpa(campo) {
	campo.value = campo.value.addcomm_replace(" ","");
	// valida os caracteres
	var valor = "";

	for (i = 0; i < campo.value.length; i++) {
		letra = campo.value.charAt (i);
		cv = "1234567890()/-.";
		if (cv.indexOf (letra) != -1) {
			valor += letra;
		}
	}
	campo.value = valor;
}
function setFocusOn (c) {
	c.value = '';
}
function setFocusOff (c) {
	var v = c.getAttribute('mascara');
	if (v) {
		c.value = v;
	}
}
function fncSetFocus (f) {
	for (i = 0; i < f.length; i++) {
		var campo = f[i];
		var mascara = campo.getAttribute('mascara');
		if (mascara) {
			campo.onfocus = function(){
				setFocusOn(this);
			}
			campo.onblur = function(){
				setFocusOff(this);
			}
			setFocusOff (campo);
		}
		campo.onkeypress = function(){
			return mascara(this);
		}
	}
}
