function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }

   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; }
   else 
      if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } 
   else 
      if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } 
   else 
      if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}



function objVal(nomeCampo,labelCampo,tipo,obrigatorio){
	this.nomeCampo=nomeCampo;
	this.labelCampo=labelCampo;
	this.tipo=tipo;
	this.obrigatorio=obrigatorio;
}

function campoObrigatorio(objCampo){
	if(objCampo)
		objCampo.style.borderColor="#C70730";
}

function campoValidado(objCampo){
	if(objCampo)
		objCampo.style.borderColor="#999999";
}

function verificaForm(nomeForm,vecVal,alertas){
	/*flagConfirma = 0; //inicializacao flagConfirma
	flagPrimeiroErro = 0;
	campoPrimeiroErro = "";*/
	msgErroObrigatorio="";
	msgErroInt="";
	msgErroEuro="";
	msgErroData="";
	espacamento="       ";
	objPrimeiroErro=null;

	for(var i=0; i<vecVal.length; i++){
		nomeCampo=vecVal[i].nomeCampo;
		labelCampo=vecVal[i].labelCampo;
		tipo=vecVal[i].tipo;
		obrigatorio=vecVal[i].obrigatorio;

		objCampo=eval("document."+nomeForm+"."+nomeCampo);
		valor=objCampo.value;
		//Se é uma Lov vai buscar o campo da Descrição para poder colocar a vermelho
		if(tipo=="Lov")
			objCampo=eval("document."+nomeForm+"."+nomeCampo+"Desc");
		if(objCampo){
			// Preenchimento Obrigatório
			if(obrigatorio==true){
				if(valor==""){
					if(alertas==true)
						msgErroObrigatorio+=espacamento+labelCampo+"\n";
					campoObrigatorio(objCampo);
					if(!objPrimeiroErro)
						objPrimeiroErro=objCampo;
				}else{
					campoValidado(objCampo);
				}
			}
			
			// Preenchimento Correcto - Formato Int
			if(tipo=="Int"){
				er=/^\d+$/;
				if(!er.test(valor) && valor!=""){
					msgErroInt+=espacamento+labelCampo+"\n";
					campoObrigatorio(objCampo);
					if(!objPrimeiroErro)
						objPrimeiroErro=objCampo;
				}
			}
			// Preenchimento Correcto - Formato Euro
			if(tipo=="Euro"){
				er=/^((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/;
				if(!er.test(valor) && valor!=""){
					msgErroEuro+=espacamento+labelCampo+"\n";
					campoObrigatorio(objCampo);
					if(!objPrimeiroErro)
						objPrimeiroErro=objCampo;
				}
			}
			// Preenchimento Correcto - Formato Data
			if(tipo=="Data"){
				if(!isValidDate(valor, "YMD") && valor!=""){
					msgErroData+=espacamento+labelCampo+"\n";
					campoObrigatorio(objCampo);
					if(!objPrimeiroErro)
						objPrimeiroErro=objCampo;
				}
			}
		}
	}
	
	if(alertas){
		msgErro="";
		if(msgErroObrigatorio!=""){
			msgErro+="É de preenchimento obrigatório o(s) seguinte(s) campos:\n"+msgErroObrigatorio;
			msgErro+="\n\n";
		}
		if(msgErroInt!=""){
			msgErro+="O(s) seguinte(s) campo(s) deve(m) ser um número inteiro:\n"+msgErroInt;
			msgErro+="\n\n";
		}
		if(msgErroEuro!=""){
			msgErro+="O(s) seguinte(s) campo(s) deve(m) ser um valor em Euros:\n"+msgErroEuro;
			msgErro+="\n\n";
		}
		if(msgErroData!=""){
			msgErro+="O(s) seguinte(s) campo(s) deve(m) ser uma data (aaaa/mm/dd):\n"+msgErroData;
			msgErro+="\n\n";
		}
		
		if(msgErro!=""){
			alert(msgErro);
			if(objPrimeiroErro)
				objPrimeiroErro.focus();
			return false;
		}
	}

	return true;
}

