/*--------------------------------------------------------
----------------------------------------------------------
	- Classe de Carrinho de Compras
	- Por Anderson Triacca(anderson@andersontriacca.com)
	- Guife Multicom
	- Iniciado em 22/06/2009
	- Alterado em 22/06/2009
---------------------------------------------------------
-------------------------------------------------------*/
function Carrinho() {
	produtos = new Array();
	quantidades = new Array();
	nomes = new Array();
	precos = new Array();
	frete = '0';
}


Carrinho.prototype.addItem = addItem;	
function addItem(id_item, quantidade) {
	// Mostrando o carregador
	this.mostrarCarregador();
	
	// Verificando se o Produto já está no carrinho
	if(in_array(produtos, id_item)){
		alert('Aten\u00E7\u00E3o: este produto j\u00E1 est\u00E1 no seu carrinho!');
		this.removerCarregador();
		return false;
	}
	
	// Fazendo requisição
	$.ajax({
		url: 'camadas_apoio/carrinhoProdutos.php?id_produto='+id_item,
		cache: true,
		success: function(object_html){
			// Separando em variáveis
			xml = object_html;
			nome = base64_decode(xml.getElementsByTagName('titulo')[0].childNodes[0].nodeValue);
			preco = base64_decode(xml.getElementsByTagName('preco_caixa')[0].childNodes[0].nodeValue);
			id_produto = base64_decode(xml.getElementsByTagName('id_produto')[0].childNodes[0].nodeValue);
			
			// Criando a estrutura HTML
			li = document.createElement('li');
			li.id = id_item;
			h2 = document.createElement('h2');
			a = document.createElement('a');
			p = document.createElement('p');
			input = document.createElement('input');
			input_nome = document.createElement('input');
			input2 = document.createElement('input');
			span = document.createElement('span');
			p2 = document.createElement('p');
			span2 = document.createElement('span');
			input3 = document.createElement('input');
			strong = document.createElement('strong');
			
			// Essa família é muito unida
			h2.innerHTML = nome;
			a.innerHTML = 'Remover Produto';
			a.className = 'bt_remover';
			a.title = 'Remover Produto';
			a.href = '#';
			a.rel = id_item;
			a.onclick = function(){
				removerItem(this.rel);
				return false;
			}
			h2.appendChild(a);
			p.className = 'parcial';
			input_nome.type = 'hidden';
			input_nome.name = 'nome[]';
			input_nome.value = nome;
			input.type = 'text';
			input.name = 'quantidade[]';
			input.className = 'input_quantidade';
			input.value = quantidade;
			input.onblur = function(){
				atualizaQuantidade(id_item, this.value);	
			}
			input2.type = 'hidden';
			input2.name = 'valor[]';
			input2.value = preco;
			span.innerHTML = 'X R$ '+preco+'.00';
			p.appendChild(input);
			p.appendChild(input2);
			p.appendChild(span);
			p2.className = 'total';
			span2.innerHTML = 'Total';
			input3.type = 'hidden';
			input3.name = 'total[]';
			strong.innerHTML = 'R$'
			p2.appendChild(span2);
			p2.appendChild(input3);
			p2.appendChild(strong);
			li.appendChild(h2);
			li.appendChild(p);
			li.appendChild(p2);
			li.appendChild(input_nome);
			
			//Inserindo o trem na tela
			document.getElementById('produtos_carrinho').getElementsByTagName('ul')[0].appendChild(li);
			
			// Grava os Valores na Global
			gravaItens(id_produto, quantidade, preco, nome);
			
			// Calculando os totais parciais
			calculaParciais();
			
			// Calculando o Frete
			calculaFrete();
			
			// Calculando os totais da Compra
			calculaTotais();
			
			// Tirando o carregador
			removerCarregador();
		},
		error : function(){
			alert('Erro: Página não encontrada!');
			this.removerCarregador();
		}
	});
}


Carrinho.prototype.removerItem = removerItem;
function removerItem(id_item){
	$('#'+id_item).remove();
	for(i=0;i<produtos.length;i++){
		if(produtos[i] == id_item){
			chave = i;
		}
	}
	produtos[chave] = '';
	quantidades[chave] = '';
	precos[chave] = '';
	calculaParciais();
	calculaFrete();
	calculaTotais();
}


Carrinho.prototype.atualizaQuantidade = atualizaQuantidade;
function atualizaQuantidade(id_item, quantidade){
	if(quantidade == '0' || !parseInt(quantidade)){
		alert('Digite um valor v\u00E1lido de quantidade!');
		quantidade = 1;
		document.getElementById(id_item).getElementsByTagName('input')[0].value = quantidade;
	}
	for(i=0;i<produtos.length;i++){
		if(produtos[i] == id_item){
			quantidades[i] = quantidade;
		}
	}
	calculaParciais();
	calculaFrete();
	calculaTotais();
}


