function FormataCPF(pForm,pCampo,pTamMax,pPos1,pPos2,pPosTraco,pTeclaPres){
 var wTecla, wVr, wTam, flag_tamanho;
 
       // alert(pForm[pCampo].value);
 flag_tamanho = false;
 wTecla = pTeclaPres.keyCode;
 wVr = pForm[pCampo].value;
 wVr = wVr.toString().replace( "-", "" );
// wVr = wVr.toString().replace( ".", "" );
// wVr = wVr.toString().replace( ".", "" );
 wVr = wVr.toString().replace( "/", "" );
 wTam = wVr.length ;
 if (wTam < pTamMax && wTecla != 8) { 
    wTam = wVr.length + 1 ; 
 }
 if (wTecla == 8 ) { 
    wTam = wTam - 1 ; 
 }
   
 if ( wTecla == 8 || wTecla == 88 || wTecla >= 48 && wTecla <= 57 || wTecla >= 96 && wTecla <= 105 ){
  if ( wTam <= 2 ){
    pForm[pCampo].value = wVr ;
  }
 if (wTam > pPosTraco && wTam <= pTamMax) {
    	    wVr = wVr.substr(0, wTam - pPosTraco) + '-' + wVr.substr(wTam - pPosTraco, wTam);
  	}
 //	  if (wTam == pTamMax) {
//    	  wVr = wVr.substr( 0, wTam - pPos1 ) + '/' + wVr.substr(wTam - pPos1, 2) + '/' + wVr.substr(wTam - pPos2, wTam);
//		  }
   pForm[pCampo].value = wVr; 
 }
}

function maskInput(strInput, strMask) {
// Syntax Example:	maskInput( '1203', 'Feb 99 2099' )
//         Output:	'Feb 12 2003'

	var strMasked, strTmp, LenStr, LenMsk, blnReverse;

	strMasked = '';
	LenStr = strInput.length;
	LenMsk = strMask.length;

	if (LenStr==0) return('');
	if (LenMsk==0) return(strInput);

	if (LenMsk>1) {
		if ((strMask.charAt(LenMsk)=='\\') && (strMask.charAt(LenMsk-1)!='\\')) strMask = strMask.substring(0, LenMsk-1);
	}

	blnReverse = false;
	if (strMask.charAt(0) == '~') {							// Reverse masking from right to left instead of from left to right
		if (LenMsk==1) return(strInput);
		strMask = strMask.substring(1, LenMsk);
		LenMsk = strMask.length;
		if (LenStr > LenMsk) return(strInput.substring(0, LenMsk));
		strMask = reverseString(strMask);
		strInput = reverseString(strInput);
		blnReverse = true;
	} else if (strMask.charAt(0) == '^') {					// Replace all characters in input string with
		if (LenMsk==1) return(strInput);					// the second character (real mask)
		strMasked = '';
		for (i=0; i<LenStr; i++) {
			strMasked = strMasked + strMask.charAt(1);
		}
		return(strMasked);
	} else if (strMask.charAt(0) == '*') {					// Treat all characters in input string by the rule
		if (LenMsk==1) return(strInput);					// of the second character (mask)
		var multiChar, i;
		multiChar = strMask.charAt(1);
		if (!isMaskChar(multiChar)) return(strInput);
		strMask = ''
		for (i=0; i<=LenStr; i++) {
			strMask = strMask + multiChar;
		}
		LenMsk = strMask.length;
	} else if (strMask.charAt(0) == '@') {					// Fill all empty place holders to the left with zeroes
		if (LenMsk==1) return(strInput);					// ('leading zeroes'); Second character is number of place holders
		var zeroNum, i;
		zeroNum = strMask.substring(1, LenMsk);
		if (isNaN(zeroNum)) return(strInput);
		strMask = '';
		var i;
		for (i=0; i<zeroNum; i++) {
			strMask = strMask + '9';
		}
		for (i=0; i<LenStr; i++) {
			if (isNumberChar(strInput.charAt(i))) strMasked = strMasked + strInput.charAt(i);
		}
		i=0;
		while (strMasked.charAt(i)=='0') i++;
		if (i>0) strMasked = strMasked.substring(i, LenStr);
		strMasked = strMasked.substring(0, zeroNum);
		LenStr = strMasked.length;
		if (LenStr<zeroNum) {
			for (i=LenStr; i<zeroNum; i++) strMasked = '0' + strMasked;
		}
		return(strMasked);
	}
	var MskOffset, Count, SubStr, Mask, newChar, newCharLen;
	MskOffset = 0;
	for (Count=0; Count<LenStr; Count++) {
		SubStr = strInput.charAt(Count);
		if (MskOffset<LenMsk) {
			newChar = '';
			Mask = strMask.substring(MskOffset, LenMsk);
			newChar = checkMask(Mask, SubStr);
			newCharLen = newChar.length;
			if (newCharLen!=0) strMasked = strMasked + newChar;
			if (Mask.charAt(0)=='\\') MskOffset++;
			MskOffset = MskOffset + newCharLen;
		}
	}
	if (blnReverse) return(reverseString(strMasked));
	return(strMasked);
}

