//TXT - Campo texto obrigatório (tanto para text como pata textarea como para password)
//CG1 - Campo CGC/CPF obrigatório e válido
//CG2 - Campo CGC/CPF não obrigatório e válido
//E@1 - Campo Email obrigatório e válido
//E@2 - Campo Email não obrigatório e válido
//DT1 - Campo Data obrigatório e válido     **** funciona somente no formato ****
//DT2 - Campo Data não obrigatório e válido **** dia / mes / ano (separados) ****
//POR - Campo porcentagem não obrigatório e válido
//SEL - Campo Select obrigatório
//HM1 = Campo hora / minuto obrigatório e válido		**** funciona somente no formato ****
//HM2 = Campo hora / minuto não obrigatório e válido	**** hora : minuto (separados) ****
//LN1 = Campo link obrigatório e válido
//LN2 = Campo link não obrigatório e válido
//CP1 = Campo CEP obrigatório e válido		*** funciona tanto com hífen (-) como sem ***
//CP2 = Campo CEP não obrigatório e válido	*** funciona tanto com hífen (-) como sem ***

// FUNÇÕES ADICIONAIS

// LimitaNumero(e,nome) event, nome do campo
// ---permite somente a digitação de números e virgulas no campo

// LimitaSoNumero(e,nome) event, nome do campo
// ---permite somente a digitação de números no campo

// LimitaText(e,nome,tam) event, nome do campo, tamanho a ser limitado
// ---limita o número e caracteres do textarea



