/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|| 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
||
|| this		= recebe o campo
|| formato	= formato da mascara
|| conteudo	= 1 - Só Numeros; 2 - Só Letras; 3 - Numeros e Letras; 4 - Alpha numerico(Qualquer caracter)
*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var caracs = ['.','/','-',':','(',')',','];

function mask(campo,formato,conteudo){
 	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;
	
	campo.maxLength = tamanho;

	switch (conteudo){
		case 1: // Verifica se soh podem ser entrados valores numericos
			if (!(keycode(keyPress)>=48 && keycode(keyPress)<=57))
				event.keyCode=0;
			break;
		case 2: // Somente Letras
			if (!( (keycode(keyPress)>= 97 && keycode(keyPress) <= 122) || (keycode(keyPress)>= 65 && keycode(keyPress) <= 90) ))
				event.keyCode=0;
			break;
		case 3: // Letras e numeros
			if (!( (keycode(keyPress)>=48 && keycode(keyPress)<=57) || (keycode(keyPress)>= 97 && keycode(keyPress) <= 122) || (keycode(keyPress)>= 65 && keycode(keyPress) <= 90) ))
				event.keyCode=0;
			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 = keycode(keyPress);
		if (tecla != 8 && tecla != 45 && tecla != 46 && tecla != 47 && tecla != 58){
			if (campo.value.length == posPonto[i]){
				campo.value = campo.value + '.';
				campo.focus();
			}
			if (campo.value.length == posBarra[i]){
				campo.value = campo.value + '/';
				campo.focus();
			}
			if (campo.value.length == posHifen[i]){
				campo.value = campo.value + '-';
				campo.focus();
			}
			if (campo.value.length == posDblPonto[i]){
				campo.value = campo.value + ':';
				campo.focus();
			}
			if (campo.value.length == posAbrePar[i]){
				campo.value = campo.value + '(';
				campo.focus();
			}
			if (campo.value.length == posFechaPar[i]){
				campo.value = campo.value + ')';
				campo.focus();
			}
			if (campo.value.length == posVirgula[i]){
				campo.value = campo.value + ',';
				campo.focus();
			}

 		}
 	}
}

function keycode(keyPress){
	return keyPress.keyCode;
}

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;
}