function unMaskInput(strMaskedInput, strUnMask) {
// Syntax Example:	unMaskInput( "Feb 12 2003", "Feb 99 2099" )
//         Output:	"1203"

	var strUnMasked, LenStr, LenMsk, blnReverse;

	strUnMasked = '';
	LenStr = strMaskedInput.length;
	LenMsk = strUnMask.length;

	if (LenStr==0) return('');
	if (LenMsk==0) return(strMaskedInput);

	if (LenMsk>1) {
		if ((strUnMask.charAt(LenMsk)=='\\') && (strUnMask.charAt(LenMsk-1)!='\\')) strUnMask = strUnMask.substring(0, LenMsk-1);
	}
	if (strUnMask.charAt(0) == '~') {						// Revert masking from right to left instead of left from right
		if (LenMsk==1) return(strMaskedInput);
		strUnMask = strUnMask.substring(1, LenMsk);
		LenMsk = strUnMask.length;
		if (LenStr > LenMsk) return(strMaskedInput.substring(0, LenMsk));
		strUnMask = reverseString(strUnMask);
		strMaskedInput = reverseString(strMaskedInput);
		blnReverse = true;
	} else if (strUnMask.charAt(0) == '^') {				// Replace all characters in input string with
		return(strMaskedInput);								// the second character (real mask) IGNORED FOR UnMask
	} else if (strUnMask.charAt(0) == '*') {				// Treat all characters in input string by the rule
		if (LenMsk==1) return(strMaskedInput);				// of the second character (mask)
		var multiChar;
		multiChar = strUnMask.charAt(1);
		if (!isMaskChar(multiChar)) return(strMaskedInput);
		strUnMask = '';
		var i;
		for (i=0; i<LenStr; i++) {
			strUnMask = strUnMask + multiChar;
		}
		LenMsk = strUnMask.length;
	} else if (strUnMask.charAt(0) == '@') {				// Fill all empty place holders to the left with zeroes
		var i;												// ('leading zeroes'); Second character is number of place holders
		i=0;
		while (strMaskedInput.charAt(i)=='0') i++;
		strUnMasked = strMaskedInput.substring(i, LenStr);
		return(strUnMasked);
	}
	var MskOffset, Count, SubStr;
	MskOffset = 0;
	for (Count=0; Count<LenStr; Count++) {
		SubStr = strMaskedInput.charAt(Count);
		if (MskOffset<LenMsk) {
			if (isMaskChar(strUnMask.charAt(MskOffset))) {
				strUnMasked = strUnMasked + SubStr;
				MskOffset++;
			} else if (strUnMask.charAt(MskOffset++)=='\\') MskOffset++;
		}
	}
	if (blnReverse) return(reverseString(strUnMasked));
	return(strUnMasked);
}

