﻿// Funções úteis em Javascript 1.00 (14/JUL/2006)

//-----------------------------------------------------------------------------------------------------------

function isEmpty(val)
{
  return (val == null || val.match(/^s+$/) || val == "");
}

// Apaga os espaços no início e fim
function trim (s) {
	if (s.length == 0) return s;
    return s.replace(/^\s*(.*?)\s*$/,'$1');
}

function isPositiveNumber(val)
{
  return val.match(/^[0-9]+$/);
} 

// Verifica se year e um ano bissexto
function isLeapYear (year) {
  return ((year % 400 == 0) || ((year % 4 == 0)&&(year % 100 != 0)));
}

// Verifica se é uma data no formato dd/mm/aaaa
function isDate (date)
{ 
  var re = /^\d\d\/\d\d\/\d\d\d\d$/;
  if (!re.test(date)) 
    return false;

  var month = date.substring(3,5);
  if (month < 1 || month > 12) 
    return false;
	
  var year = date.substring(6,10);
  var day = date.substring(0,2);
	
  var maxDays = 31;
  if (month == 4 || month == 6 || month == 9 || month == 11)
	  maxDays = 30;
  else 
  { 
    if (month == 2 && !isLeapYear(year))
	    maxDays = 28;
    else 
      if (month == 2 && isLeapYear(year))
	      maxDays = 29;
  }
	
  if (day < 1 || day > maxDays) 
    return false;
	  
  return true;
}

// Compara datas no formato dd/mm/aaaa
// Devolve 1 se a 1ª é maior, -1 se a segunda menor e 0 se iguais
function dateCompare(date1, date2)
{
  var day1 = date1.substring(0,2);
  var month1 = date1.substring(3,5);
  var year1 = date1.substring(6,10);
  var day2 = date2.substring(0,2);
  var month2 = date2.substring(3,5);
  var year2 = date2.substring(6,10);
  
	if (year1 > year2) 
	  return 1;
	else
	  if (year1 < year2)
	    return -1;
	  else
	    if (month1 > month2) 
	      return 1;
	    else 
	      if (month1 < month2)
	        return -1;
	      else
	        if (day1 > day2)
	          return 1;	        
	        else 
	          if (day1 < day2)
	            return -1;
	          else
	            return 0;
}

function isNumeroContribuinte(val) 
{
  if (val.length!=9 || !isPositiveNumber(val))
	  return false;

  var soma, resto, digito;
  var nif = new Array(9);
  
  for (var i=0; i<9; i++)
    nif[i] = Number(val.substring(i, i+1));

  for (var i=0, soma=0; i<8; i++) 
 	  soma += nif[i] * (9-i);
  
  resto = soma%11;
  digito = 11-resto;
  if (digito>9) 
    digito=0;
  	
  return (digito==nif[8]);
}

function isEmailValido (email) {
	return email != '' &&
			trim(email).indexOf(" ") == -1 &&
			email.length > 5 &&
			email.indexOf("@") != -1 &&
			email.charAt(0) != '@' &&
			email.lastIndexOf('@') == email.indexOf('@') &&
			email.indexOf('.') != -1 &&
			email.charAt(0) != '.' &&
			email.charAt(email.indexOf('@')+1) != '.' &&
			email.charAt(email.indexOf('@')-1) != '.' &&
			email.lastIndexOf('.') > email.indexOf('@') &&
			email.lastIndexOf('.') < email.length - 2;
}

function AddZero(n)
{
  str = n.toString(); 
	if (str.length >= 2)
		return str;
	else
		return "0" + str;	
}

//-----------------------------------------------------------------------------------------------------------

// Mostra uma caixa de alerta com a mensagem pretendida
// Se campo preenchidos tenta seleccionar o elemento e passar-lhe o focus
function CaixaMSG(mensagem, campo)
{
  if (mensagem != "")
	  alert(mensagem);

  if (campo != null && String(campo.type)!='hidden' && String(campo.type)!='undefined')		
  {
	  if (campo.tagName != "SELECT" && campo.tagName != "select")
		  campo.select();
	  if (!campo.disabled) 
	    campo.focus();
  }
}

