///////////////////////////////////////////////////
//  Função		:ValidaFormulario
//	objetivo	:Montar validação para vários  formulários
//  Entrada: 
//		formulario			: Nome do formulario para ser validado 
////////////////////////////////////////////////////
function ValidaFormulario(formulario) 
{

		// Array de criticas sobre cada campo do formulario
	var Incremento=new Array(6);		
	var criticas = new Array(formulario.elements.length * 5);
	
	
		// Preenchendo o array
	switch(formulario.name) 
	{	
		// Formulário de cadastramento da consulta
		case "FormDadosConsultaCadastrar":
			
		
			var DataInicio = FormDadosConsultaCadastrar.item('txtDataInicioProcesso');
			var DataFim = FormDadosConsultaCadastrar.item('txtDataPrevistatermino');
			
			var DataInicioRepique = FormDadosConsultaCadastrar.item('txtDataInicioComentPubExterno');
			var DataFimRepique = FormDadosConsultaCadastrar.item('txtDataFimComentPubExterno');
			
			MontaArrayValidacao(criticas,MontaArray(Incremento,"numConsulta","Nº da Consulta",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"cmbSiglaSuperintendencia","Órgão Responsável",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"txtDescProcesso","Descrição",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"txtDataInicioProcesso","Início",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"txtDataPrevistatermino","Término",true,false,0,0));

			if ((DataInicio.value.length > 0) && (DataFim.value.length > 0)) {
				if(!ValidaDataMaior(DataFim,DataInicio)) {
					//alert('A data de término não pode ser anterior à data de início');
					return false;
				}
			}
			
			if ((DataInicioRepique.value.length > 0) && (DataFimRepique.value.length > 0)) {
				if(!ValidaDataMaior(DataFimRepique,DataInicioRepique)) {
					//alert('A data de término do prazo do Repique não pode ser anterior à data de início');
					return false;
				}	
			}
		break;
	
		// Formulário de Encaminhamento para forum de decisão
		case "FormLinkCadastrar":	
				MontaArrayValidacao(criticas,MontaArray(Incremento,"cmbCodTipo","Tipo",true,false,0,0));	
				MontaArrayValidacao(criticas,MontaArray(Incremento,"txtDescLink","Descrição",true,false,0,0));
				MontaArrayValidacao(criticas,MontaArray(Incremento,"txtEndLink","Endereço (URL)",true,false,0,0));
				window.close();
		break;
		
			// Formulário de reabertura da Pauta
		case "FormReAbrirPauta":		
				MontaArrayValidacao(criticas,MontaArray(Incremento,"txtObs","Observação",true,false,0,0));
		break;
			// Formulário de cadastro de situação
		case "FormAltSituacao":		
				MontaArrayValidacao(criticas,MontaArray(Incremento,"PostSituacao","Situação",true,false,0,0));
		break;
			// Formulário de edição do fluxo
		case "FormDocumentoProcessoAlterar":		
				MontaArrayValidacao(criticas,MontaArray(Incremento,"TipoMateria","Tipo da Matéria",true,false,0,0));
		break;


			// Formulário de cadastro da Data Assinatura
		case "FormAssinatura":		
				//MontaArrayValidacao(criticas,MontaArray(Incremento,"DataAssinatura","Data da Assinatura",true,false,0,2));
		break;
		// Formulários de administração das pautas	
		case "FormPauta":
			MontaArrayValidacao(criticas,MontaArray(Incremento,"Numero","Número da Reunião",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"txtLocal","Local",true,false,0,0));
			MontaArrayValidacao(criticas,MontaArray(Incremento,"Data","Data da Reunião",true,false,0,0));
		break;
				// Formulário de Solicitação de prorrogação
		case "FormSolicitaProrrogacao":	
				
			if(formulario.MesmoPrazo[1].checked)
			{ 
				if (!ValidaDataMaior(formulario.Data,formulario.PrazoFinal))
				{
					return false;	
				}			
			}
			MontaArrayValidacao(criticas,MontaArray(Incremento,"txtDespacho","Descrição da solicitação",true,false,0,0));
					
		break;
		
				// Formulário de cadastro de contingencia
		case "FormfluxoCadastrarContingencia":		
			var NumerosValidos = FormfluxoCadastrarContingencia.item('NumerosValidos');				
			if ((NumerosValidos!=null)&&(NumerosValidos!=""))
			{
				MontaArrayValidacao(criticas,MontaArray(Incremento,"NumerosValidos","Números SICAP",true,false,0,6));
			}	
			else
			{
				if (formulario.action=='FluxoCadastrarContingencia.asp')
				{
					alert('Documentotação só pode ser cadastrada com o resgistro de 1 número SICAP')
					return false;
				}
				else
				{
					MontaArrayValidacao(criticas,MontaArray(Incremento,"Numeros","Números SICAP",true,false,0,0));			
				}
			}							 
			
			MontaArrayValidacao(criticas,MontaArray(Incremento,"NumMemorando","Número do Memorando",true,false,0,0));			
			MontaArrayValidacao(criticas,MontaArray(Incremento,"Prorrogado","Informar se já foi Prorrogado",true,false,0,6));
			var Prorrogado = FormfluxoCadastrarContingencia.item('Prorrogado');	
			if (Prorrogado(0).checked)
			{
				MontaArrayValidacao(criticas,MontaArray(Incremento,"DataAssinatura","Data da assinatura do Presidente",true,false,0,1));
			}
			MontaArrayValidacao(criticas,MontaArray(Incremento,"PrazoSistema","Informar se o calculo do prazo é pelo sistema",true,false,0,6));
			var PrazoSistema = FormfluxoCadastrarContingencia.item('PrazoSistema');	
			if (PrazoSistema(1).checked)
			{
				MontaArrayValidacao(criticas,MontaArray(Incremento,"prazoFinal","Prazo final",true,false,0,1));
			}
			MontaArrayValidacao(criticas,MontaArray(Incremento,"TipoMateria","Tipo da Materia",true,false,0,0));
			
		break;

	
		
		
	}	
		/////////////////////////////////////////////////////////
		// validando o formulario							  //
		///////////////////////////////////////////////////////
	for(cont = 0; cont < formulario.elements.length; cont ++)
	{ 			
		if((criticas[cont * 6] != null) )
		{
			if(!ValidaCampo(formulario.item(criticas[cont*6]), criticas[cont * 6 + 1], criticas[cont * 6 + 2], criticas[cont * 6 + 3], criticas[cont * 6 + 4],criticas[cont * 6 + 5]))
			{
				return false;
			}
		}
	}
		/////////////////////////////////////////////////////////
		// Submetendo o formulário em caso de crítica validada//
		///////////////////////////////////////////////////////
	formulario.submit();
	
}
///////////////////////////////////////////////////
//  Função		:MontaArrayValidacao
//	objetivo	:Montar o array que valida todos os campo de um determinado formulário
//  Entrada: 
//		criticas			: Array que vai ser incrementado com os arrays dos campos 
//		Incremento			: Array com a validação de cada campo
//	
////////////////////////////////////////////////////
function MontaArrayValidacao(criticas, Incremento)
{
	var Posicao
	var Dimensao;
	
	//	Procurando pela primeira posição vazia
	
	for (Posicao = 0; Posicao<criticas.length; Posicao++)
	{
		if (Vazio(criticas, Posicao)== true)
		{
				//Acrescentar os elementos a partir da primeira posição vazia
			for (Dimensao = 0; Dimensao<Incremento.length; Dimensao++)
			{			
				criticas[Posicao+Dimensao] = Incremento[Dimensao]
			}
			return criticas ;
		}
	}
}
///////////////////////////////////////////////////
//  Função		: Vazio
//	objetivo	: verificar se a possição de um determinado array esta vazio 
//  Entrada: 
//		criticas	: Array que vai ser pesquisado
//		Posicao		: Posição que vai ser verificada
////////////////////////////////////////////////////
function Vazio(criticas, Posicao)
{	
	
	if((criticas[Posicao] == null)&&!(criticas[Posicao] == ""))
		{		
			return true;
		}			
	return false;
}


