/************************************************************************************************************
Ajax dynamic content
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com
************************************************************************************************************/	

var enableCache = true;
var jsCache = new Array();
var dynamicContent_ajaxObjects = new Array();

function executeCallback(callbackString) {
	if(callbackString.indexOf('(') == -1) {
		callbackString = callbackString + '()';
	}
	try{
		eval(callbackString);
	}catch(e){

	}
}

// Funcao que prepara os atributos e executa a consulta Ajax (runAJAX)
function ajax_loadContent(x,divId,url,callbackOnComplete){
	
	var img_ = new Array('loader02t.gif','loader03t.gif','loader04t.gif','loader05t.gif','loader06t.gif','loader07t.gif','loader08t.gif','loader09t.gif','loader10t.gif','loader11t.gif','loader12t.gif','loader13t.gif','loader14t.gif','loader15t.gif','loader16t.gif','loader17t.gif','loader18t.gif','loader19t.gif','loader20t.gif','loader21t.gif','loader22t.gif','loader23t.gif','loader24t.gif','loader25t.gif');
	if (x == "") {
		x = 2;
		wait = "<div style='text-align:center; border:#CCC solid 1px;'><img src='../03_imagens/03_carregando/"+img_[x]+"' alt='carregando ...' /><br />carregando ... </div>";
	} else {
		wait = "<img src='../03_imagens/03_carregando/"+img_[x]+"' alt='carregando ...' />";
	}
	
	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}		
		return;
	}
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = wait;
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	
	if(url.indexOf('?') >= 0){
		dynamicContent_ajaxObjects[ajaxIndex].method = 'GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}	
		}	
		url = url.replace(string,'');
	}

	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ajax_showContent(divId,ajaxIndex,url,callbackOnComplete);};	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
}

// Funcao que captura o resultado e envia para o elemento HTML
function ajax_showContent(divId,ajaxIndex,url,callbackOnComplete){
	
	var targetObj = document.getElementById(divId);
	var temp = dynamicContent_ajaxObjects[ajaxIndex].response;
	
	if ($a.browser.msie){
		$a("#"+divId).html(temp);
	} else {
		targetObj.innerHTML = temp;
	}
	
	if(enableCache){
		jsCache[url] = dynamicContent_ajaxObjects[ajaxIndex].response;
	}
	dynamicContent_ajaxObjects[ajaxIndex] = false;
	
	ajax_parseJs(targetObj);
	
	if(callbackOnComplete) {
		executeCallback(callbackOnComplete);
	}
}

function ajax_parseJs(obj){
	var scriptTags = obj.getElementsByTagName('SCRIPT');
	var string = '';
	var jsCode = '';
	for(var no=0;no<scriptTags.length;no++){	
		if(scriptTags[no].src){
	        var head = document.getElementsByTagName("head")[0];
	        var scriptObj = document.createElement("script");
	
	        scriptObj.setAttribute("type", "text/javascript");
	        scriptObj.setAttribute("src", scriptTags[no].src);  	
		}else{
			if(navigator.userAgent.toLowerCase().indexOf('opera')>=0){
				jsCode = jsCode + scriptTags[no].text + '\n';
			}
			else
				jsCode = jsCode + scriptTags[no].innerHTML;	
		}
	}
	if(jsCode)ajax_installScript(jsCode);
}

function ajax_installScript(script){		
    if (!script)
        return;		
    if (window.execScript){        	
    	window.execScript(script)
    }else if(window.jQuery && jQuery.browser.safari){ // safari detection in jQuery
        window.setTimeout(script,0);
    }else{        	
        window.setTimeout( script, 0 );
    } 
}	
	
function evaluateCss(obj){
	var cssTags = obj.getElementsByTagName('STYLE');
	var head = document.getElementsByTagName('HEAD')[0];
	for(var no=0;no<cssTags.length;no++){
		head.appendChild(cssTags[no]);
	}	
}
