function mais( idProduto, evento ){
	var qtd_anterior = $("#quantidade"+idProduto).val();
	var qtd = Number($("#quantidade"+idProduto).val());
	if (evento == "onclick") {
		qtd++;
	}
	
	var hdnEstoque = Number($("#hdnEstoque"+idProduto).val());
	
	if (qtd <= hdnEstoque){
		$("#quantidade"+idProduto).val( qtd );
	}else{
		qtd = hdnEstoque;
		$("#quantidade"+idProduto).val( hdnEstoque );
		$("#estoque"+idProduto).html( 0 );
		alert("A quantidade de itens selecionados é maior que a quantidade disponível!");
	}
	if (qtd != "" || qtd == 0){
		// Atualiza qtd em estoque.
		$("#estoque"+idProduto).html( $("#hdnEstoque"+idProduto).val() - qtd );
		var url = "./CarrinhoComprasServlet";
	    $.post(url,{acao:"mais",idProduto:idProduto,quantidade:qtd},
	        function( retorno ){
	    		$(document).ready(function(){
	    			if ( retorno != "OK" ){
	    				if ( retorno != "ERRO" ){
	    					$("#ladoCentral").html( retorno );
	    				}else{
		    				alert( "Atenção!\n\nErro ao incrementar quantidade do produto." );
	    				}
	    			}else{
	    				return qtd;
	    			}
	    		});
	        }
	    );
	}
}
	
/*
*	Atualiza a quantidade do produto, que já foi escolhido anteriormente<br>
*	quando for dado refresh na tela.
*/
function carregaQtd( idCampo ){
	if (idCampo!=""){
	    var url = "./CarrinhoComprasServlet";
	    $.post(url,{acao:"getQtd",idProduto:idCampo},
	        function( retorno ){
	        	if (retorno != "ERRO"){
	        		$("#quantidade"+idCampo).val( retorno );
		        	var estoque = $("#hdnEstoque"+idCampo).val();
		        	estoque = estoque - retorno;
		        	$("#estoque"+idCampo).html(estoque);
	    			return retorno;
	        	}else{
		        	return "";
	        	}
	        }
	    );
	}
}

function menos( idProduto ){
	if (idProduto!=""){
		var qtd = $("#quantidade"+idProduto).val();
		if (qtd!="" && qtd!="0"){
			qtd--;
			$("#quantidade"+idProduto).val( qtd );
			// Atualiza qtd em estoque.
			$("#estoque"+idProduto).html( $("#hdnEstoque"+idProduto).val() - qtd );
			var url = "./CarrinhoComprasServlet";
		    $.post(url,{acao:"mais",idProduto:idProduto,quantidade:qtd},
		        function( retorno ){
		            if ( retorno != "OK" ){
		            	alert( "Atenção!\n\nErro ao decrementar quantidade do produto.\n\n"+retorno );
		            }else{
			            return qtd;
		            }
		        }
		    );
			if (qtd=="0"){
				$("#quantidade"+idProduto).val( "" );
			}
		}
	}
}

/**
 * Função responsável por incrementar a quantidade do produto<BR>
 * É necessário que existam no formulário uma div ("precoTotal"+idProduto),<BR>
 * uma div ("#valorVenda"+idProduto) e um input ("#quantidade"+idProduto),<BR>
 * para que os cálculos funcionem.<BR>Esta função utiliza a função "mais()"
 *  
 * @author gilberto.martins
 * 
 * @param idProduto --> id do produto que se está incrementando a quantidade
 * @param evento --> String, que informa se foi clicado sobre a gif "+".
 * @return a quantidade atualizada do produto.
 */
function maisCarrinho( idProduto, evento ){
	var valAntigo = $("#precoTotal"+idProduto).html( valorVenda );
	var valAntigo = real2Dolar( valAntigo );
	// Chama função para inserir/incrementar produto na sessão.
	var qtdNova = mais( idProduto, evento );
	var qtd = $("#quantidade"+idProduto).val();
	var valorVenda = $("#valorVenda"+idProduto).html();
	valorVenda = real2Dolar( valorVenda );
	//
	precoTotal = qtd*valorVenda;
	var valNovo = precoTotal;
	precoTotal = dolar2Real( precoTotal );
	$("#precoTotal"+idProduto).html( precoTotal );
	var totalPedido = $("#totalGeralPedido").html();
	totalPedido = totalPedido.replace(/[^0-9,]/g, "");
	totalPedido = real2Dolar( totalPedido );
	var totalGeral = ( parseFloat(totalPedido) - parseFloat(valAntigo) ) + parseFloat(valNovo);
	totalGeral = dolar2Real( totalGeral );
	$("#totalGeralPedido").html( totalGeral );
	// Retorna a quantidade de itens do produto.
	return qtd;
}

/**
 * Função responsável por decrementar a qtd do produto ou remover o produto do carrinho, caso qtd = 0<BR>
 * É necessário que existam no formulário uma div ("precoTotal"+idProduto),<BR>
 * uma div ("#valorVenda"+idProduto) e um input ("#quantidade"+idProduto),<BR>
 * para que os cálculos funcionem.<BR>Esta função utiliza a função "menos()"
 *  
 * @author gilberto.martins
 * 
 * @param idProduto --> id do produto que se está incrementando a quantidade
 * @return a quantidade atualizada do produto.
 */
