function Left(str, n)
{
	if (n <= 0)     // Invalid bound, return blank string
			return "";
	else if (n > String(str).length)   // Invalid bound, return
			return str;                // entire string
	else // Valid bound, return appropriate substring
			return String(str).substring(0,n);
}


function IgnoreKey(pressKey) {

	if ((pressKey == 8) || (pressKey == 9) || (pressKey == 16) || (pressKey == 37) || (pressKey == 38) || (pressKey == 39) || (pressKey == 40) || (pressKey == 46)) {
		return false;
	} else {
		return true;
	}

}


function GoNextField(thisfield, nextfield, size) {
	
	var pressKey = window.event.keyCode;

	if ((pressKey == 8) || (pressKey == 9) || (pressKey == 16) || (pressKey == 37) || (pressKey == 38) || (pressKey == 39) || (pressKey == 40) || (pressKey == 46)) {

	} else {
		if (document.getElementById(thisfield).value.length == size) {
			document.getElementById(nextfield).focus();
		}
	}
}


function Mascara (formato, keypress, objeto) {

	campo = eval (objeto);

	// IGNORA TECLAS

	if (keypress == 40) {
		return false;
	}


	// TECLADO NUMÉRICO

	var numeros_array = new Array(96,97,98,99,100,101,102,103,104,105);
	var numeros_code  = '';
	for (j=0; j<numeros_array.length; j++) {
		numeros_code += String.fromCharCode(numeros_array[j]);
	}


	// CEP

	if (formato=='CEP')	{
		caracteres = '01234567890' + numeros_code;
		separacoes = 1;
		separacao1 = '-';
		conjuntos = 2;
		conjunto1 = 5;
		conjunto2 = 3;
		if ((caracteres.search(String.fromCharCode (keypress))!=-1) && campo.value.length < 
		(conjunto1 + conjunto2 + 1)) {
			if (campo.value.length == conjunto1) {
			   campo.value = campo.value + separacao1;
			}
		} else {
			if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
				event.returnValue = false;
			}
		}
	}


	// DATA

	if (formato=='DATA') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 2;
			separacao1 = '/';
			separacao2 = '/';
			conjuntos = 3;
			conjunto1 = 2;
			conjunto2 = 2;
			conjunto3 = 4;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + conjunto3 + 2)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
				if (campo.value.length == conjunto1 + conjunto2 + 1) {
				   campo.value = campo.value + separacao2;
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}



	// HORA

	if (formato=='HORA') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 1;
			separacao1 = ':';
			conjuntos = 2;
			conjunto1 = 2;
			conjunto2 = 2;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + 1)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}



	// TELEFONE

	if (formato=='TELEFONE') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 3;
			separacao1 = '(';
			separacao2 = ')';
			separacao3 = ' ';
			separacao4 = '-';
			conjuntos = 3;
			conjunto1 = 0;
			conjunto2 = 3;
			conjunto3 = 6;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + conjunto3 + 6)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
				if (campo.value.length == conjunto1 + conjunto2 + 1) {
				   campo.value = campo.value + separacao2 + separacao3;
				}
				if (campo.value.length == conjunto1 + conjunto2 + conjunto3 + 1) {
				   campo.value = campo.value + separacao4;
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}



	// NUMERO

	if (formato=='NUMEROS')	{
		caracteres = '01234567890' + numeros_code;
		if (!(caracteres.search(String.fromCharCode (keypress))!=-1)) {
			if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
				event.returnValue = false;
			}
		}
	}

	
	// PERIODO

	if (formato=='PERIODO') {
		caracteres = '01234567890' + numeros_code;
		separacoes = 1;
		separacao1 = '/';
		conjuntos = 2;
		conjunto1 = 2;
		conjunto2 = 4;

		if ((caracteres.search(String.fromCharCode (keypress))!=-1) && campo.value.length < 
		(conjunto1 + conjunto2 + 1)) {
			if (campo.value.length == conjunto1) {
			   campo.value = campo.value + separacao1;
			}
		} else {
			if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
				event.returnValue = false;
			}
		}
	}


	// CNPJ

	if (formato=='CNPJ') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 4;
			separacao1 = '.';
			separacao2 = '.';
			separacao3 = '/';
			separacao4 = '-';
			conjuntos = 5;
			conjunto1 = 2;
			conjunto2 = 3;
			conjunto3 = 3;
			conjunto4 = 4;
			conjunto5 = 2;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + conjunto3 + conjunto4 + conjunto5 + 4)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
				if (campo.value.length == conjunto1 + conjunto2 + 1) {
				   campo.value = campo.value + separacao2;
				}
				if (campo.value.length == conjunto1 + conjunto2 + conjunto3 + 2) {
				   campo.value = campo.value + separacao3;
				}
				if (campo.value.length == conjunto1 + conjunto2 + conjunto3 + conjunto4 + 3) {
				   campo.value = campo.value + separacao4;
				}
				if (campo.value.length == conjunto1 + conjunto2 + conjunto3 + conjunto4 + conjunto5 + 4) {
				   campo.value = campo.value
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}


	// CPF
	
	if (formato=='CPF') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 3;
			separacao1 = '.';
			separacao2 = '.';
			separacao3 = '-';
			conjuntos = 4;
			conjunto1 = 3;
			conjunto2 = 3;
			conjunto3 = 3;
			conjunto4 = 2;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + conjunto3 + conjunto4 + 3)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
				if (campo.value.length == conjunto1 + conjunto2 + 1) {
				   campo.value = campo.value + separacao2;
				}
				if (campo.value.length == conjunto1 + conjunto2 + conjunto3 + 2) {
				   campo.value = campo.value + separacao3;
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}


	// PIS

	if (formato=='PIS') {
		especiais  =  String.fromCharCode(8) + String.fromCharCode(9) + String.fromCharCode(37) + String.fromCharCode(38) + String.fromCharCode(39) + String.fromCharCode(46);
		if (keypress == 40) {  
		} else { 
			caracteres = '01234567890' + numeros_code;
			separacoes = 1;
			separacao1 = '-';
			conjuntos = 2;
			conjunto1 = 10;
			conjunto2 = 1;
			if ((caracteres.search(String.fromCharCode (keypress))!=-1) && !(especiais.search(String.fromCharCode(keypress)) == false) && campo.value.length < 
			(conjunto1 + conjunto2 + 1)) {
				if (campo.value.length == conjunto1) {
					campo.value = campo.value + separacao1;
				}
			} else {
				if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
					event.returnValue = false;
				}
			}
		}
	}


	// REMOVE ACENTO

	if (formato=='SEMACENTO') {
		caracteres = 'ÃÕÁÀÍÉÓÚÇãõáàíéóúç';
		caracteres = caracteres + String.fromCharCode(222);
		tecla = caracteres.search(String.fromCharCode(keypress)); 
		if (tecla !=-1) {
			if (keypress != 8 && keypress != 9 && keypress != 27 && keypress != 13 && keypress != 35 && keypress != 36 && keypress != 46) { 
				event.returnValue = false;
			}
		}
	}

}



