
// Cria variáveis globais para acumular os erros no preenchimento do formulário
 var alertMessage = ""; // esta variável concatenará as mensagens para o alert
 var fieldsNok = ""; // esta variável concatenará os campos que tiveram problemas

 
//Função checkForRequiredFields
function checkForRequiredFields( ahFields, asMsgs, sFormName ) {
	var hField;
	for( var i=0; i< ahFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahFields[i]);
		  if( (Trim(hField.value)=="") || (hField.value==null) )  {
			alertMessage = alertMessage + asMsgs[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahFields[i] + "**";
		  }
	 }
}

//Função checkForInvalidChars
function checkForInvalidChars( ahCharCheckFields, asCharsToBeChecked, asCharCheckMessages, sFormName ) {
	var hField;
	var sChars;
	for( var i=0; i< ahCharCheckFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahCharCheckFields[i]);
		sChars = asCharsToBeChecked[i];
		if( !checkField( hField.value, sChars ) ) {
			alertMessage = alertMessage + asCharCheckMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahCharCheckFields[i] + "**";			
		  }
	 }
}

//Função checkForEmailFields
function checkForEmailFields( ahFields, asMsgs, sFormName ) {
	var hField;
	for( var i=0; i< ahFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahFields[i]);
		if ( !verificaEmail(hField.value) ){
			alertMessage = alertMessage + asMsgs[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahFields[i] + "**";
		  }
	 }
}

//Função checkForDateFields
function checkForDateFields( ahDateFields, asDateMessages, sFormName ) {
	var hField;
	for( var i=0; i< ahDateFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahDateFields[i]);
		if( !checkDate( hField.value ) ) {
			alertMessage = alertMessage + asDateMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahDateFields[i] + "**";
		}
	}
}

//Função checkForCpfFields
function checkForCpfFields( ahCpfFields, asCpfMessages, sFormName ) {
	var hField;
	for( var i=0; i< ahCpfFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahCpfFields[i]);
		if( !cpf_check( hField.value ) ) {
			alertMessage = alertMessage + asCpfMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahCpfFields[i] + "**";
		}
	}
}

//Função checkForCgcFields
function checkForCgcFields( ahCgcFields, asCgcMessages, sFormName ) {
	var hField;
	for( var i=0; i< ahCgcFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahCgcFields[i]);
		if( !cgc_check( hField.value ) ) {
			alertMessage = alertMessage + asCgcMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahCgcFields[i] + "**";
		}
	}
}

//Função checkForFieldLength
function checkForFieldLength( ahLengthFields, asFieldLengthMessages, aiFieldLengths, sFormName ) {
	var hField;
	for( var i=0; i< ahLengthFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahLengthFields[i]);
		if( hField.value.length > aiFieldLengths[i]  )  {
			alertMessage = alertMessage + asFieldLengthMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahLengthFields[i] + "**";
		}
	}
	return true;
}

//Função checkField
function checkField( sStr, sChars ) {
	var j=0;
	var bRetVal = true;
	while( j < sChars.length ) {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 ) {
			bRetVal = false;
			break;
		}
		j++
	}
	return bRetVal;
}

// Função checkforSelectSingle
function checkforSelectSingle( ahFields, ahMessages, ahValues, sFormName ) {
	var hField;
	for( var i=0; i< ahFields.length; i++) {
		hField = eval("document." + sFormName + "." + ahFields[i] );
		if ( hField.value == ahValues[i] )  {
			alertMessage = alertMessage + ahMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahFields[i] + "**";
		}
	}
	return true;
}

// Função checkforSelectMultiple
function checkforSelectMultiple( ahFields, ahMessages, sFormName ) {
	var hField;
	var count;
	for( var i=0; i< ahFields.length; i++) {
		count = 0; 	
		hField = eval("document." + sFormName + "." + ahFields[i]);
		if( hField.length == 0) {
			alertMessage = alertMessage + ahMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + ahFields[i] + "**";
		} else {	
			for(var j=0; j< hField.length; j++) {
				if( hField.options[j].selected == true) {
					count = count + 1
				}
			}
			if (count == 0) {
				alertMessage = alertMessage + ahMessages[i] + "\n";
				fieldsNok = fieldsNok = fieldsNok + ahFields[i] + "**";
			}
		}
	}
	return true;
}

// Função checkforRadio
function checkforRadio( aRadioFields, aRadioMessages, sFormName ) {
	var hField;
	var count;
	for( var i=0; i< aRadioFields.length; i++) {
		count = 0; 	
		hField = eval("document." + sFormName + "." + aRadioFields[i]);
		for(var j=0; j< hField.length; j++) {
			if( hField[j].checked == true) {
				count = 1
			}
		}
		if (count == 0) {
			alertMessage = alertMessage + aRadioMessages[i] + "\n";
			fieldsNok = fieldsNok = fieldsNok + aRadioFields[i] + "**";
		}
	}
	return true;
}

// Função cpf_check
function cpf_check( cpf ) {
	if (cpf != '') {
		if (cpf.length != 11) {
			return false;
		}
		if (cpf == '00000000000' || cpf == '11111111111' || cpf == '22222222222' || cpf == '33333333333' || cpf == '44444444444' || cpf == '55555555555' || cpf == '66666666666' || cpf == '77777777777' || cpf == '88888888888' || cpf == '99999999999') {
			return false;
		}
		var dac = "", inicio = 2, fim = 10, soma, digito, i, j
		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
		}
		return (dac == cpf.substring(cpf.length-2,cpf.length))
	} else {
		return true;
	}
}

