/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|| Script language: JavaScript
|| Funcao para validacao de mascara pre-determinada
|| 
|| Ex:
|| <input type="text" onkeypress="mask(this,'000.000.000.000:000/00-00',1)">
|| Author: Leonardo Marchini Loureiro - Brazil
|| leonardo@loureiro.as
|| Modified: may 11, 2004
|| 
|| Modificado por : John Timóteo Santos  
|| Descrição : Adaptação para que possa ser usada tambem com Firefox ou Netscape.
||			   A função recebeu mais uma parâmetro evento que é necessário para o Mozilla.
||			   O retorno agora é booleano, porque retornando o caracter digitado não era
||			   possível recusar o caracter no Mozilla. 
|| Data : 18-06-2007
||			    
|| this		= recebe o campo
|| formato	= formato da mascara
|| conteudo	= 1 - Só Numeros; 2 - Só Letras; 3 - Numeros e Letras; 4 - Alpha numerico(Qualquer caracter)
|| evento	= o evento é utilizado apenas por browsers que tem o engine do Mozzila (Firefox, Netscape)
*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var caracs = ['.','/','-',':','(',')',','];

function mask(campo,formato,conteudo,evento){
 	var i, j;
 	var auxPonto	= formato;
 	var auxBarra	= formato;
 	var auxHifen	= formato;
	var auxDblPonto = formato;
	var auxAbrePar	= formato;
	var auxFechaPar	= formato;
	var auxVirgula	= formato;
 	var tamanho		= formato.length;
 	var posPonto	= new Array(tamanho);
 	var posBarra	= new Array(tamanho);
 	var posHifen	= new Array(tamanho);
	var posDblPonto	= new Array(tamanho);
	var posAbrePar	= new Array(tamanho);
	var posFechaPar	= new Array(tamanho);
	var posVirgula	= new Array(tamanho);
	//var keyPress	= event;
	
	if(document.all) { // Internet Explorer
	    keyPress = evento.keyCode;
	} else if(document.layers) { // Nestcape
	    keyPress = evento.which;
	} else {
	    keyPress = evento.which;
	    if (keyPress == 8) {
	        return true;
	    }
	}
	
	campo.maxLength = tamanho;
	sValue = campo.value;

	if (keyPress == 0)
	{
		return true;
	}

	switch (conteudo){
		case 1: // Verifica se soh podem ser entrados valores numericos
			if (!(keyPress >= 48 && keyPress <= 57))
				return false;
			break;
		case 2: // Somente Letras
			if (!(keyPress >= 97 && keyPress <= 122) || (keyPress >= 65 && keyPress <= 90))
				return false;
			break;
		case 3: // Letras e numeros
			if (!((keyPress >= 48 && keyPress <= 57) || (keyPress >= 97 && keyPress <= 122) || (keyPress >= 65 && keyPress <= 90) ))
				return false;
			break;
	}


 // ---------------------------------------- PEGA A FORMATACAO DA MASCARA -----------------------------------
 	for (i=0;i<tamanho;i++){
 		
 		posPonto[i] 	= auxPonto.indexOf('.');
 		posBarra[i] 	= auxBarra.indexOf('/');
 		posHifen[i] 	= auxHifen.indexOf('-');
		posDblPonto[i]	= auxDblPonto.indexOf(':');
		posAbrePar[i]	= auxAbrePar.indexOf('(');
		posFechaPar[i]	= auxFechaPar.indexOf(')');
		posVirgula[i]	= auxVirgula.indexOf(',');

 		auxPonto 	= auxPonto.substring(posPonto[i]+1,tamanho);
 		auxBarra 	= auxBarra.substring(posBarra[i]+1,tamanho);
 		auxHifen	= auxHifen.substring(posHifen[i]+1,tamanho);
		auxDblPonto	= auxDblPonto.substring(posDblPonto[i]+1,tamanho);
		auxAbrePar	= auxAbrePar.substring(posAbrePar[i]+1,tamanho);
		auxFechaPar	= auxFechaPar.substring(posFechaPar[i]+1,tamanho);
		auxVirgula	= auxVirgula.substring(posVirgula[i]+1,tamanho);
 		
 		if (i > 0){
 			posPonto[i]		= posPonto[i] + posPonto[i-1];
 			posBarra[i]		= posBarra[i] + posBarra[i-1];
 			posHifen[i]		= posHifen[i] + posHifen[i-1];
			posDblPonto[i]	= posDblPonto[i] + posDblPonto[i-1];
			posAbrePar[i]	= posAbrePar[i] + posAbrePar[i-1];
			posFechaPar[i]	= posFechaPar[i] + posFechaPar[i-1];
			posVirgula[i]	= posVirgula[i] + posVirgula[i-1];

 			posPonto[i]		= posPonto[i] + 1;
 			posBarra[i]		= posBarra[i] + 1;
 			posHifen[i]		= posHifen[i] + 1;
			posDblPonto[i]	= posDblPonto[i] + 1;
			posAbrePar[i]	= posAbrePar[i] + 1;
			posFechaPar[i]	= posFechaPar[i] + 1;
			posVirgula[i]	= posVirgula[i] + 1;
 		}

 		/*
		alert('I ' + i +'\nAuxPonto		'+ auxPonto 	+' PosPonto		'+ posPonto[i]		+
						'\nAuxBarra		'+ auxBarra 	+' PosBarra		'+ posBarra[i]		+
						'\nAuxHifen		'+ auxHifen 	+' PosHifen		'+ posHifen[i]		+
						'\nAuxDblPonto	'+ auxDblPonto	+' PosDblPonto	'+ posDblPonto[i]	+
						'\nAuxAbrePar	'+ auxAbrePar	+' PosAbrePar	'+ posAbrePar[i]	+
						'\nAuxFechaPar	'+ auxFechaPar	+' PosFechaPar	'+ posFechaPar[i]	+
						'\nAuxVirgula	'+ auxVirgula	+' PosVirgula	'+ posVirgula[i]	);
		//*/

	// ---------------------------------------- APLICA A FORMATACAO DA MASCARA -----------------------------------
		tecla = keyPress;
		if (tecla != 8 && tecla != 45 && tecla != 46 && tecla != 47 && tecla != 58){
			if (sValue.length == posPonto[i]){
				sValue = sValue + '.';
			}
			if (sValue.length == posBarra[i]){
				sValue = sValue + '/';
			}
			if (sValue.length == posHifen[i]){
				sValue = sValue + '-';
			}
			if (sValue.length == posDblPonto[i]){
				sValue = sValue + ':';
			}
			if (sValue.length == posAbrePar[i]){
				sValue = sValue + '(';
			}
			if (sValue.length == posFechaPar[i]){
				sValue = sValue + ')';
			}
			if (sValue.length == posVirgula[i]){
				sValue = sValue + ',';
			}

 		}
 	}

	campo.value = sValue;
	campo.focus();

}


function limpaMascara(str){
	for (var i=0;i<str.length;i++)
		for (var j=0;j<caracs.length;j++)
			if (caracs[j] == str.charAt(i))
				str = str.replace(caracs[j],'');
	return str;
}