function RemoveAcento(campo) {
	
	var char_comacento = new Array("Ã","Á","À","Â","É","È","Ê","Í","Ì","Ó","Ô","Õ","Ú","Ü","Ç","Ñ","ã","á","à","â","è","é","ê","í","ì","ó","ô","õ","ú","ü","ç","ñ","'");
	var char_semacento = new Array("A","A","A","A","E","E","E","I","I","O","O","O","U","U","C","N","a","a","a","a","e","e","e","i","i","o","o","o","u","u","c","n","`");

	var result;

	for (i=0; i < campo.value.length; i++) {

		for (j=0; j < char_comacento.length; j++) {
			campo.value = campo.value.replace(char_comacento[j], char_semacento[j])
		}

	}

}


// ****************************************************************************
// Função MID em Javascript
// ****************************************************************************

function Mid(str, start, len) {
	// Make sure start and len are within proper bounds
	if (start < 0 || len < 0) return "";

	var iEnd, iLen = String(str).length;
	if (start + len > iLen)
		iEnd = iLen;
	else
		iEnd = start + len;

	return String(str).substring(start,iEnd);
}


// ****************************************************************************
// Verifica o navegador do Usuario
// ****************************************************************************

function SetBrowser(ev) {

	var browser = navigator.userAgent.toLowerCase();	
	var result;

	if (browser.indexOf("msie") > 0) {
		//	Internet Explorer
			result = ev.keyCode;
	} else {
		//	Compatible Mozilla
			result = ev.which;
	}

	return result;
}
// ****************************************************************************
// Verifica se a tecla pressionada não refere-se a uma tecla especial
// ****************************************************************************

