window.onload = init;

var inputtypes = new Array();

inputtypes[0]="inputrequired";  
inputtypes[1]="inputemail";
inputtypes[2]="inputphone";
inputtypes[3]="inputpostalcode1";
inputtypes[4]="inputpostalcode2";
inputtypes[5]="inputdateday";
inputtypes[6]="inputdatemonth";
inputtypes[7]="inputdateyear";
inputtypes[8]="inputnumber";


var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
var phoneRegex = /\d/;
var cp1Regex = /\d{4}/;
var cp2Regex = /\d{3}/;
var numberRegex = /\d/;
var allpersons;

function init(e)
{
  for (i=0;i<inputtypes.length;i++)
  {
    var allrequired = document.getElementsByClassName(inputtypes[i]);  
    for(j=0; j<allrequired.length; j++)
    {
      allrequired[j].onblur = eval("func"+inputtypes[i]);
    }  
  }
  
  //CUSTOM
  allpersons = document.getElementsByClassName("form1NumPersonsInput");  

}

function funcinputrequired(event)
{ 
    if(this.value == "") {
      inlineMsg(this,'Preenchimento obrigatório!',2);
      
      return false;
    }
    
    return true;
}
function funcinputemail(event)
{
  if(this.value == "") {
    inlineMsg(this,'Preenchimento obrigatório!',2);
    return false;
  }
  if(!this.value.match(emailRegex)) {
    inlineMsg(this,'<strong>Erro</strong><br />O email que introduziu é inválido!',2);
    return false;
  }
  return true;
}
function funcinputphone(event)
{
  if(this.value == "") {
    inlineMsg(this,'Preenchimento obrigatório!',2);
    return false;
  }
  if(!this.value.match(phoneRegex)) {
    inlineMsg(this,'<strong>Erro</strong><br />O telefone que introduziu é inválido! deve conter apenas digitos!',2);
    return false;
  }
  return true;
}

function funcinputnumber(event)
{
  if(this.value == "") {
    inlineMsg(this,'Preenchimento obrigatório!',2);
    return false;
  }
  if(!this.value.match(numberRegex)) {
    inlineMsg(this,'<strong>Erro</strong><br />O número que introduziu é inválido! deve conter apenas digitos!',2);
    return false;
  }
  return true;
}

function funcinputpostalcode1(event)
{
  if(this.value == "") {
    inlineMsg(this,'Preenchimento obrigatório!',2);
    return false;
  }
  if(!this.value.match(cp1Regex)) {
    inlineMsg(this,'<strong>Erro</strong><br />Este campo deve conter 4 digitos!',2);
    return false;
  }
  return true;
}

function funcinputpostalcode2(event)
{
  if(this.value == "") {
    inlineMsg(this,'Preenchimento obrigatório!',2);
    return false;
  }
  if(!this.value.match(cp2Regex)) {
    inlineMsg(this,'<strong>Erro</strong><br />Este campo deve conter 3 digitos!',2);
    return false;
  }
  return true;
}



function validate(form) {
  for (i=0;i<inputtypes.length;i++)
  {
    var allrequired = document.getElementsByClassName(inputtypes[i]);
      
    for(j=0; j<allrequired.length; j++)
    {
      if (allrequired[j].onblur() == false)
      {      
        allrequired[j].focus();
        return false;
      }
    }  
  }
  
 //CUSTOM
 var pnum = 0;
 for(j=0; j<allpersons.length; j++)
 {
	 pnum = parseInt(allpersons[j].value) + parseInt(pnum);   
 }
 if(pnum<1)
 {
	 numAdultsElement = $('nradultos');
	 if(numAdultsElement != null)
	 {
		 inlineMsg(numAdultsElement,'<strong>Erro</strong><br />Deve seleccionar pelo menos uma pessoa!',2);
	 }else
	 {
		 return true;
	 }
	 return false;
 }

 
  return true;
  
}


// START OF MESSAGE SCRIPT //
var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  //var targetdiv = document.getElementById(target);
  var targetdiv = target;
  //targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "images/msg_arrow.gif"; 
}