	function IsEmail(Email){
		var blnInvalidos = false;
		var cp = "";
		var invalidos = "ÁÀÃÂÄÇÉÈÊËÍÌÎÏÓÒÕÔÖÚÙÛÜáàãâäçéèêëíìîïóòõôöúùûü`´^~¨'\"#$%¨&*()-_+={}[]<>:;?!,/|";
		var obrigatorios = "@."

		tam = Email.length;

		for (i = 0; i < tam ; i++) {  
			if(invalidos.indexOf(Email.substring(i,i + 1))!=-1){
				blnInvalidos = true;
			}
		}

		if(blnInvalidos)
			return false;

		if(Email.indexOf("@")==-1)
			return false;

		if(Email.indexOf(".")==-1)
			return false;

		return true;
	}
	
	function IsNumber(Number){
		var validos = "0123456789";
		tam = Number.length;

		if(Number=="")
			return false;

		for (i = 0; i < tam ; i++) {  
			if(validos.indexOf(Number.substring(i,i + 1))==-1){
			 	return false;}
		}

		return(true)
	}
	
	function IsMoney(Number){
		var validos = "0123456789";
		num = filterValue(Number);
		tamNumber = Number.length
		tam = num.length;

		if(Number.charAt(tamNumber-3)=='.'){
			for (i = 0; i < tam ; i++) {
				if(validos.indexOf(num.substring(i,i + 1))==-1){
			 		return false;}
			}
		}
		else{
			return(false);
		}

		return(true)
	}

	function IsDate(Date){
		Dia = Date.substring(0,2);
		Mes = Date.substring(3,5);
		Ano = Date.substring(6,10);
		UltDia = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	
		/* Se o primeiro é numero */
		if(IsNumber(Dia))
			if(IsNumber(Mes))
				if(Date.charAt(2)=="/")
					if(parseFloat(Mes) > 0 && parseFloat(Mes) < 13)
						if(parseFloat(Dia) > 0 && parseFloat(Dia) <= UltDia[parseFloat(Mes)-1])
							if(Date.charAt(5)=="/")
								if(parseFloat(Ano) >= 0)
									return(true);
								else
									return(false);
							else
								return(false);
						else
							return(false);
					else
						return(false);
				else
					return(false);
		else
			return(false);
	}
	
	function IsTime(Time){
		Hora = Time.substring(0,2);
		Minuto = Time.substring(3,5);
	
		if(IsNumber(Hora) && parseInt(Hora) >= 0 && parseInt(Hora) < 24)
			if(IsNumber(Minuto) && parseInt(Minuto) >= 0 && parseInt(Minuto) < 60)
				return(true);
			else
				return(false);
		else
			return(false);
	}
	
	function IsTimeComplete(Time){
		Hora = Time.substring(0,2);
		Minuto = Time.substring(3,5);
		Segundo = Time.substring(6,8);
	
		if(IsNumber(Hora) && parseInt(Hora) >= 0 && parseInt(Hora) < 24)
			if(IsNumber(Minuto) && parseInt(Minuto) >= 0 && parseInt(Minuto) < 60)
				if(IsNumber(Segundo) && parseInt(Segundo) >= 0 && parseInt(Segundo) < 60)
					return(true);
				else
					return(false);
			else
				return(false);
		else
			return(false);
	}
	
	function IsCPF(CPF){
		var varCPF="";
		var indSoma, varSoma, varDigito1, varvarDigito2;
		
		varCPF = filterValue(CPF);
		
		if(varCPF.length != 11)
			return(false);
      
		/* Evitar que o 00000000000 passe pelo teste */
		if(CPF == "00000000000")
			return(false);

		/* Verificar o primeiro digito */
		varSoma = 0;
  
		for(indSoma=0; indSoma<=8; indSoma++){varSoma = varSoma + (parseInt(varCPF.charAt(indSoma))*(indSoma+1));}
  
		/* Obter o resto da divisao da soma com 11 */
		varDigito1 = varSoma % 11;
  
		/* Caso seja 10, deve-se transformar para 0 */
		if(varDigito1 == 10) 
			varDigito1 = 0;

		/* Verificar o segundo digito */
		varSoma = 0;
  
		for(indSoma=0; indSoma<=7; indSoma++){varSoma = varSoma + (parseInt(varCPF.charAt(indSoma+1))*(indSoma+1));}

		varSoma = varSoma + (varDigito1*9);

		/* Obter o resto da divisao da soma com 11 */
		varDigito2 = varSoma % 11;

		/* Caso seja 10, deve-se transformar para 0 */
		if(varDigito2 == 10){varDigito2 = 0;}
		
		/* Fazer a validacao dos digitos com os digitos verificadores do CPF */
		if(varDigito1 == parseInt(varCPF.charAt(9)) && varDigito2 == parseInt(varCPF.charAt(10))){return(true);}
	
		return(false);
	}
	
	function IsCNPJ(CNPJ){
		var varCNPJ="";
		var indSoma, varSoma, varDigito1, varDigito2;

		varCNPJ = filterValue(CNPJ);
   
		/* Validar o tamanho */
		if(varCNPJ.length != 14)
			return(false);  
  
		/* Verificar o primeiro digito */
		varSoma = 0;
		varMult = 5;

		for(indSoma=0; indSoma<12; indSoma++){
			if(varMult==1){varMult=9};
			varSoma += parseInt(varCNPJ.charAt(indSoma))*varMult;
			varMult -= 1;
		}	
		 
		varDigito1 = varSoma % 11;
  
		if(varDigito1 <= 1){varDigito1 = 0;}else{varDigito1 = 11 - varDigito1;}

		/* Verificar o segundo digito */
		varSoma = 0;
		varMult = 6;

		for(indSoma=0; indSoma<12; indSoma++){
			if(varMult==1){varMult=9};
			varSoma += parseInt(varCNPJ.charAt(indSoma))*varMult;
			varMult -= 1;
		}	

		varSoma += varDigito1*2;
		varDigito2 = varSoma % 11;

		if(varDigito2 <= 1){varDigito2 = 0;}else{varDigito2 = 11 - varDigito2;}

		/* Fazer a validacao dos digitos com os digitos verificadores do CNPJ */
		if(parseInt(varCNPJ.charAt(12)) == varDigito1 && parseInt(varCNPJ.charAt(13)) == varDigito2){return(true)};

		return(false);
	}
	
	function IsCEPUf(varUf, varCep){
		varCepFiltrado = filterValue(varCep);

		var varCepParc = varCepFiltrado.substring(0, 3);


		if( varUf.length == 0 || varCepParc == 0 )
			return false;

		switch ( varUf ){
			case 'AC':
				if( varCepParc == 699 ) bOk = true; else bOk = false;
				break;

			case 'AL':
				if( varCepParc >= 570 && varCepParc <= 579 ) bOk = true; else bOk = false;
				break;

			case 'AM':
				if( (varCepParc >= 690 && varCepParc <= 692) || (varCepParc >= 694 && varCepParc <= 698) ) bOk = true; else bOk = false;
				break;

			case 'AP':
				if( varCepParc == 689 ) bOk = true; else bOk = false;
				break;

			case 'BA':
				if( varCepParc >= 400 && varCepParc <= 489 ) bOk = true; else bOk = false;
				break;

			case 'CE':
				if( varCepParc >= 600 && varCepParc <= 639 ) bOk = true; else bOk = false;
				break;

			case 'DF':
				if( (varCepParc >= 700 && varCepParc <= 727) || (varCepParc >= 730 && varCepParc <= 736) ) bOk = true; else bOk = false;
				break;

			case 'ES':
				if( varCepParc >= 290 && varCepParc <= 299 ) bOk = true; else bOk = false;
				break;

			case 'GO':
				if( (varCepParc >= 728 && varCepParc <= 729) || (varCepParc >= 737 && varCepParc <= 769) ) bOk = true; else bOk = false;
				break;

			case 'MA':
				if( varCepParc >= 650 && varCepParc <= 659 ) bOk = true; else bOk = false;
				break;

			case 'MG':
				if( varCepParc >= 300 && varCepParc <= 399 ) bOk = true; else bOk = false;
				break;

			case 'MS':
				if( varCepParc >= 790 && varCepParc <= 799 ) bOk = true; else bOk = false;
				break;

			case 'MT':
				if( varCepParc >= 780 && varCepParc <= 788 ) bOk = true; else bOk = false;
				break;

			case 'PA':
				if( varCepParc >= 660 && varCepParc <= 688 ) bOk = true; else bOk = false;
				break;

			case 'PB':
				if( varCepParc >= 580 && varCepParc <= 589 ) bOk = true; else bOk = false;
				break;

			case 'PE':
				if( varCepParc >= 500 && varCepParc <= 569 ) bOk = true; else bOk = false;
				break;

			case 'PI':
				if( varCepParc >= 640 && varCepParc <= 649 ) bOk = true; else bOk = false;
				break;

			case 'PR':
				if( varCepParc >= 800 && varCepParc <= 879 ) bOk = true; else bOk = false;
				break;

			case 'RJ':
				if( varCepParc >= 200 && varCepParc <= 289 ) bOk = true; else bOk = false;
				break;

			case 'RN':
				if( varCepParc >= 590 && varCepParc <= 599 ) bOk = true; else bOk = false;
				break;

			case 'RO':
				if( varCepParc == 789 ) bOk = true; else bOk = false;
				break;

			case 'RR':
				if( varCepParc == 693 ) bOk = true; else bOk = false;
				break;

			case 'RS':
				if( varCepParc >= 900 && varCepParc <= 999 ) bOk = true; else bOk = false;
				break;

			case 'SC':
				if( varCepParc >= 880 && varCepParc <= 899 ) bOk = true; else bOk = false;
				break;

			case 'SE':
				if( varCepParc >= 490 && varCepParc <= 499 ) bOk = true; else bOk = false;
				break;

			case 'SP':
				if( varCepParc >= 10 && varCepParc <= 199 ) bOk = true; else bOk = false;
				break;

			case 'TO':
				if( varCepParc >= 770 && varCepParc <= 779 ) bOk = true; else bOk = false;
				break;
		}

		if( bOk == false )
			return false;

		return true;
	}

	function checkFieldSize(campo, quantidade){
	/*
		if(parseInt(campo.value.length) > parseInt(quantidade)){
			window.alert("Este campo deve conter até " + quantidade + " caracteres!");
			campo.value = campo.value.substring(0, parseInt(quantidade)-1);
			campo.focus();
		}
		*/
	}

	function completeDecimal(campo, decimais, decimalformat) {
		numDecimalStart = 0;

		switch(decimalformat){
			case "BR":
				if(campo.value.length > decimais){decimal = ","}else{decimal = "";};
				break;

			case "US":
				if(campo.value.length > decimais){decimal = "."}else{decimal = "";};
				break;
		}
		
		if(decimal!=""){
			numDecimalStart = (campo.value.length - 1) - (campo.value.lastIndexOf(decimal));
		}

		for(d=numDecimalStart;d<decimais;d++){campo.value = filterValue(campo.value) + "0";}
	}

	function filterFieldValue(campo){
		var s = "";
		var cp = "";
		var invalidos = "AÁÀÃÂÄBCÇDEÉÈÊËFGHIÍÌÎÏJKLMNOÓÒÕÔÖPQRSTUÚÙÛÜVWXYZaáàãâäbcçdeéèêëfghiíìîïjklmnoóòõôöpqrstuúùûüvwxyz`´^~¨'\"@#$%¨&*()-_+={}[]<>:;?,./| ";

		vr = campo.value;
		tam = vr.length;
		for (i = 0; i < tam ; i++) {  
			if(invalidos.indexOf(vr.substring(i,i + 1))==-1){
			 	s = s + vr.substring(i,i + 1);}
		}
		campo.value = s;
		return cp = campo.value
	}
	
	function filterPassword(campo){
		var s = "";
		var cp = "";
		var invalidos = "ÁÀÃÂÄÇÉÈÊËÍÌÎÏÓÒÕÔÖÚÙÛÜáàãâäçéèêëíìîïóòõôöúùûü`´^~¨'\"@#$%¨&*()-_+={}[]<>:;?,./|";

		vr = campo.value;
		tam = vr.length;
		for (i = 0; i < tam ; i++) {  
			if(invalidos.indexOf(vr.substring(i,i + 1))==-1){
			 	s = s + vr.substring(i,i + 1);}
		}
		campo.value = s;
		return cp = campo.value
	}
	
	function filterValue(Valor){
		var s = "";
		var cp = "";
		var invalidos = "AÁÀÃÂÄBCÇDEÉÈÊËFGHIÍÌÎÏJKLMNOÓÒÕÔÖPQRSTUÚÙÛÜVWXYZaáàãâäbcçdeéèêëfghiíìîïjklmnoóòõôöpqrstuúùûüvwxyz`´^~¨'\"@#$%¨&*()-_+={}[]<>:;?,./|";

		vr = Valor;
		tam = vr.length;
		for (i = 0; i < tam ; i++) {  
			if(invalidos.indexOf(vr.substring(i,i + 1))==-1){
			 	s = s + vr.substring(i,i + 1);}
		}

		return s
	}
	
	function formatValue(campo, decimais, decimalformat) {
		//if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		filterFieldValue(campo);

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		switch(decimalformat){
			case "BR":
				if(decimais > 0){decimal = ","}else{decimal = "";};
				milhar  = ".";
				break;

			case "US":
				if(decimais > 0){decimal = "."}else{decimal = "";};
				milhar  = ",";
				break;
		}

		if( tam <= decimais ){ 
	 		campo.value = vr ; }
	 	if( (tam > decimais) && (tam <= decimais+3) ){
	 		campo.value = vr.substr( 0, tam - decimais ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+4) && (tam <= decimais+6) ){
	 		campo.value = vr.substr( 0, tam - decimais - 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+7) && (tam <= decimais+9) ){
	 		campo.value = vr.substr( 0, tam - decimais - 6  ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+10) && (tam <= decimais+12) ){
	 		campo.value = vr.substr( 0, tam - decimais - 9 ) + milhar + vr.substr( tam - decimais - 9, 3 ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
	 	if( (tam >= decimais+13) && (tam <= decimais+15) ){
	 		campo.value = vr.substr( 0, tam - decimais - 12 ) + milhar + vr.substr( tam - decimais - 12, 3 ) + milhar + vr.substr( tam - decimais - 9, 3 ) + milhar + vr.substr( tam - decimais - 6, 3 ) + milhar + vr.substr( tam - decimais - 3, 3 ) + decimal + vr.substr( tam - decimais, tam ) ; }
		return;
	}

	function formatDate(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 5 && tam < 7 )
			campo.value = vr.substr( 0, 2  ) + '/' + vr.substr( tam - 4, tam );
		if( tam >= 7 && tam <= 10 ) 
			campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}
	
	function formatHour(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 4 )
		{
			vr = campo.value.substr( 0, 4 );
			
			tam = 4;
		}

		if( tam > 2 && tam < 5 ){
			campo.value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );

			if( tam == 4 )
				if( !IsTime(campo.value) )
					campo.value = "";
		}
	}
	
	function formatFullHour(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
		if( tam >= 5 && tam <= 8 ) 
			campo.value = vr.substr( 0, 2 ) + ':' + vr.substr( 2, 2 ) + ':' + vr.substr( 4, 2 ); 
	}
	
	function formatCEP(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + '.' + vr.substr( tam - 2, tam );
		if( tam >= 5 && tam <= 8 ) 
			campo.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '-' + vr.substr( 5, 3 ); 
	}
	
	function formatCNPJ(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;

		if( vr.length >= 2 && vr.length < 5 )
			campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, vr.length-2 );
		if( vr.length >= 5 && vr.length < 8 )
			campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, vr.length-5 );
		if( vr.length >= 9 && vr.length < 12 )
			campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, vr.length-8 );
		if( vr.length > 12 )
			campo.value = vr.substr( 0, 2  ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, vr.length-2 );
	}
	
	function formatCPF(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;

		if( vr.length >=3 && vr.length < 6 )
			campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, vr.length-3 );
		if( vr.length >=6 && vr.length < 9 )
			campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, vr.length-6 );
		if( vr.length > 9 )
			campo.value = vr.substr( 0, 3  ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) + '-' + vr.substr( 9, vr.length-9 );
	}
	
	function formatText(Texto){
		vr = Texto;
		tam = vr.length;
		varTexto = "";

		for(i=0; i < tam; i++){
			switch(vr.charAt(i)){
				case "á" || "à" || "ã" || "â" || "ä" :
					varTexto = varTexto + "a";
					break;

				case "Á" || "À" || "Ã" || "Â" || "Ä" :
					varTexto = varTexto + "A";
					break;

				case "é" ||  "è" || "ê" || "ë" :
					varTexto = varTexto + "e";
					break;

				case "É" || "È" || "Ê" || "Ë" :
					varTexto = varTexto + "E";
					break;

				case "í" || "ì" || "î" || "ï" :
					varTexto = varTexto + "i";
					break;

				case "Í" || "Ì" || "Î" || "Ï" :
					varTexto = varTexto + "I";
					break;

				case "ó" || "ò" || "õ" || "ô" || "ö" :
					varTexto = varTexto + "o";
					break;

				case "Ó" || "Ò" || "Õ" || "Ô" || "Ö" :
					varTexto = varTexto + "O";
					break;

				case "ú" || "ù" || "û" || "ü" :
					varTexto = varTexto + "u";
					break;

				case "Ú" || "Ù" || "Û" || "Ü" :
					varTexto = varTexto + "U";
					break;

				case "ç" || "Ç" :
					varTexto = varTexto + "C";
					break;

				case " " :
					varTexto = varTexto + "_";
					break;

				default:
					varTexto = varTexto + vr.charAt(i);
					break;
			}
		}

		return varTexto;
	}

	function formatTelephone(campo){
		if(document.all){if(window.event.keyCode==8 || window.event.keyCode==37 || window.event.keyCode==39 || window.event.keyCode==46)return false;}

		campo.value = filterFieldValue(campo);
		vr = campo.value;
		tam = vr.length;

		if( tam > 2 && tam <= 5 && vr.substr( 0, 1 ) != '0')
			campo.value = '(' + vr.substr( 0, tam - 2  ) + ')' + vr.substr( tam - 2, tam );
		if( tam >= 6 && tam <= 9 && vr.substr( 0, 1 ) != '0') 
			campo.value = '(' + vr.substr( 0, 2 ) + ')' + vr.substr( 2, 3 ) + '-' + vr.substr( 5, 4 ); 
		if( tam == 10 && vr.substr( 0, 1 ) != '0')
			campo.value = '(' + vr.substr( 0, 2 ) + ')' + vr.substr( 2, 4 ) + '-' + vr.substr( 6, 4 ); 
		if( tam == 10 && vr.substr( 0, 1 ) == '0')
			campo.value = vr.substr( 0, 4 ) + ' ' + vr.substr( 4, 2 ) + ' ' + vr.substr( 6, 2 ) + ' ' + vr.substr( 8, 2 ); 
		if( tam == 11 && vr.substr( 0, 1 ) == '0' && vr.charAt(2) != '0')
			campo.value = '(' + vr.substr( 0, 3 ) + ')' + vr.substr( 3, 4 ) + '-' + vr.substr( 7, 4 ); 
		if( tam == 11 && vr.substr( 0, 1 ) == '0' && vr.charAt(2) == '0')
			campo.value = vr.substr( 0, 4 ) + ' ' + vr.substr( 4, 3 ) + ' ' + vr.substr( 7, 2 ) + ' ' + vr.substr( 9, 2 ); 
	}

	/* formatador de String */
	function removeBlankSpace(varString){
		k = 0;

		//Realizar um LeftTrim
		while(varString.charAt(k)==" "){
			k = k + 1;
		}
		varNewString = varString.substring(k,varString.length);
		
		k = varNewString.length;
		
		//Realizar um RightTrim
		while(varNewString.charAt(k-1)==" "){
			k = k - 1;
		}

		return(varNewString.substring(0,k));
	}

	function returnDateDifference(Date1, Date2){
		varDate1 = Date1.substring(6,10) + Date1.substring(3,5) + Date1.substring(0,2);
		varDate2 = Date2.substring(6,10) + Date2.substring(3,5) + Date2.substring(0,2);

		if(parseFloat(varDate1) < parseFloat(varDate2))
			return(true);
		else
			return(false);
}

function ValidateDocument(varField) {
    if (varField.value.length == 14) {
        if (varField.value != "___.___.___-__" && !IsCPF(varField.value)) {
            window.alert("CPF inválido!");
            varField.value = "";
            varField.focus();
        }
    }
    else {
        if (varField.value != "__.___.___/____-__" && !IsCNPJ(varField.value)) {
            window.alert("CNPJ inválido!");
            varField.value = "";
            varField.focus();
        }
    }
}

function ValidateEmail(varField) {
    if (varField.value.length > 0) {
        if (!IsEmail(varField.value)) {
            window.alert("E-mail inválido!");
            varField.value = "";
        }
    }
}