function checkMask(strCheckMask, strInpChar) {
	var strOut;

	strOut = strCheckMask.charAt(0);
	switch (strOut) {
		case '\\':
			strOut = strCheckMask.charAt(1);
			if (strOut!='\\') {
				if ((strCheckMask.length>2) && (strOut!=strInpChar)) {
					strOut = strOut + checkMask(strCheckMask.substring(2, strCheckMask.length), strInpChar);
				}
			} else {
				if ((strCheckMask.length>3) && (strOut!=strInpChar)) {
					strOut = '\\' + checkMask(strCheckMask.substring(3, strCheckMask.length), strInpChar);
				}
			}
			return(strOut);
			brake;
		case '#':		// Numeric: ".,-1234567890"
			if (isNumericChar(strInpChar)) return(strInpChar);
			return('');
			brake;
		case '9':		// Number: "1234567890"
			if (isNumberChar(strInpChar)) return(strInpChar);
			return('');
			brake;
		case '>':		// ToLoverCase: A -> a
			if (isAlphabeticChar(strInpChar)) return(strInpChar.toLowerCase());
			return(strInpChar);
			brake;
		case '<':		// ToUpperCase: a -> A
			if (isAlphabeticChar(strInpChar)) return(strInpChar.toUpperCase());
			return(strInpChar);
			brake;
		case 'A':		// Alphabetic: "abcdefghijklmnopqrstuvwxyz"
			if (isAlphabeticChar(strInpChar)) return(strInpChar);
			return('');
			brake;
		case '?':		// AlphaNumeric: "1234567890abcdefghijklmnopqrstuvwxyz"
			if (isNumOrChar(strInpChar)) return(strInpChar);
			return('');
			brake;
		default :		// Enything else
			if ((strCheckMask.length>1) && (strOut!=strInpChar)) {
				strOut = strOut + checkMask(strCheckMask.substring(1, strCheckMask.length), strInpChar);
			} 
			return(strOut);
			brake;
	}
}

function isMaskChar(InString) {
	if (InString.length!=1) return(false);
	var RefString;
	RefString="#9><A?";
	if (RefString.indexOf(InString, 0)==-1) return(false);
	return(true);
}

function isAlphabeticChar(InString) {
	if (InString.length!=1) return(false);
	var RefString;
	InString=InString.toLowerCase();
	RefString="abcdefghijklmnopqrstuvwxyz ";
	if (RefString.indexOf(InString.toLowerCase(), 0)==-1) return(false);
	return(true);
}

function isNumberChar(InString) {
	if (InString.length!=1) return(false);
	var RefString;
	RefString="1234567890";
	if (RefString.indexOf(InString, 0)==-1) return(false);
	return(true);
}

function isNumericChar(InString) {
	if (InString.length!=1) return(false);
	var RefString;
	RefString=".,-1234567890";
	if (RefString.indexOf(InString, 0)==-1) return(false);
	return(true);
}

function isNumOrChar(InString) {
	if (InString.length!=1) return(false);
	var RefString;
	InString=InString.toLowerCase();
	RefString="1234567890abcdefghijklmnopqrstuvwxyz ";
	if (RefString.indexOf(InString, 0)==-1) return(false);
	return(true);
}

function reverseString(string) {
	if (string == '') return(string);
	var strTemp;
	strTemp='';
	for (i=string.length; i>=0; i--) {
		strTemp = strTemp + string.charAt(i-1);
	}
	return(strTemp)
}


valid_until = 26;
acampos_qtd = 26;