Carrinho.prototype.mostrarCarregador = mostrarCarregador;	
function mostrarCarregador(){
	$('.carregador_produtos').fadeIn('fast');
}


Carrinho.prototype.removerCarregador = removerCarregador;	
function removerCarregador(){
	$('.carregador_produtos').fadeOut('slow');
}


Carrinho.prototype.calculaParciais = calculaParciais;	
function calculaParciais(){
	li = document.getElementById('produtos_carrinho').getElementsByTagName('ul')[0].getElementsByTagName('li');
	for(i=0;i<li.length; i++){
		// Pegando Valores
		quantidade = li[i].getElementsByTagName('input')[0].value;
		valor = li[i].getElementsByTagName('input')[1].value;
		// Calculando os totais
		total_parcial = (quantidade * valor);
		total_parcial = total_parcial.toFixed(2);
		// Inserindo na tela
		li[i].getElementsByTagName('input')[2].value = total_parcial;
		li[i].getElementsByTagName('strong')[0].innerHTML = total_parcial;
	}
}


Carrinho.prototype.gravaItens = gravaItens;	
function gravaItens(id_produto, quantidade, preco, nome){
	produtos.push(id_produto);
	nomes.push(nome);
	quantidades.push(quantidade);
	precos.push(preco);
}


Carrinho.prototype.calculaFrete = calculaFrete;	
function calculaFrete(){
	// Verificações
	var quantidade_produtos = 0;
	for(i=0;i<quantidades.length;i++){
		if(quantidades[i] != ''){
			quantidade_produtos += eval(quantidades[i]);
		}
	}
	if(quantidade_produtos == '0'){
		alert('Voc\u00EA deve selecionar um produto antes de calcular o frete!');
		document.getElementById('select_frete').getElementsByTagName('option')[0].selected = 'selected';
		frete = 0;
		document.getElementById('valor_frete').value = frete;
		calculaTotais();
		return false;
	}
	if(quantidade_produtos > 9){
		frete = 0;
		document.getElementById('valor_frete').value = frete;
		return false;
	}
	
	// Calculando de Acordo com o Estado
	sigla = document.getElementById('select_frete').value;
	switch(sigla){
		case '0' :
		frete = '0';
		break;
		
		case 'ac' :
		frete = 90.00;
		break;
		
		case 'al' :
		frete = 60.00;
		break;
		
		case 'am' :
		frete = 120.00;
		break;
		
		case 'ap' :
		frete = 120.00;
		break;
		
		case 'ba' :
		frete = 60.00;
		break;
		
		case 'ce' :
		frete = 60.00;
		break;
		
		case 'df' :
		frete = 50.00;
		break;
		
		case 'es' :
		frete = 50.00;
		break;
		
		case 'go' :
		frete = 50.00;
		break;
		
		case 'ma' :
		frete = 75.00;
		break;
		
		case 'mg' :
		frete = 50.00;
		break;
		
		case 'ms' :
		frete = 60.00;
		break;
		
		case 'mt' :
		frete = 60.00;
		break;
		
		case 'pa' :
		frete = 90.00;
		break;
		
		case 'pb' :
		frete = 75.00;
		break;
		
		case 'pe' :
		frete = 60.00;
		break;
		
		case 'pi' :
		frete = 75.00;
		break;
		
		case 'pr' :
		frete = 45.00;
		break;
		
		case 'rj' :
		frete = 60.00;
		break;
		
		case 'rn' :
		frete = 60.00;
		break;
		
		case 'ro' :
		frete = 75.00;
		break;
		
		case 'rr' :
		frete = 120.00;
		break;
		
		case 'rs' :
		frete = 25.00;
		break;
		
		case 'sc' :
		frete = 40.00;
		break;
		
		case 'se' :
		frete = 60.00;
		break;
		
		case 'sp' :
		frete = 50.00;
		break;
		
		case 'to' :
		frete = 75.00;
		break;
	}
	document.getElementById('valor_frete').value = frete;
}


Carrinho.prototype.calculaTotais = calculaTotais;	
function calculaTotais(){
	var total_produtos = 0;
	var total_frete = '0';

	// Calculando
	for(i=0;i<produtos.length;i++){
		preco = precos[i];
		quantidade = quantidades[i];
		if(preco != ''){
			valor_total = (preco * quantidade);
			total_produtos += valor_total;
		}
	}
	total_frete = eval(frete);
	total_totalizado = (total_produtos + total_frete);
	
	// Inserindo na Tela
	document.getElementById('total_produtos').innerHTML = total_produtos.toFixed(2);
	document.getElementById('total_frete').innerHTML = total_frete.toFixed(2);
	document.getElementById('total_geral').innerHTML = total_totalizado.toFixed(2);
}