function chkEspecial(code) {

	var k_undefined   = 0;
	var k_backspace   = 8;
	var k_tab		  = 9;
	var k_enter		  = 13;
	var k_home		  = 35;
	var k_end		  = 36;
	var k_leftarrow	  = 37;
	var k_toparrow	  = 38;
	var k_rigtharrow  = 39;
	var k_bottomarrow = 40;
	var k_unknown1	  = 16;
	var k_unknown2	  = 17;
	var k_unknown3	  = 18;

	if ((code != k_undefined) && (code != k_backspace) && (code != k_tab) && (code != k_enter) && (code != k_home) && (code != k_end) && (code != k_leftarrow) && (code != k_toparrow) && (code != k_rigtharrow) && (code != k_bottomarrow) && (code != k_unknown1) && (code != k_unknown2) && (code != k_unknown3)) {
		return true;
	} 

}


// ****************************************************************************
//  Máscara para Data --> dd/mm/aaaa
//	Utilização: <input type="text" name="dat1" id="dat1" size="8"
//				 onkeypress="return maskDate(this, 'next_field', 10, event);" 
//				 autocomplete="off" >
// ****************************************************************************

function maskDate(fld, next, len, ev) {

	var code  = SetBrowser(ev);
	var str   = fld.value + String.fromCharCode(code);
	var del01 = '/';
	var del02 = '/';

	if (code >= 45 && code <= 57) {

		str = str.replace(del01, '');
		str = str.replace(del02, '');
		tam = str.length;

		if (tam == 2) {
			// 99/
			str = Mid(str, 0, 2) + del01;
		}

		if (tam == 3) {
			// 99/9
			str = Mid(str, 0, 2) + del02 + Mid(str, 2, 2);
		}

		if (tam == 4) {
			// 99/99/
			str = Mid(str, 0, 2) + del02 + Mid(str, 2, 2) + del01;
		}

		if (tam >= 5 && tam <= 10) {
			// 99/99/9999
			str = Mid(str, 0, 2) + del02 + Mid(str, 2, 2) + del01 + Mid(str, 4, 4);
		}

		// Verifica se o tamanho dos dados é igual ao tamanho máx. do campo
		if (tam+2 >= len) {
			if (next != '') {
				var nfld = document.getElementById(next);
				if (nfld) { 
					nfld.focus();
				}
			}
			ev.returnValue = false;
		}

		fld.value = str;

		return false;

	} else {

		if (chkEspecial(code)) {
			ev.returnValue = false;
			return false;
		}
		
	}

}


// ****************************************************************************
//  Máscara para Número --> 99.999.999,99
//	Utilização: <input type="text" name="num1" id="num1" size="8"
//				 onkeypress="return maskNumber(this, 'next_field', 6, 0, event);" 
//				 autocomplete="off" >
// ****************************************************************************

