//----------------------------------------------------------------------
// 
// 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(',');
		
		filed.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";
  				}
  				
  				
  				//--------------------------------------------------------------
  				//
  				// Exclusivo para carrinho sem cálculo de frete.
  				//
  				//--------------------------------------------------------------
  				newTotal();
  				
  				// Limpa os valores antigos, caso exista.
  				//resetValueCart();
  				
		    },
		    
		    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){
	
	// INICIA O AJAX
	
	// 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";
  				
		      	
		    },
		    
		    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.";
				
				//alert(response);
					
				// 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('formaPagamento');
	
	// 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 != ""){
					
			// Verifica se ja existe o campo input.
	   		if($(fretes[i])){
	   			add_div.innerHTML = "";
	   		}
			
			// Cria a tag span. Usada para adicionar o nome da forma de envio
			var span = document.createElement('span');
			
			span.setAttribute('id',fretes[i]+'_name');
			
			//------------------------------------------------------------------
			// POG - O IE não aceita DOM usando
			// a forma correta de se criar.
			//------------------------------------------------------------------
			
			// Verifico qual é o navegador utilizado.
			// Caso seja o IE...
			if(navigator.appName == "Microsoft Internet Explorer"){
				// ...cria a tag input para o IE.
				var input = document.createElement('<input type="radio" id="'+fretes[i]+'" name="fretes" value="'+fretes[i]+'" onClick="valueCart('+valor+','+totalCart+')"/>');
				
			} else{
				
				// Cria a tag input para os outros navegadores.
				var input = document.createElement('input');  
		  			  		
		  		input.setAttribute('type', 'radio');  
		   		input.setAttribute('name', 'fretes');  
		   		input.setAttribute('id', fretes[i]);  
		   		input.setAttribute('value', fretes[i]);
		   		input.setAttribute('onClick', "valueCart("+valor+","+totalCart+")");			
			}
	   		
	   		// Adiciona o input.
	   		add_div.appendChild(input);
	   		
	   		// Adiciona o input.
	   		//add_div.appendChild(inputIE);
	   		
	   		// Adiciona o span
	   		add_div.appendChild(span);
	   		
	   		// Nome do serviço.
	   		var name = '"'+fretes[i]+'"';
	   		// Imagem do frete.
	   		var img = "<img src='/data/shop/dieHard/img/"+fretes[i]+".jpg' title='"+fretes[i]+"' alt='"+fretes[i]+"' border='0' style='border:1px solid #000000'>";
	   		
	   		// Adiciona o conteúdo do span.
	   		$(fretes[i]+'_name').innerHTML = "<label for="+fretes[i]+">"+img+" - R$ "+valor.split('.').join(',')+"</label>" +
	   										 "<a href='#' style='text-decoration:none; color:#FFFFFF;' onclick='freightPopup("+ name +"); return false;'> (Prazo de entrega?) </a>| ";  		
   		
		}
	}
	
}

/**
 * Calcula e adiciona o valor total da compra de acordo com a forma de envio escolhida.
 */
function valueCart(valor, totalCart){
	
	// Calcula o valor total da compra.
	valorTotal = parseFloat(totalCart) + parseFloat(valor);
	
	// Mostra o valor total.
	$('linhaTotalCompra').style.display = "";
	
	// Mostra o linque "Finalizar Compra".
	$('finalizaCompra').style.display = "";
	
	// 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(',');
	}
		
	// Inclui o valor total do carrinho.
	$('totalCompra').innerHTML = totalV;
	
}

/**
 * Limpa os valores do carrinho, caso seja alterada a quantidade do produto.
 */
 function  resetValueCart(){
 	
 	// Verifica se o CEP não está em branco..
 	if($('cepValue').value != ""){
 		
 		// Esconde o valor total.
 		$('totalCarrinho').style.display = "none";
 		// Limpa o valor da compra.
 		$('totalCompra').innerHTML = "";
 		// Esconde o campo referente ao total da compra.
 		$('linhaTotalCompra').style.display = "none";
 		// Esconde o 'finalizar'
 		$('finalizaCompra').style.display = 'none';
 		
 	}
 	
 }
 
/**
 * Direciona o carrinho para o fechamento da compra.
 */
function check() {
	if($('linhaTotalCompra').style.display !== 'none') {
		document.freteEscolhido.submit()
	} else {
		alert('Digite seu cep e selecione uma forma de envio disponível');
	}
}

/**
 * Calcula o total do carrinho quando o mesmo NÃO utiliza FRETE. 
 *
 */
function newTotal() {
	
	// 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() {
				$('totalCompra').innerHTML = "Calculando...";
			},
			
			onSuccess: function(transport){
				
				var response = transport.responseText || "Não foi possível calcular o frete.";
				
				//alert(response);
				
				valorTotal = parseFloat(response);
				
				// 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(',');
				}
					
				// Inclui o valor total do carrinho.
				$('totalCompra').innerHTML = totalV;
				
					
				
		    },
		    
		    onFailure: function(){ 
		    		alert('Não foi possível realizar a requisição.') 
		    	}
		});
	
	
}

