﻿<!--
/***********************************************
* AnyLink CSS Menu script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/


function get_element (s_id) {
 return (document.all ? document.all[s_id] : (document.getElementById ? document.getElementById(s_id) : null));
}



// À entrada espera-se 3 arrays.
//array com os nomes dos controlos (caixas de texto)
//array com o nome do relatorio de erro de cada controlo
//array com os tipo de validação aplicado ao controlo.

 // tipoValidacao[x]=1; -> validacao required Field.
 // tipoValidacao[x]=2; -> validacao Email.
 // tipoValidacao[x]=3; -> validacao só de texto.
 // tipoValidacao[x]=4; -> validacao só de nºs.
 // tipoValidacao[x]=5; -> validacao só de decimais.
 // tipoValidacao[x]=6; -> validacao só de dropDownLists.
 // tipoValidacao[x]=7; -> validacao só telefones.
 // tipoValidacao[x]=8; -> validacao só telemoveis.
 // tipoValidacao[x]=9; -> validacao de texto e nºs.
 // tipoValidacao[x]=10; -> validacao de 9 digitos.
 // tipoValidacao[x]=11; -> validacao de < 9 digitos.
 // tipoValidacao[x]=12; -> validacao de > 0 digitos.


//IMPORTANTE: o relatorio de erros está predefinido a ser exposto num controlo de texto con o ID = err_msg.
//mais validacoes devem ser introduzidas na function 'validate'.
//a chamada deve ser feita na função click de um botão. exemplo: "return validate(fields,fieldsName,tipoValidacao);"

function errorhandler(description,pagename,lineno) {
 alert('Ocorreu Um erro! \n'
  +'\n Descrição: \t'+description
  +'\n Nome Da Página: \t'+pagename
  +'\n Na linha: \t'+lineno);
  return false; }
//window.onerror=errorhandler;

function dontshowerrormessages() {return true;}
//window.onerror=dontshowerrormessages;

function aviso()
{
 alert('Isto é um aviso');
}

function validate(form_fields,fieldsName,tipoValidacao) {
    var msg     = "";
    var err_div = document.getElementById("err_msg");
 
    var err_div_server = document.getElementById("err_msg_server");

 if(err_div_server != null) {
      err_div_server.style.display = "none";
 }

    err_div.innerHTML = "";
    
    for(var i = 0; i < form_fields.length; i += 1) {
  if(tipoValidacao[i] != 0)
  {
   //verificar a existência do controlo.
   if(document.getElementById(form_fields[i])) {
    var valor = trim(document.getElementById(form_fields[i]).value,' ');
   } else {
    //se o controlo não existir não valida nada.
    tipoValidacao[i] = 0;
   }
  }

  if(tipoValidacao[i]==1) {
          if(valor == "") {
    msg += fieldsName[i] + ", "; 
   }
  }
  else if(tipoValidacao[i]==2) {
   if(valor != "") {
    var myRegxp = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
    if(!myRegxp.test(valor)) {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==3) {
   if(valor != "") {
    if(!isAlpha(valor)) {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==4) {
   if(valor != "") {
    if(!isNum(valor)) {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==5) {
   if(valor != "") {
    valor = valor.replace(',','.');
    if(!isDecimal(valor)) {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==6) {
          if((valor == "0") || (valor == 0) || (valor == "__ossli_0")) {
    msg += fieldsName[i] + ", ";  } 
  } 
  else if(tipoValidacao[i]==7) {
   if(valor != "") {
    if (((valor.substring(0,1) == "2") || (valor.substring(0,1) == "3")) && (isNum(valor)) && (valor.length == 9)) {
     //do nothing
    } else {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==8) {
   if(valor != "") {
    if (((valor.substring(0,2) == "96") || (valor.substring(0,2) == "91") 
    || (valor.substring(0,2) == "93") || (valor.substring(0,2) == "92")) && (isNum(valor)) && (valor.length == 9)) {
     //do nothing
    } else {
     msg += fieldsName[i] + ", ";
    }
   }
  } 
  else if(tipoValidacao[i]==9) {
   if(valor != "") {
    if(!isAlphanum(valor)) {
     msg += fieldsName[i] + ", ";
    }
   }
  }
  else if(tipoValidacao[i]==10) {
   if(valor != "") {
    if(valor.length!=9) {
     msg += fieldsName[i] + ", ";
    }
   }
  }
  else if(tipoValidacao[i]==11) {
   if(valor != "") {
    if(valor.length!=8)  {
     msg += fieldsName[i] + ", ";
    }
   }
  }
  else if(tipoValidacao[i]==12) {
   if(valor == "0") {
     msg += fieldsName[i] + ", ";
   }
  }
    }
    
    if(msg.length > 0) {
        msg = msg.substring(0, msg.length - 2);
        
        msg = "<span class='err_title'><b>Verifique os seguintes campos</b>:</span><br />"+msg;
        err_div.style.display = "block";
        err_div.innerHTML     = msg;
        return false;
    }
    else {
        return true; }
}

var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyzçáéíóúãõâê';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÇÁÉÍÓÚÃÕÂÊ';


function isValid(parm,val) {
 if (parm == "") return true;
 for (i=0; i<parm.length; i++) {
  if (val.indexOf(parm.charAt(i),0) == -1) return false;
 }
 return true;
}

function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr+' ');}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb+' ');} 
function isDecimal(parm) {return isValid(parm,numb+'.');}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "<\\s>";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "<\\s>";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}