/**
* Permite números + ponto + virgula
*
* Códigos ASCII
* 48 a 57 - numeros de 0 a 9
* 44 - virgula
* 46 - delete e ponto
* 8 - backspace
* 9 - tab
* 
* Exemplo:
* onkeypress="return valida_numero(event);"
*
* @return boolean
*/
function valida_numero(e){
	if(!e) e = window.event;
	var tecla;		
	if(e.keyCode) tecla = e.keyCode;
	else if(e.which) tecla = e.which; //Netscape 4.?
	if((tecla > 47 && tecla < 58) || tecla == 46 || tecla == 8 || tecla == 44 || tecla == 9)
		return true;
	else return false;
}

/**
* Formata campo data (dd/mm/yyyy)
* 
* Exemplo:
* onkeydown="formata_data(this,event)"
*
* @return void
*/
function formata_data(campo,e){
	if (!e) e = window.event;
	if(e.keyCode)    tecla = e.keyCode;
	else if(e.which) tecla = e.which; //Netscape 4.?		
	if(e.target) 
		objEv = e.target; //Firefox
	else if(e.srcElement) 
		objEv = e. srcElement; //IE		
	vr = objEv.value;
	vr = vr.replace(".","");
	vr = vr.replace("/","");
	vr = vr.replace("/","");
	tam = vr.length + 1;
	if (tecla != 9 && tecla != 8) {
		if (tam > 2 && tam < 5)
			objEv.value = vr.substr(0,tam - 2) + '/' + vr.substr(tam - 2,tam);
		if (tam >= 5 && tam <= 10)
			objEv.value = vr.substr(0,2) + '/' + vr.substr(2,2) + '/' + vr.substr(4,3);
	}
}

/**
* Formata campo hora (h:m:s)
* 
* Exemplo:
* onkeydown="formata_hora(this,event)"
*
* @return void
*/
function formata_hora(campo,e){
	if (!e) e = window.event;
	var tecla;		
	if(e.keyCode)    tecla = e.keyCode;
	else if(e.which) tecla = e.which; //Netscape 4.?		
	if(e.target) 
		objEv = e.target; //Firefox
	else if(e.srcElement) 
		objEv = e. srcElement; //IE
	vr = objEv.value;
	vr = vr.replace(".","");
	vr = vr.replace(":","");
	vr = vr.replace(":","");
	tam = vr.length + 1;
	if (tecla != 9 && tecla != 8) {
		if (tam > 2 && tam < 5)
			objEv.value = vr.substr(0,tam - 2) + ':' + vr.substr(tam - 2,tam);
		if (tam >= 5 && tam <= 10)
			objEv.value = vr.substr(0,2) + ':' + vr.substr(2,2) + ':' + vr.substr(4,1);
	}
}

/**
* Valida data (dd/mm/aaaa)
*
* @return boolean
*/
function valida_data(val){
	if(val == "") return false;
	var data = val.split("/");
	if(data.length != 3) return false;
	var dia = data[0];
	var mes = data[1];
	var ano = data[2];
	if((ano <= 0) || (mes > 12 || mes == 0) || (dia > 31 || dia == 0))
		return false;
	else if(((ano % 4) == 0) && (mes == 2) && (dia > 29))
		return false;
	else if(((ano % 4) > 0) && (mes == 2) && (dia > 28))
		return false;
	else if(((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11) ) && (dia == 31))
		return false;
	return true;
}

/**
* Valida hora (hh:mm)
*
* @return boolean
*/
function valida_hora(val){
	if(val == "") return false;
	var hora = val.split(":");
	if(hora.length != 2) return false;
	var hor = hora[0];
	var min = hora[1];
	if(min >= 0 && min < 60){
		if(hor < 0 || hor > 23){
			return false;
		}
	}
	else{
		return false;
	}
	return true;
}

