function ValidarFormulario(strNomeFormulario, arrCamposObrigatorios, bolMostrarTodosCamposInvalidos) {
	var objCampoForm, nomeCampoForm, descricaoCampoForm, valorCampoForm;
	var objPrimeiroCampoInvalido;
	var strCamposInvalidos = '';

	// Percorre todos os elementos do array "arrCamposObrigatorios" para determinar
	// se existem campos de preenchimento obrigatório que não estejam preenchidos.
	for(i=0; i < arrCamposObrigatorios.length; i++) {
		// Determina o nome e a descrição do campo obrigatório actual.
		nomeCampoForm = arrCamposObrigatorios[i][0];
		if (arrCamposObrigatorios[i][1] != '')
			descricaoCampoForm = arrCamposObrigatorios[i][1]
		else
			descricaoCampoForm = arrCamposObrigatorios[i][0]

		// Determina o valor (se possível), do campo obrigatório.
		objCampoForm = eval('document.forms["' + strNomeFormulario + '"].' + nomeCampoForm);
		if (objCampoForm != null)
			valorCampoForm = objCampoForm.value
		else
			valorCampoForm = null;
		
		// Verifica se o campo obrigatório actual está preenchido.
		if (valorCampoForm != null) {
			if (valorCampoForm.length <= 0) {
				// Se for para mostrar uma mensagem que inclua todos os campos inválidos,
				// guarda o nome do campo actual para exibir essa mensagem no fim do ciclo.
				// Se não, mostra uma mensagem com o campo inválido encontrado e retorna "Falso".
				if (bolMostrarTodosCamposInvalidos) {
					strCamposInvalidos += '   -> ' + descricaoCampoForm + '\n';
					if (objPrimeiroCampoInvalido == null)
						objPrimeiroCampoInvalido = objCampoForm;
				} else {
					window.alert('Por favor, preencha o seguinte campo obrigatório: ' + descricaoCampoForm);
					//window.alert('Please, fill in the following required field: "' + descricaoCampoForm + '".');
					objCampoForm.focus();
					return false;
				}
			}
		} else {
			alert ('Não é possível determinar o valor do campo "' + nomeCampoForm + '" do formulário.')
		}
	}
	
	if (bolMostrarTodosCamposInvalidos && strCamposInvalidos != '') {
		alert ('Por favor, preencha os seguintes campos obrigatórios:\n\n' + strCamposInvalidos);
		//alert ('Please, fill in the following required fields:\n\n' + strCamposInvalidos);
		objPrimeiroCampoInvalido.focus();
		return false;
	} else {
		return true;
	}
}



function ValidarFormulario1(objFormulario, arrCamposObrigatorios){
	// Enter name of mandatory fields
	//var fieldRequired = Array("FirstName", "LastName");
	// Enter field description to appear in the dialog box
	//var fieldDescription = Array("First Name", "Last Name");
	// dialog message
	
	var objCampoForm, strCampoFormTitulo;
	var alertMsg = "Por favor, preencha os seguintes campos obrigatórios:\n";
	//var alertMsg = "Please complete the following required fields:\n";
	var l_Msg = alertMsg.length;
		
	for (var i = 0; i < arrCamposObrigatorios.length; i++){
		// Determina o campo actual do array de campos a validar.
		var objCampoForm = objFormulario.elements[arrCamposObrigatorios[i][0]];
		
		// Determina o título do campo obrigatório actual.
		if (arrCamposObrigatorios[i][1] != '')
			strCampoFormTitulo = arrCamposObrigatorios[i][1]
		else
			strCampoFormTitulo = arrCamposObrigatorios[i][0]
				
		if (objCampoForm){
			switch(objCampoForm.type){
			case "select-one":
				if (objCampoForm.selectedIndex == -1 || objCampoForm.options[objCampoForm.selectedIndex].text == ""){
					alertMsg += " - " + strCampoFormTitulo + "\n";
				}
				break;
			case "select-multiple":
				if (objCampoForm.selectedIndex == -1){
					alertMsg += " - " + strCampoFormTitulo + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (objCampoForm.value == "" || objCampoForm.value == null){
					alertMsg += " - " + strCampoFormTitulo + "\n";
				}
				break;
			default:
			}
			if (objCampoForm.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < objCampoForm.length; j++){
					if (objCampoForm[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + strCampoFormTitulo + "\n";
				}
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}