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;color:#000;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;
	this.fnError = null;
	this.localCarregar = null;


	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);
		if(showLoad){
			this.showLoad = true;
			if(!this.localCarregar){
				setLoad("on");
			}
		}
		if(this.localCarregar && this.showLoad){
			this.localCarregar.innerHTML = "<div style=\"margin:10px;height:5px;font-family:Verdana, Arial, Helvetica, sans-serif;padding:5px;font-weight:bold;font-size:12px\">&nbsp;&nbsp;Aguarde...&nbsp;&nbsp;&nbsp;<img src='../img/loader.gif' align='absmiddle'></div>";
		}
		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], "message");
				}catch(e){
					
				}
				if(this.showLoad){
					setLoad("off");	
				}	
				if(this.fnError == null){
					alert("Ocorreu um erro ao carregar a lista de dados.\n" + this.url + "\n" + msgErroXml);	
				}else{
					var oErr = new Object();
					oErr.id = 500;
					oErr.msgErro = msgErroXml;
					this.fnError(oErr);
				}
			}
			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;
						if(this.localCarregar){ //opção para inserir automaticamente o conteúdo
							this.localCarregar.innerHTML = elem;
						}
					}
					if(this.funcao){
						obj.xml = elem;
						obj.grid = this.gridReturn;
						obj.objGen = this.objGen;
						this.funcao(obj);
						//this.funcao(elem);
						if(this.showLoad){
							setLoad("off");	
						}
					}
				}catch(ex){					
					if(this.fnError == null){
						alert(ex + "\n" + this.funcao.name);	
					}else{
						
						var oErr = new Object();
						oErr.id = 500;
						oErr.msgErro = ex + "\n" + this.funcao.name;
						this.fnError(oErr);
					}					
					if(this.showLoad){
						setLoad("off");	
					}						
				}
			}
		}		
	}
}