function maskNumber(fld, next, len, dec, ev) {

	var code = SetBrowser(ev);
	var str  = fld.value + String.fromCharCode(code);
	var del01 = ',';
	var del02 = '.';
	var del03 = '.';


	if (code >= 45 && code <= 57) {

		fld.style.textAlign = 'right';
		str = str.replace(del01, '');
		str = str.replace(del02, '');
		str = str.replace(del03, '');
		tam = str.length;

if (dec < 3)
{
		if (tam == 1) {
			// 0,09
				str = '0' + del01 + '0' + str;				
	
		}

		if (tam == 4) {
			if (Mid(str, 0, 1) == '0') {
			// 9,99
				str = Mid(str, 1, 1) + del01 + Mid(str, 2, 2);
			} else {
			// 99,99
				str = Mid(str, 0, 2) + del01 + Mid(str, 2, 2);
			}
		}

		if (tam == 5) {
			// 999,99

				str = Mid(str, 0, 3) + del01 + Mid(str, 3, 2);

		}

		if (tam == 6) {


				str = Mid(str, 0, 1) + del02 + Mid(str, 1, 3) + del01 + Mid(str, 4, 2);

				
		}

		if (tam == 7) {
			// 99.999,99

			str = Mid(str, 0, 2) + del02 + Mid(str, 2, 3) + del01 + Mid(str, 5, 2);

		}

		if (tam == 8) {
			// 999.999,99

			str = Mid(str, 0, 3) + del02 + Mid(str, 3, 3) + del01 + Mid(str, 6, 2);

		}

		if (tam == 9) {
			// 9.999.999,99
			str = Mid(str, 0, 1) + del03 + Mid(str, 1, 3) + del02 + Mid(str, 4, 3) + del01 + Mid(str, 7, 2);
		}

		if (tam == 10) {
			// 99.999.999,99
			str = Mid(str, 0, 2) + del03 + Mid(str, 2, 3) + del02 + Mid(str, 5, 3) + del01 + Mid(str, 8, 2);
		}

		if (tam == 11) {
			// 999.999.999,99
			str = Mid(str, 0, 3) + del03 + Mid(str, 3, 3) + del02 + Mid(str, 6, 3) + del01 + Mid(str, 9, 2);
		}
}
else
{

		if (tam == 1) {
			str = '0' + del01 + addxZeros('0' + str,dec);				
		}	

		if (tam == 5) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
			str = Mid(str, 0, 5 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
		}
		
		if (tam == 6) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
			str = Mid(str, 0, 6 -dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
		}

		if (tam == 7) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
				if (tam - dec < 4)
					{
					str = Mid(str, 0, 7 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
				else
					{
					str = Mid(str, 0, 1) + del02 + Mid(str, 1, 6 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
			}
		}
		
		if (tam == 8) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
				if (tam - dec < 4)
					{
					str = Mid(str, 0, 8 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
				else
					{
					str = Mid(str, 0, 5 - dec) + del02 + Mid(str, 5 - dec, 3) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
			}
		}
		
		
		if (tam == 9) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
				if (tam - dec < 4)
					{
					str = Mid(str, 0, 9 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
				else
					{
					str = Mid(str, 0, 6 - dec) + del02 + Mid(str, 6 - dec, 3) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
			}
		}
	
		if (tam == 10) {
			if (Mid(str,0,1) == '0')
			{
				str = Mid(str,1,1) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
			}
			else
			{
				if (tam - dec > 3)
				{
					if (tam - dec < 7)
					{
					str = Mid(str, 0, 7 - dec) + del02 + Mid(str, 7 - dec, 3) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
				else
					{
					str = Mid(str, 0, 1) + del03 + Mid(str, 1, 6 - dec) + del02 + Mid(str, 6 - dec, 3) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
					}
				}
				else
				{
					str = Mid(str, 0, 10 - dec ) + del01 + addxZeros(Mid(str, tam-dec, dec),dec);
				}
			}
		}
	
}



		// Verifica se o tamanho dos dados é igual ao tamanho máx. do campo
		if (tam-1 >= len) {
			if (next != '') {
				var nfld = document.getElementById(next);
				if (nfld) { 
					nfld.focus();
				}
			}
			ev.returnValue = false;
			return false;
		}

		fld.value = str;
		ev.returnValue = false;
		return false;


	} else {

		if (chkEspecial(code)) {
			ev.returnValue = false;
			return false;
		}
		
	}

}

