function getCampoValue(linha, campo){
	try{
		if(linha.getElementsByTagName(campo)[0].firstChild == null){
			return "";
		}else{
			if(linha.getElementsByTagName(campo)[0].firstChild.data == "null"){
				return "";
			}else{
				return linha.getElementsByTagName(campo)[0].firstChild.data;
			}
		}
	}catch(ex){
		alert(linha + "-" + campo);
	}
}
function setLoad(op){
	var obj = document.getElementById("ld");
	//alert(obj);
	if(obj == null){
		var novo = document.createElement('div');
		novo.setAttribute('id', 'ld');
		novo.setAttribute('align', 'center');
		novo.setAttribute('style', 'position:absolute; margin-top:-50px;margin-left:-50px;left:50%; top:50%; width:150px;height: 10px; z-index:100;text-align:center');
		novo.innerHTML = "<span style=\"background:#FFFFFF;height:5px;font-family:Verdana, Arial, Helvetica, sans-serif;padding:5px;border: 1px solid #000000;font-weight:bold;font-size:12px\">&nbsp;&nbsp;Aguarde...&nbsp;&nbsp;&nbsp;<img src='img/loader.gif' align='absmiddle'></span>";
		
		document.body.appendChild(novo);
	}else{
		if(op == "on"){
			obj.style.display = "";
		}else{
			obj.style.display = "none";
		}	
	}
}
function biancuzziAjax(url, funcao, showLoad, method, params, typeReturn, grid){
	this.url = url;
	this.funcao = funcao;
	this.xmlbase1 = getXmlHttp();
	this.showLoad = false;
	this.typeReturn = "xml";
	this.gridReturn = null;
	this.objGen = null;
	this.exec = exec;
	
	if(showLoad){
		this.showLoad = true;
		setLoad("on");
	}
	if(!method){
		method = "GET";
	}
	if(!params){
		params = null;
	}
	if(grid){
		this.gridReturn = grid;
	}
	
	if(typeReturn){
		this.typeReturn = typeReturn;
	}

	function getXmlHttp(){
		var req = null;
		if(window.XMLHttpRequest){
			req = new XMLHttpRequest();
		}else if(window.ActiveXObject){
			req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		return req;			
	}
	
	if(this.url == ""){
		alert("URL não informada");
		return;
	}
	
	
	function exec(){
		//alert("ARQUIVO XML: " + arquivo);
		this.xmlbase1.open(method, this.url, true);
		if(method == "POST"){
			//this.xmlbase1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=iso-8859-1');
			this.xmlbase1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
			this.xmlbase1.setRequestHeader('Content-length', params.length);
		}
		this.xmlbase1.send(params);
		var loader = this;
		this.xmlbase1.onreadystatechange  = function(){retornoXML1.call(loader)};
	}
	retornoXML1 = function(){
		if(this.xmlbase1.readyState == 4){
			if(this.xmlbase1.status == 404){
				alert("Arquivo de dados não encontrado\n" + this.url);
			}
			if(this.xmlbase1.status == 500){
				var msgErroXml = "";
				try{ //Se o tratamento de erro estiver ativo, devera mostrar a mensagem da exceção
					var xml = this.xmlbase1.responseXML;	
					var erro = xml.getElementsByTagName("erro");
					msgErroXml = getCampoValue(erro[0], "exception");
				}catch(e){
					
				}
				alert("Ocorreu um erro ao carregar a lista de dados.\n" + this.url + "\n" + msgErroXml);
			}
			if(this.xmlbase1.status == 200){
				try{
					var obj = new Object();
					if(this.typeReturn == "xml"){
						var xml = this.xmlbase1.responseXML;	
						var elem = xml.getElementsByTagName("registro");		
					}else{
						
						var elem = this.xmlbase1.responseText;
					}
					obj.xml = elem;
					obj.grid = this.gridReturn;
					obj.objGen = this.objGen;
					this.funcao(obj);
					//this.funcao(elem);
					if(this.showLoad){
						setLoad("off");	
					}
				}catch(ex){
					
					alert(ex + "\n" + this.funcao.name);
					if(this.showLoad){
						setLoad("off");	
					}					
				}
			}
		}		
	}
}