///////////////////////////////////////////////////
//  Função		:MontaArray
//	objetivo	:Montar o array que valida o campo de um determinado formulário
//  Entrada: 
//		Incremento			: Array que vai ser incrementado
//		nomecampo			: Representa o nome do campo que precisa ser validado
//		titulo				: O Nome que foi dado ao campo
//		valor1				: True ou False
//      valor2				: True ou False  
//		valor3				: Número mínimo de dígitos
//		valor4				: Número da função especial
////////////////////////////////////////////////////
function MontaArray(Incremento,nomecampo,titulo,valor1,valor2,valor3,valor4) {
	Incremento[0] = nomecampo;
	Incremento[1] = titulo;
	Incremento[2] = valor1;
	Incremento[3] = valor2;
	Incremento[4] = valor3;
	Incremento[5] = valor4;
	return Incremento;
}


///////////////////////////////////////////////////
//	Valida um campo de um determinado formulário
//  Entrada: 
//			  Campo: Representa o nome do campo que precisa ser validado
//     strDescricao: O Nome que foi dado ao campo
//   blnObrigatório: True ou False
//      blnNumerico: True ou False  
// intMinimoDigitos: Número mínimo de dígitos
//intFuncaoEspecial: Número da função especial
//
//    Saida:
//		True ou False, representando se o formulário foi possui dados válidos ou não.	
///////////////////////////////////////////////////
function ValidaCampo(objCampo, strDescricao, blnObrigatorio, blnNumerico, intMinimoDigitos, intFuncaoEspecial) {
		// Valor do campo	
	var  strValor=0;
		//Verifica se o Objeto foi criado, 
		//caso não ele exista ele finaliza avisa erro e não dá o submit
	if ((objCampo!=null)&&(objCampo!="")){	
		strValor = objCampo.value
	}else{
			//Aviso de erro, não foi possisivel criar o objeto da valição solicitada
		alert("Problemas com a validação dos campos favor informar ao atendimento");
		return false;
	}
	
			// se o campo não for obrigatorio e estiver vazio ele não valida mais nada
	if(!(blnObrigatorio) && (strValor == "")   ) 
	{ 
		return true;
	}	
	
	
		// Verifica campos de preenchimento obrigatório	
	if(blnObrigatorio && (strValor == "" || strValor == 0) ) 
	{ 
		alert("O campo [" + strDescricao + "] tem preenchimento obrigatório!");
		objCampo.focus();
		return false;
	}
	
		// Verifica campos numéricos
	if(blnNumerico && !EhNumero(strValor)) 
	{
		alert("O campo [" + strDescricao + "] deve ser numérico!");
		objCampo.focus();
		return false;
	}
	
		// Valida o número mínimo de dígitos do campo
	if(strValor != "" && intMinimoDigitos > 0 && strValor.length < intMinimoDigitos) 
	{
		alert("O campo [" + strDescricao + "] deve conter pelo menos " + intMinimoDigitos + " dígitos!"); 
		objCampo.focus();
		return false;
	}

	// Validando casos especiais
	switch(intFuncaoEspecial) 
	{
	
		
		case 1:
				// Valida o campo data no monto do submit
			if(!ValidaData(objCampo))
				return false;
			break;			
		case 2:
				// Data maior que a data de hoje
				//Tem que verificar o que fazer quando a data não for obrigatória
				//Sendo que a data tem que ser maior que a data de hoje
			if(!EspecialDataMaiorHoje(objCampo, strDescricao))
				return false;
			break;			
		case 3:
				// Data menor que a data de hoje
				//Tem que verificar o que fazer quando a data não for obrigatória
				//Sendo que a data tem que ser menor que a data de hoje
			if(!EspecialDataMenorHoje(objCampo, strDescricao))
				return false;
			break;		
		case 4:
				//Verifica se o cpf está validado e se é o mesmo que está sendo enviado para alteração			
			if(!EspeciaisCpfCnpj(objCampo, strDescricao))
				return false;
			break;
		case 5:
				//Verifica se o documento está vencido, caso sim pergunta se vai encaminhar assim mesmo para pauta			
			if(!EspecialValidaDocumentoPauta(objCampo, strDescricao))
				return false;
			break;	
		case 6:
				//Verifica se o documento está vencido, caso sim pergunta se vai encaminhar assim mesmo para pauta			
			if(!ValidaCheckbox(objCampo, strDescricao))
				return false;
			break;		
				
	}
	return true;
	
}

