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));
}
}