function menosCarrinho( idProduto ){
	var valAntigo = $("#precoTotal"+idProduto).html( );
	var valAntigo = real2Dolar( valAntigo );
	// Chama funo para inserir/incrementar produto na sesso.
	menos( idProduto );
	var qtd = $("#quantidade"+idProduto).val();
	var valorVenda = $("#valorVenda"+idProduto).html();
	valorVenda = real2Dolar( valorVenda );
	//
	precoTotal = qtd*valorVenda;
	var valNovo = precoTotal;
	precoTotal = dolar2Real( precoTotal );
	$("#precoTotal"+idProduto).html( precoTotal );
	var totalPedido = $("#totalGeralPedido").html();
	totalPedido = totalPedido.replace(/[^0-9,]/g, "");
	totalPedido = real2Dolar( totalPedido );
	var totalGeral = ( parseFloat(totalPedido) - parseFloat(valAntigo) ) + parseFloat(valNovo);
	totalGeral = dolar2Real( totalGeral );
	$("#totalGeralPedido").html( totalGeral );
	if (qtd == "" || qtd == "0"){
		var linha = document.getElementById("linha"+idProduto);
		linha.parentNode.removeChild(linha);
	}
	// Retorna a quantidade de itens do produto.
	return qtd;
}

/**
 * Função responsável por remover o produto do carrinho<BR>
 *  
 * @author gilberto.martins
 * 
 * @param idProduto --> id do produto que se deseja remover
 */
function removerProduto( idProduto ){
	var confirma = confirm("Atenção!\n\nVocê deseja realmente excluir este item da sua Lista de Compras?");
	if (confirma==true){
		var url = "./CarrinhoComprasServlet";
	    $.post(url,{acao:"removerProduto",idProduto:idProduto},
	        function( retorno ){
	            if ( retorno == "OK" ){
	            	var valAntigo = $("#precoTotal"+idProduto).html();
	            	var valAntigo = real2Dolar( valAntigo );
	            	//
	            	var totalPedido = $("#totalGeralPedido").html();
	            	totalPedido = totalPedido.replace(/[^0-9,]/g, "");
	            	totalPedido = real2Dolar( totalPedido );
	            	var totalGeral = parseFloat(totalPedido) - parseFloat(valAntigo);
	            	totalGeral = dolar2Real( totalGeral );
	            	$("#totalGeralPedido").html( totalGeral );
	            	var linha = document.getElementById("linha"+idProduto);
					if (linha!=null)
						linha.parentNode.removeChild(linha);
	            }else{
		            alert("Atenção!\n\nErro ao remover produto!");
	            }
	        }
	    );
	}else{
		alert("Operação cancelada pelo usuário");
	}
}

/**
 * Esconde a div, cujo id é passado por parâmetro.
 * 
 */
function fecharJanela(nomeDiv){
	$("#"+nomeDiv).hide();
}

function fecharJanelaDetalhe(nomeDiv) {
	$("#detalheProduto").fadeOut(500);
	$("#"+nomeDiv).fadeOut(500);
}

/**
 * Função utilizada para apresentar ou a combo de transportadoras da PAUTA ou<br>
 * transportadoras do PARCEIRO
 *  
 * @param tipo
 * @return
 */
function showTrans( tipo ){
	if (tipo==0){
		document.getElementById("cmbTransPauta").options.selectedIndex = 0;
		$("#retirarBalcao").html("");
		$("#divTransPauta").hide();
		$("#divTransParceiro").show();
	}else{
		document.getElementById("cmbTransParceiro").options.selectedIndex = 0;
		$("#divTransParceiro").hide();
		$("#divTransPauta").show();
	}
}

// *********************************************
// SOLU��O ELEGANTE
// *********************************************
String.prototype.replaceAll = function(de, para){
    var str = this;
    var pos = str.indexOf(de);
    while (pos > -1){
		str = str.replace(de, para);
		pos = str.indexOf(de);
	}
    return (str);
};

function real2Dolar( _valor ){
	var valor = ""+_valor;
	if (valor != "" && valor != NaN){
		valor = valor.replaceAll(".","");
		valor = valor.replaceAll( ",","." );
		valor = parseFloat( valor );
		return valor;
	}else{
		return 0;
	}
}

function dolar2Real( num ){
	var valor = 0;
	if(num<0) {
		num = Math.abs(num);
		valor = 1;
	}
	if(isNaN(num)) num = "0";
	cents = Math.floor((num*100+0.5)%100);
	num = Math.floor((num*100+0.5)/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));
	ret = num + ',' + cents;
	if (valor == 1) ret = ' - ' + ret;
	return ret;
}
//-----------------------------------------------------------------------------------
function showLabel(event, obj, idLabel) {
	var posX=0;
	var posY=0;
	if(window.ActiveXObject) { //Internet Explorer
		posX = event.x;
		posY = event.y;
	} else if(top.window.NS) { //Netscape e FireFox
		posX = obj.x+obj.width;
		posY = obj.y+obj.height;
	} else if(top.window.OP) { //Opera
		posX = event.x;
		posY = event.y;
	} else {
		posX = obj.x;
		posY = obj.y;
	}
	objLabel = document.getElementById(idLabel);
	objLabel.style.left = posX+5;
	objLabel.style.top = posY+5;
	objLabel.style.display = "block";
}