function verifica(form){
	var envia = true;

	for (var i = 0;  i <= form.elements.length - 1; i++){
		if (form.elements[i].alt != ""){
			switch(form.elements[i].type){
				case "text":
					if (form.elements[i].alt.slice(0,3) == "TXT"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length))
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "CG1"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						if (form.elements[i].value.length == 14){
							if (! isCGC(form.elements[i].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								return false;
							}
						}
						else{
							if (! isCpf(form.elements[i].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								return false;
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "CG2"){
						if (form.elements[i].value != ""){
							if (form.elements[i].value.length == 14){
								if (! isCGC(form.elements[i].value)){
									alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
									return false;
								}
							}
							else{
								if (! isCpf(form.elements[i].value)){
									alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
									return false;
								}
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "E@1"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						if (! isEmail(form.elements[i].value)){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "E@2"){
						if (form.elements[i].value != ""){
							if (! isEmail(form.elements[i].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "DT1"){
						if (form.elements[i].value == "" || form.elements[i + 1].value == "" || form.elements[i + 2].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						if (! isDate(form.elements[i].value, form.elements[i + 1].value, form.elements[i + 2].value)){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "DT2"){
						if (form.elements[i].value != "" || form.elements[i + 1].value != "" || form.elements[i + 2].value != ""){
							if (! isDate(form.elements[i].value, form.elements[i + 1].value, form.elements[i + 2].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "POR"){
						if (form.elements[i].value != ""){
							if (form.elements[i].value.replace(",",".") > 100 || form.elements[i].value.replace(",",".") < 0){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "HM1"){
						if (form.elements[i].value != "" && form.elements[i + 1].value != ""){
							if (form.elements[i].value < 0 || form.elements[i].value > 23 || form.elements[i + 1].value < 0 || form.elements[i + 1].value > 59){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
						else
						{
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "HM2"){
						if (form.elements[i].value != "" || form.elements[i + 1].value != ""){
							if (form.elements[i].value < 0 || form.elements[i].value > 23 || form.elements[i + 1].value < 0 || form.elements[i + 1].value > 59){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}

					if (form.elements[i].alt.slice(0,3) == "LN1"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						var Exp1 = new RegExp("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*$");
						if (! Exp1.test(form.Link.value)){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "LN1"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						var Exp1 = new RegExp("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*$");
						if (! Exp1.test(form.elements[i].value)){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "LN2"){
						if (! form.elements[i].value == ""){
						
							var Exp1 = new RegExp("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*$");
							if (! Exp1.test(form.elements[i].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}
					
					if (form.elements[i].alt.slice(0,3) == "CP1"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
						
						var Exp1 = new RegExp("(^\d{5}-\d{3}|^\d{2}.\d{3}-\d{3}|\d{8})");
						if (! Exp1.test(form.elements[i].value)){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
							form.elements[i].focus();
							return false;
						}
					}

					if (form.elements[i].alt.slice(0,3) == "CP2"){
						if (! form.elements[i].value == ""){
						
							var Exp1 = new RegExp("(^\d{5}-\d{3}|^\d{2}.\d{3}-\d{3}|\d{8})");
							if (! Exp1.test(form.elements[i].value)){
								alert(form.elements[i].alt.slice(3,form.elements[i].alt.length));
								form.elements[i].focus();
								return false;
							}
						}
					}

					break;

				case "textarea":
					if (form.elements[i].alt.slice(0,3) == "TXT"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length))
							form.elements[i].focus();
							return false;
						}
					}
					break;

				case "password":
					if (form.elements[i].alt.slice(0,3) == "TXT"){
						if (form.elements[i].value == ""){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length))
							form.elements[i].focus();
							return false;
						}
					}					

				case "select-one":
					if (form.elements[i].alt.slice(0,3) == "SEL"){
						if (form.elements[i].selectedIndex == 0){
							alert(form.elements[i].alt.slice(3,form.elements[i].alt.length))
							form.elements[i].focus();
							return false;
						}
					}
					break;
			}
		}
	}
	return true;
}


function isCpf (StrCPF)
{
	x = 0;
	soma = 0;
	dig1 = 0;
	dig2 = 0;
	texto = "";
	StrCPF1="";
	len = StrCPF.length;
	x = len -1;
	for (var i=0; i <= len - 3; i++)
	{
		y = StrCPF.substring(i,i+1);
		soma = soma + ( y * x);
		x = x - 1;
		texto = texto + y;
	}
	dig1 = 11 - (soma % 11);
	if (dig1 == 10) dig1=0 ;
	if (dig1 == 11) dig1=0 ;
	StrCPF1 = StrCPF.substring(0,len - 2) + dig1 ;
	x = 11; soma=0;
	for (var i=0; i <= len - 2; i++)
	{
		soma = soma + (StrCPF1.substring(i,i+1) * x);
		x = x - 1;
	}
	dig2= 11 - (soma % 11);
	if (dig2 == 10) dig2=0;
	if (dig2 == 11) dig2=0;
	if ((dig1 + "" + dig2) == StrCPF.substring(len,len-2))
	{
		return true;
	}
	return false;
}


function isCGC(x)
{
	strNum="" 
	if (x=="") 
		return (false);

	l = x.length;
	for (i = 0; i < l; i++) {
		caracter = x.substring(i,i+1)
		if ((caracter >= '0') && (caracter <= '9'))
		strNum = strNum + caracter;
	}

	strMul = "6543298765432"
	iValido = 1
	if(strNum.length != 14)
	{
		return(false)
	}
	iSoma = 0
	strNum_base = strNum.substring(0,12) 
	iLenNum_base = strNum_base.length - 1
	iLenMul = strMul.length - 1
	for(i=0;i<12;i++)
	{
		iSoma = iSoma + parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) * parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10)
	}

	iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11)
	if(iSoma == 11 || iSoma == 10)
	{
		iSoma = 0
	}

	strNum_base = strNum_base + iSoma 
	iSoma = 0
	iLenNum_base = strNum_base.length - 1
	for(i=0;i<13;i++)
	{
		iSoma = iSoma + parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) * parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10)
	}

	iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11)
	if(iSoma == 11 || iSoma == 10)
	{
		iSoma = 0
	}

	strNum_base = strNum_base + iSoma 
	if(strNum != strNum_base)
	{
		return(false)
	}

	return(true)
}

function isEmail(e){

	//TESTE EMAIL
	var email = e;
	var suportado = 0;

	//Testa se o browser suporta expressões regulares

	if (window.RegExp) {
		var tempReg = /a/;
		if (tempReg.test("a")){
			suportado = 1;
		}
	}

	//Se o browser não suporta expressões regulares,
	//verifica apenas a posição do ponto e da arroba

	var emailaux = email.substr(0,4);
	if(emailaux.toLowerCase() == "www."){
		return false;
	}

	if (!suportado){
		if(((email.indexOf(".") <= 0) || (email.indexOf("@") <= 0)) || ((email.lastIndexOf(".") == (email.length - 1)) || (email.lastIndexOf("@") == (email.length -1)))){
			return false;
	    }

	//Se o browser suporta expressões regulares,
	//faz a verificação completa

	}else{
		var tmp1 = /(@.*@)|(\.\.)|(@\.)|(^\.)/;
		var tmp2 = /^.+@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
		
		if(tmp1.test(email) || !tmp2.test(email)){
			return false;
	    }
	}
	return true;
}

function isDate(d,m,a){
         
     var dia  = d;
     var mes  = m;
     var ano  = a;
     var arraymes = new Array(12);
       
     arraymes[0]=0; //
     arraymes[1]=31; //Janeiro
     arraymes[2]=28; //Fevereiro
     arraymes[3]=31; //Marco
     arraymes[4]=30; //Abril
     arraymes[5]=31; //Maio
     arraymes[6]=30; //Junho
     arraymes[7]=31; //Julho
     arraymes[8]=31; //Agosto
     arraymes[9]=30; //Setembro
     arraymes[10]=31; //Outrubro
     arraymes[11]=30; //Novembro
     arraymes[12]=31; //Dezembro
     
     mes = parseFloat(mes);
     
     //verifica se o ano eh bissesto
     if(ano!=2000){
        if((ano % 4)==0) arraymes[2]=29;
     }
      
    //verifica se a Data esta Ok
    if (isNaN(dia) || dia==0 || dia=='' || dia > arraymes[mes] || dia >31){
        return false;
        }
    else {
			// verifica se o mes esta Ok
			if (isNaN(mes) || mes==0 || mes=='' || mes > 12){
			    return false;}
            else {
				//verifica se o ano esta Ok
				if (isNaN(ano) || ano==0 || ano=='' || ano.length < 4 || ano < 1900){
				    return false;
				}
			}
	}
	return true;
}

function LimitaText(e,nome,tam) //EX: event, this, 500
{
	if (document.all) // Internet Explorer
		var tecla = event.keyCode;
	else if(document.layers) // Nestcape
		var tecla = e.which;
	var a = new String(nome.value);
	if (a.length < eval(tam) - 2)
		return true;
	else
		{
			if (tecla != 8) // backspace
			{
				event.keyCode = 0;
				return false;
			}
			else
				return true;
		}
}

function LimitaNumero(e,nome)
{
	if (document.all) // Internet Explorer
		var tecla = event.keyCode;
	else if(document.layers) // Nestcape
		var tecla = e.which;
		if (tecla > 47 && tecla < 58 || tecla == 44) // numeros de 0 a 9 e ,
			
			if (nome.value.indexOf(",") > 0 && tecla == 44)
				return false;
			else
				return true;
		else
			{
				if (tecla != 8) // backspace
					event.keyCode = 0;
					//return false;
				else
					return true;
			}
}

function LimitaSoNumero(e,nome)
{
	if (document.all) // Internet Explorer
		var tecla = event.keyCode;
	else if(document.layers) // Nestcape
		var tecla = e.which;
		if (tecla > 47 && tecla < 58) // numeros de 0 a 9
			return true;
		else
			{
				if (tecla != 8) // backspace
					event.keyCode = 0;
					//return false;
				else
					return true;
			}
}

