/**
 * @author Roberto Gorjao
 */
window.onload = function(){
    fnCloseLerMais("lerMais_trigger", "lerMais_div", "Fechar", "Ler mais");//as parameters, the base id names of the accordions' triggers and contents
                                                    //and the default expressions for closing and opening the accordions's content.
}

function fnCloseLerMais(trigger, content, closeDefault, openDefault){ //closes the accordions that might exist in the web page and prepares them to react to the user interaction
  var triggerId = trigger;
  var contentId = content;
  closeDefaultText = closeDefault;
  openDefaultText = openDefault;
  aAccordions = fnGetAccordions(triggerId, contentId, closeDefaultText);
  if (aAccordions) {
    //alert("accordions found and 1st. ids are "+ aAccordions[0][0].id +" and " + aAccordions[1][0].id +" and " + aAccordions[2][0] + " and " + aAccordions[3][0]);
    //alert("accordions found and 1st. ids are "+ aAccordions[0][3].id +" and " + aAccordions[1][3].id +" and " + aAccordions[2][3] + " and " + aAccordions[3][3]);
    for (var i=0; i<aAccordions[0].length; i++) {
      if (aAccordions[3][i]){ //defaultText, opened, arrayIndex
        aAccordions[0][i].innerHTML = "<a href='#' onclick='fnToggleLerMais(true, 1, "+i+"); return false;'>" + aAccordions[2][i] + " " + openDefaultText + " &gt;&gt;&gt;</a>";
      }else{
        aAccordions[0][i].innerHTML = "<a href='#' onclick='fnToggleLerMais(false, 1, "+i+"); return false;'>" + aAccordions[2][i] + " " + " &gt;&gt;&gt;</a>";
      }
      aAccordions[1][i].style.display = "none";
    }
  } else {
    return;
  }
}

function fnToggleLerMais(defaultText, opened, index){
  //alert(aAccordions[2][index]);
  var bOpen = opened;
  var bDefaultText = (defaultText) ? "true" : "false";
  var sDefaultOpenText = (defaultText) ? openDefaultText : "";
  var sDefaultCloseText = (defaultText) ? closeDefaultText : "";
  if (opened == 0){
    aAccordions[0][index].innerHTML = "<a href='#' onclick='fnToggleLerMais("+ bDefaultText +", 1, "+index+"); return false;'>" + aAccordions[2][index] + " " + sDefaultOpenText + " &gt;&gt;&gt;</a>";
    aAccordions[1][index].style.display = "none";
  }else{
    aAccordions[0][index].innerHTML = "<a href='#' onclick='fnToggleLerMais("+ bDefaultText +", 0, "+index+"); return false;'>" + aAccordions[2][index] + " " + sDefaultCloseText + " &lt;&lt;&lt;</a>";
    aAccordions[1][index].style.display = "block";
  }
}

function fnGetAccordions(triggerId, contentId, closeText){//builds an array of accordions and returns it
  var a = new Array(//this is a multi-dimensional array (matrix), that will contain all the triggers and contents objects. It will also contain triggers' text.
    new Array(),//triggers
    new Array(),//contents
    new Array(),//triggers' special text
    new Array() //triggers default text exists? (bolean)
  );
  var nPos;
  if (document.getElementById(triggerId) && document.getElementById(contentId)) {
    a[0][0] = document.getElementById(triggerId);//trigger object
    a[1][0] = document.getElementById(contentId);//container object
    a[2][0] = fnCleanTriggerText(document.getElementById(triggerId).innerHTML); //trigger text.
    //alert(a[2][0]);
    a[3][0] = fnVerifyDefault(a[2][0], closeText);
    if(a[3][0]){
      nPos = a[2][0].indexOf(closeText);
      a[2][0] = a[2][0].substring(0, nPos);//cuts the default close text
      //alert(a[2][0]);
    };
  } else {
    return null;
  }
  var i = 1;
  var tId = triggerId+i;
  var cId = contentId+i;
  while (document.getElementById(tId) && document.getElementById(cId)){
    a[0][i] = document.getElementById(tId);
    a[1][i] = document.getElementById(cId);
    a[2][i] = fnCleanTriggerText(document.getElementById(tId).innerHTML);
    //alert(a[2][i]);
    a[3][i] = fnVerifyDefault(a[2][i], closeText);
    //alert(a[3][i]);
    if(a[3][i]){
      nPos = a[2][i].indexOf(closeText);
      a[2][i] = a[2][i].substring(0, nPos);//cuts the default close text
    }
    i++;
    tId = triggerId + i;
    cId = contentId + i;
  }
  return a;
}