///////////////////////////////////////////////////
//  Função		:ValidaData
//	objetivo	:Validadar campos data
//  Entrada: 
//		campo				: objeto da validação
////////////////////////////////////////////////////
function ValidaData(campo)
{
		//define o padrão e compara
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = campo.value.match(datePat);

		//checagem básica
	if (matchArray == null) {
		return false;
	}

		// trata partes da expressão como sendo variáveis
	day = parseInt(matchArray[1],10);
	month = parseInt(matchArray[3],10); 
	year = parseInt(matchArray[4],10);

		// checa faixa de dias
	if (day < 1 || day > 31) {
		alert("O dia deve ser um valor entre 1 e 31!");
		campo.focus()
		return false;
	}		
		
		// checa faixa de meses
	if (month < 1 || month > 12) { 
		alert("O mês deve ser um valor entre 1 e 12!");
		campo.focus()
		return false;
	}

		// checa qtde de dias num mês
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("O mês "+month+" não tem 31 dias!");
		campo.focus()
		return false;
	}

		// checa se o ano é bissexto
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (	day>29 || (day==29 && !isleap)) {
			alert("Fevereiro " + year + " não tem " + day + " dias!");
			campo.focus()
			return false;
		}
	}

		// checa se o ano é válido
	if (year < 1900 || year > 2100) {
		alert("O ano indicado é inválido!");
		campo.focus()
		return false;
	}
	
	return true;
		
}
///////////////////////////////////////////////////
//  Função		:EspecialDataMaiorHoje
//	objetivo	:Verifica se a data é maior que data de hoje caso sim ele barra
//  Entrada: 
//		campo				: objeto da validação
//		descricao			: nome a ser utilizado nos alertas
////////////////////////////////////////////////////
function EspecialDataMaiorHoje(campo, descricao)
{
			//define o padrão e compara
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
		var matchArray = campo.value.match(datePat);

		//checagem básica
		//alert("matchArray = " + matchArray);
		//alert("campo = [" + campo.value + "]");
		if (matchArray == null) {
			alert("Data em formato inválido. \nPor favor, informe a data no formato dd/mm/yyyy");
			campo.focus();
			return false;
		}

			// trata partes da expressão como sendo variáveis
		day = parseInt(matchArray[1],10);
		month = parseInt(matchArray[3],10); 
		year = parseInt(matchArray[4],10);
	
			// checa faixa de dias
		if (day < 1 || day > 31) {
			alert("O dia deve ser um valor entre 1 e 31!");
			campo.focus();
			return false;
		}		
		
			// checa faixa de meses
		if (month < 1 || month > 12) { 
			alert("O mês deve ser um valor entre 1 e 12!");
			campo.focus();
			return false;
		}

			// checa qtde de dias num mês
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert("O mês "+month+" não tem 31 dias!");
			campo.focus();
			return false;
		}

			// checa se o ano é bissexto
		if (month == 2) { 
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (	day>29 || (day==29 && !isleap)) {
				alert("Fevereiro " + year + " não tem " + day + " dias!");
				campo.focus();
				return false;
			}
		}

			// checa se o ano é válido
		if (year < 1900 || year > 2100) {
			alert("O ano indicado é inválido!");
			campo.focus();
			return false;
		}
		
		
			//Checa se a data é maior do que da data de hoje
		var now, diaAtual, mesAtual, anoAtual, DataAtual	
		now = new Date();
			anoAtual = parseInt(now.getFullYear(),10);
			mesAtual = parseInt((now.getMonth()+1),10);
			diaAtual = parseInt(now.getDate(),10);
		
		
			if (year < anoAtual ) 
		{
			alert("A data tem que ser menor que a data de hoje.");
			campo.value='';
			campo.focus();
			return false;
		}
			//Ano válido mas mês não
		if (year == anoAtual && month < anoAtual) 
		{
			alert( "A data tem que ser menor que a data de hoje.");
			campo.value='';
			campo.focus();
			return false;
		}
			//Ano e mês válidos mas dia não
		if (year == anoAtual && month == anoAtual && day < diaAtual)
		{
			alert("A data tem que ser menor que a data de hoje.");
			campo.value='';
			campo.focus();
			return false;
		}
				
		return true;

}
///////////////////////////////////////////////////
//  Função		:ValidaDataMaior
//	objetivo	:Verificar se uma data é maior que outra
//  Entrada: 
//		campo				: objeto da validação
//		campoReferencia		: ObjData de referencia
//		
////////////////////////////////////////////////////
function ValidaDataMaior(campo,campoReferencia)

