var temAlteracao = { ligado: true, alterados: [], salvarSair: function() { //nesta funcao o this é o dialog //console.log(temAlteracao.alterados); for ( var i = 0, t = temAlteracao.alterados.length; t--; i++) { if (temAlteracao.alterados[i]) { var ehPraGravar = temAlteracao.alterados[i].testaGravacao.call(temAlteracao.alterados[i], 'vemDaAlteracao'); if (ehPraGravar) { //console.log(temAlteracao.alterados[i]); var li = temAlteracao.quemChamou.li; if (li) { var filhosDoUl = li.parentNode.childNodes; for ( var t = 0; t < filhosDoUl.length ; t++) { if (li == filhosDoUl[t]) { var posicao = t; break; } } // se o quemChamou for uma aba (tem li), guarda parâmetros para refazer o link após remontar o conteúdo temAlteracao.quemChamouDom = { 'idPai': li.parentNode.id, 'posicao': posicao }; } temAlteracao.alterados[i].veioAlteracao = true; temAlteracao.alterados[i].grava.call(temAlteracao.alterados[i]); } } } }, sairSemSalvar: function() { //nesta funcao o this é o dialog temAlteracao.funcao.call(temAlteracao.quemChamou); temAlteracao.box.dialog("close"); delete(temAlteracao.box); temAlteracao.alterados = []; }, naoSair: function() { //nesta funcao o this é o dialog temAlteracao.box.dialog("close"); delete(temAlteracao.box); }, colocaAlterado: function(obj) { var jaTem = $.grep(temAlteracao.alterados, function(val, index) { return val == obj; }); if ( jaTem.length == 0 ) temAlteracao.alterados.push(obj); }, retiraAlterado: function(obj) { temAlteracao.alterados = $.grep(temAlteracao.alterados, function(val, index) { return val != obj; }); if (obj.veioAlteracao) { obj.veioAlteracao = false; //console.log(temAlteracao.quemChamou); // se tiver sido clicada uma Aba, refaz os links entre o objeto e os elementos Dom (pois foram remontados) if (temAlteracao.quemChamou && temAlteracao.quemChamouDom && temAlteracao.quemChamou.classeOrigem == 'Aba') { var idPai = temAlteracao.quemChamouDom.idPai; var pos = temAlteracao.quemChamouDom.posicao; // se tinha o quemChamou, refaz o link com o objetoDom temAlteracao.quemChamou.li = $('ul#' + idPai + ' li')[pos]; if (obj.item.pai.classeObjeto == 'colecao'){ temAlteracao.quemChamou.item = obj.item.pai.item; } else temAlteracao.quemChamou.item = obj.item; } temAlteracao.quemChamouDom = null; if (temAlteracao.alterados.length == 0) temAlteracao.funcao.call(temAlteracao.quemChamou); } if (temAlteracao.box) { temAlteracao.box.dialog("close"); delete(temAlteracao.box); } }, verificaAlterados: function(quemChamou, funcao) { // console.log(funcao); temAlteracao.quemChamou = quemChamou; temAlteracao.funcao = quemChamou[funcao]; if (temAlteracao.ligado && temAlteracao.alterados.length > 0 && !temAlteracao.box) { temAlteracao.box = $("
" + "há alterações ainda não salvas, tem certeza que deseja sair sem salvar?" + "