function hideLabel(idLabel) {
	objLabel = document.getElementById(idLabel);
	objLabel.style.display = "none";
}

function colore( obj, cor ){
	for (i=0; i< obj.cells.length; i++){
		obj.cells[i].style.backgroundColor = cor;
	}
}

function PopupCentralizado( pagina, nome, width, height, parametros ) {
	largura = screen.width;
	altura = screen.height;
	posX = (largura - width) / 2;
	posY = (altura - height) / 2;
	var janela = null;

	//privacidade alta
	if(pagina.toUpperCase().indexOf("jsessionid") == - 1){
		if(pagina.toUpperCase().indexOf("?") >= 0){
			pagina = pagina.substring(0, pagina.toUpperCase().indexOf("?")) + pagina.substring(pagina.toUpperCase().indexOf("?"));
		} else {
			pagina = pagina;
		}
	}
	//privacidade alta

	if (parametros=='') {
		janela = window.open(pagina, nome,'left='+posX+',top='+posY+',height='+height+',width='+width);
	} else {
		janela = window.open(pagina, nome,parametros+',left='+posX+',top='+posY+',height='+height+',width='+width);
	}
	janela.focus();
	return false;
}

/**
 * Cria um Object Flash, para ser inserido no HTML.
 * 
 * @param id
 * @param src
 * @param width
 * @param height
 * @param wmode
 * @param menu
 * @param flashVars
 * @param title
 * @param flashVersion
 * @return String com a tag Object montada.
 */
function insertFlash(id,src,width,height,wmode,menu,flashVars,title,flashVersion) {
	var pidObject = (id==null)? "" : 'id="'+id+'"';
	var pidEmbed = (id==null)? "" : 'name="'+id+'"';
	var pwmode = (wmode==null)? "" : wmode;
	var pmenu = (menu==null)? true : false;
	var pflashVars = (flashVars==null)? "" : flashVars;
	var ptitle = (title==null)? "" : title;
	var pflashVersion = (flashVersion==null)? "7,0,19,0" : flashVersion;
	var obj = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+pflashVersion+'" width="'+width+'" height="'+height+'"  title="'+ptitle+'" pidObject >';
	obj += '<param name="movie" value="'+src+'">';
	obj += '<param name="quality" value="high">';
	obj += '<param name="flashVars" value="'+pflashVars+'">';
	obj += '<param name="wmode" value="'+pwmode+'">';
	obj += '<param name="menu" value="'+pmenu+'">';
	obj += '<embed src="'+src+'" width="'+width+'" height="'+height+'" quality="high" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" flashvars="'+pflashVars+'" wmode="'+pwmode+'" pidEmbed menu="'+pmenu+'"></embed>';
	obj += '</object>';

	return obj;
}

/**
 * Insere os html´s responsáveis pelo tutorial sobre o Faturamento Direto na div 'ladoCentral',<br>
 * a partir do número que identifica o arquivo html.
 * @param numero
 * @return
 */
function proximoSlid( numero ){
	$("#demoFaturamentoDireto").load("jsp/servicos/demoFaturamentoDireto/conversa"+numero+".htm?_="+Math.random());
}

/**
 * Insere na url um número aleatório, para forçar atualização dos dados no IE.
 * @return
 */
function aleatorio(){
	return "_="+Math.random();
}

function escondeBarra(){
	$(document).ready(function(){
		$("#divCarregando").hide();
	});
}

function trim(str){
	str=str.replace(/\s+/g," ");
	str=str.replace(/^ /,"");
	str=str.replace(/ $/,"");
	return str;
}

/**
 * Função que emite uma mensagem em um table dentro de um div. <div id="divMensagem" style="display:none">
 * @param {Object} msg
 * @param {Object} div - id da div que receberá a mensagem
 */
function setMsgError(msg, div){
	var div = document.getElementById( div );
	div.style.display = "block";
	div.innerHTML = msg;
	setTimeout(function(){div.style.display = 'none';},6000);
}

/**
 * Função que emite uma mensagem em um table dentro de um div. <div id="divMensagem" style="display:none">
 * @param {Object} msg
 * @param {Object} div - id da div que receberá a mensagem
 */
function showMsg(msg, div, tempo){
	tempo = tempo != "" ? tempo : 6000;
	var div = document.getElementById( div );
	div.style.display = "block";
	div.innerHTML = msg;
	setTimeout(function(){div.style.display = 'none';},tempo);
}

/**
 * Função que gera um objeto javascript, a partir dos campos de um form.<br>
 * É utilizado o atributo <span>nome</span> de cada input
 */
$.fn.serializeObject = function(){
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};