{

		//define o padrão e compara
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = campo.value.match(datePat);
	var matchArray2 = campoReferencia.value.match(datePat);
	var datacomparacao = campoReferencia.value;
	if (matchArray == null) {
		return false;
	}

		// trata partes da expressão como sendo variáveis
	day		= parseInt(matchArray[1],10);
	month	= parseInt(matchArray[3],10); 
	year	= parseInt(matchArray[4],10);
	
	day2	= parseInt(matchArray2[1],10);
	month2	= parseInt(matchArray2[3],10); 
	year2	= parseInt(matchArray2[4],10);	

		// checa faixa de dias
	if (day < 1 || day > 31) {
		//alert("O dia deve ser um valor entre 1 e 31!");
		return false;
	}		
		
		// checa faixa de meses
	if (month < 1 || month > 12) { 
		//alert("O mês deve ser um valor entre 1 e 12!");
		return false;
	}

		// checa qtde de dias num mês
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		//alert("O mês "+month+" não tem 31 dias!");
		return false;
	}

		// checa se o ano é bissexto
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (	day>29 || (day==29 && !isleap)) {
			//alert("Fevereiro " + year + " não tem " + day + " dias!");
			return false;
		}
	}

		// checa se o ano é válido
	if (year < 1900 || year > 2100) {
		//alert("O ano indicado é inválido!");
		return false;
	}	
	if (year < year2 ) 
		{
			alert("A data tem que ser maior que a data :" + datacomparacao);
			campo.value='';
			campo.focus();
			return false;
		}
			//Ano válido mas mês não
	if (year == year2 && month < month2) 
		{
			alert( "A data tem que ser maior que a data :" + datacomparacao);
			campo.value='';
			campo.focus();
			return false;
		}
			//Ano e mês válidos mas dia não
			
	if (year == year2 && month == month2 && day < day2)
		{
			alert("A data tem que ser maior que a data :" + datacomparacao);
			campo.value='';
			campo.focus();
			return false;
		}
	
	return true;
		
}
///////////////////////////////////////////////////
//  Função		:ValidaDataPauta
//	objetivo	:Verificar se uma data da Pauta é menor 
//				que a data final do documento
//  Entrada: 
//		campo				: objeto da validação
//		dataReferencia		: data de referencia
//		
////////////////////////////////////////////////////
function ValidaDataPauta(campo,dataReferencia)

