//***********************************
//FORMULÁRIO DE ENVIO DE NOTICIA
//***********************************
function validaForm ( form )
{
  // ** START **
  if (form.nome_destinatario.value == "") 
  {
    form.nome_destinatario.style.border = '1px solid red';
	form.nome_destinatario.focus();
    return false ;
  }
  else
  {
	form.nome_destinatario.style.border = '1px solid #9db4bd';
  }
  if (form.email_destinatario.value == "")
  {
    form.email_destinatario.style.border = '1px solid red';
	form.email_destinatario.focus();
    return false ;
  }
  else
  {
	if(checkEmail(form.email_destinatario.value)==true)
	{
		form.email_destinatario.style.border = '1px solid #9db4bd';
	}
	else
	{
		form.email_destinatario.style.border = '1px solid red';
		window.alert("O Email do Destinatário não tem um formato válido.");
		form.email_destinatario.focus();
		return false ;
	}
  }
  if (form.seu_nome.value == "")
  {
    form.seu_nome.style.border = '1px solid red';
	form.seu_nome.focus();
    return false ;
  }
  else
  {
	form.seu_nome.style.border = '1px solid #9db4bd';
  }
  return true ;
  /*END*/
}

function validateFormNewsletter ( form )
{

  // ** START **
  if (form.nome_destinatario.value == "") 
  {
    form.nome_destinatario.style.border = '1px solid red';
	form.nome_destinatario.focus();
    return false ;
  }
  else
  {
	form.nome_destinatario.style.border = '1px solid #9db4bd';
  }
  
  if (form.email_destinatario.value == "")
  {
    form.email_destinatario.style.border = '1px solid red';
	form.email_destinatario.focus();
    return false ;
  }
  else
  {
	if(checkEmail(form.email_destinatario.value)==true)
	{
		form.email_destinatario.style.border = '1px solid #9db4bd';
	}
	else
	{
		form.email_destinatario.style.border = '1px solid red';
		form.email_destinatario.focus();
		return false ;
	}
  }
  
  if (form.seu_nome.value == "")
  {
    form.seu_nome.style.border = '1px solid red';
	form.seu_nome.focus();
    return false ;
  }
  else
  {
	form.seu_nome.style.border = '1px solid #9db4bd';
  }
  return true ;
  /*END*/
}

