//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) == "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;
							}
						}
					}					

					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 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;
			}
}
