
/* ComboBox */

function blnValidarCombo(id,msg)
{
	var ctrl = document.getElementById(id);
	
	if( ctrl != null ) {
	  if(ctrl.value == '')
   	  {
	 	ctrl.focus(); 
		alert(msg);
		return false;
	  }
	}
	return true;
}

/* TextBox */

function blnValidarTextBox(id,msg)
{
	var ctrl = document.getElementById(id);

	if(ctrl.value.length==0)
	{
		ctrl.focus(); 
		alert(msg);
		return false;
	}
	return true;
}

function verificaSubmitOnEnter(event){

	var obj = document.getElementById('submitOnEnter');
	
	if(obj){
		return isKeyEnter(event);
	}
	else return true;
}

function validaData(dataParaValidar)
{
	var data;
	data=dataParaValidar.value;
	var NumerosValidos = "0123456789";
	var isNumber=true;
	var charTeste;
	for (i = 0; i < data.length && isNumber == true; i++) 
	{ 
  		charTeste = data.charAt(i); 
  		if ((NumerosValidos.indexOf(charTeste) == -1) && (charTeste!="-")) 
  		{
			dataParaValidar.value=dataParaValidar.value.substring(0,i+1);
			isNumber = false;
			return isNumber;
		}
	}

	if(data.length == 2)
	{
		dataParaValidar.value +="-"
	}
	if(data.length == 5)
	{
		dataParaValidar.value +="-"
	}
	return isNumber;
}

