function Produto()
{
	this.posicao_atual = 0;
	this.preloaded = 0;
	
	this.id_popup = null;
	this.popup_indique = null;
	this.popup_produto = null;
}
/**
 * imagemPreload
 * 
 * realiza o preload das imagens do produto
 * relacionado ao template (produto-miolo.tpl)
 */
Produto.prototype.imagemPreload = function()
{
	var img_loaded = new Array();
	for(var x=0;x<array_imagens_box.length;x++)
	{
		img_loaded[x] = new Image();
		img_loaded[x].src = array_imagens_box[x];
	}
}

Produto.prototype.adicionar_dois = function(idProdutoRecomendado)
{
	document.getElementById('produto_recomendado').value = idProdutoRecomendado;
	document.form_produto.submit();
}

/**
 * trocaImagem
 * 
 * realiza a troca das imagens do produto
 * relacionado ao template (produto-miolo.tpl)
 */
Produto.prototype.trocaImagem = function(direcao)
{
	if(!this.preloaded) this.imagemPreload();
	
	var seta_dir_on = urlimg + 'fotos-dir.gif';
	var seta_dir_off = urlimg + 'fotos-dir-off.gif';
	var seta_esq_on = urlimg + 'fotos-esq.gif';
	var seta_esq_off = urlimg + 'fotos-esq-off.gif';
	
	if(direcao == '+')
	{
		this.posicao_atual++;
		if(this.posicao_atual < array_imagens_box.length)
		{
			document.getElementById('seta_esq_produto_foto').src = seta_esq_on;
			document.getElementById('seta_dir_produto_foto').src = seta_dir_on;
			document.getElementById('produto_foto').src = array_imagens_box[this.posicao_atual];
		}
		else this.posicao_atual--;
	}
	else if(direcao == '-')
	{
		this.posicao_atual--;
		if(this.posicao_atual > -1)
		{
			document.getElementById('seta_esq_produto_foto').src = seta_esq_on;
			document.getElementById('seta_dir_produto_foto').src = seta_dir_on;
			document.getElementById('produto_foto').src = array_imagens_box[this.posicao_atual];
		}
		else this.posicao_atual++;
	}
	
	if(this.posicao_atual == array_imagens_box.length - 1)
		document.getElementById('seta_dir_produto_foto').src = seta_dir_off;
	else if(this.posicao_atual == 0)
		document.getElementById('seta_esq_produto_foto').src = seta_esq_off;
}

Produto.prototype.popup_cd = function(url_cd)
{
	sizey = '190';
	sizex = '268';
	dateobject = new Date();
	jan = window.open(url_cd,"jan"+dateobject.getTime(),'width='+sizex+',height='+sizey+',scrollbars=yes,resizable=no,location=no,directories=no,status=no,menubar=no,top=150,left=150');
}

Produto.prototype.popup_impressao = function(url_impressao)
{
	sizey = '600';
	sizex = '800';
	jan = window.open(url_impressao,"janImpressao",'width='+sizex+',height='+sizey+',scrollbars=yes,resizable=no,location=no,directories=no,status=no,menubar=yes,top=150,left=150');
}

Produto.prototype.imprime_popup = function()
{	
	window.print();
}

Produto.prototype.popup_agendamento = function(url_destino)
{
	sizey = '600';
	sizex = '700';
	jan = window.open(url_destino,"janAgendamento",'width='+sizex+',height='+sizey+',scrollbars=yes,resizable=no,location=no,directories=no,status=no,menubar=yes,top=150,left=150');
}

Produto.prototype.fecha_popup = function()
{	
	window.close();
}

Produto.prototype.salva_popup = function()
{	
	alert('Falta propriedade');
}

/**
 * Layer flutuante geral
 */
Produto.prototype.appear = function()
{
	if(!this.popup_indique)
	{
		this.popup_indique = document.getElementById('layerGeral_popup').innerHTML;
	}	
	else
	{
		document.getElementById('layerGeral_popup').innerHTML = this.popup_indique;
	}	
	
	document.getElementById('layerGeral_popup').style.display = '';
	document.getElementById('layerGeral_popup').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerGeral_popup').style.width = document.body.offsetWidth + 'px';
	
	document.getElementById('layerOpaco_popup').style.display = '';
	document.getElementById('layerOpaco_popup').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerOpaco_popup').style.width = document.body.offsetWidth + 'px';
}

/**
 * Layer flutuante geral
 */
Produto.prototype.visualizar = function(urlParam)
{
	LinkAjax.send(urlParam, 'layerAux_resultado', 'layerAux_carregando');
	
	document.getElementById('layerAux_popup').style.display = '';
	document.getElementById('layerAux_popup').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerAux_popup').style.width = document.body.offsetWidth + 'px';
	
	document.getElementById('layerOpaco_popup').style.display = '';
	document.getElementById('layerOpaco_popup').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerOpaco_popup').style.width = document.body.offsetWidth + 'px';
}

