// JavaScript Document
var reqs = new Array();

function uncache(url)
{
	var d = new Date();
	var time = d.getTime();

	if (new String(url).indexOf("?") < 0)
		strurl = "?";
	else
		strurl = "&";

	url = url + strurl + 'timecache='+time;
	return url;
} 

function CXMLReq(type, xmlhttp, target, func) 
{
	this.type = type;
	this.xmlhttp = xmlhttp; 
	this.target = target;
	this.func = func;
}

function mostraLog(msg)
{
	if (document.getElementById('logErros'))
		document.getElementById('logErros').innerHTML += msg + '<BR>';	
}

function jah(url, target, func, msg) {
   mostraLog('jah: url->' + url + ', target->' + target + ', func->' + func + ', msg->' + msg);
   var xhr = false;
   // native XMLHttpRequest object
	if (msg)
		mensagem = msg;
	else
		mensagem = 'Carregando...';
		
	document.getElementById(target).innerHTML = '<div style="padding: 5px; color: #666666;"><img src="../_template/img/jah_loading_blue.gif" alt="'+mensagem+'" title="'+mensagem+'" align="absmiddle" />&nbsp;' + mensagem + '</div>';
   
   if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {jahDone();};
        xhr.open("GET", url, true);
        xhr.send(null);
    // IE/Windows ActiveX version
   } else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
        if (xhr) {
            xhr.onreadystatechange = function() {jahDone();};
            xhr.open("GET", uncache(url), true);
            xhr.send();
        }
   }
   
   var xmlreq = new CXMLReq('', xhr, target, func);
   reqs.push(xmlreq);
}    

function jahDone() {
	if (typeof(window['reqs']) == "undefined") return;
	// only if req is "loaded"
	for (var req=0; req<reqs.length; req++)
	{
		if (reqs[req].xmlhttp.readyState == 4) {
			// only if "OK"
			results = reqs[req].xmlhttp.responseText;
			target = reqs[req].target;
			func = reqs[req].func;
			statusText = reqs[req].xmlhttp.statusText;
			if (reqs[req].xmlhttp.status == 200 || reqs[req].xmlhttp.status == 304)
			{
				reqs.splice(req,1); req --;
				o = document.getElementById(target);
				if (o)
				{
					o.innerHTML = results;
					if (haveJS(o))
						execJS(o);
					if (func)
						eval(func + "();");
				}
			}
			else
			{
				document.getElementById(target).innerHTML="jah erro:\n" + statusText;
				reqs.splice(req,1); req --;
			}
		}
	}
}

var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bMoz = (navigator.appName == 'Netscape');

function haveJS(node)
{
  var st = node.getElementsByTagName('SCRIPT');
  if (st.length > 0)
  	return true;
  else
    return false;
}

function execJS(node) 
{
  var st = node.getElementsByTagName('SCRIPT');
  var strExec;
  for(var i=0;i<st.length; i++) {
	if (bSaf) {
	  strExec = st[i].innerHTML;
	}
	else if (bMoz) {
	  strExec = st[i].textContent;
	}
	else {
	  strExec = st[i].text;
	}
	try {
	  //mostraLog('chamando isso:' + strExec);
	  eval(strExec);
	} catch(e) {
	  alert(strExec);
	  if (window.ActiveXObject)
		  alert(e.description);
	  else
	  	  alert(e);
	}
  }
}