/********************************************************************************************/
function valida_formulario(TheForm){
/********************************************************************************************/
    check = "";										//ARMAZENA OS "NAMES" DOS CAMPOS CHECKBOX QUE NÃO ESTA EM "CHECKED"
    list = "";										//ARMAZENA OS "NAMES" DOS LIST BOX QUE NAO POSSUEM ITENS SELECIONADOS
	formact = window.document.forms[TheForm];		// CRIA UM ALIAS PARA O FORM (FORMACT)
    numelts = formact.elements.length; 				// ARMAZENA O NÚMERO DE ELEMENTOS DO FORMULARIO EM NUMELTS

	for(j=0; j != numelts; j++){					// LOOP NOS ELEMENTOS DO FORMULARIO
        eltact = formact.elements[j];				// ARMAZENA EM ELTACT = ELEMENTO ATUAL

		// QUEBRA O NOME DO ELEMENTO EM UM ARRAY

   		var elem_properties = eltact.name.split("|");

		if(eltact.type != "button" && eltact.type != "reset" && eltact.type != "submit" && elem_properties[7].toLowerCase().substr(0,5) != "lista"){		// se o elemento não for um button e não for lista

			/*--------------------------------------------
			SE O TIPO DE ELEMENTO É UM INPUT TYPE TEXT
			--------------------------------------------*/
    		if(elem_properties[1].toLowerCase() =="txt" || elem_properties[1].toLowerCase() =="pwd"){

				//alert('campo actual:' + elem_properties[3]);

				/*--------------------------------------------
				CAMPO TEXT - VALIDA TEXTO
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "texto"){

					if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if(! valida_texto(eltact)) return false;

						}
					}
    			}

				/*--------------------------------------------
				CAMPO TEXT - VALIDA ALFANUMERICO
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "alfa"||elem_properties[2].toLowerCase() == "senha"||elem_properties[2].toLowerCase() == "login"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if(! valida_alfanumerico(eltact)) return false;

						}
					}
    			}

				/*--------------------------------------------
				CAMPO TEXT - VALIDA NUMERO INTEIRO
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "numero"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if(! valida_numero(eltact)) return false;

						}
					}
    			}

				/*--------------------------------------------
				CAMPO TEXT - VALIDA NUMERO INTEIRO
				--------------------------------------------*/

				if(elem_properties[2].toLowerCase().substring(0,5) == "valor"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if (! valida_valor(eltact,parseInt(elem_properties[2].substr(5,1)))) return false;

						}
					}
    			}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA CPF
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "cpf"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if (! valida_cpf(eltact)) return false;

						}
					}
    			}

    			/*--------------------------------------------
				CAMPO TEXTO - VALIDA CNPJ
				--------------------------------------------*/

				if(elem_properties[2].toLowerCase() == "cnpj"){

					if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if (! valida_CNPJ(eltact)) { eltact.focus(); eltact.select(); return false;}

						}
					}
    			}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA CEP
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "cep"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if (! valida_cep(eltact)) return false;

						}
					}
				}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA DATA
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "data"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							eltact.select();
							return false;

						} else {

							/* VALIDA O CAMPO (PASSAR O VALOR DO CAMPO) */

							if (! valida_data(eltact.value)){
								eltact.select();
								return false;
							}

						}
					}

				}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA HORA
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "hora"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO (PASSAR O VALOR DO CAMPO) */

							if (! valida_hora(eltact.value)){
								eltact.select();
								return false;
							}
						}
					}
				}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA DATA E HORA
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "datahora"){

                    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO (PASSAR OS VALORES DO CAMPO) */

							eltact_parts=eltact.value.split(" ");
							if (! valida_data(eltact_parts[0])|| (! valida_hora(eltact_parts[1]))) return false;

						}
					}
				}

				/*--------------------------------------------
				CAMPO TEXTO - VALIDA EMAIL
				--------------------------------------------*/

    			if(elem_properties[2].toLowerCase() == "email"){

				    if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

						// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

						if(eltact.value == ""){

							/* CAMPO VAZIO, ALERTA */

							alerta_requerido(eltact);
							return false;

						} else {

							/* VALIDA O CAMPO */

							if(! valida_email(eltact)) return false;

						}
					}
				}
			}


			/*--------------------------------------------
				VALIDAÇÃO DE ELEMENTO TEXTAREA
			--------------------------------------------*/



			if(elem_properties[1].toLowerCase().substr(0,3) =="txa"){
				//--------------------------------------------
				// campo textarea - valida texto */
				//--------------------------------------------
				if(elem_properties[2].toLowerCase() == "alfa"){

					tam = parseInt(elem_properties[1].substr(3,elem_properties[1].length-3))

					if (elem_properties[0].toLowerCase() == "obr"){
						// se for obrigatório, verifica se o campo não está vazio
						if(eltact.value != ""){
							// valida o campo
							if(!valida_alfanumerico(eltact)||!valida_textarea(eltact,tam)) return false;
						}else{
							// retorna msg exigindo o campo
							alert("Campo requerido")
							eltact.focus();
							return false;
						}
					}else{
						// se não for obrigatorio
						if(eltact.value != ""){
							// se não estiver vazio, valida o campo
							if(! valida_alfanumerico(eltact)||!valida_textarea(eltact,tam)) return false;
						}
					}
    			}

			}



			/*--------------------------------------------
				VALIDAÇÃO DE ELEMENTO TEXTAREA
				(SOMENTE VERIFICA SE O ELEMENTO É
				OBRIGATÓRIO, ISTO É, NÃO PODE SER
				"" {VAZIO})
			--------------------------------------------*/

			if(elem_properties[1].toLowerCase().substr(0,3) =="cbo"){

				if (elem_properties[0].toLowerCase() == "obr" || eltact.value != ""){

					// SE FOR OBRIGATÓRIO OU SE O CAMPO NÃO ESTÁ VAZIO

					if(eltact.options[eltact.selectedIndex].value == ""){

						/* CAMPO VAZIO, ALERTA */

						alerta_requerido(eltact);
						return false;

					/*} else {*/

						/* VALIDA O CAMPO */

						/*if(! valida_texto(eltact)) return false;*/

					}
				}

			}
		}

		else if(eltact.type == "button" && eltact.value.toLowerCase() == "inserir"){

			c_nome_do_botao = eltact.name;

			/* A POSIÇAO DO BOTAO NO FORM VEM NOS DOIS PRIMEIROS CARACTERES
			DO NOME DO BOTAO */

			n_posicao_botao_inserir = eval(c_nome_do_botao.substr(0,2));

			n_posicao_posicao_lista = n_posicao_botao_inserir + 1 ;

			/* O CAMPO DESTINO SERÁ SEMPRE UMA POSICAO APOS O BOTAO */

			c_campo_destino = formact.elements[n_posicao_posicao_lista];

			els_to_select = c_campo_destino.length;

			for(i=0;i<els_to_select;i++){
				c_campo_destino.options[i].selected = true;
			}
		}

		/*----------------------------------------------------------------------------------------
			VALIDAÇÃO DE ELEMENTO CHECKBOX não selecionado
		----------------------------------------------------------------------------------------*/

	    if (eltact.type == "checkbox")
        {
        	if (eltact.checked == false)
        	  {
		       	check += "&" + eltact.name + "=0";
        	  }
        }

		/*----------------------------------------------------------------------------------------
			VALIDAÇÃO DE ELEMENTO LISTBOX não selecionado
		----------------------------------------------------------------------------------------*/

		if (eltact.type == "select-multiple")
        {
        	if (eltact.value == "")
        	  {
		       	list += "&" + eltact.name + "=";
        	  }
        }

	}
    if(check != "" || list != ""){
		formact.action += check + list;
	}
	formact.submit();
}

/********************************************************************************************/
function alerta_requerido(c_origem){
/********************************************************************************************/
	alert("Campo obrigatório !");
	c_origem.focus();
	return false;
}

