	/************************************************
	* function checkField 			       
	* Verificação básica de um campo de formulário por "coisas bobas": & < > | \ / ? ! @ # $ % ^ * ( ) - + _ = ; [ ] { } ` ' ~ . , "
	* Input: campo a ser verificado
	************************************************/
	function checkField(s) 
	{
	 	if ((s.indexOf("&")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("|")>=0) ||
			(s.indexOf("\\")>=0) || (s.indexOf("/")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) ||
			(s.indexOf("@")>=0) || (s.indexOf("#")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) ||
			(s.indexOf("^")>=0) || (s.indexOf("*")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) ||
			(s.indexOf("-")>=0) || (s.indexOf("+")>=0) || (s.indexOf("_")>=0) || (s.indexOf("=")>=0) ||
			(s.indexOf(";")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("{")>=0) ||
			(s.indexOf("}")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) || (s.indexOf("~")>=0) ||
			(s.indexOf(",")>=0) || (s.indexOf(".")>=0) || (s.indexOf("\"")>=0))
			return false;
	    return true;
	}
			
	// Verificação básica do campo Rua/Av. A mesma funcionalidade da função acima, 
	// desconsiderando o "."
	function checkRuaAv(s) 
	{
	 	if ((s.indexOf("&")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("|")>=0) ||
			(s.indexOf("\\")>=0) || (s.indexOf("/")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) ||
			(s.indexOf("@")>=0) || (s.indexOf("#")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) ||
			(s.indexOf("^")>=0) || (s.indexOf("*")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) ||
			(s.indexOf("-")>=0) || (s.indexOf("+")>=0) || (s.indexOf("_")>=0) || (s.indexOf("=")>=0) ||
			(s.indexOf(";")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("{")>=0) ||
			(s.indexOf("}")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) || (s.indexOf("~")>=0) ||
			(s.indexOf(",")>=0) || (s.indexOf("\"")>=0))
			return false;
	    return true;
	}
	
	// Verificação básica do campo Numero.
	function checkNum(s) 
	{
	 	if ((s.indexOf("&")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("|")>=0) ||
			(s.indexOf("\\")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) ||
			(s.indexOf("@")>=0) || (s.indexOf("#")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) ||
			(s.indexOf("^")>=0) || (s.indexOf("*")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) ||
			(s.indexOf("-")>=0) || (s.indexOf("+")>=0) || (s.indexOf("_")>=0) || (s.indexOf("=")>=0) ||
			(s.indexOf(";")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("{")>=0) ||
			(s.indexOf("}")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) || (s.indexOf("~")>=0) ||
			(s.indexOf(",")>=0) || (s.indexOf("\"")>=0))
			return false;
	    return true;
	}
			
	/************************************************
	* function isEmpty
	* Verifica se um campo está vazio
	* Input: campo a ser verificado
	************************************************/               
	function isEmpty(s) 
	{
		return ((s == null) || (s.length == 0));
	}
					
	/************************************************
	* function verificaCPF
	* Verifica se um CPF é válido
	* Input: cpf a ser verificado
	************************************************/
	function verificaCPF(cpf)
	{
	        var dac = "", inicio = 2, fim = 10, soma, digito, i, j
			
			if (cpf.length > 11)
				return false;
			
	        for (j=1;j<=2;j++) {
	                soma = 0
	                for (i=inicio;i<=fim;i++) {
	                        soma += parseInt(cpf.substring(i-j-1,i-j))*(fim+1+j-i)
	                }
	                if (j == 2) { soma += 2*digito }
	                digito = (10*soma) % 11
	                if (digito == 10) { digito = 0 }
	                dac += digito
	                inicio = 3
	                fim = 11
	        }
			
			if ((cpf == '00000000000') || (cpf == '11111111111') || (cpf == '22222222222') || 
			            (cpf == '33333333333') || (cpf == '44444444444') || (cpf == '55555555555') || 
			            (cpf == '66666666666') || (cpf == '77777777777') || (cpf == '88888888888') || 
			            (cpf == '99999999999'))
			return false;
			
	        return (dac == cpf.substring(cpf.length-2,cpf.length))
	}
	