{
		//define o padrão e compara
	var datePat			= /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray		= campo.value.match(datePat);
	var matchArray2		= dataReferencia.match(datePat);	
	var dataPauta		= dataReferencia;
	var datacomparacao 	= campo.value		
		//checagem básica
	if (matchArray == null) {
		return false;
	}

		// trata partes da expressão como sendo variáveis
	day		= parseInt(matchArray[1],10);
	month	= parseInt(matchArray[3],10); 
	year	= parseInt(matchArray[4],10);

	day2	= parseInt(matchArray2[1],10);
	month2	= parseInt(matchArray2[3],10); 
	year2	= parseInt(matchArray2[4],10);

		// checa faixa de dias
	if (day < 1 || day > 31) {
		//alert("O dia deve ser um valor entre 1 e 31!");
		return false;
	}		
		
		// checa faixa de meses
	if (month < 1 || month > 12) { 
		//alert("O mês deve ser um valor entre 1 e 12!");
		return false;
	}

		// checa qtde de dias num mês
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		//alert("O mês "+month+" não tem 31 dias!");
		return false;
	}

		// checa se o ano é bissexto
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (	day>29 || (day==29 && !isleap)) {
			//alert("Fevereiro " + year + " não tem " + day + " dias!");
			return false;
		}
	}

		// checa se o ano é válido
	if (year < 1900 || year > 2100) {
		//alert("O ano indicado é inválido!");
		return false;
	}
	

	if (year < year2 ) 
		{
			alert("A REUNIÃO SERÁ REALIZADA EM "+ dataPauta + " E A DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);
			return false;
		}
			//Ano válido mas mês não
	if (year == year2 && month < month2) 
		{
			alert("A REUNIÃO SERÁ REALIZADA EM "+ dataPauta + " E A DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);
			return false;
		}		
			//Ano e mês válidos mas dia não
	if (year == year2 && month == month2 && day < day2)
		{
			alert("A REUNIÃO SERÁ REALIZADA EM "+ dataPauta + " E A DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);			
			return false;
		}

	return true;
	
}


///////////////////////////////////////////////////
//  Função		:ValidaDataCircuito
//	objetivo	:Verificar se a data do Circuito é menor 
//				que a data final do documento
//  Entrada: 
//		campo				: objeto da validação
//		dataReferencia		: data de referencia
//		
////////////////////////////////////////////////////
function ValidaDataCircuito(campo,dataReferencia)

{
		//define o padrão e compara
	var datePat			= /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray		= campo.value.match(datePat);
	var matchArray2		= dataReferencia.match(datePat);	
	var dataCircuito	= dataReferencia;
	var datacomparacao 	= campo.value		
		//checagem básica
	if (matchArray == null) {
		return false;
	}

		// trata partes da expressão como sendo variáveis
	day		= parseInt(matchArray[1],10);
	month	= parseInt(matchArray[3],10); 
	year	= parseInt(matchArray[4],10);

	day2	= parseInt(matchArray2[1],10);
	month2	= parseInt(matchArray2[3],10); 
	year2	= parseInt(matchArray2[4],10);

		// checa faixa de dias
	if (day < 1 || day > 31) {
		//alert("O dia deve ser um valor entre 1 e 31!");
		return false;
	}		
		
		// checa faixa de meses
	if (month < 1 || month > 12) { 
		//alert("O mês deve ser um valor entre 1 e 12!");
		return false;
	}

		// checa qtde de dias num mês
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		//alert("O mês "+month+" não tem 31 dias!");
		return false;
	}

		// checa se o ano é bissexto
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (	day>29 || (day==29 && !isleap)) {
			//alert("Fevereiro " + year + " não tem " + day + " dias!");
			return false;
		}
	}

		// checa se o ano é válido
	if (year < 1900 || year > 2100) {
		//alert("O ano indicado é inválido!");
		return false;
	}
	

	if (year < year2 ) 
		{
			alert("O CIRCUITO SERÁ REALIZADO EM "+ dataCircuito + " E A DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);
			return false;
		}
			//Ano válido mas mês não
	if (year == year2 && month < month2) 
		{
			alert("O CIRCUITO SERÁ REALIZADO EM "+ dataCircuito + " E O DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);
			return false;
		}		
			//Ano e mês válidos mas dia não
	if (year == year2 && month == month2 && day < day2)
		{
			alert("O CIRCUITO SERÁ REALIZADO EM "+ dataCircuito + " E A DOCUMENTAÇÃO TEM VENCIMENTO EM: " + datacomparacao);			
			return false;
		}

	return true;
	
}




///////////////////////////////////////////////////
//  Função		:EspecialDataMenorHoje
//	objetivo	:Verifica se a data é menor que data de hoje
//  Entrada: 
//		campo				: objeto da validação
//		descricao			: nome a ser utilizado nos alertas
////////////////////////////////////////////////////
function EspecialDataMenorHoje(campo, descricao)
{
			//define o padrão e compara
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
		var matchArray = campo.value.match(datePat);

			//checagem básica
		if (matchArray == null) {
			alert("Data em formato inválido. \nPor favor, informe a data no formato dd/mm/yyyy");
			campo.focus();
			return false;
		}

			// trata partes da expressão como sendo variáveis
		day = matchArray[1];
		month = matchArray[3]; 
		year = matchArray[4];

			// checa faixa de dias
		if (day < 1 || day > 31) {
			alert("O dia deve ser um valor entre 1 e 31!");
			campo.focus();
			return false;
		}		
		
			// checa faixa de meses
		if (month < 1 || month > 12) { 
			alert("O mês deve ser um valor entre 1 e 12!");
			campo.focus();
			return false;
		}

			// checa qtde de dias num mês
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert("O mês "+month+" não tem 31 dias!");
			campo.focus();
			return false;
		}

			// checa se o ano é bissexto
		if (month == 2) { 
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (	day>29 || (day==29 && !isleap)) {
				alert("Fevereiro " + year + " não tem " + day + " dias!");
				campo.focus();
				return false;
			}
		}

			// checa se o ano é válido
		if (year < 1900 || year > 2100) {
			alert("O ano indicado é inválido!");
			campo.focus();
			return false;
		}
				
		
		var now, diaAtual, mesAtual, anoAtual, DataAtual
		
			//now = new Date();
			//anoAtual = now.getFullYear();
			//mesAtual = (now.getMonth()+1);
			//diaAtual = now.getDate();
		
		if (year > anoAtual ) 
		{
			alert("A data não pode ser maior que a data de hoje.");
			campo.focus();
			return false;
		}
			//Ano válido mas mês não
		if (year == anoAtual && month > mesAtual) 
		{
			alert("A data não pode ser maior que a data de hoje.");
			campo.focus();
			return false;
		}
			//Ano e mês válidos mas dia não
		if (year == anoAtual && month == mesAtual && day > diaAtual)
		{
			alert("A data não pode ser maior que a data de hoje.");
			campo.focus();
			return false;
		}
		
		
		return true;

}
///////////////////////////////////////////////////
//  Função		:EspeciaisCpfCnpj
//	objetivo	:Montar uma validação especial para o campo cpf usado no formAlterar
//  Entrada: 
//		campo				: objeto da validação
//		descricao			: Nome a ser ultilizado nos alertas
////////////////////////////////////////////////////
function EspeciaisCpfCnpj(campo, descricao)
{ 
	var CampoValidado = document.all.item("ValidaCpfCnpj");
	var CpfCnpjValidado = CampoValidado.value		
	var CpfCnpj =  campo.value;
	var MaskNumber = "";
		//Tira a mascara do campo caso ele venha com ela
	for(posicao = 0; posicao < CpfCnpj.length; posicao ++) 
		{
			var chr = CpfCnpj.substring(posicao, posicao + 1);
			if (chr != "." && chr != "/" && chr != "-")
				MaskNumber+= chr;		
		}
		CpfCnpj = MaskNumber
		//Verifica se o campo validado e o mesmo que está sendo enviado pra o submit				
	if ((CpfCnpjValidado != CpfCnpj)&&(CpfCnpjValidado != ''))
		{
			alert("O campo [" + descricao + "] tem que ser validado antes de solicitar altaração!!!");
				campo.focus();
				return false;		
		}
		return true;
}

///////////////////////////////////////////////////
//  Função		:confirma
//	objetivo	:direcionar para um link caso resposta seja positiva
//  Entrada: 
//		mensagem			: pergunta que terá que ser confimada
//		link				: link que será redirecionado caso resposta positiva
////////////////////////////////////////////////////
function confirma(mensagem, link)
{ 
	bresposta = confirm(mensagem);
	if (bresposta == true)
	{
	window.location.href = link;
	} 
}

function ValidaRadio(campo, descricao) 
{
var x=0
	for (i=0;i<campo.length;i++)
	{ 
		if(campo(i).checked) 
		{
			x++
		}
	}
	if (x==0) 
	{	
		alert("O campo [" + descricao + "] tem preenchimento obrigatório!!!");		
		return false;
	}

return true;
	
}

function ValidaCheckbox(campo, descricao) 
{
var x=0
	for (i=0;i<campo.length;i++)
	{ 
		if(campo(i).checked) 
		{
			x++
		}
	}
	if (x==0)
	{	
		if(campo.checked)
		{
		return true;			
		}
		alert("O campo [" + descricao + "] tem preenchimento obrigatório!!!");
		return false;
	}

return true;
	
}

