/*! * * SIW JavaScript Base Library * Versao: 17 * Data: 2023-09-11 * http://www.iscap.ipp.pt * */ function verTurma(pagina) { turmaWin = window.open(pagina,'','dependent=yes,toolbar=no,location=no,directories=no,status=no,menubar=0,scrollbars=yes,resizable=yes,copyhistory=yes,width=750,height=570,top=5,left=200'); } function MM_preloadImages() { //v3.0 var d=document; var i,j,a; if(d.images) { if(!d.MM_p) { d.MM_p=new Array(); } j=d.MM_p.length; a=MM_preloadImages.arguments; for(i=0;i0) { alert(titulo+'\n\n'+texto); } else { alert(texto); } return; } $('
'+texto+'
').dialog({ resizable: false, height:dimy, width:dimx, title: titulo, modal: true, position: ['top', 150], buttons: [{ text: 'Ok', click : function() { $( this ).dialog( "close" ); } }] }); } function SiwCaixaConfirmacao(questao) { return confirm(questao); } function SiwCaixaPrompt(questao) { return prompt(questao,''); } function setPropriedadesCampo(campoid,valor,cor,bg) { var campo; campo=document.getElementById(campoid); if(campo==null) { alert('Erro'); return; } campo.value=valor; if(cor!=null) { campo.style.color=cor; } if(bg!=null) { campo.style.backgroundColor=bg; } } function SiwSetPropriedadesCampo(campoid,valor,cor,bg) { var campo; campo=document.getElementById(campoid); if(campo==null) { alert('Erro'); return; } campo.value=valor; if(cor!=null) { campo.style.color=cor; } if(bg!=null) { campo.style.backgroundColor=bg; } } function SiwSetDisableFormInput(campoid,disable) { if(disable) { $('#'+campoid).attr('disabled', 'disabled'); } else { $('#'+campoid).removeAttr('disabled'); } } function SiwSetReadonlyFormInput(campoid,enableReadOnly) { if(enableReadOnly) { $('#'+campoid).attr('readonly', 'readonly'); } else { $('#'+campoid).removeAttr('readonly'); } } function SiwSetVisibilityFormInput(campoid,hidden) { if(hidden) { $('#'+campoid).fadeOut("slow"); } else { $('#'+campoid).show(); } } function SiwListnerFormInput(on_equal,controler_value,target_id,controler_id,bdisable,bvisibility) { if(controler_value!=null) { var v=SiwGetFormSelectValue(controler_id); if(v!=null) { if((v==controler_value && on_equal) || (v!=controler_value && !on_equal)) { //alert(v+' eq '+controler_value); if(bdisable) { SiwSetDisableFormInput(target_id,true); } if(bvisibility) { SiwSetVisibilityFormInput(target_id,true); } } else { //alert('['+v+'] diff ['+controler_value+']'); if(bdisable) { SiwSetDisableFormInput(target_id,false); } if(bvisibility) { SiwSetVisibilityFormInput(target_id,false); } } } } } function SiwSubmitForm(frmid) { var f; f=document.getElementById(frmid); if(f==null) { alert('Não foi encontrado o form '+frmid); return; } f.submit(); } // // Obtem a URL equivalente ao submit tipo GET de um form // function SiwFormToURL(frmId) { return $('#'+frmId).attr("action")+'?'+$('#'+frmId).serialize(); } // // Submete um formulario como uma chamada href sendo o resultado colocado num elemento HTML (uma DIV) // DESCONTINUADO. Utilizar SiwSubmitAJAXFormGet() ou SiwSubmitAJAXFormPost() // function SiwSubmitFormAJAX(frmId,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro) { if($('#'+frmId)==null) { SiwSetRequestResult(htmlWaitMsgErro); } else { var _url=$('#'+frmId).attr("action")+'?'+$('#'+frmId).serialize(); // reside ainda o problema do + // _url=decodeURIComponent(_url); // alert(_url); // _url=_url.replace('\n',escape('\n')); // alert(_url); // _url=_url.replace('+','%2B'); // alert(_url); SiwWSFillHtmlArea(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso); } } function SiwSubmitAJAXFormGet(frmId,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro) { SiwSubmitAJAXForm(frmId,null,'GET',areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro); } function SiwSubmitAJAXFormPost(frmId,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro) { SiwSubmitAJAXForm(frmId,null,'POST',areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro); } function SiwSubmitAJAXForm(frmId,accao,metodo,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsgSucesso,htmlAfterMsgErro) { if($('#'+frmId)==null) { SiwSetRequestResult(htmlWaitMsgErro); } else { var frm=$('#'+frmId); var url_action; var modeAsync=false; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens if(accao==null) { url_action=frm.attr('action'); } else { url_action=accao; } /* alert('accao='+accao); a=frm.serializeArray(); for (index = 0; index < a.length; ++index) { entry = a[index]; alert("a[" + index + "]: " + entry.name + "=" + entry.value); } */ $.ajax({type: metodo, url:url_action, contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data : frm.serializeArray(), cache: false, async: modeAsync, dataType:'html', success:function(html){SiwRemoveStyleLoading(areaId); $('#'+areaId).html(html); if(areaMsgId!=null) {if(htmlAfterMsgSucesso!=null) {$('#'+areaMsgId).html(htmlAfterMsgSucesso);}} else {if(htmlAfterMsgSucesso!=null) {SiwPopupRequestResult(htmlAfterMsgSucesso,6000,false,null,null);};};}, error:function(XMLHttpRequest, textStatus, errorThrown) {SiwSetRequestResult(textStatus+':'+XMLHttpRequest.statusText);}, beforeSend: function( xhr ) {SiwAddStyleLoading(areaId,5); if(htmlWaitMsg!=null) {if(areaMsgId==null) {SiwSetRequestResult(htmlWaitMsg);} else {$('#'+areaMsgId).html(htmlWaitMsg);}}} }); } } function SiwSubmitAJAXFormAsScriptGet(frmId,areaId) { SiwSubmitAJAXFormAsScript(frmId,null,'GET',areaId); } function SiwSubmitAJAXFormAsScriptPost(frmId,areaId) { SiwSubmitAJAXFormAsScript(frmId,null,'POST',areaId); } /** * Insere o resultado da submissão form numa área como sendo codigo JS * Utilizar em substituição SiwWSFillAreaScript() * TODO: testar */ function SiwSubmitAJAXFormAsScript(frmId,accao,metodo,areaId) { if($('#'+frmId)==null) { SiwSetRequestResult(htmlWaitMsgErro); } else { var frm=$('#'+frmId); var url_action; var modeAsync=false; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens if(accao==null) { url_action=frm.attr('action'); } else { url_action=accao; } var area=$('#'+areaId); $.ajax({type: metodo, url:url_action, data : frm.serializeArray(), cache: false, async: modeAsync, dataType:'html', success:function(txt){ alert(txt); oScript = document.createElement('script'); oScript.type = 'text/javascript'; oScript.text=txt; area.innerHTML=''; area.appendChild (oScript);}, error:function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus+' '+errorThrown);}, beforeSend: function( xhr ) {alert('antes');} }); } } // // Este método faz o submit de um formulário por AJAX redireccionando o resultado para uma popup (implementada com ui.dialog num object HTML) na mesma página. // Após o fecho da popup, opcionalmente, a página pode ser redirecionada. // // @frmId - HtmlId do formulário // @url_refresh - A url utilizada para actualizar a página do formulário após o submit // function SiwSubmitPostFormAJAX(frmId,url_refresh,titulo,modal,div_width,div_height,resizable) { var idDialog="dialog_"+new Date().getTime(); $("body").append('
'); var tag = $('#'+idDialog); if (div_width==null) { div_width='700'; } else if(div_width.indexOf('px')>0) { div_width=div_width.substr(0,div_width.length-2); } if (div_height==null) { div_height=($.browser.msie?'100%':'auto'); } titulo=(titulo==null?"":titulo); modal=(modal==null?true:modal); resizable=(resizable==null?false:resizable); loading='
+String.fromCharCode(34)+
'; var url_action=$('#'+frmId).attr('action'); $('#'+frmId).unbind("submit"); $('#'+frmId).bind("submit", function() { $.ajax({ type : 'POST', cache : false, url : url_action, data : $(this).serializeArray(), error : function(XMLHttpRequest, textStatus, errorThrown) {if(errorThrown!='') {tag.html(data);}}, success : function(data) {tag.html(data);} , beforeSend: function( xhr ) { SiwSetRequestError(null); tag.html(loading).dialog({ autoOpen: true, show: "blind", hide: "explode", width: div_width,height:div_height, modal: modal, position: ['top', 100],resizable:resizable, title:titulo, close: function(event, ui) { tag.remove(); if(url_refresh!=null) { window.location.href = url_refresh; } } }); } }); return false; }); $('#'+frmId).submit(); } // // Este método faz o pedido de um URL por AJAX redireccionando o resultado para uma popup (implementada com Facebox num object HTML) na mesma página. // Após o fecho da popup, opcionalmente, a página pode ser redirecionada. // // @url_get - URL a chamar // @url_refresh - A url utilizada para actualizar a página do formulário após o submit // @titulo - Titulo da caixa de dialogo // @modal - Modal true/false // @div_width - Largura da cx de dialogo (por defeito 700px) // @div_height - Altura da cx de dialogo // @resizable - Resisable true/false function SiwOpenInPopup(url_get,url_refresh,titulo,modal,div_width,div_height,resizable,pOnClose) { var idDialog="dialog_"+new Date().getTime(); $("body").append('
'); var tag = $('#'+idDialog); if (div_width==null) { div_width='700'; } else if(div_width.indexOf('px')>0) { div_width=div_width.substr(0,div_width.length-2); } if (div_height==null) { div_height=($.browser.msie?'100%':'auto'); } titulo=(titulo==null?"":titulo); modal=(modal==null?true:modal); resizable=(resizable==null?false:resizable); loading='
+String.fromCharCode(34)+
'; $.ajax({ type : 'POST', cache : false, url : url_get, data : $(this).serializeArray(), error : function(XMLHttpRequest, textStatus, errorThrown) {if(errorThrown!='') {tag.html(data);}}, success : function(data) { tag.html(data);} , beforeSend: function( xhr ) { SiwSetRequestError(null); tag.html(loading).dialog({ autoOpen: true, show: "blind", hide: "explode", width: div_width,height:div_height, modal: modal,resizable:resizable, title:titulo, position: ['top', 100], close: function(event, ui) { tag.remove(); if(url_refresh!=null) { window.location.href = url_refresh; } if(pOnClose!=null) { eval(pOnClose); } } }); } }); } /** * Transfere o conteudo de um DIV para um POPUP. * Ao fechar o facebox, faz o refresh da URL */ function SiwDivPopup(divId,url_refresh,titulo,modal,div_width,div_height,resizable) { if (div_width==null) { div_width=''+($('#'+divId).width()+30); } else if(div_width.indexOf('px')>0) { div_width=div_width.substr(0,div_width.length-2); } if (div_height==null) { div_height=($.browser.msie?'100%':'auto'); } titulo=(titulo==null?"":titulo); modal=(modal==null?true:modal); resizable=(resizable==null?false:resizable); $('#'+divId).dialog({ autoOpen: true, show: "blind", hide: "explode",resizable:resizable, title:titulo,width:div_width,height:div_height,modal:modal,position: ['top', 100], close: function(event, ui) { if(url_refresh!=null) { window.location.href = url_refresh; } } }); } /** * Envia os dados constantes em @conteudo para dentro de uma facebox * */ function SiwPopup(conteudo,url_refresh,titulo,modal,div_width,div_height,resizable) { var idDialog="dialog_"+new Date().getTime(); $("body").append('
'+conteudo+'
'); var tag = $('#'+idDialog); if (div_width==null) { div_width='700'; } if(div_width.indexOf('px')>0) { div_width=div_width.substr(0,div_width.length-2); } if (div_height==null) { div_height=($.browser.msie?'100%':'auto'); } titulo=(titulo==null?"":titulo); modal=(modal==null?true:modal); resizable=(resizable==null?false:resizable); tag.dialog({ autoOpen: true, show: "blind", hide: "explode", title:titulo, width:div_width, height:div_height, modal:modal, position: ['top', 100], resizable: resizable, close: function(event, ui) { tag.remove(); {if(url_refresh!=null) window.location.href = url_refresh;}} }); } /** * Fecha todos os objectos do tipo Popup (que na versao actual utilizam a framework jQuery UI Dialog) */ function SiwPopupCloseAll() { $(".ui-dialog-content").dialog('close'); } function SiwHtmlFillArea(html,areaId) { if(areaId!=null && html!=null) { $('#'+areaId).html(html); } } /* * Invoca uma URL cujo resultado (output) pode ter duas formas possiveis * O parametro CConstantes.PARAM_OUTPUT_WS_ACTION se enviado ao pedido, indica o tipo de conteúdo pretendido * OK|ERROR : HTML|TXT|JS : CONTEUDO * funcSucess: function(txt) {} * Evento Error - Requer um código de erro HTTP * funcError:function(XMLHttpRequest, textStatus, errorThrown) {} */ function __SiwWSActionURL(_url,funcBefore,funcSucess,funcError) { var modeAsync=false; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens $.ajax({type: 'GET', url: _url, cache: false, async: modeAsync, dataType:'html', beforeSend: funcBefore, success: funcSucess, error: funcError, complete: function(jqXHR, textStatus) {} }); } /* * Invoca uma URL cujo resultado (output) pode ter duas formas possiveis * O parametro CConstantes.PARAM_SIW_WS_ACTION se enviado ao pedido, indica o tipo de conteúdo pretendido * OK|ERROR : HTML|TXT|JS : CONTEUDO * funcSucess: function(txt) {} * Evento Error - Requer um código de erro HTTP * funcError:function(XMLHttpRequest, textStatus, errorThrown) {} */ function __SiwWSActionFormPost(frmId,funcSucess,funcError) { metodo='post'; if($('#'+frmId)==null) { allert('invalid Form'); } else { var frm=$('#'+frmId); var url_action; var modeAsync=false; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens url_action=frm.attr('action'); /* a=frm.serializeArray(); for (index = 0; index < a.length; ++index) { entry = a[index]; alert("a[" + index + "]: " + entry.name + "=" + entry.value); } */ $.ajax({type: metodo, url:url_action, contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data : frm.serializeArray(), cache: false, async: modeAsync, dataType:'html', success: funcSucess, error: funcError, complete: function(jqXHR, textStatus) {} }); } } /** * Versao limitada de SiwWSActionOnHtmlAreaEx() */ function SiwWSActionOnHtmlArea(_url,areaId,areaMsgId,htmlWaitMsg) { SiwWSActionOnHtmlAreaEx(null,_url,areaId,areaMsgId,htmlWaitMsg,null); } /* * Invoca um pedido cujo resultado é colocado em areaId * O resultado enviado na stream deve obdecer à sintaxe da função __SiwWSActionURL() ou __SiwWSActionFormPost(_form_id,funcSucess,funcError); */ function SiwWSActionOnHtmlAreaEx(_form_id,_url,areaId,areaMsgId,htmlWaitMsg,htmlSucessoMsg) { //alert(_url); var funcSucess=function(txt) { var resultado; SiwRemoveStyleLoading(areaId); if(txt==null) { if(htmlWaitMsg!=null) { if(areaMsgId!=null) { $('#'+areaMsgId).html('Não foi possivel determinar qual o resultado da operação'); } else { SiwSetRequestResult('Não foi possivel determinar qual o resultado da operação'); } } } else { if(htmlWaitMsg!=null) { if(areaMsgId!=null) { $('#'+areaMsgId).html(''); } else { SiwLimparRequestResult(); } } } if(txt.substring(0,3)=='OK:') { var len=txt.length; var resultado=txt.substring(3,len); if(resultado.substring(0,5)=='HTML:') { var mensagem=resultado.substring(5,resultado.length); } else if(resultado.substring(0,4)=='TXT:') { var mensagem=resultado.substring(4,resultado.length); } else if(resultado.substring(0,3)=='JS:') { SiwSetRequestResult('O tipo de resultado JS não está implementado'); return; } else { SiwSetRequestResult('O tipo de resultado é desconhecido'); return; } if(areaId!=null) { $('#'+areaId).html(mensagem); } else if(areaMsgId!=null) { $('#'+areaMsgId).html(mensagem); } else { SiwPopupTemporarioRequestResult(txt,false); } if(htmlSucessoMsg!=null) { if(areaMsgId!=null) { $('#'+areaMsgId).html(htmlSucessoMsg); } else { SiwPopupTemporarioRequestResult(htmlSucessoMsg,false); } } } else if(txt.substring(0,6)=='ERROR:') { resultado=txt.substring(6,txt.length); if(resultado.substring(0,5)=='HTML:') { if(areaMsgId!=null) { $('#'+areaMsgId).html(resultado.substring(5,txt.length)); } else { SiwSetRequestError(resultado.substring(5,txt.length)); } } else if(resultado.substring(0,4)=='TXT:') { if(areaMsgId!=null) { $('#'+areaMsgId).html(resultado.substring(4,txt.length)); } else { SiwSetRequestError(resultado.substring(4,txt.length)); } } else { SiwSetRequestResult('O tipo de resultado é desconhecido'); } } else { SiwSetRequestError('O tipo de resultado da operação é desconhecido'); } }; var funcError=function(XMLHttpRequest, textStatus, errorThrown) {SiwSetRequestError(textStatus)}; var funcBefore=function ( xhr ) {SiwAddStyleLoading(areaId,100);}; //Apresenta a mensagem de Wait if(htmlWaitMsg!=null) { if(areaMsgId!=null) { $('#'+areaMsgId).html(htmlWaitMsg); } else { SiwSetRequestResult(htmlWaitMsg); } } if(_url!=null) { _url+='&p_output_ws_action=true'; //Executa a acção __SiwWSActionURL(_url,funcBefore,funcSucess,funcError); } else if(_form_id!=null) { __SiwWSActionFormPost(_form_id,funcSucess,funcError); } else { alert('Erro!!!'); } } /** * Apresenta uma mensagem de confirmacao e * Invoca uma URL e coloca a resposta HTML numa objecto DOM */ function SiwWSFillHtmlAreaConfirm(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg,msgConfirm) { if(confirm(msgConfirm)) { SiwWSFillHtmlArea(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg); } } /** * Apresenta uma questao e envia o valor como um parametro adicionar na URL */ function SiwWSFillHtmlAreaPromptQuestion(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg,msgQuestion,paramQuestion,msgIfNull,minLength) { var v=SiwCaixaPrompt(msgQuestion); if(msgIfNull!=null && (v==null || minLength>v.length)) { SiwCaixaAlerta(msgIfNull); return; } else { var sent_url=_url+"&"+paramQuestion+'='+v; SiwWSFillHtmlArea(sent_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg); } } /* * Invoca uma URL e coloca a resposta HTML num objecto DOM * Se a area areaMsgId for nula considera a área de mensagens */ function SiwWSFillHtmlArea(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg) { var modeAsync=true; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens if(areaMsgId!=null) { $('#'+areaMsgId).html(htmlWaitMsg); } else { SiwSetRequestResult(htmlWaitMsg); } if(_url!=null && areaId!=null) { $.ajax({type: 'GET', url: _url, cache: false, async: modeAsync, dataType:'html', beforeSend: function ( xhr ) { SiwAddStyleLoading(areaId,100); }, success:function(conteudo_html) { SiwRemoveStyleLoading(areaId); $('#'+areaId).html(conteudo_html); if(areaMsgId!=null) {if(htmlAfterMsg!=null) {$('#'+areaMsgId).html(htmlAfterMsg);}} else {if(htmlAfterMsg!=null) {SiwPopupRequestResult(htmlAfterMsg,6000,false,null,null);} else {SiwLimparRequestResult();};}; }, error:function(xhr, textStatus, errorThrown) { if(errorThrown=='Unauthorized') { SiwSetRequestResult('A sessão expirou ou não tem acesso à página solicitada'); } else if(xhr.status==500) { SiwSetRequestResult('Ocorreu um erro no servidor'); } else if(xhr.status==400) { SiwSetRequestResult('O pedido ao servidor foi mal formulado.'); } else { //xhr.responseText devolve a pagina de erro do tomcat SiwSetRequestResult(xhr.statusText+' '+xhr.status+': '+errorThrown); } } }); } } /* * Invoca uma URL e coloca a resposta HTML numa objecto DOM * Se a area areaMsgId for nula considera a área de mensagens */ function SiwWSFillTextArea(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg) { var modeAsync=true; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens if(areaMsgId!=null) { $('#'+areaMsgId).html(htmlWaitMsg); } else { SiwSetRequestResult(htmlWaitMsg); } if(_url!=null && areaId!=null) { $.ajax({type: 'GET', url: _url, cache: false, async: modeAsync, dataType:'text', success:function(data){$('#'+areaId).data(data); if(areaMsgId!=null) {if(htmlAfterMsg!=null) {$('#'+areaMsgId).html(htmlAfterMsg);}} else {SiwPopupRequestResult(htmlAfterMsg,6000,false,null,null);};}, error:function(XMLHttpRequest, textStatus, errorThrown) {SiwSetRequestResult(textStatus+':'+XMLHttpRequest.statusText);} }); } } /* * Invoca uma URL e coloca o a resposta HTML numa objecto DOM * TODO: Esta função deveria ter um comportamento similar a SiwWSFillHtmlArea */ function ___SiwWSFillTextArea(_url,areaId,areaWaitMsgId,htmlWaitMsg,htmlAfterMsg) { var modeAsync=false; // Em modo syncrono o IE (como habitualmente) dá problemas ao apresentar as mensagens if(areaWaitMsgId!=null) { $('#'+areaWaitMsgId).html(htmlWaitMsg); } else { SiwSetRequestResult(htmlWaitMsg); } if(_url!=null && areaId!=null) { $.ajax({type: 'GET', url: _url, cache: false, async: modeAsync, dataType:'html', success:function(texto){$('#'+areaId).data(texto); if(areaWaitMsgId!=null) {$('#'+areaWaitMsgId).html(htmlAfterMsg);}}, error:function(XMLHttpRequest, textStatus, errorThrown) {SiwSetRequestResult(textStatus+':'+XMLHttpRequest.statusText);} }); } } /* * deprecated * Utilizar SiwWSFillHtmlArea() ou SiwWSFillTextArea() */ function SiwWSFillArea(url,areaid) { var http_request,area; area=document.getElementById(areaid); if(area==null) { alert('Erro'); return; } if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { http_request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { http_request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){} } } http_request.onreadystatechange = function() { if(http_request.readyState == 4) { if(http_request.status == 200) area.innerHTML=http_request.responseText; else area.innerHTML='Error code='+ http_request.status; } else { } }; http_request.open('GET',url,true); http_request.send(null); } function SiwWSFillAreaScript(url,areaid) { var http_request; var area; area=document.getElementById(areaid); if(area==null) { alert('Erro'); return; } if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { http_request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { http_request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){} } } else { return 'erro'; } var sScript; var oScript; http_request.onreadystatechange = function() { if(http_request.readyState == 4) { if(http_request.status == 200) { oScript = document.createElement('script'); oScript.type = 'text/javascript'; sScript=http_request.responseText; oScript.text=sScript; area.innerHTML=''; area.appendChild (oScript); } else { area.innerHTML='Error code='+ http_request.status; } } else { } }; http_request.open('GET',url,true); http_request.send(null); } /** * Função utilizada quando existe apenas um campo text com id identificador */ function SiwCalendarPopup(inptFrm,urlBase) { var calData = new calendar1(inptFrm,urlBase,null,null); calData.year_scroll = true; calData.time_comp = false; calData.popup(); } /** * Função utilizada quando existem três listbox's associadas ao identificador */ function SiwCalendarPopupEx(inptFrm,urlBase,idInptFrm,idParamDia,idParamMes,idParamAno) { var calData = new calendar1(inptFrm,urlBase,function () { var sDtDia=$('#'+idParamDia).val(); var sDtMes=$('#'+idParamMes).val(); var sDtAno=$('#'+idParamAno).val(); if(sDtDia!=null && sDtDia.length==2 && sDtMes!=null && sDtMes.length==2 && sDtAno!=null && sDtAno.length==4) { $('#'+idInptFrm).val(sDtDia+'/'+sDtMes+'/'+sDtAno); } else { //nao havendo uma data pre-definida, limpa $('#'+idInptFrm).val(''); } }, function () { var oTmp=$('#'+idInptFrm).val(); $('#'+idParamDia).val(oTmp.substr(0,2)); $('#'+idParamMes).val(oTmp.substr(3,2)); $('#'+idParamAno).val(oTmp.substr(6,4)); }); calData.year_scroll = true; calData.time_comp = false; calData.popup(); } function __SiwUploadFicheiroEventoFormData(event) { var idCaixaFich="__SiwFichAnexar_"+new Date().getTime(); $('body').append(''); $('#'+idCaixaFich).click(); $('#'+idCaixaFich).change(function() { if(event.data.paramNameDescricao!=null) { var sDescricao=prompt('Por favor indique uma descrição do anexo'); if(sDescricao==null) { SiwCaixaAlerta('A transferência do ficheiro foi cancelada'); return; } if(sDescricao.length==0) { sDescricao='sem descrição'; } event.data.params[event.data.paramNameDescricao]=(sDescricao!=null?sDescricao:''); } var formDados = new FormData(); for (chv in event.data.params) { //alert(chv+' '+event.data.params[chv]); formDados.append(chv,event.data.params[chv]); } jQuery.each($('#'+idCaixaFich)[0].files, function(i, file) { formDados.append(event.data.paramNameFicheiroPrefix+'_'+i,file); }); SiwShowMessage('+String.fromCharCode(34)+ A transferir ficheiro...',event.data.areaIdLoading); $.ajax({ url: event.data.urlAction, data: formDados, cache: false, contentType: false, processData: false, type: 'POST', success : function(data) {SiwHtmlFillArea(data,event.data.areaIdResponse);SiwHtmlFillArea('',event.data.areaIdLoading)}, error: function(XMLHttpRequest, textStatus, errorThrown) {SiwShowMessage(textStatus+':'+XMLHttpRequest.statusText,event.data.areaIdLoading)} }); }); } function __SiwUploadFicheiroEventoAjaxUpload(urlAction,botaoID,paramNameFicheiroPrefix,paramNameDescricao,params,areaIdResponse,areaIdLoading) { //Este processo de upload tem a limitação de não permitir o tratamento de erros new AjaxUpload('#'+botaoID, { action: urlAction, name: paramNameFicheiroPrefix, autoSubmit: true, responseType: false, onChange: function(file, extension){if(paramNameDescricao!=null) {var sDescricao=prompt('Por favor indique uma descrição do anexo',''); params[paramNameDescricao]=(sDescricao==null?'':sDescricao);}; this.setData(params);}, onSubmit: function(file, extension) {SiwHtmlFillArea('+String.fromCharCode(34)+ A transferir ficheiro...',areaIdLoading)}, onComplete: function(file, response) {SiwShowMessage(response,areaIdResponse);SiwShowMessage('',areaIdLoading)} } ); } /** * */ function SiwBindUploadFicheiro(urlAction,botaoID,paramNameFicheiroPrefix,paramNameDescricao,params,areaIdResponse,areaIdLoading) { if ('undefined' === typeof window.FormData) { __SiwUploadFicheiroEventoAjaxUpload(urlAction,botaoID,paramNameFicheiroPrefix,paramNameDescricao,params,areaIdResponse,areaIdLoading); } else { $('#'+botaoID).click({urlAction:urlAction,botaoID:botaoID,paramNameFicheiroPrefix:paramNameFicheiroPrefix,paramNameDescricao:paramNameDescricao,params:params,areaIdResponse:areaIdResponse,areaIdLoading:areaIdLoading},__SiwUploadFicheiroEventoFormData); } } function SiwTableBodyScroll(tabbdyid,altura) { if(navigator.appName=='Netscape') { tabbdy=document.getElementById(tabbdyid); if(tabbdy!=null) { tabbdy.style.height=altura; } else { alert('Não foi encontrada '+tabbdyid) } } } function SiwWSUpdateSelectBox(url_prefix,target_id,controler_id) { var p=SiwGetFormSelectValue(controler_id); //SiwWSFillHtmlArea(_url,areaId,areaMsgId,htmlWaitMsg,htmlAfterMsg) SiwWSFillHtmlArea(url_prefix+p,target_id,null,null); } /** * Apresenta uma mensagem numaarea especifica ou na area de notificacoes */ function SiwShowMessage(msg,areaId) { if(areaId==null) { return; } else if(areaId=='siw_request_resultado') { //Considera a area especifica de mensagens SiwSetRequestResult(msg); } else { // Cosidera uma area qualquer // SiwHtmlFillArea(msg,areaId); } } function SiwLimparRequestResult() { $('#siw_request_resultado').html(''); $('#siw_request_resultado').hide('fast'); $('#siw_request_icon').hide('fast'); } function SiwPopupTemporarioRequestResult(html,err) { SiwPopupRequestResult(html,6000,err,null,null); } function SiwPopupRequestResult(conteudo_html,pTempo,err,modal,dimx,dimy) { if(conteudo_html==null || conteudo_html.length==0) return; return modal?SiwPopupRequestResultMsgBox(conteudo_html,pTempo,err,dimx,dimy):SiwPopupRequestResultPopup(conteudo_html,pTempo,err); } function SiwPopupRequestResultMsgBox(conteudo_html,tm,err,dimx,dimy) { if(tm==0) { $('#siw_request_resultado').html(conteudo_html).show('slow').fadeOut(tm); } else { if(err) { titulo=' Aviso'; } else { titulo=' Info'; } txt='
'+conteudo_html+'
'; SiwLimparRequestResult(); SiwCaixaAlertaEx(titulo,txt,false,dimx,dimy); } } function SiwPopupRequestResultPopup(conteudo_html,tm,err) { if(conteudo_html!=null && conteudo_html.length>0 && tm>=0) { $('#siw_request_icon').show('fast'); $('#siw_request_icon').css({'display':'block','background-color':'rgb(255,255,255)','border-left':'1px solid black','border-bottom':'1px solid black','border-right':'1px solid black'}); if(err) { $("#siw_request_icon").html('A'); $('#siw_request_resultado').css({'display':'block','background-color':'rgb(255, 111, 0)','border-left':'1px solid black','border-bottom':'1px solid black','border-right':'1px solid black'}); } else { $("#siw_request_icon").html('I'); $('#siw_request_resultado').css({'display':'block','background-color':'rgb(255,255,255)','border-left':'1px solid black','border-bottom':'1px solid black','border-right':'1px solid black'}); } $("#siw_request_icon > a").click( function() { SiwCaixaAlerta(conteudo_html);SiwShowObject('siw_request_icon',false);}); if(tm>0) { $('#siw_request_resultado').html(conteudo_html).show('slow').fadeOut(tm); //alert(document.getElementById('siw_request_resultado').innerHTML); } else { $('#siw_request_resultado').html(conteudo_html).show('slow'); } } else { SiwLimparRequestResult(); } } function SiwSetRequestResult(html) { SiwPopupRequestResult(html,0,false,null,null); } function SiwSetRequestError(html) { SiwPopupRequestResult(html,0,true,null,null); } function SiwSetVisibleObject(objid,show) { var obj; obj=document.getElementById(objid); if(obj==null) { alert('ERRO: Objecto '+objid+' n�o existe'); return; } if(show) { obj.style.visibility='visible'; } else { obj.style.visibility='hidden'; } } function SiwShowObject(objid,show) { var obj; obj=document.getElementById(objid); if(obj==null) { alert('ERRO: Objecto '+objid+' não existe'); return; } if(show) { //alert('show: '+obj); obj.style.visibility='visible'; obj.style.display='block'; } else { //alert('hide: '+obj); obj.style.visibility='hidden'; obj.style.display='none'; } } /** * Atribui um estilo de loading a uma area */ function SiwAddStyleLoading(container_id) { //$('#'+container_id).animate({opacity: 0.5}, 200 ); $('#'+container_id).append( "
"); if($('#'+container_id).outerWidth(true)>150 && $('#'+container_id).outerHeight()>90) { $('#'+container_id).append( "
"); } else { $('#'+container_id).append( "
"); } var position = $('#'+container_id).offset(); $('#SiwAreaLoadingFundo2015').offset(position); $('#SiwAreaLoadingImagem2015').offset(position); var w=$('#'+container_id).width(); $('#SiwAreaLoadingFundo2015').width(w); $('#SiwAreaLoadingImagem2015').width(w); var h=$('#'+container_id).height(); $('#SiwAreaLoadingFundo2015').height(h); $('#SiwAreaLoadingImagem2015').height(h); //alert( "left: " + position.left + ", top: " + position.top ); } function SiwRemoveStyleLoading(container_id) { //$('#'+container_id).animate({opacity: 1}, 100 ); $('#SiwAreaLoadingFundo2015').remove(); $('#SiwAreaLoadingImagem2015').remove(); } function SiwOnDocumentReady(funcao) { if(funcao!=null) { $(document).ready(funcao); } } /** * Verifica a validade do código da nota * TODO: verificar se a nota está activa */ function SiwVerificaNota(nota) { if((nota>=0 && 20>=nota) || nota==66 || nota==88 || nota==95 || nota==77 || nota==99 || nota==98 || nota==65 || nota==33 || nota==22 || nota==75 || nota==40 || nota==45 || nota==97 || nota==44 || nota==46 || nota==96) { //alert("Nota "+nota+": Válida"); return true; } else { //alert("Nota "+nota+": Inválida"); return false; } } function SiwVerificaNotaAprovado(nota) { if((nota>=10 && 20>=nota) || nota==22) { //alert("Nota "+nota+": Aprovado "); return true; } else { //alert("Nota "+nota+": Não aprovado ou Inválida"); return false; } } function SiwVerificaNotaReprovado(nota) { if((nota>=0 && 10>nota) || nota==66 || nota==88 || nota==95 || nota==77 || nota==99 || nota==98 || nota==65 || nota==33 || nota==75 || nota==40 || nota==45 || nota==97 || nota==44 || nota==46) { //alert("Nota "+nota+": Reprovado"); return true; } else { //alert("Nota "+nota+": Não reprovado ou Inválida"); return false; } } function SiwJSONtoText(pJsonB64) { var lJson=atob(pJsonB64); var lObject=JSON.parse(lJson); return __SiwJSONtoTextIterObject(lObject,'',true,''); } function __SiwJSONtoTextIterObject(pObject,pPrefixItem,pDoBreak,pOut) { var lOut=pOut; if(pObject==undefined) { return lOut; } else { var lObjectType=(typeof pObject); //console.log('Object Type: '+lObjectType); if(lObjectType=='string') { return lOut+'\"'+pObject+'\"'; } else if(lObjectType=='number') { return lOut+pObject; } } //Caso de um Objecto Object.keys(pObject).forEach((item) => { var lProp=pObject[item]; var lPropType=(typeof lProp); var lPropLabel=(pPrefixItem==''?'':pPrefixItem+' :: ')+item; //console.log(item + " = " + lProp+' ('+lPropType+')'); if(lProp==undefined) { lOut=lOut+''+lPropLabel+': undefined'; //console.log('case 1'); } else if(lPropType=='string' ) { lOut=lOut+''+lPropLabel+': \"'+lProp+'\"'; //console.log('case 2'); } else if(lPropType=='number' ) { lOut=lOut+''+lPropLabel+': '+lProp; //console.log('case 3'); } else if(Object.keys(lProp).length==0) { lOut=lOut+''+lPropLabel+': '+lProp; //console.log('case 4'); } else if(Array.isArray(lProp)){ //console.log('case 5'); var n=0; lProp.forEach((c) => { //console.log('cell ['+n+']='+c); if(n==0) { lOut=lOut+''+lPropLabel+'['+n+'] :: ' } else { lOut=lOut+'
'; //console.log('do break'); } lOut=lOut+__SiwJSONtoTextIterObject(c,'',false,pOut); n=n+1; }); } else { //console.log('case 6'); lOut=lOut+__SiwJSONtoTextIterObject(lProp,lPropLabel,true,pOut); } if(pDoBreak) { lOut=lOut+'
'; //console.log('do break'); } else { lOut=lOut+'     '; } }); return lOut; } function SiwIsValidHttpUrl(pUrl) { let lUrl; try { lUrl = new URL(pUrl); } catch (_) { return false; } return lUrl.protocol === "http:" || lUrl.protocol === "https:"; } function SiwUtils() { this.versao='1.0'; this.isNumeric = function isNumeric(valor) { var filter = /^([-]{0,1})+([0-9])+([.0-9]{0,1})+$/; if(valor==null) return false; else return filter.test(valor); } this.isNumericPositive = function isNumericPositive(valor) { var filter = /^([0-9])+([.0-9]{0,1})+$/; if(valor==null) return false; else return filter.test(valor); } this.isEmailAddress = function isEmailAddress(email) { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if(email==null) return false; else return filter.test(email); } } function SiwRoundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places return Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); } function SiwStartsWith(str, prefix) { return str.indexOf(prefix) === 0; } /** * SiwMapEditorArea (for jQuery) * version: 1.0 (11/07/2013) * @author: Ricardo Machado * @requires jQuery v1.2 or later * @requires jquery-ui-1.8.12 or later * * Usage: */ (function($) { $.SiwMapEditorArea = function (urImagem,largura,altura,idCampo) { var conteudo=''; conteudo+='

'; conteudo+='  

'; SiwPopup(conteudo,null,'Edição coordenadas',true,(largura+18)+'px',altura+98,false); initMapAreaSistema(urImagem); } $.extend($.SiwMapEditorArea, { setPontos: function(idCampo) { var coord=''; if(points.length>0) { for (var i = 0; i < points.length - 1; i++) { context.moveTo(points[i]['x'], points[i]['y']); context.lineTo(points[i+1]['x'], points[i+1]['y']); context.stroke(); coord+=points[i]['x']+","+points[i]['y']+","; } coord+=points[points.length-1]['x']+","+points[points.length-1]['y']; } document.getElementById(idCampo).value=coord; jQuery(document).trigger('close.facebox'); }, clearValores: function() { points = []; drawPath(); }, reloadImage: function(imagem) { var imag = new Image(); imag.onload = function() { context.drawImage(this, 0, 0); } imag.src = imagem; } }); var canvas; var context; var points; function getCursorPosition(e) { var mx, my; if (e.pageX || e.pageY) { mx = e.pageX; my = e.pageY; } else { mx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; my = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; } var rect = document.getElementById('cvEdtAreaMap').getBoundingClientRect(); mx -= rect.left; my -= rect.top; return {x: Math.round(mx), y: Math.round(my)}; } function drawPath() { context.beginPath(); for (var i = 0; i < points.length - 1; i++) { context.moveTo(points[i]['x'], points[i]['y']); context.lineTo(points[i+1]['x'], points[i+1]['y']); context.stroke(); } context.closePath(); } function initMapAreaSistema(imagem) { canvas = document.getElementById('cvEdtAreaMap'); context = canvas.getContext('2d'); points = []; drawPath(); var imag = new Image(); imag.onload = function() { context.drawImage(this, 0, 0); initPointCollection(); } imag.src = imagem; } function setPontos(idCampo) { var coord=''; if(points.length>0) { for (var i = 0; i < points.length - 1; i++) { context.moveTo(points[i]['x'], points[i]['y']); context.lineTo(points[i+1]['x'], points[i+1]['y']); context.stroke(); coord+=points[i]['x']+","+points[i]['y']+","; } coord+=points[points.length-1]['x']+","+points[points.length-1]['y']; } document.getElementById(idCampo).value=coord; jQuery(document).trigger('close.facebox'); } function initPointCollection() { canvas.onclick = function(e) { points.push(getCursorPosition(e)); drawPath(); } } })(jQuery); /** * ************************************************************************************************************************************************************************** */ /** * Retorna o tamanho em bytes de um ficheiro em upload */ function SiwGetFileSize(fld_id) { var input, file; // (Can't use `typeof FileReader === "function"` because apparently // it comes back as "object" on some browsers. So just see if it's there // at all.) if (!window.FileReader) { bodyAppend("p", "The file API isn't supported on this browser yet."); return -1; } input = document.getElementById(fld_id); if (!input) { //Um, couldn't find the fileinput element. return -1; } else if (!input.files) { //This browser doesn't seem to support the `files` property of file inputs. return -1; } else if (!input.files[0]) { //Please select a file before clicking 'Load'" } else { file = input.files[0]; //File " + file.name + " is " + file.size + " bytes in size return file.size; } }