
function IsTeclaEspecial(tecla){
	var bValido = false;

	if(	(tecla == 8)  ||	//backspace
			(tecla == 39) ||	//right
			(tecla == 37) ||	//left
			(tecla == 36) ||	//home
			(tecla == 46) ||	//delete
			(tecla == 9)  ||	//tab
			(tecla == 35)){ 	//end
			bValido = true;
		}

	return bValido;
}

function IsNumber(tecla,event){
	var bValido = false;
	
	if (tecla==0){return true}

	if(!event.shiftKey){//verifica se a tecla shift não está pressionada
		if((tecla >= 47 && tecla <= 58) || //numeros de 0 a 9 no teclado acima das letras
			(tecla >= 96 && tecla <= 105)){  //numeros de 0 a 9 no teclado numerico	
			bValido = true
		}
	}

	return bValido;
}

function IsLetter(tecla){
	var bValido = false;
	var c;
	if((tecla >= 65 && tecla <= 90) || tecla == 32){  //letras de 'a' a 'z'	e espaço em branco
		bValido = true
	}
	
	return bValido;
}

function valDigitos(campo) {
	if (!reDigitos.test(campo)) {
		return false;
	}
	return true;
}

function mascaraNome(event){
	var tecla;
	
	tecla = event.keyCode;
	if(IsTeclaEspecial(tecla) || !IsNumber(tecla,event)){
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}

function mascaraNumero(event){
	var tecla;
	
	tecla = event.keyCode;
	if(IsTeclaEspecial(tecla) || IsNumber(tecla,event)){
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}

function mascaraCep(objeto,event) {
	var tecla;
	
	tecla = event.keyCode;
	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {

		if (objeto.value.length >= 5){
			if (objeto.value.charAt(5)!="-"){
				objeto.value = objeto.value.substring(0,5) +"-"+ objeto.value.substring(5,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
	
}

function mascaraData(objeto,event) {
	var tecla;
	
	/*
		essa distinção foi preciso pq o tratamento dos eventos disparados a partir da digitação dos campos
		tiverem que usar o onkeypress, pois para a funcionalidade de saltar o campo, no momento que o
		campo estivesse totalmente preenchido, e fosse retornado novamente para o mesmo, ele saltava 
		automaticamente, pois o campo já estava totalmente preenchido e esse era o critério utilizado
		para saber quando saltar.
	*/
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}
	
	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {

		if (objeto.value.length >= 2){
			if (objeto.value.charAt(2)!="/"){
				objeto.value = objeto.value.substring(0,2) +"/"+ objeto.value.substring(2,objeto.value.length)
			}
		}
		if (objeto.value.length >= 5){
			if (objeto.value.charAt(5)!="/"){
				objeto.value = objeto.value.substring(0,5) +"/"+ objeto.value.substring(5,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}

function mascaraHora(objeto,event) {
	var tecla;
	
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}

	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {

		if (objeto.value.length >= 2){
			if (objeto.value.charAt(2)!=":"){
				objeto.value = objeto.value.substring(0,2) +":"+ objeto.value.substring(2,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}


//colocar uma validacao para este formato
function mascaraDataHora(objeto,event) {
	var tecla;
	
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}

	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {
	
		if (objeto.value.length >= 2){
			if (objeto.value.charAt(2)!="/"){
				objeto.value = objeto.value.substring(0,2) +"/"+ objeto.value.substring(2,objeto.value.length)
			}
		}
		if (objeto.value.length >= 5){
			if (objeto.value.charAt(5)!="/"){
				objeto.value = objeto.value.substring(0,5) +"/"+ objeto.value.substring(5,objeto.value.length)
			}
		}
		if (objeto.value.length >= 10){
			if (objeto.value.charAt(10)!="-"){
				objeto.value = objeto.value.substring(0,10) +"-"+ objeto.value.substring(10,objeto.value.length)
			}
		}
		if (objeto.value.length >= 13){
			if (objeto.value.charAt(13)!=":"){
				objeto.value = objeto.value.substring(0,13) +":"+ objeto.value.substring(13,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}

function mascaraTelefone(objeto,event){
	var tecla = -1;
	
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}

	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {
	
		if (objeto.value.length >= 3){
			if (objeto.value.charAt(3)!=" "){
				objeto.value = objeto.value.substring(0,3) +" "+ objeto.value.substring(3,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}


function mascaraCpf(objeto,event){
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}

	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {

		if (objeto.value.length >= 3){
			if (objeto.value.charAt(3)!="."){
				objeto.value = objeto.value.substring(0,3) +"."+ objeto.value.substring(3,objeto.value.length)
			}
		}
		if (objeto.value.length >= 7){
			if (objeto.value.charAt(7)!="."){
				objeto.value = objeto.value.substring(0,7) +"."+ objeto.value.substring(7,objeto.value.length)
			}
		}
		if (objeto.value.length >= 11){
			if (objeto.value.charAt(11)!="-"){
				objeto.value = objeto.value.substring(0,11) +"-"+ objeto.value.substring(11,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		objeto.value = objeto.value.substring(0,objeto.value.length-1) //retira o caracter quando nao eh numerico
		event.returnValue = false;
	}
}
/**************************************************************************************************
02.123.123/0001-00
012345678901234567
***************************************************************************************************/
function mascaraCgc(objeto,event){
	var tecla = -1;
	
	if (window.navigator.appName != "Netscape"){
		tecla = event.keyCode;
	}else{
		tecla = event.which;
	}

	if(IsTeclaEspecial(tecla)){
		event.returnValue = true;
	}
	else if(IsNumber(tecla,event)) {
		
		if (objeto.value.length >= 2){
			if (objeto.value.charAt(2)!="."){
				objeto.value = objeto.value.substring(0,2) +"."+ objeto.value.substring(2,objeto.value.length)
			}
		}
		if (objeto.value.length >= 6){
			if (objeto.value.charAt(6)!="."){
				objeto.value = objeto.value.substring(0,6) +"."+ objeto.value.substring(6,objeto.value.length)
			}
		}
		if (objeto.value.length >= 10){
			if (objeto.value.charAt(10)!="/"){
				objeto.value = objeto.value.substring(0,10) +"/"+ objeto.value.substring(10,objeto.value.length)
			}
		}
		if (objeto.value.length >= 15){
			if (objeto.value.charAt(15)!="-"){
				objeto.value = objeto.value.substring(0,15) +"-"+ objeto.value.substring(15,objeto.value.length)
			}
		}
		event.returnValue = true;
	}
	else{
		event.returnValue = false;
	}
}
/**************************************************************************************************
funcao que limita a quantidade de caracteres de um TEXTAREA
parametros: campo e o tamanho maximo 
***************************************************************************************************/
function mascaraTextArea(objeto,tamanho) {
	if (objeto.value.length == 1 && objeto.value.substring(0,1) == " ")
		objeto.value = "";
	else if (objeto.value.length > tamanho)
		objeto.value = objeto.value.substring(0,tamanho);
	return;
}

//Substitui todas as ocorrencias de uma string expressão regular por outra
//Eh usado pelo validaData
function impFormat(instr, reBusca, sTroca,umavez,ignorecase) {
	var x= String(typeof reBusca); // Se vier string - converte em espressão regular para aplicar 'g'=global
    if (x.toUpperCase().indexOf('STRING')>=0){
	  	reBusca = new RegExp(reBusca,((ignorecase)?"i":"")+((umavez)?"":"g"))
	}
    return instr.replace(reBusca,sTroca);
}

