﻿<!--
/***********************************************
* 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"), "");
}

