//----------------------------------------------------------------- // validacoes_1.js // // funções auxiliares para validações de forms // // copyright (c) 2000 Ponto.C - Desenv. Sistemas de Informação, Lda // //Autor: Nuno Santos //Alterada por: Margarida Fernandes //----------------------------------------------------------------- //Inicio funções de ajuda************************************************************ // permite verificar se um elemento passado é um objecto function SPW_JS_IsObject(eElem) { var isObj = false; if (eElem.toString().indexOf('object') > 0) isObj = true; return isObj } //permite fazer o replace para mostrar as msg nas linguas definidas pelo sistema function SPW_JS_ReplaceAll( str, replacements ) { for ( i = 0; i < replacements.length; i++ ) { str = str.replace("{%"+(i+1)+"}",replacements[i]); } return str; } // Função para introduzir o focus function SPW_JS_SetFocus(campo){ if (SPW_JS_IsObject(campo)) { if (campo.focus) { try { campo.focus(); } catch(ex) {} } } } //mostra msg de erro e coloca o ponteiro no input function SPW_JS_MsgErro(theForm,campo,descerro,radio) { if (SPW_JS_IsObject(campo)) var cam = campo; else var cam = eval(theForm + "." + campo); SPW_JS_MsgErroShow(descerro); if (radio > 1) SPW_JS_SetFocus(cam[0]); else SPW_JS_SetFocus(cam); } //mostra msg de erro function SPW_JS_MsgErroShow(descerro) { alert(descerro); } //validar hora function SPW_JS_Hora(checkStr) { var date = checkStr.split(':'); var num = date.length; var hora = date[0]; var minutos = date[1]; if (Number(hora) < 0 || Number(hora) > 23 || hora == "") { return (false); } if (Number(minutos) < 0 || Number(minutos) > 59 || minutos == "" ) { return (false); } if (Number(hora) == 24 ) { if (Number(minutos) != 0 ) { return (false); } } return (true); } //validar nº de horas (as horas não são limitadas a 24) function SPW_JS_NumHora(checkStr) { var date = checkStr.split(':'); var num = date.length; var hora = date[0]; var minutos = date[1]; if (Number(hora) < 0 || hora == "") { return (false); } if (Number(minutos) < 0 || Number(minutos) > 59 || minutos == "" ) { return (false); } return (true); } //ver se é ano bisexto function SPW_JS_IsLeapYear(y) { return (y % 4 == 0 && (y % 400 == 0 || y % 100 != 0)) } //validar data function SPW_JS_Data(checkStr,tipo) { //tipo = 0 = ddmmaaaa //tipo = 1 = aaaammdd //tipo = 2 = aaaaddmm var daysOfMonth = new Object(); daysOfMonth ['Jan'] = daysOfMonth ['January'] = daysOfMonth [1] = 31; daysOfMonth ['Feb'] = daysOfMonth ['February'] = daysOfMonth [2] = 28; daysOfMonth ['Mar'] = daysOfMonth ['March'] = daysOfMonth [3] = 31; daysOfMonth ['Apr'] = daysOfMonth ['April'] = daysOfMonth [4] = 30; daysOfMonth ['May'] = daysOfMonth ['May'] = daysOfMonth [5] = 31; daysOfMonth ['Jun'] = daysOfMonth ['June'] = daysOfMonth [6] = 30; daysOfMonth ['Jul'] = daysOfMonth ['July'] = daysOfMonth [7] = 31; daysOfMonth ['Aug'] = daysOfMonth ['August'] = daysOfMonth [8] = 31; daysOfMonth ['Sep'] = daysOfMonth ['September'] = daysOfMonth [9] = 30; daysOfMonth ['Oct'] = daysOfMonth ['October'] = daysOfMonth [10] = 31; daysOfMonth ['Nov'] = daysOfMonth ['November'] = daysOfMonth [11] = 30; daysOfMonth ['Dec'] = daysOfMonth ['December'] = daysOfMonth [12] = 31; if (checkStr.search("/") > -1) var date = checkStr.split('/'); else if (checkStr.search("-") > -1) var date = checkStr.split('-'); else return (false); var num = date.length; if (num != 3) return (false); var month = Number(date[1]); var day = Number(date[2]); var year = Number(date[0]); if (tipo == "0") { day = Number(date[0]); month = Number(date[1]); year = Number(date[2]); } if (tipo == "1") { month = Number(date[1]); day = Number(date[2]); year = Number(date[0]); } if (tipo == "2") { month = Number(date[2]); day = Number(date[1]); year = Number(date[0]); } if (month < 1 || month > 12 || month == "") return (false); if (day < 1 || day == "") return (false); if (month == 2 && SPW_JS_IsLeapYear(year)) var dayLimit = 29; else var dayLimit = daysOfMonth[month]; if (day > dayLimit) return (false); if (year < 1000 || year == "" || year > 9999) return (false); return (true); } //validar email (esta função tarda muito com strings um pouco maiores) function SPW_JS_Email(checkStr) { if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(checkStr)) { return (true); } return (false) } //validar email function SPW_JS_Email1(checkStr) { var Viarroba = false; var Viponto = false; var Vispace = false; var i ; for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); if (ch == "@") { Viarroba = true; } } for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); if (ch == ".") { Viponto = true; } } for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); if (ch == " ") { Vispace = true; } } if (!Viarroba || !Viponto || Vispace) return (false); return (true) } //função para ver se encontrou o caracter ' ou | function SPW_JS_CaracteresEsp(checkStr) { var checkOK = "'|"; var i ; for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); for (j = 0; j < checkOK.length; j++) if (ch == checkOK.charAt(j)) { return (false); } } return (true); } //verifica espaços function SPW_JS_Espacos(checkStr) { var checkOk = " "; var i; var j; j = 0; for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); if (ch == checkOk.charAt(0)) j ++; } if (j == i) return (false); return (true); } //função para ver se encontrou caracteres não permitidos pelo programador //Retorna falso se encontrou, true caso contrário function SPW_JS_ScanP(checkStr,checkOK) { var i ; for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); for (j = 0; j < checkOK.length; j++) if (ch == checkOK.charAt(j)) { return (false); } } return (true); } //função para ver se os caracteres usados são os pretendidos //True se forem só caracteres válidos, false caso contrário function SPW_JS_Scan(checkStr,checkOK) { for (i = 0; i < checkStr.length; i++) { ch = checkStr.charAt(i); for (j = 0; j < checkOK.length; j++) if (ch == checkOK.charAt(j)) break; if (j == checkOK.length) { return (false); break; } } return (true); } //valida um numero dado function SPW_JS_Num(checkStr,NumCasasInt,NumCasasDec) { if (Number(NumCasasInt) < 0) NumCasasInt = 1; if (!Number(NumCasasInt)) NumCasasInt = 1; if (Number(NumCasasDec) < 0) NumCasasDec = 1; if (!Number(NumCasasDec)) NumCasasDec = 1; //****************************************************** var ponto = checkStr.indexOf("."); var virgula = checkStr.indexOf(","); if (ponto > -1) var str = checkStr.split("."); else if (virgula > -1) var str = checkStr.split(","); else { var str = checkStr; if (!Number(str) && str != 0) return(false); else { if (str.length > NumCasasInt) return(false); else return(true); } } if (!Number(str[0]) && str[0] != 0) return(false); if (!Number(str[1]) && str[1] != 0) return(false); var menos = checkStr.indexOf("-"); if (menos > -1) NumCasasInt = NumCasasInt + 1; if (str[0].length > Number(NumCasasInt)) return(false); if (str[1].length > Number(NumCasasDec)) return(false); return(true); } //validar hora //Alterada pela Margarida para conter segundos no tipo opt=2 function SPW_validar_hora(checkStr,opt) { var date = checkStr.split(':'); var num = date.length; if (opt == 1) { if (num < 1 || num > 2) return (false); if (date[1] == ":") return (false); } else { if (num != 2 && num !=3) return (false); if (date[1] == ":") return (false); } var hora = date[0]; var minutos = date[1]; if (Number(hora) < 0 || Number(hora) > 23 || hora == "") { return (false); } if (Number(minutos) < 0 || Number(minutos) > 59 || minutos == "" ) { return (false); } if (Number(hora) == 24 ) { if (Number(minutos) != 0 ) { return (false); } } if (num ==3){ var segundos = date[2]; if (Number(segundos) < 0 || Number(segundos) > 59 || segundos == "" ) { return (false); } if (Number(hora) == 24 ) { if (Number(segundos) != 0 ) { return (false); } } } return (true); } function SPW_JS_Trim (s) { if (s.length == 0) return s; return s.replace(/^\s*(.*?)\s*$/,'$1'); } // Check whether string s is empty. function SPW_JS_IsEmpty(s) { return (s == null || s.length == 0 || SPW_JS_Trim (s).length == 0) } // Returns true if character c is a digit // (0 .. 9). function SPW_JS_IsDigit (c) { return ((c >= "0") && (c <= "9")) } // isInteger (STRING s) // // Returns true if all characters in string s are numbers. // // Accepts non-signed integers only. Does not accept floating // point, exponential notation, etc. function SPW_JS_IsInteger (s) { if (SPW_JS_IsEmpty(s)) return false; // Search through string's characters one by one // until we find a non-numeric character. // When we do, return false; if we don't, return true. for (var i = 0; i < s.length; i++) { // Check that current character is number. var c = s.charAt(i); if (!SPW_JS_IsDigit(c)) return false; } // All characters are numbers. return true; } // isSignedInteger (STRING s) // // Returns true if all characters are numbers; // first character is allowed to be + or - as well. // // Does not accept floating point, exponential notation, etc. function SPW_JS_IsSignedInteger (s) { if (SPW_JS_IsEmpty(s)) return false; else { var startPos = 0; // skip leading + or - if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") ) startPos = 1; return (SPW_JS_IsInteger(s.substring(startPos, s.length))) } } // isPositiveInteger (STRING s) // // Returns true if string s is an integer > 0. function SPW_JS_IsPositiveInteger (s) { if (SPW_JS_IsEmpty(s)) return false; return (SPW_JS_IsSignedInteger(s) && Number (s) > 0); } //Verifica se o Numero de Contribuinte está correcto //Valida Unicamente NIF portugueses function SPW_JS_IsNumContribuinte(s){ // se o NIF vier com as duas letras retiro-as... if (!Number(s.substring(0,2))) { s = s.substring(2,s.length); } if (s.length!=9 || !SPW_JS_IsPositiveInteger(s)) { return false; } var soma,resto,digi; var nif = new Array(9); for (var i=0;i<9;i++) { nif[i] = Number(s.substring(i,i+1)); } for (var i=0,soma=0;i<8;i++) { soma += nif[i]*(9-i); } resto = soma%11; digi = 11-resto; if (digi>9) digi=0; return (digi==nif[8]); } //Fim funções de ajuda*************************************************************** //*********************************************************************************** //INICIO funções de validação******************************************************** //*********************************************************************************** //Valida uma data obrigatoria function SPW_JS_ValidaDataObg(theForm,campo,nome,tipo) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll(msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(ncamp.value,"0123456789/-")) { msgErro = SPW_JS_ReplaceAll(msgStrDataInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Data(ncamp.value,tipo)) { msgErro = SPW_JS_ReplaceAll(msgStrDataInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida uma data opcional function SPW_JS_ValidaDataOpc(theForm,campo,nome,tipo) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value != "") { if (!SPW_JS_Data(ncamp.value,tipo)) { msgErro = SPW_JS_ReplaceAll(msgStrDataInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } if (!SPW_JS_Scan(ncamp.value,"0123456789/-")) { msgErro = SPW_JS_ReplaceAll(msgStrDataInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida hora obrigatória function SPW_JS_ValidaHoraObg(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll(msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(ncamp.value,"0123456789:")) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } //verifica que a hora não seja 00:00 //Busca todos os zeros da hora //verifica que o comprimento da string obtida é >= 7 //se a hora for 00:00 a string obtida é: 0,0,0,0 if (ncamp.value.toString().indexOf("0") > 0){ if (ncamp.value.toString().match(/0/g).toString().length >= 7) { msgErro = SPW_JS_ReplaceAll(msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } if (ncamp.value != "") { if (!SPW_validar_hora(ncamp.value,2)) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida hora obrigatória com segundos function SPW_JS_ValidaHoraSegObg(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll(msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(ncamp.value,"0123456789:")) { msgErro = SPW_JS_ReplaceAll(msgStrHoraSegInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (ncamp.value != "") { if (!SPW_validar_hora(ncamp.value,2)) { msgErro = SPW_JS_ReplaceAll(msgStrHoraSegInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida hora opcional function SPW_JS_ValidaHoraOpc(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (!SPW_JS_Scan(ncamp.value,"0123456789:")) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (ncamp.value != "") { if (!SPW_validar_hora(ncamp.value,2)) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida Nº de horas obrigatória function SPW_JS_ValidaNumHoraObg(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll(msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(ncamp.value,"0123456789:")) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (ncamp.value != "") { if (!SPW_JS_NumHora(ncamp.value)) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida Nº de horas opcional function SPW_JS_ValidaNumHoraOpc(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (!SPW_JS_Scan(ncamp.value,"0123456789:")) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (ncamp.value != "") { if (!SPW_JS_NumHora(ncamp.value)) { msgErro = SPW_JS_ReplaceAll(msgStrHoraInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida uma string obrigatoria //CNPPU = Caracteres Não Permitidos Pelo Utilizador //NotValCE = não valida caracteres especias ' e | true/false function SPW_JS_ValidaStrObg(theForm,campo,len,nome,CNPPU,NotValCE) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (!SPW_JS_Espacos(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!NotValCE) { if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } if (CNPPU) { if (CNPPU.length > 0) { if (!SPW_JS_ScanP(ncamp.value,CNPPU)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [[CNPPU], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } } //só se for > 0 é que comparo, caso contrário quer dizer //que o campo não tem limite de caracteres. if (len > 0){ if (ncamp.value.length > len) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida uma string obrigatoria //CNPPU = Caracteres Não Permitidos Pelo Utilizador //NotValCE = não valida caracteres especias ' e | true/false function SPW_JS_ValidaStrValueObg(valor,len,nome,CNPPU,NotValCE) { var msgErro = new String(); if (!SPW_JS_Espacos(valor)) { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErroShow(msgErro); return(false); } if (!NotValCE) { if (!SPW_JS_CaracteresEsp(valor)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErroShow(msgErro); return(false); } } if (CNPPU) { if (CNPPU.length > 0) { if (!SPW_JS_ScanP(valor,CNPPU)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [[CNPPU], [nome]]); SPW_JS_MsgErroShow(msgErro); return(false); } } } //só se for > 0 é que comparo, caso contrário quer dizer //que o campo não tem limite de caracteres. if (len > 0){ if (valor.length > len) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErroShow(msgErro); return(false); } } return(true); } //Valida uma string opcional //CNPPU = Caracteres não permitidos pelo utilizador //NotValCE = não valida caracteres especias ' e | true/false function SPW_JS_ValidaStrOpc(theForm,campo,len,nome,CNPPU,NotValCE) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value != "") { if (!NotValCE) { if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } if (CNPPU) { if (CNPPU.length > 0) { if (!SPW_JS_ScanP(ncamp.value,CNPPU)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [[CNPPU], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } } //só se for > 0 é que comparo, caso contrário quer dizer //que o campo não tem limite de caracteres. if (len > 0){ if (ncamp.value.length > len) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } } return(true); } //Valida uma string opcional //CNPPU = Caracteres Não Permitidos Pelo Utilizador //NotValCE = não valida caracteres especias ' e | true/false function SPW_JS_ValidaStrValueOpc(valor,len,nome,CNPPU,NotValCE) { var msgErro = new String(); if (valor != "") { if (!NotValCE) { if (!SPW_JS_CaracteresEsp(valor)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErroShow(msgErro); return(false); } } if (CNPPU) { if (CNPPU.length > 0) { if (!SPW_JS_ScanP(valor,CNPPU)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [[CNPPU], [nome]]); SPW_JS_MsgErroShow(msgErro); return(false); } } } //só se for > 0 é que comparo, caso contrário quer dizer //que o campo não tem limite de caracteres. if (len > 0){ if (valor.length > len) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErroShow(msgErro); return(false); } } } return(true); } //Valida um email obrigatorio function SPW_JS_ValidaEmailObg(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Email(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrEmailInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida um email opcional function SPW_JS_ValidaEmailOpc(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value != "") { if (!SPW_JS_Email(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrEmailInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida um email obrigatorio com validação também do seu comprimento function SPW_JS_ValidaEmailObg1(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Email(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrEmailInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (ncamp.value.length > len) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida um email opcional com validação também do seu comprimento function SPW_JS_ValidaEmailOpc1(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value != "") { if (!SPW_JS_Email1(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrEmailInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_CaracteresEsp(ncamp.value)) { msgErro = SPW_JS_ReplaceAll( msgStrCaractInv, [["'|"], [nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida um Numero Inteiro obrigatorio function SPW_JS_ValidaIntObg(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); num = num.replace(/\$|\,/g,''); if (num == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(num,'0123456789')) { msgErro = SPW_JS_ReplaceAll( msgStrNumInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num(num,len,0)) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida um Numero Inteiro obrigatorio,tem que ser > 0 function SPW_JS_ValidaIntObg1(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); num = num.replace(/\$|\,/g,''); if (num == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(num,'0123456789')) { msgErro = SPW_JS_ReplaceAll( msgStrNumInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num(num,len,0)) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (num == 0) { msgErro = SPW_JS_ReplaceAll( msgStrNumObgMaiorZero, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //Valida um Numero Inteiro opcional function SPW_JS_ValidaIntOpc(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); num = num.replace(/\$|\,/g,''); if (num != "") { if (!SPW_JS_Scan(num,'0123456789')) { msgErro = SPW_JS_ReplaceAll( msgStrNumInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num (num,len,0)) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //Valida um Numero Inteiro opcional tem que ser > 0 function SPW_JS_ValidaIntOpc1(theForm,campo,len,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); num = num.replace(/\$|\,/g,''); if (num != "") { if (!SPW_JS_Scan(num,'0123456789')) { msgErro = SPW_JS_ReplaceAll( msgStrNumInv, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num (num,len,0)) { msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[len]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (num == 0) { msgErro = SPW_JS_ReplaceAll( msgStrNumObgMaiorZero, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //valida um Numero dado obrigatorio function SPW_JS_ValidaNumObg(theForm,campo,nome,NumCasasInt,NumCasasDec) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); if (num == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Scan(num,'0123456789.-')) { msgErro = SPW_JS_ReplaceAll( msgStrNumCaractVal, [[". -"],[nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num(num,NumCasasInt,NumCasasDec)) { msgErro = SPW_JS_ReplaceAll( msgStrDecInv, [[nome],[NumCasasInt],[NumCasasDec]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //valida um Numero dado obrigatorio, tem que ser > 0 function SPW_JS_ValidaNumObg1(theForm,campo,nome,NumCasasInt,NumCasasDec) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); if (num == "") { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!Number(num)) { msgErro = SPW_JS_ReplaceAll( msgStrNumObgMaiorZero, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); //SPW_JS_MsgErro(theForm,campo,"O campo " + nome + " é do tipo numérico e o valor deve ser maior que zero (0).\nUtilize apenas caracteres numéricos e \".\" para preencher o campo."); return(false); } if (!SPW_JS_Scan(num,'0123456789.')) { msgErro = SPW_JS_ReplaceAll( msgStrNumCaractVal, [["."],[nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num(num,NumCasasInt,NumCasasDec)) { msgErro = SPW_JS_ReplaceAll( msgStrDecInv, [[nome],[NumCasasInt],[NumCasasDec]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //valida um Numero dado opcional function SPW_JS_ValidaNumOpc(theForm,campo,nome,NumCasasInt,NumCasasDec) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); num = ncamp.value.toString().replace(/ /g,""); if (num != "") { if (!SPW_JS_Scan(num,'0123456789.-')) { msgErro = SPW_JS_ReplaceAll( msgStrNumCaractVal, [[". -"],[nome]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } if (!SPW_JS_Num(num,NumCasasInt,NumCasasDec)) { msgErro = SPW_JS_ReplaceAll( msgStrDecInv, [[nome],[NumCasasInt],[NumCasasDec]]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } } return(true); } //valida um Select obrigatório function SPW_JS_ValidaSelectObg(theForm,campo,nome,valor) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (ncamp.value == valor) { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //valida um Check obrigatório function SPW_JS_ValidaCheckObg(theForm,campo,nome) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); if (!ncamp.checked) { msgErro = SPW_JS_ReplaceAll( msgStrObg, [nome]); SPW_JS_MsgErro(theForm,campo,msgErro); return(false); } return(true); } //valida um radio obrigatorio function SPW_JS_ValidaRadioObg(theForm,campo,nome,num) { if (SPW_JS_IsObject(campo)) var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var msgErro = new String(); var i = 0; var aux = false; if (num > 1) { if (num != ncamp.length) { msgErro = SPW_JS_ReplaceAll( msgStrRadInv, [nome]); alert(msgErro); return(false); } } if (num ==1) { if (ncamp.checked) return (true); } else { for (i=0; i=48 && code<=57) nstr += str.charAt(i); else if ((code==44 || code==46)&& !hasDot) { // transforma virgula em ponto nstr += '.'; hasDot=true; } else if (code==45 && i==0) // minus sign nstr += str.charAt(i); } return nstr; } //formata numero //(str, decPlaces, GroupDigits) function SPW_JS_FormatNumber(str,decPlaces,GroupDigits) { return SPW_JS_FormatNumber2(str,decPlaces,".",GroupDigits) ; } //formata numero //(str, decPlaces, decDigit, groupDigits) function SPW_JS_FormatNumber2(str,decPlaces,decDigit,groupDigits) { var auxStr; if (str == "") str = 0; if (isNaN(Number(decPlaces))) {decPlaces = 2;} str = ("" + str); auxStr = unformatNum(str); var dotPos = auxStr.indexOf(".") var decStr = ""; if (dotPos >= 0) { if (auxStr!="0") {auxStr = "" + Math.round(parseFloat(auxStr)*Math.pow(10,decPlaces))/Math.pow(10,decPlaces);} dotPos = auxStr.indexOf(".") } if (dotPos > 0) { if (dotPos<(auxStr.length-1)) decStr = auxStr.substr(dotPos+1,3); auxStr = reverseStr(auxStr.substr(0,dotPos)) } else { auxStr = reverseStr(auxStr); } var newStr = ''; for (var i=0; i0 && (i%3)==0) newStr += groupDigits.toString(); newStr += auxStr.charAt(i); } newStr = reverseStr(newStr) var _dp = ""; for (var j=0; j < decPlaces; j++) {_dp += "0";} decStr += _dp ; decStr=decStr.substr(0,decPlaces); newStr += decDigit + decStr; return newStr; } //Devolve uma string invertida function reverseStr(str) { if (!str) return str; // nothing to do var rstr = ''; for (var i=str.length-1;i>=0;i--) rstr += str.charAt(i); return rstr; } // Se o caracter introduzido não fôr um número então não o mostra. // no input onkeypress="return SPW_JS_CheckNum(event)" function SPW_JS_CheckNum(e) { var codigoTecla; if(window.event) // IE { codigoTecla = event.keyCode } else if(e.which) // Netscape/Firefox/Opera { codigoTecla = e.which } if (codigoTecla == 8) return true; // BS if (codigoTecla<48 || codigoTecla>57) return false; return true; } // Se o caracter introduzido não fôr um número ou o ponto //ou a virgula então não o mostra. //no input onkeypress="return SPW_JS_CheckNumDot(event)" function SPW_JS_CheckNumDot(e) { var codigoTecla; //codigoTecla = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if(window.event) // IE { codigoTecla = event.keyCode } else if(e.which) // Netscape/Firefox/Opera { codigoTecla = e.which } switch(codigoTecla) { // virgula ou ponto case 44: case 46: if (event.srcElement.value=='') { event.srcElement.value='0.'; return false; } return (event.srcElement.value.indexOf(",")<0 && event.srcElement.value.indexOf(".")<0 && event.srcElement.value.length>0); break; // Backspace case 8: return true; break; } if (codigoTecla<48 || codigoTecla>57) return false; return (true); } // Se o caracter introduzido não fôr um número ou o ponto ou a virgula, //ou o sinal menos então não o mostra. //no input onkeypress="return SPW_JS_CheckNumDot(event)" function SPW_JS_CheckNumDotNeg(e) { var codigoTecla; if(window.event) // IE { codigoTecla = event.keyCode } else if(e.which) // Netscape/Firefox/Opera { codigoTecla = e.which } switch(codigoTecla) { // virgula ou ponto case 44: case 46: if (event.srcElement.value=='') { event.srcElement.value='0.'; return false; } return (event.srcElement.value.indexOf(",")<0 && event.srcElement.value.indexOf(".")<0 && event.srcElement.value.length>0); break; // menos "-" case 45: if (event.srcElement.value.indexOf("-")<0) event.srcElement.value = '-'+event.srcElement.value; return false; break; // Backspace case 8: return true; break; } if (codigoTecla<48 || codigoTecla>57) return false; return (true); } // verifica se uma data é maior que a outra, //retorna false se Datafim < DataIni function SPW_JS_Compara_Data(DataIni,DataFim,Tipo) { if (!SPW_JS_Scan(DataIni,"0123456789/-")) return (false); if (!SPW_JS_Scan(DataFim,"0123456789/-")) return (false); if (!SPW_JS_Data(DataIni,Tipo)) return (false); if (!SPW_JS_Data(DataFim,Tipo)) return (false); if (DataIni.search("/") > -1){ var a_dateini = DataIni.split('/'); var a_datefim = DataFim.split('/');} else if (DataIni.search("-") > -1){ var a_dateini = DataIni.split('-'); var a_datefim = DataFim.split('-');} else return (false); var monthini = a_dateini[1]; var dayini = a_dateini[2]; var yearini = a_dateini[0]; var monthfim = a_datefim[1]; var dayfim = a_datefim[2]; var yearfim = a_datefim[0]; if (Tipo == "0") { var monthini = a_dateini[1]; var dayini = a_dateini[0]; var yearini = a_dateini[2]; var monthfim = a_datefim[1]; var dayfim = a_datefim[0]; var yearfim = a_datefim[2]; } if (Tipo == "1") { var monthini = a_dateini[1]; var dayini = a_dateini[2]; var yearini = a_dateini[0]; var monthfim = a_datefim[1]; var dayfim = a_datefim[2]; var yearfim = a_datefim[0]; } if (Tipo == "2") { var monthini = a_dateini[2]; var dayini = a_dateini[1]; var yearini = a_dateini[0]; var monthfim = a_datefim[2]; var dayfim = a_datefim[1]; var yearfim = a_datefim[0]; } var DI = new Date(parseInt(yearini,10),parseInt(monthini,10) - 1, parseInt(dayini,10)); var DF= new Date(parseInt(yearfim,10),parseInt(monthfim,10) - 1, parseInt(dayfim,10)); if(DF < DI) return (false); else return (true); } // verifica se uma data é maior que a outra, //retorna false se Datafim + HoraFim < DataIni + HoraIni function SPW_JS_Compara_DataHora(DataIni,HoraIni,DataFim,HoraFim,Tipo) { if (!SPW_JS_Scan(DataIni,"0123456789/-")) return (false); if (!SPW_JS_Scan(HoraIni,"0123456789:")) return (false); if (!SPW_JS_Scan(DataFim,"0123456789/-")) return (false); if (!SPW_JS_Scan(HoraFim,"0123456789:")) return (false); if (!SPW_JS_Data(DataIni,Tipo)) return (false); if (!SPW_JS_Hora(HoraIni)) return (false); if (!SPW_JS_Data(DataFim,Tipo)) return (false); if (!SPW_JS_Hora(HoraFim)) return (false); if (DataIni.search("/") > -1){ var a_dateini = DataIni.split('/'); var a_datefim = DataFim.split('/');} else if (DataIni.search("-") > -1){ var a_dateini = DataIni.split('-'); var a_datefim = DataFim.split('-');} else return (false); var monthini = a_dateini[1]; var dayini = a_dateini[2]; var yearini = a_dateini[0]; var monthfim = a_datefim[1]; var dayfim = a_datefim[2]; var yearfim = a_datefim[0]; if (Tipo == "0") { var monthini = a_dateini[1]; var dayini = a_dateini[0]; var yearini = a_dateini[2]; var monthfim = a_datefim[1]; var dayfim = a_datefim[0]; var yearfim = a_datefim[2]; } if (Tipo == "1") { var monthini = a_dateini[1]; var dayini = a_dateini[2]; var yearini = a_dateini[0]; var monthfim = a_datefim[1]; var dayfim = a_datefim[2]; var yearfim = a_datefim[0]; } if (Tipo == "2") { var monthini = a_dateini[2]; var dayini = a_dateini[1]; var yearini = a_dateini[0]; var monthfim = a_datefim[2]; var dayfim = a_datefim[1]; var yearfim = a_datefim[0]; } var a_horaini = HoraIni.split(':'); var a_horafim = HoraFim.split(':'); var DhI = new Date(parseInt(yearini,10),parseInt(monthini,10) - 1, parseInt(dayini,10), parseInt(a_horaini[0]),parseInt(a_horaini[1])); var DhF= new Date(parseInt(yearfim,10),parseInt(monthfim,10) - 1, parseInt(dayfim,10), parseInt(a_horafim[0]),parseInt(a_horafim[1])); if(DhF < DhI) return (false); else return (true); } // calcula a diferencia entre duas datas retorna dias function SPW_JS_Dif_Data(DataIni,DataFim,Tipo) { if (!SPW_JS_Scan(DataIni,"0123456789/-")) return (false); if (!SPW_JS_Scan(DataFim,"0123456789/-")) return (false); if (!SPW_JS_Data(DataIni,Tipo)) return (false); if (!SPW_JS_Data(DataFim,Tipo)) return (false); if (DataIni.search("/") > -1){ var a_dateini = DataIni.split('/'); var a_datefim = DataFim.split('/');} else if (DataIni.search("-") > -1){ var a_dateini = DataIni.split('-'); var a_datefim = DataFim.split('-');} else return (false); DataIni = a_dateini[0] + "/" + a_dateini[1] + "/" + a_dateini[2]; DataFim = a_datefim[0] + "/" + a_datefim[1] + "/" + a_datefim[2]; if (Tipo == "0") { DataIni = a_dateini[2] + "/" + a_dateini[1] + "/" + a_dateini[0]; DataFim = a_datefim[2] + "/" + a_datefim[1] + "/" + a_datefim[0]; } if (Tipo == "1") { DataIni = a_dateini[0] + "/" + a_dateini[1] + "/" + a_dateini[2]; DataFim = a_datefim[0] + "/" + a_datefim[1] + "/" + a_datefim[2]; } if (Tipo == "2") { DataIni = a_dateini[0] + "/" + a_dateini[2] + "/" + a_dateini[1]; DataFim = a_datefim[0] + "/" + a_datefim[2] + "/" + a_datefim[1]; } var sDate = new Date(DataIni); var eDate = new Date(DataFim); var daysApart = Math.abs(Math.round((sDate-eDate)/86400000)); return(daysApart); } //calcula a data para um determinada dia da semana do ano //necessita da Função SPW_JS_GetDayLimit() function SPW_JS_WeekEnd(n_Week,n_WeekDay) { a_Date = new Date() a_Date.setFullYear(a_Date.getFullYear(),0,1) a_LastDate = new Date() a_LastDate.setFullYear(a_Date.getFullYear(),11,31) a_DateAct = new Date(); if (n_Week == null || n_Week == "") return(a_DateAct.getFullYear() +"/"+ (a_DateAct.getMonth()+1) +"/"+ a_DateAct.getDate()) a_Returns = new Array() if (n_WeekDay == null || n_WeekDay == "") n_WeekDay = 0 var MaxDay = 0; cont=1; for (var I = 0;I <= 11; I++) { a_Date.setMonth(I); MaxDay = SPW_JS_GetDayLimit(a_Date.getFullYear(),(I + 1)); for (var J = 1; J <= MaxDay; J++) { a_Date.setDate(a_Date.getDate() + 1); if (a_Date.getDay() == n_WeekDay) { a_Returns[cont] = a_Date.getFullYear() +"/"+ (a_Date.getMonth()+1) +"/"+ a_Date.getDate() cont ++; } } } return(a_Returns[n_Week]) } //calcula a data para um determinada dia da semana do ano seguinte ao corrente //necessita da Função SPW_JS_GetDayLimit() function SPW_JS_NextYearWeekEnd(n_Week,n_WeekDay) { a_Date = new Date() a_Date.setFullYear(a_Date.getFullYear(),0,1) a_LastDate = new Date() a_LastDate.setFullYear(a_Date.getFullYear()+1,11,31) a_DateAct = new Date(); if (n_Week == null || n_Week == "") return(a_DateAct.getFullYear() +"/"+ (a_DateAct.getMonth()+1) +"/"+ a_DateAct.getDate()) a_Returns = new Array() if (n_WeekDay == null || n_WeekDay == "") n_WeekDay = 0 var MaxDay = 0; cont=1; for (var I = 0;I <= 11; I++) { a_Date.setMonth(I); MaxDay = SPW_JS_GetDayLimit(a_Date.getFullYear(),(I + 1)); for (var J = 1; J <= MaxDay; J++) { a_Date.setDate(a_Date.getDate() + 1); if (a_Date.getDay() == n_WeekDay) { a_Returns[cont] = a_Date.getFullYear()+1 +"/"+ (a_Date.getMonth()+1) +"/"+ a_Date.getDate() cont ++; } } } return(a_Returns[n_Week]) } //busca o numero da semana para a data actual //utiliza a função SPW_JS_getWeekFromDate function SPW_JS_getWeekNr() { var today = new Date(); Year = today.getFullYear(); Month = today.getMonth()+1; Day = today.getDate(); return SPW_JS_getWeekFromDate(Year,Month,Day); } //verifica o ano function y2k(number) { return (number < 1000) ? number + 1900 : number; } //devolve o numero da semana para uma determinada data //utiliza a função y2k function SPW_JS_getWeekFromDate(year,month,day) { var when = new Date(year,month-1,day); var newYear = new Date(year,0,1); var modDay = newYear.getDay(); var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) - Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1; var weeknum = Math.floor((daynum+modDay-1)/7)+1; if (weeknum == 0) { year--; var prevNewYear = new Date(year,0,1); var prevmodDay = prevNewYear.getDay(); if (prevmodDay < 4) weeknum = 53; else weeknum = 52; } return + weeknum; } //Calcula o ultimo dia de cada mes, tomando en conta o ano //necessita da função SPW_JS_IsLeapYear() //Apoia a Função SPW_JS_WeekEnd() function SPW_JS_GetDayLimit(y,m) { var daysOfMonth = new Object(); daysOfMonth ['Jan'] = daysOfMonth ['January'] = daysOfMonth [1] = 31; daysOfMonth ['Feb'] = daysOfMonth ['February'] = daysOfMonth [2] = 28; daysOfMonth ['Mar'] = daysOfMonth ['March'] = daysOfMonth [3] = 31; daysOfMonth ['Apr'] = daysOfMonth ['April'] = daysOfMonth [4] = 30; daysOfMonth ['May'] = daysOfMonth ['May'] = daysOfMonth [5] = 31; daysOfMonth ['Jun'] = daysOfMonth ['June'] = daysOfMonth [6] = 30; daysOfMonth ['Jul'] = daysOfMonth ['July'] = daysOfMonth [7] = 31; daysOfMonth ['Aug'] = daysOfMonth ['August'] = daysOfMonth [8] = 31; daysOfMonth ['Sep'] = daysOfMonth ['September'] = daysOfMonth [9] = 30; daysOfMonth ['Oct'] = daysOfMonth ['October'] = daysOfMonth [10] = 31; daysOfMonth ['Nov'] = daysOfMonth ['November'] = daysOfMonth [11] = 30; daysOfMonth ['Dec'] = daysOfMonth ['December'] = daysOfMonth [12] = 31; if (m == 2 && SPW_JS_IsLeapYear(y)) var dayLimit = 29; else var dayLimit = daysOfMonth[m]; return(dayLimit); } //left pad function SPW_JS_LeftPad(Str,NumMax,Pad) { if (Str.length <= 0) return(Str); if (!Number(NumMax)) return(Str); if (Pad.length <= 0) return(Str); var aux = ""; for (var i = 1; i <= NumMax - Str.length; i++) aux = aux + Pad return(aux + Str) } //right pad function SPW_JS_RightPad(Str,NumMax,Pad) { if (Str.length <= 0) return(Str); if (!Number(NumMax)) return(Str); if (Pad.length <= 0) return(Str); var aux = ""; for (var i = 1; i <= NumMax - Str.length; i++) aux = aux + Pad return(Str + aux) } //valida que os intervalos de varias datas não se cruzam //retorna false se existe um Intervalo de Datas que se cruzem //utiliza a função SPW_JS_Compara_Data //entra array com as Datas Inicio e Datas Fim function SPW_JS_ValidaIntervaloDatas(arrDataIni,arrDataFim) { //validar que os arrays tenham dados if (arrDataIni.length == 0 || arrDataFim.length == 0) return(false) //validar que os valores sejam datas bem formatadas for (var i=0; i < arrDataIni.length; i++){ if (!SPW_JS_Scan(arrDataIni[i],"0123456789/-")) return (false); if (!SPW_JS_Scan(arrDataFim[i],"0123456789/-")) return (false); if (!SPW_JS_Data(arrDataIni[i])) return (false); if (!SPW_JS_Data(arrDataFim[i])) return (false); } var arrDataIniAux = new Array(); var arrDataFimAux = new Array(); for (var i=0; i < arrDataIni.length; i++){ arrDataIniAux[i] = arrDataIni[i]; arrDataFimAux[i] = arrDataFim[i]; for (var j=0; j < arrDataIniAux.length; j++){ if (!SPW_JS_Compara_Data(arrDataIni[i],arrDataIniAux[j]) && !SPW_JS_Compara_Data(arrDataFimAux[j],arrDataIni[i])) return(false) if (!SPW_JS_Compara_Data(arrDataIniAux[j],arrDataIni[i]) && !SPW_JS_Compara_Data(arrDataFim[i],arrDataIniAux[j])) return(false) } } return(true); } //SPW_JS_MaxLength: limita o numero de caracteres num campo //usa o maxlength como limite de caracteres // function SPW_JS_MaxLength(theForm,campo,nome) { var total = 0; if (SPW_JS_IsObject(campo)) var Input = campo; else var Input = eval(theForm + "." + campo); total = Input.getAttribute("maxlength"); if (Input.value.length > total){ //event.keyCode=0; Input.value = Input.value.substring(0,total); msgErro = SPW_JS_ReplaceAll( msgStrLenInv, [[nome],[total]]); SPW_JS_MsgErro(theForm,campo,msgErro); return; } } //formata hora //coloca uma string Hora no formato HH:MM //Utiliza a função SPW_JS_LeftPad(Str,NumMax,Pad) //Utiliza a função SPW_JS_RightPad(Str,NumMax,Pad) //MF: Acrescentei um parâmetro opcional que me diz se quero ou não preencher o campo // e comentei o if dentro do else pois posso ter horas com mais do que duas casas function SPW_JS_FormatHora(strHora,opt) { var auxStr; var HoraFormatada = strHora; if (opt !== 1){ if (strHora == "") return("00:00"); }else if (strHora == "") return(""); if (strHora.indexOf(":") > 0){ var auxStr = strHora.toString().split(":"); var H = auxStr[0]; var M = auxStr[1]; H = SPW_JS_LeftPad(H,2,0); M = SPW_JS_RightPad(M,2,0); HoraFormatada = H +":"+ M; } else{ //if (strHora.toString().length <= 2) HoraFormatada = SPW_JS_LeftPad(strHora,2,0) + ":00" } return (HoraFormatada) } //Calcula o Dia da Semana //utiliza a função SPW_JS_Data para verificar que a data é válida function SPW_JS_GetDiaDaSemana(year,month,day){ var then = new Date(year,month-1,day) //-1 por que o mês de JAN = 0 var theday = then.getDay(); var weekday = new Array(6); weekday[0]=msgDomingo; weekday[1]=msgSegunda; weekday[2]=msgTerca; weekday[3]=msgQuarta; weekday[4]=msgQuinta; weekday[5]=msgSexta; weekday[6]=msgSabado; return(weekday[theday]); } //permite Somar ou Subtrair intervalos a uma data //é semelhante à DateAdd do VB //interval = w (semanas),d (dias),h (horas),m(minutos),s(segudos) function SPW_JS_DateAdd(interval, number, Data) { // get the milliseconds for this Date object. var buffer = Date.parse( Data ) ; // check that the start parameter is a valid Date. if ( isNaN (buffer) ) return null ; // check that an interval parameter was not numeric. if ( interval.charAt == 'undefined' ) return null ; // check that the number parameter is numeric. if ( isNaN ( number ) ) return null ; // so far, so good... // // what kind of add to do? switch (interval.toString()) { case 'w': case 'W': number *= 7 ; // semanas to days case 'd': case 'D': number *= 24 ; // days to hours // fall through! case 'h': case 'H': number *= 60 ; // hours to minutes // fall through! case 'm': case 'M': number *= 60 ; // minutes to seconds // fall through! case 's': case 'S': number *= 1000 ; // seconds to milliseconds break ; default: // If we get to here then the interval parameter // didn't meet the w,d,h,m,s criteria. return null ; } return new Date( buffer + number ) ; } //Devolve um array com a Data de Inicio e Data de Fim // para uma determinada data //é caculada a semana a que pertence a data e depois //são calculadas as duas datas //utiliza a função SPW_JS_getWeekFromDate(),SPW_JS_DateAdd() function SPW_JS_GetIntervaloSemana(Ano,Mes,Dia) { var semana,inicio, fim; semana = SPW_JS_getWeekFromDate(Ano,Mes,Dia); var aux = SPW_JS_DateAdd("w",semana-1,"01/01/"+Ano); var arrDatas = new Array(1); var aData = new Date(aux) //-1 por que o mês de JAN = 0 var oDia = aData.getDay(); arrDatas[0] = SPW_JS_DateAdd("d", - oDia, aux); arrDatas[1] = SPW_JS_DateAdd("d",6,arrDatas[0]); return arrDatas; } // verifica se uma hora é maior que a outra, // retorna false se HoraFim < HoraIni function SPW_JS_Compara_Hora(HoraIni,HoraFim) { HoraIni = SPW_JS_FormatHora(HoraIni) HoraFim = SPW_JS_FormatHora(HoraFim) var DI = "2000/01/01 " + HoraIni var DF = "2000/01/01 " + HoraFim var DIP = Date.parse(DI) var DFP = Date.parse(DF) if (DFP < DIP) return (false); else return (true); } //valida que os intervalos de varios numeros não se cruzam //retorna false se existe um Intervalo que se cruzem //entra array com os intervalos function SPW_JS_ValidaIntervaloNumeros(arrIni,arrFim) { //validar que os arrays tenham dados if (arrIni.length == 0 || arrFim.length == 0) return(false) //validar que os valores sejam numeros for (var i=0; i < arrIni.length; i++){ if (!SPW_JS_Scan(arrIni[i],'0123456789.')) return (false) if (!SPW_JS_Scan(arrFim[i],'0123456789.')) return (false) } for (var i=0; i < arrIni.length; i++){ for (var j=i; j < arrIni.length; j++){ if (!SPW_JS_ComparaNumero(arrIni[i],arrIni[j]) && !SPW_JS_ComparaNumero(arrFim[j],arrIni[i])) return(false) if (!SPW_JS_ComparaNumero(arrIni[j],arrIni[i]) && !SPW_JS_ComparaNumero(arrFim[i],arrIni[j])) return(false) } } return(true); } // verifica se um numero é maior que o outro, // retorna false se numFim < numIni function SPW_JS_ComparaNumero(numIni,numFim) { // validar if (!SPW_JS_Scan(numIni,'0123456789.')) return (false) if (!SPW_JS_Scan(numFim,'0123456789.')) return (false) if (Number(numIni) > Number(numFim)) return (false); else return (true); } //valida um array de Checks, obriga a pelo menos um function SPW_JS_ValidaArrayCheckObg(theForm,campo,nome) { if (campo == '[object]') var ncamp = campo; else var ncamp = eval(theForm + "." + campo); var aux = false; var num = ncamp.length; if (num ==1) { if (ncamp.checked) return (true); } else { for (i=0; i