//----------------------------------------------------------------------
// 
// Funções referentes ao carrinho da loja.
//  
//----------------------------------------------------------------------

/**
 * Verifica o tipo unitário do produto permitindo casas após a virgula e 
 * atualiza o valor junto com a quantidade.
 */
function verifyUnitPrecision(qtd,field,idField,idProduct) {
	
	// Caso não seja permitido casas após a virgula...
	if(qtd == 0){
		
		// ...troca o ponto por virgula
		valor = field.value.split('.').join(',');
		
		// ...separa os valores
		valor = valor.split(",");
		
		// ...pega apenas o valor antes da virgula.
		field.value = valor[0];
	
	} else if(qtd >0){
		
		// ...troca o ponto por virgula
		valor = field.value.split('.').join(',');
		
		field.value = valor;
		
	}
	
	// INICIA O AJAX
	
	// Endereço da página php.
	url = '/entryPoint.php?plugin=shop&package=web&form=ajax&ajaxAction=addShopCart';
	
	// Quantidade adicionada.
	qtd = field.value;
	
	// idPropert do carrinho.
	idPropert = idProduct;
	
	// Parametros do tipo GET
	paramentros = 'qtd='+qtd+'&id='+idPropert;
	
	new Ajax.Request(url ,
		{
			method:'get',
			parameters: paramentros,
			
			onCreate: function() {
				
				$('aguarde').style.display = "";
				
			},
			
			onSuccess: function(transport){
							
				$('aguarde').style.display = "none";
  
 				var response = transport.responseText || "não foi retornado valor";
  				
  				// Troca o (,) por (.).
  				valorUnit = $('unit_'+idProduct).value.split(",").join(".");
  				
  				// Divide em partes o valor unitario.
  				partValorUnit = valorUnit.split(".");
  				
  				// Verifica quantas casas monetárias tem o valor unitário.
  				if(partValorUnit.length >= 3){
  					// ... tendo mais de 3 casas, remonta o valor...
  					valorUnit = partValorUnit[0]+partValorUnit[1]+'.'+partValorUnit[2];
  				} else {
  					// ... caso contrario, mantém a formação anterior.
  					valorUnit = $('unit_'+idProduct).value.split(",").join(".");
  				}
  				
  				
  				// Multiplica o valor unitário pela quantidae.
  				valorTotal = valorUnit * qtd;
  				
  				// Formata para valor monetário		      				
  				valorFormatado = roundNumber(valorTotal);
  				
  				// Passa o valor total do campo.
  				$('total_'+idProduct).value = valorFormatado.replace(".",",");
  				
  				// Se a quantidado for 0, remove o item do carrinho.
  				if(qtd <= 0){
  					
  					$('name_'+idProduct).style.display = "none";
  				}
  				
  				// Limpa os valores antigos, caso exista.
  				resetValueCart();
  				
  				totalShopCart();
		      
		    },
		    
		    onFailure: function(){ 
		    		alert('Não foi possível realizar a requisição.') 
		    	}
		});
	
}

/**
 * Restringe os tipos de caracteres do campo quantidade.
 */
function isNumeric(campo){  
	
	// Valores aceitos.
	var digits="0123456789.,";  
	
	var campo_temp;   
	
	for (var i=0;i<campo.value.length;i++){  
		
		campo_temp=campo.value.substring(i,i+1);   
		
		if (digits.indexOf(campo_temp)==-1){  
			
			campo.value = campo.value.substring(0,i);
			  
		}  
	}  
}  

/**
 * Remove o produto do carrinho.
 */
function remove(idProduct){
	
	// Endereço da página php.
	url = '/entryPoint.php?plugin=shop&package=web&form=ajax&ajaxAction=addShopCart';
	
	// idPropert do carrinho.
	idPropert = idProduct;
	
	// Parametros do tipo GET
	paramentros = 'qtd='+0+'&id='+idPropert;
	
	new Ajax.Request(url ,
		{
			method:'get',
			parameters: paramentros,
			
			onCreate: function() {
				
				$('aguarde').style.display = "";
				
			},
			
			onSuccess: function(transport){
		      	
		      	$('aguarde').style.display = "none";
		      	
 				//var response = transport.responseText || "não foi retornado valor";
  
  				// Troca o (,) por (.).
  				valorUnit = $('unit_'+idProduct).value.split(",").join(".");
  
  				// Multiplica o valor unitário pela quantidade.
  				valorTotal = valorUnit * 0;
  				
  				// Formata para valor monetário		      				
  				valorFormatado = roundNumber(valorTotal);
  				
  				// Remove o item do carrinho.
  				$('name_'+idProduct).style.display = "none";
  				
  				totalShopCart();
  				
  				resetValueCart();
		      	
		    },
		    
		    onFailure: function(){ 
		    		alert('Não foi possível realizar a requisição.') 
		    	}
		});
	
}


/**
 * Função de terceiros usada para conversão de valor monetário.
 * @param num Valor.
 */
function roundNumber(num) {

	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+'.'+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);

}

/**
 * Busca os valores de frete e o total do carrinho.
 * 
 */