/**
 * Layer flutuante opaco
 */
Produto.prototype.disappear = function()
{
	document.getElementById('layerOpaco_popup').style.display = 'none';
	document.getElementById('layerGeral_popup').style.display = 'none';
	document.getElementById('layerAux_popup').style.display = 'none';	
}

/**
 * Layer flutuante geral
 */
Produto.prototype.popup = function(id_popup)
{
	window.scrollTo(0,0);
	if(id_popup)
	{
		if(this.id_popup)
		{
			document.getElementById(this.id_popup).style.display = 'none';
		}
		document.getElementById(id_popup).style.display = '';
		this.id_popup = id_popup;
	}
	document.getElementById('layerGeral_alert').style.display = '';
	document.getElementById('layerGeral_alert').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerGeral_alert').style.width = document.body.offsetWidth + 'px';
	
	document.getElementById('layerOpaco_alert').style.display = '';
	document.getElementById('layerOpaco_alert').style.height = document.body.offsetHeight + 'px';
	document.getElementById('layerOpaco_alert').style.width = document.body.offsetWidth + 'px';
}

/**
 * Layer flutuante opaco
 */
Produto.prototype.popup_close = function()
{
	document.getElementById('layerOpaco_alert').style.display = 'none';
	document.getElementById('layerGeral_alert').style.display = 'none';
}

/**
 * Cria os campos de forma dinâmica
 */
Produto.prototype.adicionarCampoEmail = function(qtde)
{
    var varHtml = '';
    for(var x=0;x<qtde;x++)
    {
        varHtml+= '<label>E-mail '+(x+1)+' ';
        if(x == 0)
        {
            varHtml+= '*';
        }

        valor = '';
        if(document.getElementById('campoEmail'+(x+1)))
        valor = document.getElementById('campoEmail'+(x+1)).value;

        varHtml+= ':</label> <input id="campoEmail'+(x+1)+'" name="emailDestinatario[]" value="'+valor+'" type="text" class="inputtext" />';

        if(x < (qtde-1))
        {
            varHtml+= '<br /><br />';
        }
    }
    document.getElementById('idCampoEmail').innerHTML = varHtml;
}