// Função cgc_check
function cgc_check(cgc) {
	if (cgc != '') {
	  	var df, resto, dac = ""
		df = 5*cgc.charAt(0)+4*cgc.charAt(1)+3*cgc.charAt(2)+2*cgc.charAt(3)+9*cgc.charAt(4)+8*cgc.charAt(5)+7*cgc.charAt(6)+6*cgc.charAt(7)+5*cgc.charAt(8)+4*cgc.charAt(9)+3*cgc.charAt(10)+2*cgc.charAt(11)
		resto = df % 11
		dac += ( (resto <= 1) ? 0 : (11-resto) )
		df = 6*cgc.charAt(0)+5*cgc.charAt(1)+4*cgc.charAt(2)+3*cgc.charAt(3)+2*cgc.charAt(4)+9*cgc.charAt(5)+8*cgc.charAt(6)+7*cgc.charAt(7)+6*cgc.charAt(8)+5*cgc.charAt(9)+4*cgc.charAt(10)+3*cgc.charAt(11)+2*parseInt(dac)
		resto = df % 11
		dac += ( (resto <= 1) ? 0 : (11-resto) )
		return (dac == cgc.substring(cgc.length-2,cgc.length))
	} else {
		return true;
	}		
}

//Função vogalAcentuada
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;
}

//Função para retirar espaços
function Trim(str)	{
	while (str.charAt(0) == " ")
		str = str.substr(1,str.length -1);
	while (str.charAt(str.length-1) == " ")
		str = str.substr(0,str.length-1);
	return str;
} 


//Função verificaEmail
function verificaEmail(email) {
	if (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;
		// verifica se o último caracter não é um "."
		if 	(s.lastIndexOf(".") == (s.length - 1) )
			return false;
		// verifica se o primeiro caracter não é um "."
		if 	(s.indexOf(".") == 0 )
			return false;
		// verifica se o primeiro caracter não é um "@"
		if 	(s.indexOf("@") == 0 )
			return false;		
		// verifica se tem "." não vem colado ao "@"
		if 	(s.lastIndexOf("@.") > 0 )
			return false;
		// verifica se tem 2 pontos colados um aou outro
		if 	(s.lastIndexOf("..") > 0 )
			return false;
	}
	return true;
}

//Funções relacionadas a Data
hoje = new Date()
dia = hoje.getDate()
dias = hoje.getDay()
mes = hoje.getMonth()
ano = hoje.getYear()
ano += (ano < 1900) ? 1900 : 0
if (dia < 10)
dia = "0" + dia
if (ano < 2000)
ano = "19" + ano
function CriaArray (n) {
this.length = n }
NomeDia = new CriaArray(7)
NomeDia[0] = "Domingo"
NomeDia[1] = "Segunda-feira"
NomeDia[2] = "Terça-feira"
NomeDia[3] = "Quarta-feira"
NomeDia[4] = "Quinta-feira"
NomeDia[5] = "Sexta-feira"
NomeDia[6] = "Sábado"
//
NomeMes = new CriaArray(12)
NomeMes[0] = "Janeiro"
NomeMes[1] = "Fevereiro"
NomeMes[2] = "Março"
NomeMes[3] = "Abril"
NomeMes[4] = "Maio"
NomeMes[5] = "Junho"
NomeMes[6] = "Julho"
NomeMes[7] = "Agosto"
NomeMes[8] = "Setembro"
NomeMes[9] = "Outubro"
NomeMes[10] = "Novembro"
NomeMes[11] = "Dezembro"
function WriteDate() {
}

day = new Date()
d = day.getDate()
m = day.getMonth()
hr = day.getHours()
mi = day.getMinutes()
se = day.getSeconds()

// A validaçao abaixo diz respeito aos campos de data das paginas. As funçoes sao usadas p/ validaçao das entradas do usuario
nome_mes = new Array();
nome_mes[1]="Jan";
nome_mes[2]="Feb";
nome_mes[3]="Mar";
nome_mes[4]="Apr";
nome_mes[5]="May";
nome_mes[6]="Jun";
nome_mes[7]="Jul";
nome_mes[8]="Aug";
nome_mes[9]="Sep";
nome_mes[10]="Oct";
nome_mes[11]="Nov";
nome_mes[12]="Dec";

function checkDate( data ) {
	if (data != '') {
		if( !checkField( data, "<|>@#$%&*!+- ()?[]{}~^´`,.\"_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZáéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\" ) ) {
			return false;
		}
		if (data.length != 10) {
			return false;
		}
		if (data == '1111111111') {
			return false;
		}
	 
		var myDayStr = data.substr(0,2);
		var myMonthStr = nome_mes[Math.abs(data.substr(3,2))];
		var myYearStr = data.substr(6,4);
		var myDateStr = myDayStr + " " + myMonthStr + " " + myYearStr;
		var myDate = new Date( myDateStr );
		var myDate_string = myDate.toUTCString();
		var myDate_array = myDate_string.split(" ");
	
		if( ( myDate_array[2] != myMonthStr ) || ( Math.abs(data.substr(3,2) ) < 1 || Math.abs(data.substr(3,2) ) > 12) ) {
			return false;
		} else {
			return true;
		}
	}
	return true;
}


//Função changeStyle - para realizar a troca de style
function changeStyle( styleClassName, sFormName, aField ) {
	if ( (eval ("document." + sFormName + "." + aField + ".length") != 'undefined') && (eval ("document." + sFormName + "." + aField + ".length") > 0) ) {
		for( var y=0; y< eval ("document." + sFormName + "." + aField + ".length"); y++) {
			eval("document." + sFormName + "." + aField + "[y].className = '" + styleClassName + "'");
		}	
	} else {
		eval("document." + sFormName + "." + aField + ".className = '" + styleClassName + "'");
	}	
}