function ajax() {
	if(!this.xmlhttp) {
		try{
			this.xmlhttp = new XMLHttpRequest();
		}catch(ee){
			try{
				this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(E){
					this.xmlhttp = false;
				}
			}
		}
	}
	return this;
}

ajax.prototype.fila = new Array();
ajax.prototype.filaControl = 0;
ajax.prototype.requestURL = function(par) {
	this.fila[this.fila.length] = par;
	if((this.filaControl+1) == this.fila.length) {
		this.ajaxExec();
	}
}

ajax.prototype.ajaxExec = function() {
	this.xmlhttp.open("post",this.fila[this.filaControl].url,true);
	//Funcao para tratamento do retorno
	this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	_this = this;
	if(this.fila[this.filaControl].execBefore) {
    	eval(this.fila[this.filaControl].execBefore);
   }
	this.xmlhttp.onreadystatechange=function() {
		if (_this.xmlhttp.readyState==4) {
			//Mostra o HTML recebido
			retorno=unescape(_this.xmlhttp.responseText.replace(/\+/g," "));

			var tg  = document.getElementById(_this.fila[_this.filaControl].target);
			if(tg) {
				tg.innerHTML = retorno;
			}
            if(_this.fila[_this.filaControl].execAfter) {
				eval(_this.fila[_this.filaControl].execAfter);
			}
			//Roda o proximo
			_this.filaControl++;
			if(_this.filaControl < _this.fila.length)setTimeout("_this.ajaxExec()",10);
			if(_this.filaControl == _this.fila.length) {
				_this.filaControl = 0;
				_this.fila = [];
			}
		}
	}
	//Executa
	var pars ;
	this.fila[this.filaControl].par ? pars = this.fila[this.filaControl].par : pars = null;
	this.xmlhttp.send(pars);
}

ajax = new ajax;

//ajax.requestURL({"url":'post.php',"target":"dvCommited","par":'valor=val',"execBefore":"alert('Antes')","execAfter":"alert('Depois')});

function hiddeTbl(id) {
	id = 'tbl_'+id;
	var tblWrapper = document.getElementById("tblWrapper");
	var tbls = tblWrapper.getElementsByTagName("table");
	for(var x = 0 ; x < tbls.length ; x++) {
		tbls[x].className = "tblHidde";
	}
	document.getElementById(id).className = "tblShow";
}

function hotspotsLoading(id) {
	document.getElementById(id).innerHTML = "Carregando...";
}
function getComboStates(statesType) {
    var url = "controller.php?action=93&showTableAcesso=1&showCombo=states&statesType="+statesType+"&ajax=1";
    ajax.requestURL({"url":url,"target":"dvComboStates",execBefore:"hotspotsLoading('dvComboStates')"});
}

function getComboCities(stateId) {
	//alert(cityId);
	var url = "controller.php?action=93&showTableAcesso=1&st_code="+stateId+"&showCombo=cities&ajax=1";
	ajax.requestURL({"url":url,"target":"dvComboCities",execBefore:"hotspotsLoading('dvComboCities')"});
}

function getComboHotSpots(cityId,stateId) {
    var url = "controller.php?action=93&showTableAcesso=1&st_code="+stateId+"&cy_code="+cityId+"&showCombo=hotSpots&ajax=1";
	ajax.requestURL({"url":url,"target":"dvComboHotSpots",execBefore:"hotspotsLoading('dvComboHotSpots')"});
}

function getHotSpotsList(hotSpotName,cityId,stateId) {
	//alert(escape(hotSpotName));
	hotSpotName = escape(hotSpotName);
    var url = "controller.php?action=93&showTableAcesso=1&st_code="+stateId+"&cy_code="+cityId+"&hotSpotName="+hotSpotName+"&showCombo=hotSpotsList&ajax=1";
	ajax.requestURL({"url":url,"target":"tblWrapper",execBefore:"hotspotsLoading('tblWrapper')"});
}

function startHotSpots(target) {
    var url = "controller.php?action=93";
    ajax.requestURL({"url":url,"target":target});
}