/************************************************
	* function verificaCNPJ
	* Verifica se um CNPJ é válido
	* Input: CNPJ a ser verificado
	************************************************/

function verificaCNPJ(numero)
{
	var i;
 	s = numero;
 	var c = s.substr(0,12);
 	var dv = s.substr(12,2);
 	var d1 = 0;

 	for (i = 0; i < 12; i++)
 	{
 		d1 += c.charAt(11-i)*(2+(i % 8));
 	}
 	
	if (d1 == 0) return false;

        d1 = 11 - (d1 % 11);

	if (d1 > 9) d1 = 0;

	if (dv.charAt(0) != d1)
	{
		return false;
	}

 	d1 *= 2;

 	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}

	d1 = 11 - (d1 % 11);

	if (d1 > 9) d1 = 0;

	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}
			
	/************************************************
	* function verificaEmail
	* Verifica se um email é válido
	* Input: email a ser verificado
	************************************************/
	function verificaEmail(email) 
	{
	        var s = new String(email);
	        // { } ( ) < > [ ] | \ /
	        if ((s.indexOf("{")>=0) || (s.indexOf("}")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("|")>=0) || (s.indexOf("\"")>=0) || (s.indexOf("/")>=0) )
	                return false;
	        if (vogalAcentuada(email))
	                return false;
	        // & * $ % ? ! ^ ~ ` ' "
	        if ((s.indexOf("&")>=0) || (s.indexOf("*")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) || (s.indexOf("^")>=0) || (s.indexOf("~")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) )
	                return false;
	        // , ; : = #
	        if ((s.indexOf(",")>=0) || (s.indexOf(";")>=0) || (s.indexOf(":")>=0) || (s.indexOf("=")>=0) || (s.indexOf("#")>=0) )
	                return false;
	        // procura se existe apenas um @
	        if ( (s.indexOf("@") < 0) || (s.indexOf("@") != s.lastIndexOf("@")) )
	                return false;
	        // verifica se tem pelo menos um ponto após o @
	        if (s.lastIndexOf(".") < s.indexOf("@"))
	                return false;
	        return true;
	}
	
	// Verifica se o ano é bissexto
	function anobissexto(argAno) 
	{
		if ((argAno % 4) == 0)
			if ((argAno % 100) == 0)
				if ((argAno % 400) == 0)
					return true;
				else
					return false;		
			else
				return true;
		else
			return false;
	}
			
	/************************************************
	* function verificaData
	* Verifica se um campo data é válido.
	* Input: Campo do formulário que contém a data
	* Esta função pega o campo diretamente, pois assim
	* pode dar uma resposta melhor ao usuário.
	*************************************************/
	function verificaData(argData){
	var Data = new String(argData);
	var DataAtual = new Date();
	var AnoAtual = DataAtual.getYear();
	var Dia = "";
	var Mes = "";
	var Ano = "";
	var i = 0;
	
		for (i=0;((i < Data.length) && (Data.charAt(i) != "/"));i++)
	    	Dia = Dia + Data.charAt(i);
	
	    for (i=i+1;((i < Data.length) && (Data.charAt(i) != "/"));i++)
	    	Mes = Mes + Data.charAt(i);
	
	    for (i=i+1;(i < Data.length);i++)
	        Ano = Ano + Data.charAt(i);
		
		for(i=0;i<Data.length;i++)
		{
			NroAsc = asc(Data.substring(i,i+1));
			if (!(NroAsc >= 47 && NroAsc <= 57)) 
					return false;
	    }  
			
			if ((parseInt(Dia,10) > 31) || (parseInt(Dia,10) < 1))
			return false;
		
	    if ((parseInt(Mes,10) == 2) && (parseInt(Dia,10) == 29) && (!anobissexto(parseInt(Ano,10))))
			return false;
		
		if ((parseInt(Mes,10) == 2) && (parseInt(Dia,10) > 29))
			return false;
		
		if ((parseInt(Mes,10) > 12) || (parseInt(Mes,10) < 1))
			return false;
		
	    if (parseInt(AnoAtual,10)< 2000) 
			AnoAtual = AnoAtual + 1900;					
						
		if((parseInt(Ano,10) < 1900) || (parseInt(Ano,10) >= AnoAtual))
			return false;
				
	    return true;
	}
			
	/************************************************
	* function verificaCEP
	* Verifica se o CEP está no formato correto
	* Input: CEP a ser verificado
	************************************************/
	function verificaCEP (cep) 
	{
	        s = new String(cep);
	        if (s.length != 8)
	                return false;
	        if (!isInteger(cep))
	                return false;
	        return true;
	}
			
	// Verifica se o caracter é um dígito de 0 a 9
	function isDigit (c)
	{ 
		return ((c >= "0") && (c <= "9")) 
	}
			
	/************************************************
	* function isInteger
	* Verifica se um campo é inteiro, inclui dígitos de 0 a 9, vírgula, ponto, espaços e -
	* Input: campo a ser verificado
	************************************************/
	function isInteger(s){
		var i;
		if (isEmpty(s)) 
			return false;
		for (i = 0; i < s.length; i++)
		{   
			var c = s.charAt(i);
			if (!isNumber(c)) return false;
		}
		return true;
	}
			
	// Verifica se o caracter pode fazer parte de um número: 0-9 , . ( ) - e espaço
	function isNumber (c)
	{ 
		return ((c >= "0") && (c <= "9") || (c=="-") || (c=="(") || (c==")") || (c==" ") || (c==".") || (c==",")) 
	}
			
	// Gera uma string com os caracteres básicos na sequência de códigos ASC
	function makeCharsetString()
	{
		var astr
		astr = ' !"#$%&\'()*+,-./0123456789:;<=>?@'
		astr+= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
		astr+= '[\]^_`abcdefghijklmnopqrstuvwxyz'
		astr+= '{|}~'
		return astr
	}
			
	// Retorna o código ASC do caracter passada por parâmetro
	function asc(achar)
	{
		var n=0;
		var ascstr = makeCharsetString()
		for(i=0;i<ascstr.length;i++){
			if(achar==ascstr.substring(i,i+1)){
				n=i;
				break;
			}
		}
		return n+32
	}
	
	// Verifica se uma string tem vogais acentuadas
	function vogalAcentuada(s) 
	{
		ls = s.toLowerCase();
		if ((ls.indexOf("á")>=0) || (ls.indexOf("à")>=0) || (ls.indexOf("ã")>=0) || (ls.indexOf("â")>=0) || (ls.indexOf("é")>=0) || (ls.indexOf("í")>=0) || (ls.indexOf("ó")>=0) || (ls.indexOf("õ")>=0) || (ls.indexOf("ô")>=0) || (ls.indexOf("ú")>=0) || (ls.indexOf("ü")>=0))
			return true;
	}
			
	/************************************************
	* function isNumeric
	* Verifica se um campo é numérico. Se contém apenas dígitos de 0 a 9
	* Input: campo a ser verificado
	************************************************/
	function isNumeric(s)
	{
	        var i;
	        if (isEmpty(s)) 
	                return false;
	        for (i = 0; i < s.length; i++)
	        {   
	                var c = s.charAt(i);
	                if (!isDigit(c)) return false;
	        }
	        return true;
	}
	
	// Elimina espaços em branco
	function Trim(param)
	{
	var sFinal = "";
		
		for (x=0;x<param.length;x++)
		{
			if (param.charAt(x) != " ") 
				sFinal = sFinal + param.charAt(x);
		}
		
		return sFinal;
	}
				
				
	/************************************************
	* function warnInvalid
	* Gera um alert para o usuário e volta o foco para
	* o campo que está com problema
	* Input: theField - campo do formulário com problema
	*        warnText - texto a ser mostrado no alert
	************************************************/
	function warnInvalid (theField, warnText, temSelect)
	{   
		theField.focus();
	    if (temSelect) {
			theField.select();
		}
	    alert(warnText);
	    return false;
	}				