function isDate(fieldData)
{	
	var index;
	var dataPreenchida;
	dataPreenchida=fieldData.value;
		
	/*if (fieldData.length<9)
	{
		fieldData.select();
		fieldData.focus();
		return -1;
	}*/
	
	index = dataPreenchida.indexOf("-"); 
    var dia = dataPreenchida.substring(0,index);
    
    dataPreenchida=dataPreenchida.substring(index+1);
    index = dataPreenchida.indexOf("-"); 
    var mes = dataPreenchida.substring(0,index);
    
    
    dataPreenchida=dataPreenchida.substring(index+1);
    var ano = dataPreenchida;
    
   
	if (dataPreenchida=="")
	{							
		return -1;
	}
   
	// ano
	if (ano.length<=0)
	{							
		alert("Data n\343o foi preenchida na sua totalidade.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if ( isNaN(ano) || ano.indexOf(",")>=0 || ano.indexOf(".")>=0 || ano.indexOf("/")>=0 || ano.indexOf(" ")>=0  ) 
	{							
		alert("A data introduzida n\343o est\341 correcta. Verifique o formato da mesma (dd-mm-aaaa).");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	// O parseInt interpreta valores iniciados por 0 como valores octais, daí a utilização do parseFloat
	if (parseFloat(ano) > 2100 || parseFloat(ano) < 1754 || parseFloat(ano) == 0)
	{	
		alert("A data introduzida n\343o est\341 correcta. Verifique o formato da mesma (dd-mm-aaaa).");
		fieldData.select();
		fieldData.focus();
		return -1;
	}	
		
	// mes
	if (mes.length<=0)
	{							
		alert("O m\352s n\343o foi preenchido.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if ( isNaN(mes) || mes.indexOf(",")>=0 || mes.indexOf(".")>=0 || mes.indexOf("/")>=0 || mes.indexOf(" ")>=0) 
	{							
		alert("O m\352s introduzido n\343o est\341 correcto.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if (parseFloat(mes) > 12 || parseFloat(mes) == 0) 
	{	
		alert("O m\352s introduzido n\343o est\341 correcto.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}	
	
	
	// dia
	if (dia.length<=0)
	{							
		alert("O Dia n\343o foi preenchido.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if ( isNaN(dia) || dia.indexOf(",")>=0 || dia.indexOf(".")>=0 || dia.indexOf("/")>=0 || dia.indexOf(" ")>=0) 
	{							
		alert("O dia introduzido n\343o est\341 correcto.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if (parseFloat(dia) > 31 || parseFloat(dia) == 0)
	{	
		alert("O dia introduzido n\343o est\341 correcto.");
		fieldData.select();
		fieldData.focus();
		return -1;	
	}	
	if ( (parseFloat(dia)==31) && (parseFloat(mes)=='4' || parseFloat(mes)=='6' || parseFloat(mes)=='9' || parseFloat(mes)=='11' ) )
	{	
		alert("O dia introduzido n\343o est\341 correcto.");
		fieldData.select();
		fieldData.focus();
		return -1;	
	}	
	
	var bissexto = new Boolean;
	
	bissexto = !(parseFloat(ano) % 4) && ( (parseFloat(ano) % 100) || !(parseFloat(ano) % 400));

	if ( (parseFloat(mes)==2) && (parseFloat(dia))>29  ) 
	{	
		alert("Dia incorrecto.");
		fieldData.select();
		fieldData.focus();
		return -1;
	}
	if ( (parseFloat(mes)==2) && (! bissexto) && (parseFloat(dia)==29)  ) 
	{	
		alert("Dia incorrecto (o ano " + ano + " n\343o \351 bissexto).");
		fieldData.select();
		fieldData.focus();
		return -1;	
	}	
		
	//neste ponto temos a certeza que a data tem o formato válido
	//Verifica se é menor que 01-01-1900 data minima da BD
	if (fblnDataMenorQue(fieldData.value, '01-01-1900')) 
	{	
		alert("A data introduzida n\343o pode ser inferior a 01-01-1900.");
		fieldData.select();
		fieldData.focus();
		return -1;	
	}	
	
	//Verifica se é maior que 31/12/2050.
	if (fblnDataMenorQue('31-12-2050', fieldData.value)) 
	{	
		alert("A data introduzida n\343o pode ser superior a 31-12-2050.");
		fieldData.select();
		fieldData.focus();
		return -1;	
	}	

	// else
	return 0;
}

function fblnDataMenorQue(dataPreenchida1, dataPreenchida2)
{
	var index;
	var dat1 = dataPreenchida1;
	var dat2 = dataPreenchida2;
	

	/*data1*/
	index = dat1.indexOf("-"); 
    var dia1 = dat1.substring(0,index);
    dat1=dat1.substring(index+1);
    index = dat1.indexOf("-"); 
    var mes1 = dat1.substring(0,index);
    dat1=dat1.substring(index+1);
    var ano1 = dat1;
    
    /*data2*/
  	index = dat2.indexOf("-"); 
    var dia2 = dat2.substring(0,index);
    dat2=dat2.substring(index+1);
    index = dat2.indexOf("-"); 
    var mes2 = dat2.substring(0,index);
    dat2=dat2.substring(index+1);
    var ano2 = dat2;
    
 
	if (ano1<ano2)
		return true;
	
	if (ano1==ano2)
	{
		if (mes1<mes2)
			return true;
		if (mes1>mes2)
			return false;
		if (mes1==mes2)
		{
			if (dia1<dia2)
				return true;
			return false;
		}
	}
	if (ano1>ano2)
		return false;
	
}
  

function fblnDataMenorOuIgualQue(dataPreenchida1, dataPreenchida2)
{

	var index;
	var dat1 = dataPreenchida1;
	var dat2 = dataPreenchida2;	
	
	/*data1*/
	index = dat1.indexOf("-"); 
    var dia1 = dat1.substring(0,index);
    dat1=dat1.substring(index+1);
    index = dat1.indexOf("-"); 
    var mes1 = dat1.substring(0,index);
    dat1=dat1.substring(index+1);
    var ano1 = dat1;
       
    
    
    /*data2*/
	index = dat2.indexOf("-"); 
    var dia2 = dat2.substring(0,index);
    dat2=dat2.substring(index+1);
    index = dat2.indexOf("-"); 
    var mes2 = dat2.substring(0,index);
    dat2=dat2.substring(index+1);
    var ano2 = dat2;
	
	if (ano1<ano2)
		return true;

	if (ano1==ano2)
	{
		if (mes1<mes2)
			return true;
		if (mes1>mes2)
			return false;
		if (mes1==mes2)
		{
			if (dia1<=dia2)
				return true;
			return false;
		}
		
		
	}
			
	if (ano1>ano2)
		return false;

}



function isNumero( Valor )
{
	for (var i=0; i<Valor.length; i++) 
	{
	  var teste=Valor.substring(i, i+1);
	  alert(teste);
	 
	 if(teste<"0"||teste>"9")
	  {
		alert(teste);
		if(i==0 && teste=="-"){}
		else{
			alert('false');
			return false;
			}
	  } 
	  
	}
	return true;
}

function isDecimal(theNum,ParteInteiraPrecisao) 
{
	var parteNumerica = parseInt(theNum,10);
	var maiorNumeroInteiroPossivel = BiggestNumber(ParteInteiraPrecisao);

	if(parteNumerica>maiorNumeroInteiroPossivel)
		return false;
	else
		return /^\d+(.\d{0,2})?$/.test(theNum);
}

function BiggestNumber(intPrecision)
{
	var strNumber = '';
	for(i=0;i<intPrecision;i++)
		strNumber+='9'
	return parseInt(strNumber,10);
}

function isInt(theNum) {
    var RE = /^\d*$/;
    return RE.test(theNum);
}


function blnValidaEmail(id,msg) 
{

	//var emailRE = new RegExp("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
	var emailRE = new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	var ctrl = document.getElementById(id);

	if (!emailRE.test(ctrl.value))
	{
		ctrl.focus(); 
		alert(msg);
		return false;
	}

	return true;
}

 function blnValidaCheckBoxList(id,msg)
 {
	var chkList= document.getElementById (id);
	var arrayOfCheckBoxes= chkList.getElementsByTagName("input");
	
	var numSelected = 0;
	for(var i=0;i<arrayOfCheckBoxes.length;i++)
	{
		if(arrayOfCheckBoxes[i].checked)
			numSelected++;
	}
	
	if(numSelected == 0)
	{
		alert(msg);
		return false;
	}
	
	return true;
}

function blnCompareText(id1,id2,msg)
{
	var ctrl1 = document.getElementById(id1);
	var ctrl2 = document.getElementById(id2);
	
	if(!blnCompareStrings(ctrl1.value,ctrl2.value))
	{
		ctrl1.value = '';
		ctrl2.value = '';
		ctrl1.focus();
		alert(msg);
		return false;
	}
	return true;
}

function blnCompareStrings(aString,anotherString)
{
  return (aString.toUpperCase() == anotherString.toUpperCase());
}

//funcao utilizada no admin GEPE.

function ShowLocal(id1, id2,id21, id3,id31, id4, id41,id22,id23)
{
	var ctrl1 = document.getElementById(id1);
	var ctrl2 = document.getElementById(id2);
	var ctrl21 = document.getElementById(id21);
	var ctrl22 = document.getElementById(id22);
	var ctrl23 = document.getElementById(id23);
	var ctrl3 = document.getElementById(id3);
	var ctrl31 = document.getElementById(id31);
	var ctrl4 = document.getElementById(id4);
	var ctrl41 = document.getElementById(id41);	
	
	ctrl2.style.display = 'none';
	ctrl21.style.display = 'none';
	ctrl22.style.display = 'none';
	ctrl23.style.display = 'none';
	ctrl3.style.display = 'none';
	ctrl31.style.display = 'none';
	ctrl4.style.display = 'none';
	ctrl41.style.display = 'none';	
	
	
	switch(ctrl1.value)
	{
		case '1':
			ctrl2.style.display = 'block';
			ctrl21.style.display = 'block';
			ctrl22.style.display = 'block';
			ctrl23.style.display = 'block';
			break;
		case '3':
			ctrl3.style.display = 'block';
			ctrl31.style.display = 'block';	
			break;
		case '5':
			ctrl3.style.display = 'block';
			ctrl31.style.display = 'block';
			break;
		case '7':
			break;
		default:
			ctrl4.style.display = 'block';
			ctrl41.style.display = 'block';		
		break;
	}
}

function ValidateOrganismo(id1, id2,msg){

	var ctrl1 = document.getElementById(id1);
	
	switch(ctrl1.value)
	{
		case '4':	
			return blnValidarTextBox(id2,msg);
		break;
	}	
	return true;
}

function ValidatePerfis(id1, id2,id3,msg1,msg2,msg3)
{
	var ctrl1 = document.getElementById(id1);
	var ctrl2 = document.getElementById(id2);
	var ctrl3 = document.getElementById(id3);

	switch(ctrl1.value)
	{
		case '1':
			if(ctrl2.value=='')
			{
				alert(msg1)
				return false;
			}
			break;
		case '3':
		case '5':
			if(ctrl3.value=='')
			{
				alert(msg2)
				return false;
			}
			break;
		case '':
			alert(msg3)
			return false;
			break;			
		default:
		break;	
	}
	
	return true;

}

