/**
 *	ListaDeOrcamentos()
 *	Construtor do objeto ListaDeOrcamentos
 */
function ListaDeOrcamentos() {
	this.div = document.getElementById('orcamento');
	this.produtos = new Array();
	this.countProdutos = 0;
}

/**
 *	adicionarProduto()
 *	Adiciona um produto na lista
 *
 *	@param		object		prod		Objeto do produto a ser adicionado
 */
ListaDeOrcamentos.prototype.adicionarProduto = function(prod) {
	var lista = this;
	var d = document;
	
	// objeto do contador
	lista.countProdutos = lista.div.getElementsByTagName('span')[0];
	
	// fieldset
	var fieldset = d.createElement('fieldset');
	fieldset.id = 'orcamento'+lista.countProdutos.innerHTML;
	
	// h3
	var h3 = d.createElement('h3');
	h3.appendChild(d.createTextNode(prod.nome));
	
	// opção
	var pOpcao = d.createElement('p');
	pOpcao.appendChild(d.createTextNode('Opção: '+prod.opcao));
	
	// quantidade
	var label = d.createElement('label');
	label.appendChild(d.createTextNode('Qtd: '));
	
	var input = d.createElement('input');
	input.setAttribute('type', 'text');
	input.setAttribute('name', 'orcamentosQtd[]');
	input.setAttribute('value', prod.qtd);
	// grava o preço no carrinho
	addListener(
		input,
		'blur',
		function() {
			lista.atualizarProduto(fieldset.id.replace('orcamento', ''), input.value);
		}
	);
	label.appendChild(input);
	
	
	// link remover
	var a = d.createElement('a');
	a.setAttribute('href', '#');
	a.setAttribute('title', 'Remover Produto');
	a.className = 'remover';
	a.appendChild(d.createTextNode('Remover Produto'));
	
	// 'appendando' os nodes finais
	fieldset.appendChild(h3);
	fieldset.appendChild(pOpcao);
	fieldset.appendChild(label);
	fieldset.appendChild(a);
	
	// adicionando evento
	addListener(
		a,
		'click',
		function() {
			new ajax.ContentLoader('../php/carrinho/removerProduto.php?lista=listaDeOrcamentos&i='+fieldset.id.replace('orcamento', ''), removerProdutoOrcamentos);
		}
	);
	
	// 'appendando' o fieldset completo
	var divAppend = lista.div.getElementsByTagName('div')[0];
	
	// se é o primeiro produto, remove a mensagem
	if (!divAppend.getElementsByTagName('fieldset').length)
		removeChildren(divAppend);
		
	divAppend.appendChild(fieldset);
	
	
	// atualizando o contador do carrinho
	lista.produtos.append(prod);
	lista.atualizarContador(true);
	
	// ativando o botão de finalizar compra
	c.alterarBotao("orcamento", true)
}


/**
 *	atualizarProdutos()
 *	Atualiza os produtos do carrinho
 */
ListaDeOrcamentos.prototype.atualizarProduto = function(i, qtd) {
	var lista = this;
	
	new ajax.ContentLoader('../php/carrinho/gravarPrecos.php?lista=listaDeOrcamentos&i='+i+'&qtd='+qtd, lista.atualizarProdutoHandler);
}

/**
 *	atualizarProdutoHandler()
 *	Handler da função atualizarProduto()
 *
 *	@see		atualizarProduto()
 */
ListaDeOrcamentos.prototype.atualizarProdutoHandler = function() {
}


/**
 *	removerProdutoOrcamentos()
 *	Remove um dado produto da lista de orçamentos
 *
 *	@param		object		obj			Fieldset do produto a ser removido
 *	@param		object		prod		Objeto do produto
 */
function removerProdutoOrcamentos() {
	var lista = c.listaDeOrcamentos;
	
	// índice do produto
	var i = parseInt(this.req.responseText);
	
	// pegando o fieldset
	var obj = lista.div.getElementsByTagName('fieldset');
	if(!obj)
		return;
	for(var j = 0; j < obj.length; j++) {
		if(obj[j].id == 'orcamento'+i) {
			// removendo o fieldset
			obj[j].parentNode.removeChild(obj[j]);
		} else {
			obj[j].style.display = 'none';
			obj[j].style.display = 'block';
		}
	}
	
	// atualizando o contador de produtos
	lista.atualizarContador(false);
	
	// removendo o produto da lista
	lista.produtos[i] = null;
	
	// se não há produtos, mostra a mensagem
	if (lista.countProdutos.innerHTML == 0) {
		//c.mensagem("listaDeOrcamentos")
		c.alterarBotao("orcamento", false)
		lista.div.getElementsByTagName("form")[0].style.display = 'none'
	}
}



/**
 *	atualizarContador()
 *	Atualiza o contador dos produtos
 *
 *	@param		boolean		aumentar	Aumentar ou diminuir o contador
 */
ListaDeOrcamentos.prototype.atualizarContador = function(aumentar) {
	var lista = this;
	if(aumentar)
		lista.countProdutos.innerHTML = (eval(lista.countProdutos.innerHTML)+1);
	else
		lista.countProdutos.innerHTML = (eval(lista.countProdutos.innerHTML)-1);
}