function validateForm(form) {

	var atividade         = parseInt(getValue("WKNumState"));
	var usuario           = getValue("WKUser");
	var statusEnvio       = getValue("WKCompletTask"); 
	var proximaAtividade  = parseInt(getValue("WKNextState"));
	var usuarioSubstituto = getValue("WKReplacement");

	var matchdata = new RegExp(/((0[1-9]|[12][0-9]|3[01])\/(0[13578]|1[02])\/[12][0-9]{3})|((0[1-9]|[12][0-9]|30)\/(0[469]|11)\/[12][0-9]{3})|((0[1-9]|1[0-9]|2[0-8])\/02\/[12][0-9]([02468][1235679]|[13579][01345789]))|((0[1-9]|[12][0-9])\/02\/[12][0-9]([02468][048]|[13579][26]))/gi);

	if((atividade != proximaAtividade) && (statusEnvio == "true")) { 


		switch (atividade) {
		case 4:				
			if(form.getValue('cmbCentroCusto') == null || form.getValue('cmbCentroCusto').trim() == '') {
				throw 'Informe o centro de custo.';
			}

			if(form.getValue('vlSolicitado') == null || form.getValue('vlSolicitado').trim() == '') {
				throw 'Informe o valor solicitado.';
			}

			// var c1 = DatasetFactory.createConstraint("metadata#active", "true", "true", ConstraintType.MUST); 
			// var c2 = DatasetFactory.createConstraint("centroCusto", form.getValue('cmbCentroCusto'), form.getValue('cmbCentroCusto'), ConstraintType.MUST);
			// var c3 = DatasetFactory.createConstraint("estabelecimento", form.getValue("txtEstabelecimento"), form.getValue("txtEstabelecimento"), ConstraintType.MUST);

			// var dsCoordenador = DatasetFactory.getDataset("pre_cadastro_aprov_coord", null, new Array(c1,c2,c3), null);

			// if (dsCoordenador.rowsCount > 0) {
			// 	if (dsCoordenador.getValue(0,"loginCoord") == "" || dsCoordenador.getValue(0,"loginCoord") == null) {
			// 		throw 'Centro de custo não possui coordenador relacionado no pré-cadastro';	
			// 	}
			// } else {
			// 	throw 'Centro de custo não possui coordenador relacionado no pré-cadastro';
			// }

			// if (form.getValue("selectLoginCoord") == "" || form.getValue("selectLoginCoord") == null) {
			// 	throw 'Selecione um coordenador do centro de custo';
			// }

			if (form.getValue("loginGerente") == "" || form.getValue("loginGerente") == null) {
				throw 'Centro de custo não possui gerente relacionado no pré-cadastro';
			}
			if (form.getValue("loginDiretor") == "" || form.getValue("loginDiretor") == null) {
				throw 'Centro de custo não possui diretor relacionado no pré-cadastro';
			}

			if (form.getValue("txtDataPrevisao") == "" || form.getValue("txtDataPrevisao") == null) {
				throw 'O campo previsão de acerto deve ser informado';
			}	

			if (form.getValue("cod_emitente_imp_federal") != "") {
				if (form.getValue("vlImpostoFederal") == "" || form.getValue("vlImpostoFederal") == null) {
					throw 'Informe valor para previsão de impostos';
				}
			}	
			break;
		case 5:
			if (form.getValue("aprovaAdiantamento") == "" || form.getValue("aprovaAdiantamento") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			break;
		case 33:
			if (form.getValue("aprovaAdiantamentoGerente") == "" || form.getValue("aprovaAdiantamentoGerente") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			break;
		case 41:
			if (form.getValue("aprovaAdiantamentoDiretor") == "" || form.getValue("aprovaAdiantamentoDiretor") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			break;
		case 48:
			if (form.getValue("aprovaAdiantamentoSuper") == "" || form.getValue("aprovaAdiantamentoSuper") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			break;
		case 12:
			if (form.getValue("aprovaAdiantamentoFinanc") == "" || form.getValue("aprovaAdiantamentoFinanc") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			if (form.getValue("dtEmissao") == "" || form.getValue("dtEmissao") == null) {
				throw 'Informe a data de Emissão do título';
			}

			if (form.getValue("codEspecie") == "" || form.getValue("codEspecie") == null) {
				throw 'Informe a Espécie';
			}

			if (form.getValue("portador") == "" || form.getValue("portador") == null) {
				throw 'Informe o Portador';
			}
			break;
		case 20:
			if (form.getValue("aprovaFiscal") == "" || form.getValue("aprovaFiscal") == null) {
				throw 'Informe se aprova ou não a solicitação de adiantamento';
			}
			break;
		}




		if(form.getValue('tipoAdto') == "expo"){

			if(form.getValue('txtProcExpo') == null || form.getValue('txtProcExpo').trim() == '') {
				throw 'O campo Proc. Expo. é de preenchimento obrigatório para processos de Tipo Expo.';
			}

		}





	}
}