function freight(){
	
	// Endereço da página php.
	url = '/entryPoint.php?plugin=shop&package=web&form=ajax&ajaxAction=calcShopCart';
	
	// Valor do campo.
	cep = $('cepValue').value.split("-").join("");
	
	// Parametros.
	parametros = "cep="+cep;
	
	// Requisição Ajax pelo Prototype.
	new Ajax.Request(url , {
			method:'get',
			parameters: parametros,
			
			onCreate: function() {
				$('aguarde').style.display = "";
			},
			
			onSuccess: function(transport){
				
				$('aguarde').style.display = "none";
				
				var response = transport.responseText || "Não foi possível calcular o frete.";
				
				// Verifica se tem cep digitado.
  				if($('cepValue').value != ""){
  					
  					$('totalCarrinho').style.display = "";
  					
  					// Inclui as tags no campo.
		      		addTag(transport);
  				}
		    },
		    
		    onFailure: function(){ 
		    		alert('Não foi possível realizar a requisição.') 
		    	}
		});
	
}

/**
 * Cria dinâmicamente as formas de envio.
 */
function addTag(transport){
	
	// Recupera o valor XML.
	var xml = transport.responseXML;
	
	var totalNodes = xml.getElementsByTagName('result')[0].childNodes.length;
	
	var fretes = new Array();
	
	var totalCart;
		
	for(var i=0;i<totalNodes;i++) {
		fretes[i] = xml.getElementsByTagName('result')[0].childNodes[i].tagName;	
	}
	
	totalCart = xml.getElementsByTagName('total')[0].firstChild.data;
	
	// referencia de onde serão incluidos as formas de envio.
	var add_div = document.getElementById('selectFreightName');
	
	var options = null;
	
	// Loop que cria as tags input.
	for(var i = 0; i < fretes.length-1; i++) {
		
		// recupra o alor do xml.
		valor = xml.getElementsByTagName(fretes[i])[0].firstChild.data;
		
		// Verifica se existe valor.
		if(valor != 0 && valor != "" || valor == '0.00'){
					
			// Verifica se ja existe o campo input.
	   		if($(fretes[i])){
	   			add_div.innerHTML = "";
	   		}
			
			options += '<option value="'+fretes[i]+'|'+valor+'">'+fretes[i]+'</option>';
		}
		
		add_div.innerHTML = '<select class="campoSelecionarResumo" size="1" onChange="valueCart(this.value, '+totalCart+')"> ' +
								'<option>Selecione</option>' +
								options +
							'</select>';
							
		$('selectFreight').style.display = "";
	}
	
}

/**
 * Calcula e adiciona o valor total da compra de acordo com a forma de envio escolhida.
 */
function valueCart(value, totalCart){
	
	// Separa o nome do valor.
	var v = value.split('|');
	
	var valor = v[1];
	var nome = v[0];
	
	if(valor == "" || valor == null){
		$('selectFreightValue').style.display = "none";
		$('totalCartView').style.display = "none";
		return;
	}
	
	// Calcula o valor total da compra.
	valorTotal = parseFloat(totalCart) + parseFloat(valor);
	
	// Cria um array com as casas monetarias do valor.
	valorT = roundNumber(valorTotal).split('.');
	
	// Verifica quantos elementos tem o array.
	if(valorT.length >= 3){
		// remonta o total para o formato monetário nacional.
		totalV = valorT[0]+"."+valorT[1]+","+valorT[2];
	} else {
		// Substitui o ponto por virgula para que fique no formato
		// monetário nacional.
		totalV = roundNumber(valorTotal).split('.').join(',');
	}
	
	// Mostra o valor do frete selecionado.
	$('selectFreightViewValue').innerHTML = valor.split('.').join(',');
	$('selectFreightValue').style.display = "";
	
	// Inclui o valor total do carrinho.
	$('totalCartView').style.display = "";
	$('totalCart').innerHTML = totalV;
	
	// Inclui o frete escolhido no form.
	$('selectedFreight').innerHTML = "<input type='hidden' value='"+nome+"' name='freight' />";
}

/**
 * Limpa os valores do carrinho, caso seja alterada a quantidade do produto.
 */
 function  resetValueCart(){
 	
 	$('selectFreight').style.display = "none";
 	$('totalCartView').style.display = "none";
 	$('selectFreightValue').style.display = "none";
 }
 
/**
 * Direciona o carrinho para o fechamento da compra.
 */
function check() {
	if($('totalCartView').style.display !== 'none') {
		document.selectedFreight.submit();
	} else {
		alert('Digite seu cep e selecione uma forma de envio disponível');
	}
}


/**
 * Verifica o valor total do carrinho sem o frete.
 */
function totalShopCart() {
	
	// Endereço da página php.
	url = '/entryPoint.php?plugin=shop&package=web&form=ajax&ajaxAction=cartWF';
	
	// Requisição Ajax pelo Prototype.
	new Ajax.Request(url , {
			method:'get',
			
			onCreate: function() {
				$('totalCarrinho').innerHTML = "Aguarde...";
			},
			
			onSuccess: function(transport){
				
				var response = transport.responseText || "Não foi possível calcular o frete.";
				
				
				// Verifica se tem cep digitado.
  				if(response){
  					$('totalCarrinho').innerHTML = roundNumber(response).split('.').join(',');;
  				}
		    },
		    
		    onFailure: function(){ 
		    		alert('Não foi possível realizar a requisição.') 
		    	}
		});
}

/**
 * Limpa o carrinho.
 */
function cancelCart() {
	
	var c = confirm('Deseja abandonar a compra e excluir todos os ítens do seu carrinho ?');
	
	if(c) {
		document.location.href = '/entryPoint.php?plugin=shop&package=web&acao=cleanCart';
	}
}