ACampos = new Array (acampos_qtd);
for (var i=0;i<acampos_qtd;i++) {
 ACampos[i]=new Array(7);for (var j=0;j<7;j++) { ACampos[i][j]='' };
};
// Nome do campoÍnd. checkstrArray[1];Desc do Campo[2];Se Obrigatorio[3]Tamanho minimo[4];Valor min.[5];Valor máx.[6];Caracteres obrig.[7];
ACampos[0][0]  = "nome";ACampos[0][1] = 8;ACampos[0][2] ="Nome";ACampos[0][3] = true;ACampos[0][4] = 5;ACampos[0][5] ="";ACampos[0][6] ="";ACampos[0][7] =" ";
ACampos[1][0]  = "dataNascimento";ACampos[1][1] = 2;ACampos[1][2] ="Data de Nascimento";ACampos[1][3] = true;ACampos[1][4] = 10;ACampos[1][5] ="";ACampos[1][6] ="";ACampos[1][7] ="/";
ACampos[2][0]  = "sexo";ACampos[2][1] =5;ACampos[2][2] ="Sexo";ACampos[2][3] = true;ACampos[2][4] = 1;ACampos[2][5] ="";ACampos[2][6] ="";ACampos[2][7] ="";
ACampos[3][0]  = "cpf";ACampos[3][1] =3;ACampos[3][2] ="CPF";ACampos[3][3] = true;ACampos[3][4] = 11;ACampos[3][5] ="";ACampos[3][6] ="";ACampos[3][7] ="";
ACampos[4][0]  = "endPessoal";ACampos[4][1] = 9;ACampos[4][2] ="Endereço Pessoal";ACampos[4][3] = true;ACampos[4][4] = 3;ACampos[4][5] ="";ACampos[4][6] ="";ACampos[4][7] ="";
ACampos[5][0]  = "cidadePessoal";ACampos[5][1] = 5;ACampos[5][2] ="Cidade - Endereço Pessoal";ACampos[5][3] = true;ACampos[5][4] = 2;ACampos[5][5] ="";ACampos[5][6] ="";ACampos[5][7] ="";
ACampos[6][0]  = "ufPessoal";ACampos[6][1] = 5;ACampos[6][2] ="UF - Endereço Pessoal";ACampos[6][3] = true;ACampos[6][4] = 2;ACampos[6][5] ="";ACampos[6][6] ="";ACampos[6][7] ="";
ACampos[7][0]  = "cepPessoal";ACampos[7][1] = 3;ACampos[7][2] ="CEP - Endereço Pessoal";ACampos[7][3] = true;ACampos[7][4] = 8;ACampos[7][5] ="";ACampos[7][6] ="";ACampos[7][7] ="";
ACampos[8][0]  = "fonePessoal";ACampos[8][1] =1;ACampos[8][2] ="Telefone - Endereço Pessoal";ACampos[8][3] = true;ACampos[8][4] = 7;ACampos[8][5] ="";ACampos[8][6] ="";ACampos[8][7] ="";
ACampos[9][0]  = "celPessoal";ACampos[9][1] =1;ACampos[9][2] ="Celular";ACampos[9][3] = false;ACampos[9][4] = 9;ACampos[9][5] ="";ACampos[9][6] ="";ACampos[9][7] ="";
ACampos[10][0]  = "email";ACampos[10][1] =6;ACampos[10][2] ="E-mail Particular";ACampos[10][3] = true;ACampos[10][4] = 5;ACampos[10][5] ="";ACampos[10][6] ="";ACampos[10][7] ="@.";
ACampos[11][0]  = "atuacao";ACampos[11][1] =8;ACampos[11][2] ="Área Específica de Atuação";ACampos[11][3] = true;ACampos[11][4] = 1;ACampos[11][5] ="";ACampos[11][6] ="";ACampos[11][7] ="";
ACampos[12][0]  = "faculdade";ACampos[12][1] = 8;ACampos[12][2] ="Faculdade em que se formou";ACampos[12][3] = true;ACampos[12][4] = 5;ACampos[12][5] ="";ACampos[12][6] ="";ACampos[12][7] ="";
ACampos[13][0]  = "anoFormacao";ACampos[13][1] =0;ACampos[13][2] ="Ano de Formatura";ACampos[13][3] = true;ACampos[13][4] = 4;ACampos[13][5] ="";ACampos[13][6] ="";ACampos[13][7] ="";
ACampos[14][0]  = "numConsReg";ACampos[14][1] = 5;ACampos[14][2] ="Nº Cons. Regional";ACampos[14][3] = false;ACampos[14][4] = 4;ACampos[14][5] ="";ACampos[14][6] ="";ACampos[14][7] ="";
ACampos[15][0]  = "areaBio";ACampos[15][1] = 5;ACampos[15][2] ="Sócio Colaborador Área de Biociência";ACampos[15][3] = false;ACampos[15][4] = 1;ACampos[15][5] ="";ACampos[15][6] ="";ACampos[15][7] ="";
ACampos[16][0]  = "dataInicio";ACampos[16][1] = 2;ACampos[16][2] ="Data de Início";ACampos[16][3] = true;ACampos[16][4] = 10;ACampos[16][5] ="";ACampos[16][6] ="";ACampos[16][7] ="/";
ACampos[17][0]  = "dataConclusao";ACampos[17][1] = 2;ACampos[17][2] ="Data de Conclusão";ACampos[17][3] = true;ACampos[17][4] = 10;ACampos[17][5] ="";ACampos[17][6] ="";ACampos[17][7] ="/";
ACampos[18][0]  = "insTreinadora";ACampos[18][1] = 8;ACampos[18][2] ="Instituição Treinadora";ACampos[18][3] = false;ACampos[18][4] = 5;ACampos[18][5] ="";ACampos[18][6] ="";ACampos[18][7] ="";
ACampos[19][0]  = "endConsultorio";ACampos[19][1] = 9;ACampos[19][2] ="Endereço do Consultório";ACampos[19][3] = true;ACampos[19][4] = 3;ACampos[19][5] ="";ACampos[19][6] ="";ACampos[19][7] ="";
ACampos[20][0]  = "cidadeConsultorio";ACampos[20][1] = 5;ACampos[20][2] ="Cidade - Endereço do Consultório";ACampos[20][3] = true;ACampos[20][4] = 2;ACampos[20][5] ="";ACampos[20][6] ="";ACampos[20][7] ="";
ACampos[21][0]  = "ufConsultorio";ACampos[21][1] = 5;ACampos[21][2] ="UF - Endereço do Consultório";ACampos[21][3] = true;ACampos[21][4] = 2;ACampos[21][5] ="";ACampos[21][6] ="";ACampos[21][7] ="";
ACampos[22][0]  = "cepConsultorio";ACampos[22][1] = 3;ACampos[22][2] ="CEP - Endereço do Consultório";ACampos[22][3] = true;ACampos[22][4] = 8;ACampos[22][5] ="";ACampos[22][6] ="";ACampos[22][7] ="";
ACampos[23][0]  = "foneConsultorio";ACampos[23][1] =1;ACampos[23][2] ="Telefone - Endereço do Consultório";ACampos[23][3] = true;ACampos[23][4] = 7;ACampos[23][5] ="";ACampos[23][6] ="";ACampos[23][7] ="";
ACampos[24][0]  = "faxConsultorio";ACampos[24][1] =1;ACampos[24][2] ="Fax - Endereço do Consultório";ACampos[24][3] = false;ACampos[24][4] = 7;ACampos[24][5] ="";ACampos[24][6] ="";ACampos[24][7] ="";
ACampos[25][0]  = "celConsultorio";ACampos[25][1] =1;ACampos[25][2] ="Celular - Endereço do Consultório";ACampos[25][3] = false;ACampos[25][4] = 9;ACampos[25][5] ="";ACampos[25][6] ="";ACampos[25][7] ="";

