function ajax_elementSetHtml(element_id, html) { el = getElement(element_id); if (!el) { alert('ajax_elementSetHtml -> Elemento '+ element_id +' não encontrado para aplicar HTML'); } el.innerHTML = html; //alert(html); var scripts = el.getElementsByTagName("script"); for(i = 0; i < scripts.length; i++) { s = scripts[i].innerHTML; //alert(s); eval(s); } } function ajax_split( delimiter, string ) { ret = ajax_explode(delimiter, string); return ret; } function ajax_explode( delimiter, string ) { // Split a string by string // // + discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_explode/ // + version: 803.2519 // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: kenneth // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: explode(' ', 'Kevin van Zonneveld'); // * returns 1: {0: 'Kevin', 1: 'van', 2: 'Zonneveld'} var emptyArray = { 0: '' }; if ( arguments.length != 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined' ) { return null; } if ( delimiter === '' || delimiter === false || delimiter === null ) { return false; } if ( typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object' ) { return emptyArray; } if ( delimiter === true ) { delimiter = '1'; } return string.toString().split ( delimiter.toString() ); } // ajax_cache recebe o retorno de uma requisicao ajax e analisa se tem informacoes para armazenar em cache var ajaxCache = new Array(); var ajaxCacheDataHora = new Array(); function ajax_cache(html, pagina) { // se retorno eh json doisc = html.substr(0,3); //alert("ajax_cache "+ doisc +"("+ html +","+ pagina +"); "); if (doisc == "\";\"") { try { //alert("json start"); jp = san_decode(html); // se retorno eh cache status if (jp["cacheStatus"] == "" || jp["cacheStatus"] == undefined) return html; //alert("json finish"+ jp["cacheStatus"]); if (jp["cacheStatus"] == "OK") { //alert("ajax_cache -> Armazenar pagina "+ pagina +" em cache"); ajaxCacheDataHora[pagina] = jp["cacheDatahora"]; ajaxCache[pagina] = jp["html"]; //alert(" Armazenado -> "+ ajaxCache[pagina]); } // o valor do cache ja esta atualizado if (jp["cacheStatus"] == "NO") { return "LXCACHE_NO_UPDATE"; } return jp["html"]; } catch (err) { alert("ajax_cache -> Erro ao tentar decodificar JSON"); } } return html; } var ajax_exe_i = 0; var xmlhttp = new Array(); function ajax_exe(pagina, funcao, postvars) { metodo = "POST"; //alert("postvars "+ postvars); if (postvars == undefined) metodo = "GET"; ajax_exe_i++; //alert('AE '+ ajax_exe_i); var addGet = ""; // VERIFICANDO SE PAGINA NAO ESTA NO CACHE DO AJAX try { cache = ajaxCache[pagina]; //alert("ajax_exe -> Ver cache "+ pagina +" = "+ cache); if (cache != "" && cache != undefined) { //alert("Pagina "+ pagina +" esta em cache "); ajax_carregado(cache,funcao); addGet = "&cacheDH="+ ajaxCacheDataHora[pagina]; } } catch (errr) { } try { var xmlhttp = new XMLHttpRequest(); } catch(ee) { try { var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(E) { var xmlhttp = false; } } } //Abre a url addGet = "&_id_pus=TUE9PQ==&lxAjax=S&noCch="+ Math.random() + addGet; var texto; var pag = pagina + addGet; //alert("ajax_exe("+pag+")"); if (getElement('ajax_log')) getElement('ajax_log').innerHTML = pag; xmlhttp.open(metodo, pag + addGet, true); //alert("metodo "+ metodo); if (metodo == "POST") { xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", postvars.length); xmlhttp.setRequestHeader("Connection", "close"); } //Executada quando o navegador obtiver o código //alert('AE '+ ajax_exe_i); xmlhttp.onreadystatechange=function() { //alert('Ready state '+ xmlhttp.readyState); if (xmlhttp.readyState==4){ //Lê o texto var texto=xmlhttp.responseText; //alert('ajax_exe Retorno: '+ texto); //Desfaz o urlencode // desativando pois ele retira o + de codigos javascript //texto=texto.replace(/\+/g," "); texto=unescape(texto); texto = ajax_cache(texto, pagina); if (texto != "LXCACHE_NO_UPDATE") ajax_carregado(texto, funcao); } } if (metodo == "POST") xmlhttp.send(postvars); else xmlhttp.send(null); delete(xmlhttp); } // processa o conteudo carregado pelo ajax function ajax_carregado(texto, funcao) { //alert("ajax_carregado("+texto+")"); //if (getElement('ajax_log')) // getElement('ajax_log').innerHTML = getElement('ajax_log').innerHTML +'
'+ texto; if (funcao != "") { // verificando se nao eh funcao especifica sp = ajax_split(":",funcao); if (sp[0] == "elementSetHtml") { eval("ajax_elementSetHtml('"+ sp[1] +"',texto);"); } else { //alert(funcao); eval(funcao +"(texto);"); } } } function ajax_depurar(aviso) { if (aviso) alert("Ativando modo depuração AJAX"); el = getElement("ajax_log"); el.style.display=""; } // Cria script AJAX para executar funcoes PHP diretas atraves do ajax function ajax_php(funcao, parametro, funcao_js_retorno, postvars) { //+"&r="+ ajax_rand(0,1000) // rand eh gerado pelo ajax_exe url = "ajax.php?pg=ajax_php&_fnctn="+ funcao +"&"+ parametro; //alert(url); return ajax_exe(url,funcao_js_retorno,postvars); } function ajax_rand( min, max ) { // http://kevin.vanzonneveld.net // + original by: Leslie Hoare // * example 1: rand(1, 1); // * returns 1: 1 if( max ) { return Math.floor(Math.random() * (max - min + 1)) + min; } else { return Math.floor(Math.random() * (min + 1)); } }