/**
 *	Carrinho()
 *	Construtor do objeto Carrinho
 */
function Carrinho() {
	// listas
	this.listaDeCompras = null;
	this.listaDeOrcamentos = null;
	
	// botões
	this.botoes = new Array();
}

/**
 *	definirPrecos()
 *	Define os preços do Carrinho
 */
Carrinho.prototype.definirPrecos = function() {
	var f, i, j, k, label, preco;
	// fieldsets
	for(i = 0; (f = document.getElementsByClassName('pagamento')[i]); i++) {
		// labels
		for(j = 0; (label = f.getElementsByTagName('label')[j]); j++) {
			// textNodes
			for(k = 0; (no = label.childNodes[k]); k++) {
				// preço
				if(no.nodeType == 3 && no.nodeValue.indexOf('R$') != -1) {
					switch(label.attributes['for'].value) {
						// compras
						case 'comprasAVista':
							this.listaDeCompras.preco.aVista = no;
							break;
						case 'comprasAPrazo':
							this.listaDeCompras.preco.aPrazo = no;
							break;
					}
				}
			}
		}
	}
}

/**
 *	novoProduto()
 *	Cria uma nova instância do objeto Produto
 *
 *	@return		Produto
 */
Carrinho.prototype.novoProduto = function() {
	return new Produto();
}

/**
 *	adicionarProduto()
 *	Adiciona um produto em uma lista
 *
 *	@param		mixed		produto		Objeto do produto a ser criado, ou false, caso o objeto não exista ainda
 *	@param		string		lista		Nome da lista a ser adicionado o produto (listaDeCompras ou listaDeOrcamentos)
 */
Carrinho.prototype.adicionarProduto = function(produto, lista) {
	// lista de compras
	if(lista == 'listaDeCompras') {
		if(this.listaDeCompras == null)
			this.listaDeCompras = new ListaDeCompras();
		
		// mensagem
		if (produto == 'mensagem') {
			this.mensagem("listaDeCompras")
		
		// produtos
		} else {
			// mostrando o formulário
			var form = this.listaDeCompras.div.getElementsByTagName("form")[0]
			if(form && form.style.display != 'block')
				form.style.display = 'block'
			
			this.definirPrecos();
			this.listaDeCompras.adicionarProduto(produto);	
		};
	
	// lista de orçamentos
	} else if(lista == 'listaDeOrcamentos') {
		if(this.listaDeOrcamentos == null)
			this.listaDeOrcamentos = new ListaDeOrcamentos();
		
		// mensagem
		if (produto == 'mensagem') {
			this.mensagem("listaDeOrcamentos")
		
		// produtos
		} else {
			// mostrando o formulário
			var form = this.listaDeOrcamentos.div.getElementsByTagName("form")[0]
			if(form && form.style.display != 'block')
				form.style.display = 'block'
			
			this.listaDeOrcamentos.adicionarProduto(produto);
		}
	}
}

/**
 *	mensagem()
 *	Mostra a mensagem do carrinho
 *	
 *	@param		string		lista		listaDeCompras / listaDeOrcamentos
 */
Carrinho.prototype.mensagem = function(lista) {
	// mensagem de compras
	if (lista == 'listaDeCompras') {
		var divAppend = this.listaDeCompras.div.getElementsByTagName('div')[0];
		var p = document.createElement('p');
		p.appendChild(document.createTextNode('Você pode escolher a opção comprar para todos os produtos nos quais aparece o preço indicado.'));
		var p2 = document.createElement('p');
		p2.appendChild(document.createTextNode('Para pagamento, você terá duas opções: à vista ou 28 dias.'));
		var p3 = document.createElement('p');
		p3.appendChild(document.createTextNode('Na condição à vista, você imprimirá o boleto bancário e o envio será feito após a confirmação do pagamento.'));
		var p4 = document.createElement('p');
		p4.appendChild(document.createTextNode('Na condição 28 dias, o envio dos produtos será feito após aprovação de crédito.'));
		var p5 = document.createElement('p');
		p5.appendChild(document.createTextNode('Caso você queira negociar outros prazos de pagamento em função de quantidades, escolha a opção orçar.'));
		divAppend.appendChild(p);
		divAppend.appendChild(p2);
		divAppend.appendChild(p3);
		divAppend.appendChild(p4);
		divAppend.appendChild(p5);
	
	// mensagem de orçamentos
	} else {
		var divAppend = this.listaDeOrcamentos.div.getElementsByTagName('div')[0];
		var p = document.createElement('p');
		p.appendChild(document.createTextNode('Escolha esta opção para produtos que não tenham valor indicado ou sempre que quiser orçar todo o material a ser adquirido.'));
		divAppend.appendChild(p);
	}
}

/**
 *	alterarBotao()
 *	Ativa ou desativa o botão de finalizar compra
 *	
 *	@param		string		botao		compra / orcamento
 */
Carrinho.prototype.alterarBotao = function(botao, ativar) {
	if(ativar) {
		this.botoes[botao].disabled = false
		this.botoes[botao].style.color = '#fff'
	} else {
		this.botoes[botao].disabled = true
		this.botoes[botao].style.color = '#333'
	}
}