v_aeiou_0 = "áàãäâÁÀÃÄÂéèêëÉÈÊËíìîïÍÌÎÏóòõôöÓÒÕÔÖúùûüÚÙÛÜçÇ";
v_aeiou_1 = "aaaaaAAAAAeeeeEEEEiiiiIIIIoooooOOOOOuuuuUUUUcC";

var AllValid = true;

array_length = 14;
checkstrArray = new Array (array_length);for (var i=0;i<array_length;i++) checkstrArray[i]="";
checkstrArray[0] = "0123456789";
checkstrArray[1] = "0123456789-/.";
checkstrArray[2] = "0123456789/";
checkstrArray[3] = "0123456789-.";
checkstrArray[4] = ",0123456789";
checkstrArray[5] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -.";
checkstrArray[6] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._@";
checkstrArray[7] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-/.; ";
checkstrArray[8] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.- ";
checkstrArray[9] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -,/º.";
checkstrArray[10] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_/.&?=#";
checkstrArray[11] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -,.()";
checkstrArray[12] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -.,";
checkstrArray[13] = "";
messageArray = new Array (array_length);for (var i=0;i<array_length;i++) messageArray[i]="";
messageArray[0] = "deve conter apenas caracteres numéricos.";
messageArray[1] = "use apenas números, o hífen e a barra.";
messageArray[2] = "deve conter apenas caracteres numéricos e barra '/'.";
messageArray[3] = "use apenas números. O hífen é colocado automaticamente";
messageArray[4] = "é um campo numérico. Use a vírgula para separar as casas decimais";
messageArray[5] = "use apenas os caracteres alfanuméricos. Não utilize os acentos.";
messageArray[6] = "deve conter apenas caracteres alfanuméricos e os símbolos \"@\", \".\", \"-\" ou \"_\".";
messageArray[7] = "deve conter apenas caracteres alfanuméricos e os símbolos \"-\", \"/\", \".\"";
messageArray[8] = "deve conter apenas caracteres alfabéticos e espaços";
messageArray[9] = "use apenas os caracteres alfanuméricos, o branco e \"- \",\" / \", \" º \". Não utilize os acentos.";
messageArray[10] = "deve conter apenas caracteres alfanuméricos e os símbolos \"-\", \"/\", \".\", \"&\",\"?\", \"=\".";
messageArray[11] = "deve conter apenas caracteres alfanuméricos e os símbolos \",\", \".\", \"(\", \")\", \"-\" e espaços"
messageArray[12] = "deve conter apenas caracteres alfabéticos, espaços e a vírgula"
messageArray[13] = "é de preenchimento obrigatório"