/* Início - Funções para simulação do frete e prazo de entrega - Detalhe do produto (by alince) */

    /**
     * Layer flutuante geral
     */
    Produto.prototype.popupSimulacaoFrete_abrir = function()
    {
        window.scrollTo(0,0);

        $('simulacao-frete').style.display = 'block';
        this.id_popup = 'simulacao-frete';

        $('layerGeral_simularFrete').style.display = 'block';
        $('layerGeral_simularFrete').style.height = document.body.offsetHeight + 'px';
        $('layerGeral_simularFrete').style.width = document.body.offsetWidth + 'px';

        $('layerOpaco_simularFrete').style.display = '';
        $('layerOpaco_simularFrete').style.height = document.body.offsetHeight + 'px';
        $('layerOpaco_simularFrete').style.width = document.body.offsetWidth + 'px';
        $('simulacaoCep1').focus();
    }

    /**
     * Fecha o layer de simulação de frete
     *
     * @author alince
     */
    Produto.prototype.popupSimulacaoFrete_fechar = function()
    {
        $('layerOpaco_simularFrete').style.display = 'none';
        $('layerGeral_simularFrete').style.display = 'none';
        $('resultado-simulacao-frete').style.display = 'block';
        $('simulacaoCep1').style.background = '#FFF';
        $('opcoes-entrega').style.display = 'none';
        $('com-resultado').style.display = 'none';
        $('frase-resultado').style.display = 'none';
        $('simulacaoCep1').value = '';
        $('simulacaoCep2').value = '';
    }

    /**
     * Calcula o preço do produto considerando a quantidade informada no campo de quantidade
     *
     * @author alince
     * @param precoProduto preço do produto
     * @param quantidade quantidade do produto
     * @return float
     */
    Produto.prototype.calcularTotalSimulacaoFrete = function(precoProduto, quantidade)
    {
        //Transforma a vírgula em ponto
        precoProduto = precoProduto.replace(',', '.');
        
        //Converte o preço de tring para float
        precoProduto = parseFloat(precoProduto);

        //Retorna o resulado do preço do produto pela quantidade dele
        return (precoProduto * quantidade);
    }

    /**
     * Faz o cálculo do frete e do prazo de entrega do produto
     *
     * @author alince
     * @param idSessao id da sessão
     * @param idProduto id do produto
     * @param idCategoriaPaiProduto id da categoria pai do produto
     */
    Produto.prototype.simularFrete = function(idSessao, idProduto, idCategoriaPaiProduto)
    {
        //Verifica se foram informadas ao menos os 5 primeiros dígitos do CEP
        if ($('simulacaoCep1').value.length < 5)
        {
            $('erro-simulacao-frete').innerHTML = 'Informe ao menos os 5 primeiros dígitos do CEP';
            $('simulacaoCep1').style.backgroundColor = 'rgb(242,219,219)';
            $('simulacaoCep1').focus();
        }
        else
        {
            //Faz a requisição Ajax através do Mootools
            new Ajax(url + 'produto/simular-frete/', {
                method: 'post',
                data: {
                    'cep'                   : $('simulacaoCep1').value + $('simulacaoCep2').value,
                    'idCategoriaPaiProduto' : idCategoriaPaiProduto,
                    'totalProduto'          : this.calcularTotalSimulacaoFrete($('precoProduto').innerHTML, $('quantProduto').value),
                    'quantidade'            : $('quantProduto').value,
                    'idProduto'             : idProduto,
                    'idSessao'              : idSessao
                },
                onRequest: function() {
                    $('loader-calculo-frete').innerHTML = '<img src="' + urlimg + 'ajax-loader.gif" />';
                },
                onComplete: function(text) {
                    var obj = eval('(' + text + ')');
                    
                    $('simulacaoCep1').style.backgroundColor = '#FFF';
                    $('loader-calculo-frete').innerHTML      = '';
                    
                    //Verifica se a busca retornou algum registro de endereço
                    if (obj.status)
                    {
                        var retorno = '';

                        //Exibe a div de resultado da simulação
                        $('resultado-simulacao-frete').style.display = 'block';
                        $('opcoes-entrega').style.display  = 'block';

                        $('cidadeSimulacao').innerHTML = obj.dados['cidade'];
                        $('estadoSimulacao').innerHTML = obj.dados['estado'];

                        //Verifica se o produto está disponível para a localidade desejada
                        if (obj.dados['prosseguirCompra'])
                        {
                            if (obj.dados['cidade'] == 'Manaus')
                            {
                                $('com-resultado').style.display   = 'none';
                                $('frase-resultado').style.display = 'block';
                                $('frase-resultado').innerHTML     = 'Para esta localidade, o prazo de entrega é de até 2 dias úteis e o frete é grátis';
                            }
                            else
                            {
                                var existeOpcaoIndisponivel = false;

                                for (index = 0; index < obj.dados['qtdTiposEntrega']; index++)
                                {
                                    retorno += '<table class="tamanhopopupfrete" cellspacing="0" id="table_frete" width="100">';
                                    retorno += '<td width="200">' + obj.dados['entrega'][index]['tipo']  + '</td>';
                                    if (obj.dados['entrega'][index]['tipo'] == 'Embarque de Mercadoria')
                                    {
                                        retorno += '<td width="200">R$ ' + obj.dados['entrega'][index]['frete'].replace('.', ',') + '</td>';
                                    }
                                    else
                                    {
                                        retorno += '<td width="200">R$ ' + obj.dados['entrega'][index]['frete'] + ',00</td>';
                                    }
                                    retorno += '<td width="250">Entrega em ' + obj.dados['entrega'][index]['prazo'] + ' úteis</td>';
                                    if (obj.dados['entrega'][index]['status'] == 'Disponível')
                                    {
                                        retorno += '<td align="center" width="200"><span class="cordisponivel">' + obj.dados['entrega'][index]['status'] + '</span></td>';
                                    }
                                    else
                                    {
                                        retorno += '<td align="center" width="200"><span class="corindisponivel">' + obj.dados['entrega'][index]['status'] + '</span></td>';
                                        
                                        //Verifica se a flag que indica que existe um produto indisponível já foi setada
                                        if (existeOpcaoIndisponivel == false)
                                        {
                                            existeOpcaoIndisponivel = true;
                                        }
                                    }
                                    retorno += '</table>';
                                }

                                if (existeOpcaoIndisponivel == true)
                                {
                                    $('lembrete-indisponivel').style.display = 'block';
                                }
                                
                                $('frase-resultado').style.display = 'none';
                                $('com-resultado').style.display   = 'block';
                                $('com-resultado').innerHTML       = retorno;
                            }
                        }
                        else  //Não está disponível
                        {
                            $('com-resultado').style.display   = 'none';
                            $('frase-resultado').style.display = 'block';
                            $('frase-resultado').innerHTML     = 'A entrega deste produto não está disponível para esta localidade';
                        }
                    }
                    else //O CEP informado não foi encontrado
                    {
                        //Limpa os campos de CEP e seta o foco para o 1º campo
                        $('simulacaoCep1').value = '';
                        $('simulacaoCep2').value = '';
                        $('simulacaoCep1').focus();

                        $('opcoes-entrega').style.display   = 'none';
                        $('frase-resultado').style.display  = 'none';
                        $('com-resultado').style.display    = 'none';
                        $('erro-simulacao-frete').innerHTML = 'CEP não encontrado';
                    }
                }
            }).request();
        }
    }

/* Fim - Funções para simulação do frete e prazo de entrega - Detalhe do produto (by alince) */

var Produto = new Produto();
