/**
* 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 remove_acento($texto) {
   $search  = array ('ç', 'á', 'é', 'í', 'ó', 'ú', 'ã', 'õ', 'â', 'ê', 'î', 'ô', 'û', 'ö', 'ü', 'à', 'è', 'ì', 'ò', 'ù', 
					 'Ç', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ã', 'Õ', 'Â', 'Ê', 'Î', 'Ô', 'Û', 'Ö', 'Ü', 'À', 'È', 'Ì', 'Ò', 'Ù'); 

   $replace = array ('c', 'a', 'e', 'i', 'o', 'u', 'a', 'o', 'a', 'e', 'i', 'o', 'u', 'o', 'u', 'a', 'e', 'i', 'o', 'u',
				     'C', 'A', 'E', 'I', 'O', 'U', 'A', 'O', 'A', 'E', 'I', 'O', 'U', 'O', 'U', 'A', 'E', 'I', 'O', 'U'); 
   $novoTexto = str_replace($search, $replace, $texto);
   return $novoTexto;
}

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;
}