function valida_cpfcnpj (vdata, campo_index)
{
	var i, j, k, Soma, Digito, CNPJ, vnumero, tamanho;
	while(vdata.indexOf(".")>=0) vdata = vdata.replace(".","");
	while(vdata.indexOf("-")>=0) vdata = vdata.replace("-","");
	while(vdata.indexOf("/")>=0) vdata = vdata.replace("/","");   
	switch (vdata.length) {
		case 11 : CNPJ = false; 
		           //    vdata = vdata.slice(0,3) + vdata.slice(4,7) + vdata.slice(8,11) + vdata.slice(12,14);
					    break; 
		case 14 : CNPJ = true;
			      //     vdata = vdata.slice(0,2) + vdata.slice(3,6) + vdata.slice(7,10) + vdata.slice(11,15) + vdata.slice(16,18);
				        break; 
		default : AllValid = false; alert ("Erro grave! Comunique-se conosco.  Obrigado.  =>"+vdata);
	};
	tamanho 	= vdata.length;
	vnumero 	= vdata.slice(0,(tamanho-2));
	
	for (j = 1; j < 3; j++)  {
		k = 2;
		Soma = 0;
		tamanho = vnumero.length;
		for (l = 0; l < tamanho; l++)  {
			i = (tamanho - 1) - l;
			Soma = Soma + (parseInt(vnumero.charAt(i),10) * k);
			k++;
			if (k > 9 && CNPJ) k = 2;
		};
		Digito = 11 - Soma % 11;
		if (Digito >= 10) Digito = 0;
			vnumero = vnumero + Digito.toString();
	};
	if (vdata != vnumero) {
	AllValid = false;
	nome_campo = ACampos[campo_index][0];
	titulo_campo = ACampos[campo_index][2];
	if (ACampos[campo_index][3] == true)
		alert ("Nº do "+ titulo_campo +" não confere, corrija-o, pois esta informação não pode ser cadastrada incorretamente.")
	else
		alert ("Nº do "+ titulo_campo +" não confere, corrija-o ou apague-o, pois esta informação não pode ser cadastrada incorretamente.");
			if (!AllValid) eval("document.Form1."+nome_campo+".focus()");
	}; 
};