/**
* Mascaras diversas
*/
function mascara(tipo, campo, teclaPress) {
	if (window.event) {
		var tecla = teclaPress.keyCode;
	}
	else {
		tecla = teclaPress.which;
	}
	var s = new String(campo.value);
	s = s.replace(/(\.|\(|\)|\/|\-| )+/g,'');
	tam = s.length + 1;
	if ( tecla != 9 && tecla != 8 ) {
		switch (tipo) {
		case 'CPF' :
			if (tam > 3 && tam < 7)
				campo.value = s.substr(0,3) + '.' + s.substr(3, tam);
			if (tam >= 7 && tam < 10)
				campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,tam-6);
			if (tam >= 10 && tam < 12)
				campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,3) + '-' + s.substr(9,tam-9);
		break;
 
		case 'CNPJ' :
 			if (tam > 2 && tam < 6)
				campo.value = s.substr(0,2) + '.' + s.substr(2, tam);
			if (tam >= 6 && tam < 9)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,tam-5);
			if (tam >= 9 && tam < 13)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,tam-8);
			if (tam >= 13 && tam < 15)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,4)+ '-' + s.substr(12,tam-12);
		break;
 
		case 'TEL' :
			if (tam > 2 && tam < 4)
				campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,tam);
			if (tam >= 7 && tam < 11)
				campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,4) + '-' + s.substr(6,tam-6);
		break;
 
 		case 'CEP' :
			if (tam == 6)
				campo.value = s +'-';
		break;
 
		case 'DATA' :
			if (tam > 2 && tam < 4)
				campo.value = s.substr(0,2) + '/' + s.substr(2, tam);
			if (tam > 4 && tam < 11)
				campo.value = s.substr(0,2) + '/' + s.substr(2,2) + '/' + s.substr(4,tam-4);
		break;

		case 'HORA' :
			if (tam > 2 && tam < 4)
				campo.value = s.substr(0,2) + ':' + s.substr(2, tam);
		break;
		}
	}
}

/**
* Formata campo valor
* onkeypress='return valida_numero(event)' onKeydown='Formata(this,20,event,2)'
*/
function Formata(campo,tammax,teclapres,decimal) {
	var tecla = teclapres.keyCode;
	vr = Limpar(campo.value,"0123456789");
	tam = vr.length;
	dec = decimal;
	if (tam < tammax && tecla != 8){ tam = vr.length + 1; }
	if (tecla == 8) { tam = tam - 1; }
	if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105) {
		if ( tam <= dec ) { campo.value = vr ; }
		if ( (tam > dec) && (tam <= 5) ){ campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; }
		if ( (tam >= 6) && (tam <= 8) ){
			campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
		}
		if ( (tam >= 9) && (tam <= 11) ){
			campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
		}
		if ( (tam >= 12) && (tam <= 14) ){
			campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
		}
		if ( (tam >= 15) && (tam <= 17) ){
			campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;
		}
	}
}
function Limpar(valor, validos) {
	// retira caracteres invalidos da string
	var result = "";
	var aux;
	for (var i=0; i < valor.length; i++){
		aux = validos.indexOf(valor.substring(i, i+1));
		if (aux>=0) {
			result += valor.substring(i, i+1);
		}
	}
	return result;
}

/**
* Valida CPF
* onkeypress='return valida_numero(event)' onKeydown='Formata(this,20,event,2)'
*/
function valida_cpf(cpf) {
	if(cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
		return false;
	}
	add = 0;
	for(i=0; i < 9; i ++){
		add += parseInt(cpf.charAt(i)) * (10 - i);
	}
	rev = 11 - (add % 11);
	if (rev == 10 || rev == 11){
		rev = 0;
	}
	if (rev != parseInt(cpf.charAt(9))){
		return false;
	}
	add = 0;
	for(i = 0; i < 10; i ++){
		add += parseInt(cpf.charAt(i)) * (11 - i);
	}
	rev = 11 - (add % 11);
	if(rev == 10 || rev == 11){
		rev = 0;
	}
	if(rev != parseInt(cpf.charAt(10))){
		return false;
	}
	return true;
}
