			// Valida se o campo passado como parametro esta vazio ou não
			// Como geralmente o nome dos inputs começam com 3 letras, eu
			// quebro a palavra e retorno o nome generico do campo
			function validar(campo) {
				var msg;
				if (campo.value == "") {
					alert("O campo está vazio.");
					foco(campo);
					return 0;
				}
				else
					return 1;
			}

			// Função para CPF que verifica se o campo está vazio, se estiver a rotina é direcionada para
			// a rotina validar senão vai para a rotina que realmente valida o CPF ou seja, validcpf();
			function valcpf(campo) {
				var id;
				// Pega a url da página
				var txt = location.href;
				id = validar(campo);
				if (id == 1) {
					// Só entra se for a página de cadastro
					if( txt.substr((txt.length-12), txt.length) == "cadastro.php") {
						if ( validcpf(campo) != false ) {
							// Passa o valor para o input hidden - hdid - hidden id
							document.forms[0].hdid.value=1;
							// Envia a pagina, para validar o cpf
							document.forms[0].submit();
						}
					}
					else
						return validcpf(campo);
				}
				else
					return false;
			}

			// Verifica se dois campos possuem o mesmo valor. Geralmente eu a utilizo no segundo campo
			// pois a unica verificação que eu devo fazer no primeiro campo é ver se ele esta vazio. Assim
			// eu passo o nome dos dois campos, verifico se o segundo está vazio e se não estiver, verifico 
			// se os dois campo possuem o mesmo valor
			function valsenha(campo1, campo2) {
				if ( (campo1.value != campo2.value) || (campo1.value == "") || (campo2.value == "") ) {
					alert("As senhas informadas são diferentes ou nulas. Informe-as novamente.");
					foco(campo1);
					return false;
				}
				else 
					return true;
			}

			// Esta é a minha função para abrir uma tela . O parametros sao:
			// href= Pagina que sera aberta no Pop-Up
			// tittela =  Nome do pop-up
			// larg = Largura do pop-up
			// alt = altura do pop-up
			function abretela(href, tittela, larg, alt) {
				win=window.open(href,null,"height="+larg+", width="+alt+", scrollbars=yes");
       			win.focus();
   			}
   			
			// Função que valida realmente o CPF. A rotina não é de minha autoria, então não posso explicar o algoritmo
			// baixei na internet, se você for o autor da rotina, meus parabéns... Funcionou muito bem para mim, porém 
			// tive de fazer algumas alterações.
			function validcpf(campo) {
				
				var i; 
				s = campo.value;
				var c = s.substr(0,9); 
				var dv = s.substr(9,2); 
				var d1 = 0; 
				var v = false;
				
				for (i = 0; i < 9; i++) { 
					d1 += c.charAt(i)*(10-i); 
				} 
				
				if (d1 == 0){ 
					alert("CPF Inválido")
					v = true; 
					return false; 
				} 
				
				d1 = 11 - (d1 % 11); 
				
				if (d1 > 9) d1 = 0; 
				
				if (dv.charAt(0) != d1){ 
					alert("CPF Inválido") 
					v = true;
					return false; 
				} 
				
				d1 *= 2; 
				
				for (i = 0; i < 9; i++) { 
					d1 += c.charAt(i)*(11-i); 
				}
				
				d1 = 11 - (d1 % 11); 
				
				if (d1 > 9) d1 = 0; 
				
				if (dv.charAt(1) != d1){ 
					alert("CPF Inválido") 
					v = true;
					return false; 
				} 
				/*
				if (!v) {
					alert(c + "\nCPF Válido") 
				}
				*/
			}
			
			// Funcao que achei na internet para validar Data
			// Creditos:
			// This script and many more are available free online at
			// The JavaScript Source!! http://javascript.internet.com
			function checkdate(campo) {
				var datefield = objName;
				if(datefield.value != "") {
					if (chkdate(objName) == false) {
						datefield.select();
						alert("Data inválida.");
						foco(datefield);
						return false;
					}
					else {
						return true;
					}
				}
			}

			function chkdate(objName) {
				var strDatestyle = "BR";
				var strDate;
				var strDateArray;
				var strDay;
				var strMonth;
				var strYear;
				var intday;
				var intMonth;
				var intYear;
				var booFound = false;
				var datefield = objName;
				var strSeparatorArray = new Array("-"," ","/",".");
				var intElementNr;
				var err = 0;
				var strMonthArray = new Array(12);
				var Data = new Date();
			
				strMonthArray[0] = "Jan";
				strMonthArray[1] = "Feb";
				strMonthArray[2] = "Mar";
				strMonthArray[3] = "Apr";
				strMonthArray[4] = "May";
				strMonthArray[5] = "Jun";
				strMonthArray[6] = "Jul";
				strMonthArray[7] = "Aug";
				strMonthArray[8] = "Sep";
				strMonthArray[9] = "Oct";
				strMonthArray[10] = "Nov";
				strMonthArray[11] = "Dec";
				strDate = datefield.value;
				if (strDate.length <1) {
					return true;
				}

				for (intElementNr = 0; intElementNr <strSeparatorArray.length; intElementNr++) {
					if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
						strDateArray = strDate.split(strSeparatorArray[intElementNr]);
						if (strDateArray.length != 3) {
							err = 1;
							return false;
						}
						else {
							strDay = strDateArray[0];
							strMonth = strDateArray[1];
							strYear = strDateArray[2];
						}
						booFound = true;
					}
				}

				if (booFound == false) {
					if (strDate.length==8) {
						strDay = strDate.substr(0,2);
						strMonth = strDate.substr(2,2);
						strYear = strDate.substr(4,4);
					}
					else
						return false;
				}

				// US style
				if (strDatestyle == "BR") {
					strTemp = strDay;
					strDay = strDay;
					strMonth = strMonth;
				}

				intday = parseInt(strDay, 10);
				if (isNaN(intday)) {
					err = 2;
					return false;
				}

				intMonth = parseInt(strMonth, 10);
				if (isNaN(intMonth)) {
					for (i = 0;i<12;i++) {
						if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
							intMonth = i+1;
							strMonth = strMonthArray[i];
							i = 12;
						}
					}

					if (isNaN(intMonth)) {
						err = 3;
						return false;
					}
				}

				intYear = parseInt(strYear, 10);
				if (isNaN(intYear)) {
					err = 4;
					return false;
				}

				if (intMonth>12 || intMonth<1) {
					err = 5;
					return false;
				}

				if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday <1)) {
					err = 6;
					return false;
				}

				if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday <1)) {
					err = 7;
					return false;
				}

				if (intMonth == 2) {
					if (intday <1) {
						err = 8;
						return false;
					}

					if (LeapYear(intYear) == true) {
						if (intday > 29) {
							err = 9;
							return false;
						}
					}
					else {
						if (intday > 28) {
							err = 10;
							return false;
						}
					}
				}

				if (strDatestyle == "BR") {
					datefield.value = strDay + "/" + strMonth + "/" + strYear;
				}
				else {
					datefield.value = strDay + "/" + strMonth + "/" + strYear;
				}
				
				if (Date.parse(strMonth + "/" + strDay + "/" + strYear) >= Date.parse(Data) ) {
					return false;
				}


				return true;
			}

			function LeapYear(intYear) {
				if (intYear % 100 == 0) {
					if (intYear % 400 == 0) { return true; }
				}
				else {
					if ((intYear % 4) == 0) { return true; }
				}
				return false;
			}

			function doDateCheck(from, to) {
				if (Date.parse(from.value) <= Date.parse(to.value)) {
					alert("The dates are valid.");
				}
				else {
					if (from.value == "" || to.value == "")
						alert("Both dates must be entered.");
					else
						alert("To date must occur after the from date.");
				}
			}

			// Função que achei na internet para validar email.
			// Creditos:
			// Lista JavaScript-BR
			function veremail(email){
				if (email.value != ""){
					if(((email.value.indexOf(".") <= 0) || (email.value.indexOf("@") <= 0)) || ((email.value.lastIndexOf(".") == (email.value.length - 1)) || (email.value.lastIndexOf("@") == (email.value.length -1)))){
						alert("Por favor confira o campo e-mail!");
						foco(email);
					}
				}
			}
			
			// Funcao para validar CEP
			function valcep(campo) {
				if(campo.value.length < 8) {
					alert("CEP inválido.");
					foco(campo);
				}
				else 
					valnum(campo);
			}
			
			// Funcao para validar inputs apenas numericos
			function valnum(campo) {
				var a=0;
				for (var i = 0; i < campo.value.length; i++) {
					var ch = campo.value.substring(i, i + 1);
					if ( ( (ch < "0") || ("9" < ch) ) && (ch != ' '))
						a = a + 1;
				}
				if(a != 0) {
					alert("Este campo só aceita números.");
					foco(campo);
				}
			}
     	
			// Funcao para validar inputs apenas texto
			function valtex(campo) {
				var regra =  /^[a-z À-ü]+$/i;
				
				if (campo.value != "") {
					if (! regra.test(campo.value) ){
						alert("Este campo só aceita texto.");
						foco(campo);
					}
				}
			}
			
			// Funcao para validar inputs apenas texto
			function valotr(campo) {
				var regra =  /^[/,a-z À-ü 0-9_]+$/i;
				var rest = campo.value;
				
				if (campo.value != "") {
					if (! regra.test(campo.value) ){
						alert("Este campo só aceita letras e numeros.");
						foco(campo);
					}
				}
			}
			
			// Funcao para naum aceitar aspas 
			function ender(campo) {
				var regra =  /^[/, /. /: /; a-z À-ü 0-9_]+$/i;
				var rest = campo.value;
				
				if (campo.value != "") {
					if (! regra.test(campo.value) ){
						alert("Este campo só aceita letras e numeros.");
						foco(campo);
					}
				}
			}
			
			// Funçao de confirmaçao de mensagem
			function confirma(msg, estilo) {
				var res;
				
				// Verifica qual o browser utilizado para tornar a função
				// compatível com a maioria dos navegadores
				if(navigator.appName == "Microsoft Internet Explorer")
					res = vbconfirma(msg, estilo);
				else
					res = confirm(msg);
				
				// Retorna uma saída padrão, pois o VBScript tem saída diferente
				if (res == 6) {
					res = true;
				}
				else {
					if (res == 7)
						res = false;
				}
						
				return res;
			}
			
			// Valida alerta
			function alerta(msg, pag) {
				alert(msg);
				var x = confirma("Você deseja se cadastrar em outra Área de Atuação/Habilidade?", 32+4);
				if(x == false) {
					document.forms[0].action = pag;
					document.forms[0].submit();
				}	
				document.forms[0].lsthabil.value = 0;
			}
			
			// Função que seta foco no ie e no Mozilla
			function foco(campo) {		
				if(navigator.appName == "Microsoft Internet Explorer")
					campo.focus();
				else {
					str = "document.form."+campo.name+".focus()"
					window.setTimeout(str,0)
				}
			}
			
			
			/*
			Funces Definidas
			=================
			So definidas as seguintes funcoes:

				'FormataData(this, event)' que retorna o campo texto do formulario
			formatado de acordo com o formato utilizado aqui no Brasil				
			(dd/mm/aaaa)

			'VerificaData(this)' que retorna se a data no campo texto valida 

			'DataPorExtenso()' retorna a data atual por extenso, no formato:
			dia-da-semana, dia_do_mes de mes de ano

			Forma de Utilizar:
			==================
			<input type="Text" name="NomeDoCampo" 
			size="10" maxlength="10" value="" 
			onKeydown="FormataData(this,event)"
			onBlur="VerificaData(this)">
			
			Claudio Jr. - Javascript-BR
			*/

			function DataPorExtenso() {
			// esta funcao retorna a data do momento por extenso
			// obtem os valores do dia atual
			var agora = new Date();
			var anoN = agora.getFullYear()
			var mesN = agora.getMonth() + 1;
			var diaN = agora.getDay() + 1;
			var diaNr = ( (agora.getDate()<10) ? "0" : "") + agora.getDate();

			// dia da semana por extenso
			switch (diaN) { 
				case 1 : dia = "domingo";
				break; 
				case 2 : dia = "segunda-feira";
				break; 
				case 3 : dia = "tera-feira";
				break; 
				case 4 : dia = "quarta-feira";
				break; 
				case 5 : dia = "quinta-feira";
				break; 
				case 6 : dia = "sexta-feira";
				break; 
				case 7 : dia = "sbado";
				break; 
			}

			// mes por extenso
			switch (mesN) {
				case 1 : 
				mes = "Janeiro"; 
				break;
				case 2 : 
				mes = "Fevereiro"; 
				break;
				case 3 : 
				mes = "Maro"; 
				break;
				case 4 :
				mes = "Abril";
				break;
				case 5 : 
				mes = "Maio";
				break;
				case 6 :
				mes = "Junho";
				break;
				case 7 :
				mes = "Julho";
				break;
				case 8 :
				mes = "Agosto";
				break;
				case 9 :
				mes = "Setembro";
				break;
				case 10 : 
				mes = "Outubro";
				break;
				case 11 :
				mes = "Novembro";
				break;
				case 12 :
				mes="Dezembro";
				break;
			}
				return dia+", "+diaNr+" de "+mes+" de "+anoN;
			}

            function FormataData(Campo, teclapres)
            {
	            var tecla = teclapres.keyCode;
                var vr = new String(Campo.value);
	            vr = vr.replace("/", "");
	            vr = vr.replace("/", "");
	            tam = vr.length + 1;

                if (! ((tecla >=48 && tecla<=57) || (tecla >=96 && tecla <= 105)))
                {
                      if (tecla != 9 && tecla != 8)
                      {
                         return false;
                      }
                }

	            if (tecla != 9 && tecla != 8)
                {
		           if (tam > 2 && tam < 5)
			          Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, tam);
		           if (tam >= 5 && tam <=10)
             	      Campo.value = vr.substr(0,2) + '/' + vr.substr(2,2) + '/' + vr.substr(4,4);
		        }
		        
		        return true;
	        }
	        



			// Formata a data em um campo do tipo input no formulario
			// sintaxe, olhar acima para ver como fica
			/*
			function FormataData(campo) {
				var tecla = teclapres.keyCode;
				var tex = campo.value;
				var vr = campo.value;
				vr = vr.replace( ".", "" );
				vr = vr.replace( "/", "" );
				vr = vr.replace( "/", "" );
				vr = vr.replace( "/", "" );
				tam = vr.length + 1;

                alert('teste');
				if ( tecla != 9 && tecla != 8 && tecla >=48 && tecla<=57 && tecla >=96 && tecla <= 105){
					alert('teste');
				}
					
			if ( tecla != 9 && tecla != 8 && (tecla >=48 && tecla<=57) || (tecla >=96 && tecla <= 105)){
					if ( tam > 2 && tam < 5 )
						alert("Este campo só números.");
						campo.value = vr.substr( 0, tam - 2 ) + '/' + vr.substr( tam - 2, tam );
					
					if ( tam >= 5 && tam <= 10 )
						campo.value = vr.substr( 0, 2 ) + '/' + vr.substr(2, 2 ) + '/' + vr.substr( 4, 4 ); 
				}
			} 
            */
            
			// retorna se o ano bissexto ou nao
			function LeapYear(intYear) {
				if (intYear % 100 == 0) {
					if (intYear % 400 == 0) { 
						return true; 
					}
				}
				else {
					if ((intYear % 4) == 0) { 
						return true; 
					}
				}
				return false;
			}

			// verifica se a data valida
			// se for nao faz nada, se nao, mostra um alerta que a data nao 
			// valida, apaga o campo input e coloca ele em focus denovo
			function VerificaData(objNome) {
				var res = VerificaValidadeData(objNome);
				if (res == false) {
					objNome.select();
					alert("O campo data invalido! Favor verificar...");
					//objNome.value = "";
					objNome.focus();
					return false;
				}
				else {
					objNome.value  = res;
					return true;
				}
			}

			// trabalha com a funcao acima e retorna se a data valida
			// se for retorna true, se nao, retorna false
			function VerificaValidadeData(NomeObj) {
				var data = NomeObj.value;

				var strDay;
				var strMonth;
				var strYear;
				var dtatual = new Date();
				var intDay;
				var intMonth;
				var intYear;
				var strano;

				// retira qualquer dado estranho da data
				data = data.replace( ".", "" );
				data = data.replace( "/", "" );
				data = data.replace( "/", "" );
				tam = data.length + 1;

				// se o tamanho da data for menor que 1 retorna verdadeiro (vazio)
				if (data.length < 1) {
					return false;
				}

				// pega os digitos separando dia, mes e ano
				strDay = data.substr(0, 2);
				strMonth = data.substr(2, 2);
				strYear = data.substr(4);
				
				// se o ano tiver somente dois digitos, converte para ano com
				// quatro
				if (strYear.length == 3) {
					return false;
				}
				
				if (strYear.length == 2) {
					var dt = String(dtatual.getFullYear());

					strano = String(dtatual.getFullYear());
					strano = strano.substr(2,2);
					
					dt = dt.substr(0, 2);
					
					if( parseInt(strano) < parseInt(strYear) )
						strYear = String(parseInt(dt)-1) + strYear;
					else
						strYear = String(parseInt(dt)) + strYear;
				}

				// converte valores das datas para inteiros para poder fazer
				// calculos sobre eles
				intDay = parseInt(strDay, 10);
				if (isNaN(intDay)) {
					return false;
				}
				intMonth = parseInt(strMonth, 10);
				if (isNaN(intMonth)) {
					return false;
				}
				intYear = parseInt(strYear, 10);
				if (isNaN(intYear)) {
					return false;
				}

				// verifica se o mes he menor que 1 ou he maior que 12
				if (intMonth > 12 || intMonth < 1) {
					return false;
				}

				// verifica a validade dos dias no mes (30 ou 31)
				if (( intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth
					== 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31
					|| intDay < 1)) {
					return false;
				}
				
				if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth
				== 11) && (intDay > 30 || intDay < 1)) {
				return false;
				}
				
				// verifica o caso de janeiro
				if (intMonth == 2) {
					if (intDay < 1) {
						return false;
					}
					
					if (LeapYear(intYear) == true) {
						// funcao LeapYear retorna se he ano bissesto
						if (intDay > 29) {
							return false;
						}
					}
					else {
						if (intDay > 28) {
							return false;
						}
					}
				}
				
				var dtsis = new Date(dtatual.getFullYear(),dtatual.getMonth(),dtatual.getDate());
				var dtval = new Date(intYear, intMonth-1, intDay);
				
				if (dtval > dtsis) {
					return false;
				}
				
				var ndata = strDay + "/" + strMonth + "/" + strYear;
				// a data esta ok, retorna true
				return ndata; 
			}
			
			
			// Função que colocar a mascara no CPF
			function ajustar_cpf(input)
			{
				if ((event.keyCode<48)||(event.keyCode>57)){
					event.returnValue = false;
					}
			    else {
			    	if((input.value.length==3)||(input.value.length==7))
						input.value=input.value + "." ;
					else {
			    		if(input.value.length==11)
							input.value=input.value + "-" ;
					}
				}
			}