//*********************************
//VALIDAÇÃO DO EMAIL
//*********************************
function checkEmail(str) 
{

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)

		if (str.indexOf(at)==-1)
		{
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
		{
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
		{
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1)
		 {
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
		 {
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1)
		 {
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1)
		 {
		    return false
		 }

 		 return true					
}

//****************************************
//VALIDAÇÃO DO FORMULÁRIO DE REGISTO
//****************************************
function validaRegisto( form )
{
  
  var spaces = " ";
  
  //Nome Completo
  if (form.nome_utilizador.value == "") 
  {
    form.nome_utilizador.style.border = '1px solid red';
	form.nome_utilizador.focus();
    return false ;
  }
  else
  {
	form.nome_utilizador.style.border = '1px solid #9db4bd';
  }
  
  //Username
  if (form.username_user.value == "") 
  {
    form.username_user.style.border = '1px solid red';
	form.username_user.focus();
    return false ;
  }
  else
  {
	form.username_user.style.border = '1px solid #9db4bd';
  }
  
  //Username com espaços
  if (form.username_user.value != "" && form.username_user.value.indexOf(spaces) > -1) 
  {
	form.username_user.style.border = '1px solid red';
	form.username_user.focus();
    window.alert('O campo username não pode conter espaços!');
    return false ;
  }
  else
  {
	form.username_user.style.border = '1px solid #9db4bd';
  }
  
  //Morada Utilizador
  if (form.morada_utilizador.value == "") 
  {
    form.morada_utilizador.style.border = '1px solid red';
	form.morada_utilizador.focus();
    return false ;
  }
  else
  {
	form.morada_utilizador.style.border = '1px solid #9db4bd';
  }
  
  //Código Postal 1
  if (form.cod_postal_1.value == "") 
  {
    form.cod_postal_1.style.border = '1px solid red';
	form.cod_postal_1.focus();
    return false ;
  }
  else
  {
	form.cod_postal_1.style.border = '1px solid #9db4bd';
  }
   
  //Código Postal 2
  if (form.cod_postal_2.value == "") 
  {
    form.cod_postal_2.style.border = '1px solid red';
	form.cod_postal_2.focus();
    return false ;
  }
  else{form.cod_postal_2.style.border = '1px solid #9db4bd';}
  
  //VALIDAÇÃO DO CÓDIGO POSTAL
  if (IsNumeric(form.cod_postal_1.value)==false || IsNumeric(form.cod_postal_1.value)==false) 
  {
	window.alert('O código postal apenas aceitas valores numéricos!');
    return false ;
  }

  //Localidade Utilizador
  if (form.localidade_utilizador.value == "Insira a Localidade...") 
  {
    form.localidade_utilizador.style.border = '1px solid red';
	form.localidade_utilizador.focus();
    return false ;
  }
  else{form.localidade_utilizador.style.border = '1px solid #9db4bd';} 
  
  //Concelho Utilizador
  if (form.concelho_utilizador.value == "") 
  {
    form.concelho_utilizador.style.border = '1px solid red';
	form.concelho_utilizador.focus();
    return false ;
  }
  else{form.concelho_utilizador.style.border = '1px solid #9db4bd';} 
  

  //Email Utilizador
  if (form.email_utilizador.value == "") 
  {
    form.email_utilizador.style.border = '1px solid red';
	form.email_utilizador.focus();
    return false ;
  }
  else{form.email_utilizador.style.border = '1px solid #9db4bd';} 
  
  //Valida o formato do email
  if(checkEmail(form.email_utilizador.value)==false)
  {
	form.email_utilizador.style.border = '1px solid red';
	window.alert("O E-mail inserido tem um formato inválido.");
	form.email_utilizador.focus();
    return false ;
  }
  else{form.email_utilizador.style.border = '1px solid #9db4bd';} 
  
  //Data de Nascimento
  if (form.datepicker.value == "AAAA/MM/DD" || form.datepicker.value == "") 
  {
    form.datepicker.style.border = '1px solid red';
	form.datepicker.focus();
    return false ;
  }
  else{form.datepicker.style.border = '1px solid #9db4bd';}
  
  
  //VALIDAÇÃO DO FORMATO DA DATA DE NASCIMENTO
  if (isDate(form.data_nascimento.value)==false)
  {
	form.data_nascimento.focus();
	form.data_nascimento.style.border = '1px solid red';
	return false;
  }
  else
  {
	form.data_nascimento.style.border = '1px solid #9db4bd';
  }
  
   //Caso o utilizador escolha a opção de receber newsletter deverá seleccionar o email
  if(GetSelectedItemNews()==1 && form.email_utilizador.value=="")
  {	
	window.alert("Para receber Newsletters deve preencher o campo de E-mail");
	form.email_utilizador.focus();
	return false;
  }
  //Caso o utilizador escolha a opção de receber sms deverá seleccionar o telemovel
  if(GetSelectedItemSMS()==1 && form.telemovel_utilizador.value=="")
  {	
	window.alert("Para receber SMS deve preencher o campo de Telemóvel");
	form.telemovel_utilizador.focus();
	return false;
  }
    //Caso o utilizador escolha a opção de receber sms deverá seleccionar o telemovel
  if(GetSelectedItemSMS()==1 && form.telemovel_utilizador.value=="0")
  {	
	window.alert("Para receber SMS deve preencher o campo de Telemóvel");
	form.telemovel_utilizador.focus();
	return false;
  }
  return true;
} 

//******************************************
//VALIDAÇÃO DO FORMULÁRIO DE SGUESTÃO
//******************************************
function validaSugestao( form )
{
  
  //NOME DE UTILIZADOR
  if (form.nome_utilizador.value == "") 
  {
    form.nome_utilizador.style.border = '1px solid red';
	form.nome_utilizador.focus();
    return false ;
  }
  else
  {
	form.nome_utilizador.style.border = '1px solid #9db4bd';
  }
  //EMAIL DE UTILIZADOR
  if (form.email_utilizador.value == "") 
  {
    form.email_utilizador.style.border = '1px solid red';
	form.email_utilizador.focus();
    return false ;
  }
  else
  {
	form.email_utilizador.style.border = '1px solid #9db4bd';
  }
  
  //Valida o formato do email
  if(checkEmail(form.email_utilizador.value)==false)
  {
	form.email_utilizador.style.border = '1px solid red';
	window.alert("O E-mail inserido tem um formato inválido.");
	form.email_utilizador.focus();
    return false ;
  }
  else
  {
	form.email_utilizador.style.border = '1px solid #9db4bd';
  }
  //MORADA DE UTILIZADOR
  if (form.morada_utilizador.value == "") 
  {
    form.morada_utilizador.style.border = '1px solid red';
	form.morada_utilizador.focus();
    return false ;
  }
  else
  {
	form.morada_utilizador.style.border = '1px solid #9db4bd';
  } 
  
  //COMENTÁRIO DA SUGESTÃO
  if (form.sugestao.value == "") 
  {
    form.sugestao.style.border = '1px solid red';
	form.sugestao.focus();
    return false ;
  }
  else
  {
	form.sugestao.style.border = '1px solid #9db4bd';
  }  
  
  return true;
}

//***********************************************
//VALIDAÇÃO DO FORMULÁRIO DE REQUERIMENTO
//***********************************************
function validaRequerimento( form )
{
    
  //NOME COMPLETO
  if (form.nome_completo.value == "") 
  {
    form.nome_completo.style.border = '1px solid red';
	form.nome_completo.focus();
    return false ;
  }
  else
  {
	form.nome_completo.style.border = '1px solid #9db4bd';
  }
  
  //DATA DE NASCIMENTO
  if (form.data_nascimento.value == "") 
  {
    form.data_nascimento.style.border = '1px solid red';
	form.data_nascimento.focus();
    return false ;
  }
  else
  {
	form.data_nascimento.style.border = '1px solid #9db4bd';
  }
  
  //VALIDAÇÃO DA DATA DE NASCIMENTO
  if (isDate(form.data_nascimento.value)==false)
  {
	form.data_nascimento.focus();
	form.data_nascimento.style.border = '1px solid red';
	return false;
  }
  else
  {
	form.data_nascimento.style.border = '1px solid #9db4bd';
  }
  
  //PROFISSÃO
  if (form.profissao.value == "") 
  {
    form.profissao.style.border = '1px solid red';
	form.profissao.focus();
    return false ;
  }
  else
  {
	form.profissao.style.border = '1px solid #9db4bd';
  }
  //FILHO DE
  if (form.filho_de.value == "") 
  {
    form.filho_de.style.border = '1px solid red';
	form.filho_de.focus();
    return false ;
  }
  else
  {
	form.filho_de.style.border = '1px solid #9db4bd';
  }
  //FILHO DA
  if (form.filho_da.value == "") 
  {
    form.filho_da.style.border = '1px solid red';
	form.filho_da.focus();
    return false ;
  }
  else
  {
	form.filho_da.style.border = '1px solid #9db4bd';
  }
  //LOCALIDADE	
  if (form.localidade.value == "") 
  {
    form.localidade.style.border = '1px solid red';
	form.localidade.focus();
    return false ;
  }
  else
  {
	form.localidade.style.border = '1px solid #9db4bd';
  }
  //CONCELHO	
  if (form.concelho.value == "") 
  {
    form.concelho.style.border = '1px solid red';
	form.concelho.focus();
    return false ;
  }
  else
  {
	form.concelho.style.border = '1px solid #9db4bd';
  }
  //RESIDENTE	
  if (form.residente.value == "") 
  {
    form.residente.style.border = '1px solid red';
	form.residente.focus();
    return false ;
  }
  else
  {
	form.residente.style.border = '1px solid #9db4bd';
  }
  //NÚMERO DE BI	
  if (form.num_bi.value == "") 
  {
    form.num_bi.style.border = '1px solid red';
	form.num_bi.focus();
    return false ;
  }
  else
  {
	form.num_bi.style.border = '1px solid #9db4bd';
  }
  
  //VALIDAÇÃO DO NÚMERO DE BI	
  if (IsNumeric(form.num_bi.value)==false) 
  {
    form.num_bi.style.border = '1px solid red';
	window.alert('O número de BI deve conter apenas valores numéricos!');
	form.num_bi.focus();
    return false ;
  }
  else
  {
	form.num_bi.style.border = '1px solid #9db4bd';
  }
  
  //DATA DE EMISSÃO DO BI	
  if (form.data_emissao_bi.value == "") 
  {
    form.data_emissao_bi.style.border = '1px solid red';
	form.data_emissao_bi.focus();
    return false ;
  }
  else
  {
	form.data_emissao_bi.style.border = '1px solid #9db4bd';
  }
  
  //VALIDAÇÃO DA DATA DE EMISSÃO DO BI
  if (isDate(form.data_emissao_bi.value)==false)
  {
	form.data_emissao_bi.focus();
	form.data_emissao_bi.style.border = '1px solid red';
	return false;
  }
  else
  {
	form.data_emissao_bi.style.border = '1px solid #9db4bd';
  }

  //ARQUIVO DO BI	
  if (form.arquivo_bi.value == "") 
  {
    form.arquivo_bi.style.border = '1px solid red';
	form.arquivo_bi.focus();
    return false ;
  }
  else
  {
	form.arquivo_bi.style.border = '1px solid #9db4bd';
  }
    
  //NÚMERO DE IDENTIFICAÇÃO FISCAL	
  if (form.nif.value == "") 
  {
    form.nif.style.border = '1px solid red';
	form.nif.focus();
    return false ;
  }
  else
  {
	form.nif.style.border = '1px solid #9db4bd';
  }
  
  //VALIDAÇÃO DO NÚMERO DE IDENTIFICAÇÃO FISCAL	
  if (IsNumeric(form.nif.value)==false) 
  {
    form.nif.style.border = '1px solid red';
	window.alert('O NIF deve conter apenas valores numéricos!');
	form.nif.focus();
    return false ;
  }
  else
  {
	form.nif.style.border = '1px solid #9db4bd';
  }
  
  //CONTACTO DE TELEFONE OU TELEMOVÉL
  if (form.contacto.value == "") 
  {
    form.contacto.style.border = '1px solid red';
	form.contacto.focus();
    return false ;
  }
  else
  {
	form.contacto.style.border = '1px solid #9db4bd';
  }
  
  //ENDEREÇO DE EMAIL
  if (form.email.value == "") 
  {
    form.email.style.border = '1px solid red';
	form.email.focus();
    return false ;
  }
  else
  {
	form.email.style.border = '1px solid #9db4bd';
  }
  
  //VALIDAÇÃO DO ENDEREÇO DE EMAIL
  if(checkEmail(form.email.value)==false)
  {
	form.email.style.border = '1px solid red';
	window.alert("O E-mail inserido tem um formato inválido.");
	form.email.focus();
    return false ;
  }
  else
  {
	form.email.style.border = '1px solid #9db4bd';
  }
  
  return true;
}

 //Permite saber qual a opção disponivél em relação à recepção de SMS.  
function GetSelectedItemSMS()
{
	chosen = ""
	len = document.registo_utilizador.receber_sms.length
		
	for (i = 0; i <len; i++) 
	{
		if (document.registo_utilizador.receber_sms[i].checked) 
		{
			chosen = document.registo_utilizador.receber_sms[i].value
		}
	}
	 return chosen; 
} 
 
//Permite saber qual a opção disponivél em relação à recepção de Newsletter. 
function GetSelectedItemNews()
{
	chosen_1 = ""
	len = document.registo_utilizador.receber_newsletter.length

	for (i = 0; i <len; i++) 
	{
		if (document.registo_utilizador.receber_newsletter[i].checked) {
		chosen_1 = document.registo_utilizador.receber_newsletter[i].value
	}
	}
	return chosen_1; 
}

//**********************************************
//Valida o número de caracteres do critério de pesquisa
//**********************************************
function validateSearch(form)
{
	var palavra_pesquisa = form.search_key.value;
	

	if(form.search_key.value == "Pesquisar...")
	{
		form.search_key.style.border = '1px solid red';
		form.search_key.focus();
		return false;
	}	
	else if(palavra_pesquisa.length < 4)
	{
		window.alert('O seu critério de pesquisa deve conter mais de 3 caracteres.');
		return false;
	}
	else
	{
		return true;
	}
} 
 
//**************************************
//FUNÇÃO QUE VALIDA SE É NUMERICO
//**************************************
function IsNumeric(sText)
{
   var ValidChars = "0123456789.+";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
      Char = sText.charAt(i); 
   
		if (ValidChars.indexOf(Char) == -1) 
        {
			IsNumber = false;
        }
    }
   return IsNumber;
 }

//**************************************************************************
//FUNÇÃO QUE VALDIA SE FOI SELECCIONADA ALGUMA OPÇÃO DE RESPOSTA NA SONDAGEM
//**************************************************************************
function checkSondagem()
{
	var resposta = GetSelectedResposta();
	
	if(resposta=="")
	{
		window.alert('Deve seleccionar uma resposta para a Sondagem!');
		return false;
	}
	else
	{
		return true;
	}
	
	
}
 
//Permite saber qual a opção disponivél em relação à recepção de SMS.  
function GetSelectedResposta()
{
	chosen = ""
	len = document.form_sondagem.resposta_sondagem.length
		
	for (i = 0; i <len; i++) 
	{
		if (document.form_sondagem.resposta_sondagem[i].checked) 
		{
			chosen = document.form_sondagem.resposta_sondagem[i].value
		}
	}
	 return chosen; 
}
 
//**************************************************************************************************************//
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
		if (i==2) {this[i] = 29;}
   } 
   return this;
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strYear=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strDay=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	
	for (var i = 1; i <= 3; i++) 
	{
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	
	if (pos1==-1 || pos2==-1){
		alert("O Formato da data dever ser: YYYY/MM/DD");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Introduza um Mês válido!");
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Introduza um Dia válido!");
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Insira um ano com 4 digitos entre "+minYear+" e "+maxYear);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Formato da data inválido!");
		return false;
	}
return true;
} 