function valida_data (vdata, campo_index)
{
	var titulo_campo = ACampos[campo_index][2];
	var nome_campo = ACampos[campo_index][0];
	var fatal_error = false;
	
	if(isNaN(vdata)){	
		vdia=parseInt(vdata.slice(0,2),10);
		vbarra1=vdata.slice(2,3);
		vmes=parseInt(vdata.slice(3,5),10);
		vbarra2=vdata.slice(5,6);
		vano=parseInt(vdata.slice(6,10),10);

		if (AllValid&&ACampos[campo_index][3]) {
		   if((titulo_campo != "Data Nasc.") && (titulo_campo != "Data de Nascimento")){
			if (vbarra1 != "/" || vbarra2 != "/" || (vdia < 1 || vdia > 31) || (vmes < 1 || vmes > 12)) AllValid = false;
		   }
		   else {
			if (vbarra1 != "/" || vbarra2 != "/" || (vdia < 1 || vdia > 31) || (vmes < 1 || vmes > 12) || (vano < 1900 || vano >= 1991)) AllValid = false;
		   }
	           if (!AllValid) {
			if((titulo_campo != "Data Nasc.") && (titulo_campo != "Data de Nascimento")){
				alert ("O valor do campo \""+titulo_campo+"\" deve ser no formato \"dd/mm/aaaa\" com: 'dd' entre 1 e 31, 'mm' entre 1 e 12 e 'aaaa' igual ou maior do que 2003.");
			} 
			else{
				alert ("O valor do campo \""+titulo_campo+"\" deve ser no formato \"dd/mm/aaaa\" com: 'dd' entre 1 e 31, 'mm' entre 1 e 12 e 'aaaa' menor do que 1990.");
			};
			eval("document.Form1."+nome_campo+".focus()");
		   };
		};

		if (AllValid) {
			switch (vmes) {
				case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : 
				case 12 : if (vdia > 31) AllValid = false; break;
				case 4 : case 6 : case 9 :
				case 11 : if (vdia > 30) AllValid = false; break;
				case 2 :
					if (vdia > 29)  AllValid = false
					else {
						if (vdia == 29) {
							restazerovano=((Math.round(vano/100))-(vano/100));
							ttvano4=vano / 4;
							rttvano4=((Math.round(ttvano4) * 100) / 100);
							ttvano400=vano / 400;
							rttvano400=((Math.round(ttvano400) * 100) / 100);
							if (restazerovano == 0) { if ((rttvano400-ttvano400)!=0) AllValid = false; }
							else { if ((rttvano4-ttvano4) != 0) AllValid = false };
						};
					};
					break;
				default: fatal_error = true; AllValid = false; alert ("Erro grave! Comunique-se conosco.  Obrigado.  =>"+vdata+"  "+vmes);
			};
			if (!AllValid && !fatal_error) {
				alert ("O valor do campo \""+titulo_campo+"\" deve conter dia compatível com o mês indicado.  O mês "+vdata.slice(3,5)+" não possui "+vdata.slice(0,2)+" dias.");
				eval("document.Form1."+nome_campo+".focus()");
			};
		};
	};
}; // fim valida_data

