var isNetscape, isMicrosoft; var teste = "Por favor, carregue em OK e verifique a informação submetida." if (parseInt(navigator.appVersion.charAt(0)) >= 4) { isNetscape = (navigator.appName == "Netscape") ? true : false; isMicrosoft = (navigator.appName.indexOf("Microsoft") != -1) ? true : false; } var msg; var campos_vazios = ""; var erros = ""; var daysofmonth = new makeArray(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var daysofmonthLY = new makeArray(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var monthsofyear = new makeArray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); var today = new Date(); var year = today.getYear(); var month = today.getMonth()+1; var day = today.getDate(); var flagConfirma = 0; var campoData = false; function makeArray() { this[0] = makeArray.arguments.length; for (i = 0; i","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","?","_","?","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?"," ","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","A","A","A","A","A","A","?","C","E","E","E","E","I","I","I","I","?","?","O","O","O","O","O","?","?","U","U","U","U","?","?","?","a","a","a","a","a","a","?","c","e","e","e","e","i","i","i","i","?","?","o","o","o","o","o","÷","?","u","u","u","u","?","?","?","?"); inicializa=0; function converte(campo,nome,j){ result=""; tamanho=campo.length; for(i=0;i255) codigo = 256; if (compara[codigo] != campo.charAt(i) && flagConfirma == 0){ flagConfirma=1; } result+=compara[codigo]; } document.forms[0].elements[j].value=result; } function confirma() { if (confirm('Os dados introduzidos continham caracteres Inválidos! \n\n Foi efectuada conversão automática\n\n Confirma esta operação')) return true; return false; } function ObjectoValida(parametro,label,tipo,obrigatorio,min,max,dependencia){ this.parametro = parametro; this.label = label; this.tipo = tipo; this.obrigatorio = obrigatorio; this.min = min; this.max = max; this.dependencia = dependencia; } function bissexto(year) { if ((year/4) != Math.floor(year/4)) return false; if ((year/100) != Math.floor(year/100)) return true; if ((year/400) != Math.floor(year/400)) return false; return true; } function ValidDate(day,month,year) { if ((bissexto(year) && (day>daysofmonthLY[month])) || (!bissexto(year) && (day>daysofmonth[month]))) { return false; } else{ return true; } } function UltimoDia(ano,mes) { if (bissexto(ano)) return(daysofmonthLY[mes]); else return(daysofmonth[mes]); } function verificatexto(campo) { tamanho= campo.length; temp=0; for (i=0,j=0;i < tamanho;i++) { if ((campo.charCodeAt(i)!=10) && (campo.charCodeAt(i)!=13) && (campo.charCodeAt(i)!=32) ){ temp[j]+=campo[i]; j++; } } if (j == 0) return true; else return false; } function positivo(campo) { if (parseInt(campo) > 0) return "11"; else return "0"; } function tiraEspacos(campo){ tamanho= campo.length; result = ""; for (i=0;i < tamanho;i++) { if (campo.charCodeAt(i)!=32) result+=campo.charAt(i); } return result; } function vSoTexto(campo){ for (i=0;i < campo.length;i++) { if ((campo.charCodeAt(i)<48) || (campo.charCodeAt(i)>57) && (campo.charCodeAt(i)<64) || (campo.charCodeAt(i)>90) && (campo.charCodeAt(i)<97) || (campo.charCodeAt(i)>122) ) return false; } return true; } function vNumero(campo) { campo=tiraEspacos(campo); for (i=0;i < campo.length;i++) { if ((campo.charCodeAt(i)<48) || (campo.charCodeAt(i)>57)) return "4"; } return "0"; } function vTaxa(campo){ for (i=0;i57)) && (campo.charCodeAt(i)!=46) && (campo.charCodeAt(i)!=37)) return "12"; } return "0"; } function comprimento (campo,min,max,rows,columns) { tamanho= campo.length-1; linhas=1; j=0; for (i=0;i=columns){ linhas++; j=i+2; } } } if ((parseInt(min)!= null) || (parseInt(max)!= null)){ if (campo.length < parseInt(min)) return "9"; if (campo.length > parseInt(max)) return "10"; } return "0"; } function limite (campo,min,max){ if (!isNaN(campo)){ if (min!= "") { if (parseInt(campo) < parseInt(min)) return "5"; } if (max!= ""){ if (parseInt(campo) > parseInt(max)) return "6"; } } else return "4"; } function vData (data) { datum = data.split("/"); ano = datum[0]; mes = datum[1]; dia = datum[2]; if (ano.length!=4) return "1"; if ((isNaN(ano)) || (isNaN(mes)) || (isNaN(dia)) || (dia.length!=2)) return "1"; if (mes.length!=2) return "1"; if ((mes>12)||(mes<1)) return "1"; else{ if (!ValidDate(dia-0,mes-0,ano)) return "1"; } } function vEmail(email){ var i = email.indexOf("@"); var j = email.indexOf("."); if (j < i) j = email.indexOf(".",i); if ((i==-1) || (j==-1) || i < 1 || (j < i+2)) return "22"; var z = email.indexOf("@",i+1); if (z != -1) return "22"; } function vContribuinte(contribuinte){ var reg=/[0-9]+/; if (contribuinte.length<9 || !reg.test(contribuinte) || contribuinte=="000000000" || contribuinte=="123456789") // validar número. return "23"; produto=0; j=8; for (i=1; i<10; i++){ produto+=contribuinte.substring(j,j+1)*i; j--; } resto=produto%11; if(resto==0 || (resto==1 && contribuinte.substring(8,9)==0)) return true; else return "23"; } function erro(numero,label,min,max,rows) { switch(numero) { case "1": erros+= '\n - '+label+': deve ser do tipo data (AAAA/MM/DD) '; return true; case "2": erros+= '\n - '+label+': o formato data deve ser (MM/AA) '; return true; case "4": erros+= '\n - '+label+': deverá ser numérico (Ex: 123) '; return true; case "5": erros+= '\n - '+label+': deverá ter como mínimo '+ min; return true; case "6": erros+= '\n - '+label+': deverá ter como máximo:'+ max; return true; case "9": erros+= '\n - '+label+': número caracteres mínimos: '+min; return true; case "10": erros+= '\n - '+label+': número caracteres máximos: '+max; return true; case "11": erros+= '\n - '+label+': o valor tem que ser positivo '; return true; case "12": erros+= '\n - '+label+': o formato do tipo Taxa deve ser (XX%) '; return true; case "15": erros+= '\n - '+label+': as duas casas decimais devem ser zeros (Ex: 99.00) '; return true; case "16": erros+= '\n - '+label+': só deverá ter um separador decimal (Ex: 99.00)'; return true; case "17": erros+= '\n - '+label+': deverá ser composto por duas casas decimais (Ex: 99.00) '; return true; case "18": erros+= '\n - '+label+': deverá ser composto por duas casas decimais (Ex: 99.00) '; return true; case "19": erros+= '\n - '+label+': deverá ser composto por duas casas decimais (Ex: 99.00) '; return true; case "20": erros+= '\n - '+label+': o formato hora deve ser (HH:MM) '; return true; case "21": erros+= '\n - '+label+': o formato hora deve ser (HH:MM:SS) '; return true; case "22": erros+= '\n - '+label+': o formato deve ser do tipo email '; return true; case "23": erros+= '\n - '+label+': nº Contribuinte inválido '; return true; case "24": erros+= '\n - '+label+': o formato data deve ser (MM/AAAA) '; return true; default: return false; } } function verificaForm(form,aValida,conversao) { flagConfirma = 0; //inicializacao flagConfirma var nomesCamposErros = new Array(); for (var i = 0; i < eval("document." + form + ".length"); i++) { var e = eval("document." + form + ".elements[i]"); for(var j = 0; j < aValida.length; j++) { if (e.name==aValida[j].parametro) { var campo=e.value; if (aValida[j].obrigatorio!="") { //Primeiro verifica se o campo está vazio if(verificatexto(campo)){ campos_vazios += "\n ---> " + aValida[j].label; nomesCamposErros[nomesCamposErros.length] = e.name; } } //Vai verificar se existem dependencias else{ if(aValida[j].dependencia!="") { depende=aValida[j].dependencia; if (eval("document." + form + "." +depende+".value")!="") { if (verificatexto(campo)){ campos_vazios += "\n ---> " + aValida[j].label; nomesCamposErros[nomesCamposErros.length] = e.name; } } } } if(!verificatexto(campo)){ switch(aValida[j].tipo) { case "String" : if (erro(comprimento(campo,aValida[j].min,aValida[j].max,e.rows,e.columns),aValida[j].label,aValida[j].min,aValida[j].max,e.rows)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; case "Date" : if (erro(vData(campo),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; case "tax" : if (erro(vTaxa(campo),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; case "Number" : if ((aValida[j].min != "") || (aValida[j].max != "")){ if (erro(limite(campo,aValida[j].min,aValida[j].max),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; } else { if (erro(vNumero(campo),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; } case "Email" : if (erro(vEmail(campo),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; case "Contribuinte" : if (erro(vContribuinte(campo),aValida[j].label,aValida[j].min,aValida[j].max)){ nomesCamposErros[nomesCamposErros.length] = e.name; } break; default : if (erro(comprimento(campo,aValida[j].min,aValida[j].max,e.rows,e.columns),aValida[j].label,aValida[j].min,aValida[j].max,e.rows)){ nomesCamposErros[nomesCamposErros.length] = e.name; } } } } } } // Se ocorrer erros, dispara mensagens e retorna falso ao fazer submit,senão retorna verdadeiro if (!campos_vazios && !erros) { for (var i = 0; i < eval("document." + form + ".length"); i++) { var e = eval("document." + form + ".elements[" + i + "]"); if (conversao == true) converte(e.value,e.name,i); } if (flagConfirma==1){ if (!confirma()) return false; return true; } else return true; } msg = "" if (campos_vazios) msg += ' - São de preenchimento obrigatório os seguintes campos:' + campos_vazios + '\n'; if (erros) msg += '\n - Os seguintes campos encontram-se mal formatados:'; msg += erros; msg += '\n\nPor favor, carregue em OK e verifique a informação submetida.'; alert(msg); msg = ""; campos_vazios = ""; erros = ""; //acrescenta uma classe nos campos com erro for(i=0; i 0) eval("document." + form + "." + nomesCamposErros[0] + ".focus()"); return false; } function formataData(campo, descricao, valor, separador){ tem_barra=0; result=""; tamanho=valor.length; if (tamanho==8 && !isNaN(valor)){ for (i=0;iano2){ flag=true; } else { flag=false; if (ano1==ano2){ if (mes1>mes2){ flag=true; } else{ if (mes1==mes2){ if (dia1>dia2){ flag=true; } } } } } if (flag==true){ msg = 'Por favor, carregue em OK e verifique a informação submetida..\n'; msg += "\n\n"; msg += ' - O intervalo da Data Início e Data Fim está incorrecto'; alert(msg); } return flag; } function eNumero(evt) { var charCode = (evt.which) ? evt.which : evt.keyCode //números, ponto (.), virgula (,), backspace, setas esquerda e direita if (charCode >= 48 && charCode <= 57 || charCode==44 || charCode==46 || charCode==8 || charCode==37 || charCode==39) return true; else return false; }