function fnCleanTriggerText(string){
  var string = string.slice(6, -7); //Slice cuts off <span> and </span>
  var nPos;
  if (string.indexOf("&lt;&lt;&lt;")!=-1 ){
    nPos = string.indexOf("&lt;&lt;&lt;");
    //alert("found <<< @ " + this.nTriggerContent);
    string = string.substring(0, nPos); //cuts the &lt;s
  }
  //alert(string);
    return string;
}

function fnVerifyDefault(string, text){
  //alert(string + " " + text);
  if (string.indexOf(text) != -1) {
    return true;
  }else{
    return false;
  }
}

function validateForm(){
    var oNameErrorMark = document.getElementById("name_errorMark");
    var oName = document.getElementById("name");
    var oEmailErrorMark = document.getElementById("email_errorMark");
    var oEmail = document.getElementById("email");
    var oMsg = document.getElementById("msg");
    var oMsgErrorMark = document.getElementById("msg_errorMark");
    var oPestControl = document.getElementById("pestControl");

    var bError = 0;
    var oErrorReportContainer = document.getElementById("errorReportContainer");
    var oErrorReport = document.getElementById("errorReport");

    var reEmailPattern = /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/;
    var bEmailTest = reEmailPattern.test(oEmail.value);

    if (oName.value == "") {
        oNameErrorMark.style.display = "inline";
        bError = 1;
    }
    if (oEmail.value == "" || bEmailTest == false) {
        oEmailErrorMark.style.display = "inline";
        bError = 1;
    }
    if (oMsg.value == "") {
        oMsgErrorMark.style.display = "inline";
        bError = 1;
    }
    if (bError == 1) {
      oErrorReport.innerHTML = "<p>O formul&aacute;rio cont&eacute;m erros.</p><p>Por favor, preencha os campos assinalados antes de continuar...</p><input type='button' name='okButton' id='okButton' value='OK' onclick='clearErrorReport();'/>";
      oErrorReportContainer.style.display = "block";
      return false;
    }
    else {
      if (oPestControl.value != "") {
        oErrorReport.style.backgroundColor = "orange";
        oErrorReport.innerHTML = "<p><b>A sua mensagem foi identificada como SPAM (publicidade e outros conte&uacute;dos n&atilde;o autorizados e n&atilde;o solicitados).</b></p><p>Se considerar que isto &eacute; um erro, por favor contacte os nossos servi&ccedil;os pelas vias acima indicadas e reporte-o.</p><p>Obrigado.</p>";
        oErrorReportContainer.style.display = "block";
        return false;
      }
      else {
        oErrorReportContainer.style.display = "none";
        return true;
      }
    }
}

function clearErrorReport(){
    var oErrorReportContainer = document.getElementById("errorReportContainer");
    oErrorReportContainer.style.display = "none";
}

function hideAlert(elem){
    var oElem = elem;
    var sElemId = elem.id;
    var sElemErrorMarkId = sElemId + "_errorMark";
    var oElemerrorMark = document.getElementById(sElemErrorMarkId);
    oElemerrorMark.style.display = "none";
    switch (sElemId) {
        case "e_mail":
            oElem.value = "     @    .nl";
            break;
        case "geboortedatum":
            oElem.value = "dd-mm-yyyy";
            break;
    }
}
