/**
 * @package Ajax
 */

/** A requisição enviada ao servidor */
var req;

/**
 * Carrega a lista de cidades do estado selecionado
 *
 * @param valor String GET com a UF do estado selecionado
 */
function loadCidades(valor) {
	objId = 'select_cidades';
	document.getElementById(objId).innerHTML = "<option>Aguarde...</option>";
	loadXMLDoc("../lib/_ajax_cidades.php?", valor);
}

/**
 * Envia uma requisição assíncrona via GET para o servidor e monitora
 * suas mudanças de estado.
 *
 * @param url Caminho do script de servidor que processará a requisição
 * @param valor String passada via GET para o servidor
 */
function loadXMLDoc ( url, valor )
{
	caminho = url+valor;
	// PROCURA POR UM OBJETO NATIVO (MOZILLA/SAFARI)
	if ( window.XMLHttpRequest )
	{
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", caminho, true);
		req.send(null);
	// PROCURA POR UMA VERSAO ACTIVEX (IE)
	}
	else if ( window.ActiveXObject )
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if ( req )
		{
			req.onreadystatechange = processReqChange;
			req.open("GET", caminho, true);
			req.send();
		}
	}
}

/**
 * Envia uma requisição assíncrona via POST para o servidor e monitora
 * suas mudanças de estado.
 *
 * @param url Caminho do script de servidor que processará a requisição
 * @param param String passada via POST para o servidor (o servidor lerá como um array POST)
 */
function loadXMLPOST ( url, param )	{
	req = null;
	// PROCURA POR UM OBJETO NATIVO (MOZILLA/SAFARI)
	if ( window.XMLHttpRequest )
		req = new XMLHttpRequest();
	// PROCURA POR UMA VERSAO ACTIVEX (IE)
	else if ( window.ActiveXObject )
		req = new ActiveXObject("Microsoft.XMLHTTP");
	else
		alert( 'Seu browser não suporta AJAX! Está página não funcionará corretamente.' )
	
	req.open('POST', url, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length", param.length);
	req.setRequestHeader("Connection", "close");
	req.send(param);
}

/**
 * Trata as mudanças de estado da requisição.
 */
function processReqChange() {
	// Apenas quando o estado for "completado"
	if (req.readyState == 4) {
		// Apenas se o servidor retornar "OK"
		if (req.status == 200) {
			// Faz a alteracao no HTML
			el1 = document.getElementById(objId);
			if (el1) {
				el1.innerHTML = req.responseText;
				el2 = document.getElementById('cidad_id');
				if (el2) {
					el2.className="input";
					if (readonly)
						document.getElementById('cidad_id').disabled=true;
				}
			}
		} else {
			alert("Houve um problema ao obter os dados:\n" + req.statusText);
		}
	}
}


function adicionaOrcamento (id, qtd)
{
	new Ajax.Request(_HTTP_PATH_+"ajaxOrcamento.php",
	{
		method     : 'post',
		postBody   : 'id='      + id	+
					 '&qtde='	+ qtd	+
					 '&tipo=add',
		onLoading  : function() {},
		onComplete : function(req)
					 {
					 	if (req.responseText == 'ok')
					 		location.href = _HTTP_PATH_ + 'orcamento/visualizaOrcamento';
					 	else
					 		alert('Não foi possível adicionar o produto\n ao carrinho! tente novamente!');
					 },
		onFailure  : function() {}
	});
}


function removeOrcamento (id, qtd)
{
	new Ajax.Request(_HTTP_PATH_+"ajaxOrcamento.php",
	{
		method     : 'post',
		postBody   : 'id='      + id	+
					 '&tipo=del',
		onLoading  : function() {},
		onComplete : function(req)
					 {
					 	if (req.responseText == 'ok')
					 		location.reload();
					 	else
					 		alert('Não foi possível remover o produto\n do carrinho! tente novamente!');
					 },
		onFailure  : function() {}
	});
}

function menuCategorias(nivel, id, pagina)
{
	pagina = pagina ? pagina : 1; 
	new Ajax.Request(_HTTP_PATH_+"ajaxMenuCategorias.php",
	{
		method     : 'post',
		postBody   : 'id='      + id	+
					 '&nivel='	+ nivel	+
					 '&pagina='	+ pagina,
		onLoading  : function() {},
		onComplete : function(req)
					 {
					 	if (req.responseText == 'erro')
					 	{
					 		alert('Não foi possível abrir as categorias, tente novamente!');
					 	}
					 	else
					 	{
					 		var retorno = req.responseText.split("|||||");
					 		
					 		$('produtos_conteudo').update(retorno[1]);
					 		$('paginacao_catalogo').update(retorno[2]);
					 		
					 		if (nivel == 1 && id > 0)
					 		{
					 			$('nivel1_'+id).className="itens_produtos2";
					 			$('nivel2_'+id).className="agrupa_subaberto";
					 			$('nivel2_'+id).update(retorno[0]);
					 		}
					 		
					 		if (nivel == 2 && id > 0)
					 		{
					 			$('nivel3_'+id).update(retorno[0]);
					 		}
					 		
					 		if (nivel == 3 && id > 0)
					 		{
					 			$('nivel4_'+id).update(retorno[0]);
					 		}
					 		
					 		if (nivel == 4 && id > 0)
					 		{
					 			$('nivel5_'+id).update(retorno[0]);
					 		}
					 	}
					 },
		onFailure  : function() {}					 
	});
}