function valida_string (conteudo_data, campo_index)
{
		var vdata = conteudo_data;

		var nome_campo = ACampos[campo_index][0];
		var checkOK_index = ACampos[campo_index][1];
		var titulo_campo = ACampos[campo_index][2];
		var nao_nulo = ACampos[campo_index][3];
		var min_tam = ACampos[campo_index][4];
		var checkOK = checkstrArray[checkOK_index];

		if (nao_nulo && (vdata == "" || vdata == "0")) {
			AllValid = false;
			checkOK_index = 13;
			alert("O campo \""+ titulo_campo +"\" "+ messageArray[checkOK_index]);
			eval("document.Form1."+ nome_campo +".focus()");
		};			

		if (AllValid && vdata != "" && (ACampos[campo_index][2] == "CPF" || ACampos[campo_index][2] == "CNPJ")) valida_cpfcnpj (vdata, campo_index);

		if (AllValid && ACampos[campo_index][1] == 2) valida_data (vdata, campo_index);

		if (vdata.length > 0) {
			if (AllValid && ACampos[campo_index][1] > 4 && ACampos[campo_index][1] < 13) {
				var achou = false;
				var vdata_nova = "";
				var tam_str = vdata.length;
				for (i = 0;  i < v_aeiou_0.length;  i++) {
					for (j = 0;  j < tam_str;  j++) {
						if (v_aeiou_0.charAt(i) == vdata.charAt(j)) {
							vdata_nova = vdata_nova + v_aeiou_1.charAt(i);
							achou = true; }
						else vdata_nova = vdata_nova + vdata.charAt(j);
					};
					vdata = vdata_nova;
					vdata_nova = "";
				};
				if (achou) eval("document.Form1."+nome_campo+".value = vdata");
			};

			if (AllValid) {
				for (i = 0;  i < vdata.length;  i++) {
					for (j = 0;  j < checkOK.length;  j++) if (vdata.charAt(i) == checkOK.charAt(j)) break;
					if (j == checkOK.length) { AllValid = false; break; };
				};
				if(!AllValid){
					alert("O campo ''"+titulo_campo+"'' "+messageArray[checkOK_index]);
					eval("document.Form1."+nome_campo+".focus()");
				};
			};
		
			if (AllValid){
				for (var l = 0; l < vdata.length; l++){
						var achoubr = false;
						if(vdata.charAt(l) != " ") {
							AllValid = true;
							achoubr = true;	
							break;
						}
						else{
							AllValid = false; 
						};
				}
				if(!AllValid){
					alert("O campo \""+ titulo_campo +"\" não deve conter somente espaços. Favor preencha corretamente.");
					eval("document.Form1."+ nome_campo +".focus()");
				}
			}
					
			if (AllValid && ACampos[campo_index][7].length > 0) {
				var count = 0;
				for (i = 0;  i < ACampos[campo_index][7].length;  i++) {
					ch = ACampos[campo_index][7].charAt(i);
					chobr = ACampos[campo_index][7];
					for (j = 0;  j < vdata.length;  j++){
						if (ch == vdata.charAt(j)) {
							count = parseInt(count)+1;
						}
					}
				};
				if(count < ACampos[campo_index][7].length) AllValid = false;
				if(!AllValid){
					if (chobr.lastIndexOf(" ") != -1){
						alert("O campo \""+ titulo_campo +"\" deve ter pelo menos um espaço em branco.");
					}
					else{
						alert("O campo\""+ titulo_campo +"\" dever conter o(s) caracter(es):\""+ chobr +"\".");
					}
					eval("document.Form1."+ nome_campo +".focus()");
				}
			};
		};
		
		if (vdata.length > 0) {
			if (AllValid && ACampos[campo_index][5] != "" && ACampos[campo_index][6] != "") 
				if (vdata < ACampos[campo_index][5] || vdata > ACampos[campo_index][6]) {
					AllValid = false;
					checkOK_index = 7;
					if (Acampos[campo_index][5] !=""){	
						alert("O campo \""+titulo_campo+"\" deve ter pelo menos "+ACampos[campo_index][5]+" caracteres.");
					} 
					else {
						if(Acampos[campo_index][6] !=""){
							alert("O campo \""+titulo_campo+"\" deve ter menos de "+ACampos[campo_index][6]+" caracteres.");
						}
						else{
							if((Acampos[campo_index][5] !="")&&(Acampos[campo_index][6] !="")){
								alert("O campo\""+ titulo_campo +"\" deve ter mais de "+ Acampos[campo_index][5] +"e menos que "+ Acampos[campo_index][6] +".");
							}
						}
					}
					eval("document.Form1."+nome_campo+".focus()");
				};

			if (AllValid) {
				if (vdata != "" && vdata.length < min_tam) AllValid = false;
				if (!AllValid) {
					alert("O campo ''"+titulo_campo+"'' deve possuir "+ min_tam +" ou mais caracteres.");
					eval("document.Form1."+nome_campo+".focus()");
				}
			};
		};

};  // fim valida_string

function Validar_campos ()
{
	var i, conteudo;
	AllValid = true;
	for (i = 0; i < valid_until; i++)  {
		conteudo = eval("document.Form1."+ACampos[i][0]+".value");
		//alert(conteudo)
		if (AllValid) valida_string (conteudo, i)
		else break;
	};
};


function validar ()
{

	Validar_campos();



	if(AllValid){
   		//  Submits	
		if (document.Form1.DBActionFlag.value == "E") document.Form1.DBActionFlag.value = "I";
		if (document.Form1.DBActionFlag.value == "C") document.Form1.DBActionFlag.value = "N";
		document.Form1.action="alteracaoCadastral.php";
		document.Form1.submit();
	};
};

