var categoriaID = null;
var categoriaNome = "";
var filtrosSelecionados = [];
var filtrosPersonalizados = {};
var modelLi = null;
var loginURL = null;
var bannerPadraoUrl = "";
var currentPage = window.location.href.match(/page\:[0-9]+/g);
currentPage = (currentPage) ? currentPage.join("/") : "";
var ordenacao = null;

jQuery(function(){
    carregarFastBuy();
    
    // armazena o modelo do produto
    modelLi = $("#categoriasVitrine .produto li:first");
    
    // coluna lateral de filtros
    if (modelLi.size() == 1){
        // adiciona o click do mouse
        $("#filtro_categorias ul li a").click(selecionarFiltro);
        
        // marcar filtros
        marcarFiltros();
    }
    
    // carrega o slideshow do banner
    if ($(".banners .itens li").size() > 1){
        carregarBannerSlideshow();
    }
    
    // carrega ações dos botões de ordenação da lista
    $("#categoriasVitrine .ordenacao li a").click(ordenarListagem);
    
    // carrega ações para os botões de paginação
    $("#categoriasVitrine .paginacao a").click(alterarPagina);
});

function carregarFastBuy() {
    $(".ativarTool").each(function(){
        var goURL = $(this).attr("rel");
        $(this).simpletip({
            offset:[-70,-30], 
            fixed: true,  
            content:"<span name=\""+goURL+"\" class=\"rjhostFastBuy\">Compra Rápida</span>"
        })
    });

    $(".rjhostFastBuy").click(compraRapida);
}

function compraRapida(e) {

    var requestURL = $(this).attr("name");
    //---------------------------------------------
    e.preventDefault();
    $("#formOrder").empty().append($("<div id='fastShopp'/>"));
    var maskHeight = $(document).height();
    var maskWidth = $(document).width();
    $("#mask").css({
        "width":maskWidth,
        "height":maskHeight
    });
    $("#mask").fadeIn(500);	
    $("#mask").fadeTo("slow",0.8);	
		
    var winH = $(window).height();
    var winW = $(window).width();
				  
    $("#dialog").css("top", $(document).scrollTop() + (winH/2 - $("#dialog").height()/2));
    $("#dialog").css("left", winW/2 - $("#dialog").width()/2);
    $("#dialog").fadeIn(1000);
    
    $.get( requestURL, function(data) {
        $("#formOrder").html(data);
        $("#fastShopp").css("background", "#FFF").height("auto");
        var winH = $(window).height();
        var winW = $(window).width();
				  
        $("#dialog").css("top", $(document).scrollTop() + (winH/2 - $("#dialog").height()/2));
        $("#dialog").css("left", winW/2 - $("#dialog").width()/2);
    });

    $(".window .close").click(function (e) {
        e.preventDefault();
        $("#mask").hide();
        $(".window").hide();
    });		
	
    $("#mask").click(function () {
        $(this).hide();
        $(".window").hide();
    });
			
//---------------------------------------------
}

/* ---------------------- filtros ------------------- */
function formatarParametrosDoFiltro(){
    var i = null;

    // parametros dos filtros normais
    var params = "";
    
    // verifica se a categoria existe
    if (categoriaID)
        params += "/" + categoriaID;
    
    // parametros padrões
    for (i in filtrosSelecionados)
        params += "/filtro"+(parseInt(i)+1)+":"+filtrosSelecionados[i];
    
    // parametros para filtros personalizados
    for (i in filtrosPersonalizados)
        params += "/" + i + ":" + filtrosPersonalizados[i];
    
    // página atual
    if (currentPage != "")
        params += "/" + currentPage;
    
    // página atual
    if (ordenacao)
        params += "/ord:" + ordenacao;
    
    // formata
    if (params[0] == "/")
        params = params.substring(1);
    
    return params
}
function selecionarFiltro(){
    // adiciona o box de carregando
    adicionarCarregando();
    
    // marca o item
    adicionarFiltro(this);
    
    // recarrega a listagem de produtos
    recarregarProdutos();
    
    // interrompe o script
    return false;
}

function adicionarFiltro(filtro){
    // id do filtro
    var id = parseInt($(filtro).attr("href").match(/[0-9]+$/).toString())
    
    // adiciona o filtro a busca
    if ($(filtro).parents("ul.normal").size() == 1)
        filtrosSelecionados.push(id);
    else if ($(filtro).parents("ul.personalizado").size() == 1){
        // desmarca os outros
        $(filtro).parents("ul").find("li a.selected:first").each(function(){
            removerFiltro(this);
        });
        // adiciona o filtro
        var filtroName = $(filtro).attr("href").match(/[A-Za-z-_]+\:[0-9]+$/).toString().replace(":"+id, "");
        filtrosPersonalizados[filtroName] = id;
    }
    
    // marcar o filtro
    marcarFiltro(filtro);
    
    // reinicar a paginação
    reinicarPage();
}

function marcarFiltros(){
    var filtro = null;
    var id = null;
    
    // adiciona todos os filtros normais
    for(filtro in filtrosSelecionados){
        id = filtrosSelecionados[filtro];
        marcarFiltro($(".filtro-"+id));
    }
    
    // adiciona todos os filtros personalizados
    for(filtro in filtrosPersonalizados){
        id = filtrosPersonalizados[filtro];
        marcarFiltro($(".filtro-faixa-de-preco-"+id));
    }
    
    // atualiza os filtros
    recarregarFiltros();
}

function marcarFiltro(filtro){
    // marca o filtro
    $(filtro).addClass("selected").unbind("click").click(desselecionarFiltro);
}

function desselecionarFiltro (){
    // adiciona o box de carregando
    adicionarCarregando();
    
    // desmarca o item
    removerFiltro(this);
    
    // recarrega a listagem de produtos
    recarregarProdutos();
    
    // interrompe o scirpt
    return false;
}

function removerFiltro(filtro){
    // desmarcar filtro
    desmarcarFiltro(filtro);
    
    // id do filtro
    var id = parseInt($(filtro).attr("href").match(/[0-9]+$/).toString());
    
    // remover o filtro da busca
    if ($(filtro).parents("ul.normal").size() == 1){
        removeFromArray(filtrosSelecionados, id);
    } else if ($(filtro).parents("ul.personalizado").size() == 1){
        var filtroName = $(filtro).attr("href").match(/[A-Za-z-_]+\:[0-9]+$/).toString().replace(":"+id, "");
        removeFromObject(filtrosPersonalizados, filtroName);
    }
}

function desmarcarFiltro(filtro){
    // desmarcar o filtro
    $(filtro).removeClass("selected").unbind("click").click(selecionarFiltro);
}

function recarregarProdutos(){
    var params = formatarParametrosDoFiltro();
    
    // ajax
    $.getJSON("buscas/produtos/"+params, recarregarProdutosRetorno);
}

function recarregarProdutosRetorno(data){
    // modelo: li
    var container = $("#categoriasVitrine .produto");
    container.empty();
    
    // adiciona os novos produtos
    for (var i in data.produtos){
        var li = modelLi.clone();
        li.find(".marca").html(data.produtos[i].marca);
        li.find(".texto_produto").html(data.produtos[i].nome);
        li.find(".texto_preco").html("R$ "+float2moeda(data.produtos[i].preco));
        li.find("img").attr("src", li.find("img").attr("src").replace(/[0-9]+\.jpg$/, data.produtos[i].id+".jpg"));
        li.find("a").attr("href", li.find("a").attr("href").replace(/[0-9]+$/, data.produtos[i].id));
        li.find("a").attr("rel", li.find("a").attr("rel").replace(/[0-9]+$/, data.produtos[i].id));
        li.find(".tooltip").remove();
        container.append(li);
    }
    
    // carrega o FastBuy
    carregarFastBuy();
    
    // atualizar o título
    atualizarTituloDosProdutos();
    
    // atualizar filtros
    atualizarFiltros(data);
    
    // atualizar banners
    atualizarBanners(data.banners);
    
    // reajustar carregando
    reajustarMascara($("#content"));
    
    // remove o carregando
    removerCarregando();
}

function ordenarListagem(){
    // carrega o tipo de ordenação
    ordenacao = $(this).parent("li:first").attr("class");
    
    // adiciona o box de carregando
    adicionarCarregando();
    
    // reinica a página 
    reinicarPage();
    
    // recarrega a listagem de produtos
    recarregarProdutos();
    
    // interrompe o script
    return false;
}

function recarregarFiltros(){
    var params = formatarParametrosDoFiltro();
    
    // ajax
    $.getJSON("buscas/filtros/"+params, atualizarFiltros);
}

function recarregarPaginacao(paginacaoData){
    // carrega o container
    var container = $("#categoriasVitrine .paginacao");
    // botão de anterior
    var anterior = container.find(".anterior");
    // botão de próximo
    var proximo = container.find(".proximo");
    // navegação páginas
    var paginas = container.find(".paginas");
    // url destino
    var url = "";
    
    // atualiza os dados anteriores
    if (paginacaoData.previous){
        url = "/categorias/vitrine/18/Perfumes/"+formatarParametrosDoFiltro().replace(/page:[0-9]+/, "page:"+paginacaoData.previous);
        if (url.search(/page:[0-9]+/) == -1){
            if (url.substring(url.length-1) != "/")
                url += "/";
            url += "page:"+paginacaoData.previous;
        }
        anterior.attr("href", url);
    } else {
        anterior.attr("href", "javascript:void(0);").addClass("disabled");
    }
    
    if (paginacaoData.next){
        url = "/categorias/vitrine/18/Perfumes/"+formatarParametrosDoFiltro().replace(/page:[0-9]+/, "page:"+paginacaoData.next);
        if (url.search(/page:[0-9]+/) == -1){
            if (url.substring(url.length-1) != "/")
                url += "/";
            url += "page:"+paginacaoData.next;
        }
        proximo.attr("href", url);
    } else {
        proximo.attr("href", "javascript:void(0);").addClass("disabled");
    }
    
    paginas.empty();
    url = "/categorias/vitrine/18/Perfumes/"+formatarParametrosDoFiltro().replace(/page:[0-9]+/, "page:0");
    if (url.search(/page:[0-9]+/) == -1){
        if (url.substring(url.length-1) != "/")
            url += "/";
        url += "page:0";
    }
    for (var i in paginacaoData.pages){
        var link = $("<a>").html("["+paginacaoData.pages[i]+"]");
        link.click(alterarPagina);
        if (paginacaoData.pages[i] == paginacaoData.page)
            link.attr("href", "javascript:void(0);").addClass("selected");
        else
            link.attr("href", url.replace(/page:[0-9]+/, "page:"+paginacaoData.pages[i]));
        paginas.append(link);
    }
}

function atualizarFiltros(data){
    // atualiza os filtros normais
    atualizarFiltrosNormais(data.filtros);
    
    // atualizar o filtro de faixa de preço
    atualizarFiltroFaixaDePreco(data.precos);
    
    // atualiza a paginacao
    if (data.paginacao)
        recarregarPaginacao(data.paginacao);
}

function atualizarFiltrosNormais(filtros){
    // desabilita todos os filtros não marcados
    desabilitarFiltro($("#filtro_categorias .filtro ul.normal li a:not(.selected)"));
    
    // habilita os filtros retornados
    for(var i in filtros)
        habilitarFiltro(".filtro-"+filtros[i]+":not(.selected)");
}

function desabilitarFiltro(filtro){
    $(filtro).unbind("click").click(function(){
        return false;
    }).addClass("disabled");
}

function habilitarFiltro(filtro){
    $(filtro).click(selecionarFiltro).removeClass("disabled");
}

function alterarPagina(){
    // verifica se existe URL
    var nextPage = $(this).attr("href").match(/page\:[0-9]+/)
    if (!nextPage)
        return false;
    
    // adiciona o box de carregando
    adicionarCarregando();
    
    // proxima página
    currentPage = nextPage.toString();
    
    // recarrega a listagem de produtos
    recarregarProdutos();
    
    // interrompe o script
    return false;
}

function atualizaBanner(banner, url, image){
    // adiciona a URL
    if (url != "")
        banner.find("a").attr("href", url);
    else
        banner.find("a").attr("href", "javascript:void(0);");
            
    // atualiza a imagem
    banner.find("img").attr("src", "/img/banners/filtro/"+image+".jpg");
            
    return banner;
}

function atualizarBanners(banners){
    // pega o modelo
    var model = $(".banners .itens li:first");
    
    // limpa os banners
    var bannerContainer = $(".banners .itens");
    bannerContainer.empty();
    
    // verifica se existe algum banner cadastrado
    if (banners.length == 0){
        // torna o banner padrão
        bannerContainer.append(atualizaBanner(model.clone(), bannerPadraoUrl, "default"));
    } else {
        // percorre os banners retornados.
        for(var i in banners){
            // adiciona ao container.
            bannerContainer.append(atualizaBanner(model.clone(), banners[i], i));
        }
        
        if (banners.length > 1){
            // carrega o slide show
            carregarBannerSlideshow();
        }
    }
}

function atualizarFiltroFaixaDePreco(precos){
    // desabilita os filtros não selecionados
    $(".faixa-de-preco li a:not(.selected)").each(function(){
        desabilitarFiltro(this)
    });
    
    // container filtros habilitados
    var containerHabilitarFiltro = {};
    
    var i = null;
    
    // percorre os produtos localizando o preço e habilitando a faixa de preço
    for (i in precos){
        // armazena o preço
        var preco = precos[i];
        
        // menor ou igual a 100
        if (preco <= 100)
            containerHabilitarFiltro[1] = true;
        else if (preco <= 200)
            containerHabilitarFiltro[2] = true;
        else if (preco <= 400)
            containerHabilitarFiltro[3] = true;
        else
            containerHabilitarFiltro[4] = true;
    }
    
    // habilita os filtros
    for(i in containerHabilitarFiltro)
        habilitarFiltro($(".filtro-faixa-de-preco-"+i+":not(.selected)"));
}

function atualizarTituloDosProdutos(){
    // verifica se exite algum filtro personalizado
    for (var existeFiltroPersonalizado in filtrosPersonalizados)
        break;

    // verifica se existe algum filtro selecionado
    if (!(filtrosSelecionados.length > 0) && !(existeFiltroPersonalizado != undefined))
        $("#categoriasVitrine > h1").html(categoriaNome);
}

function reinicarPage(){
    currentPage = "";
}

function carregarBannerSlideshow(){
    $(".banners").number_slideshow({
        slideshow_autoplay: "enable",//enable disable
        slideshow_time_interval: "3000",
        slideshow_window_background_color: "#ccc",
        slideshow_window_padding: "1",
        slideshow_window_width: "775",
        slideshow_window_height: "190",
        slideshow_border_size: "0",
        slideshow_border_color: "black",
        slideshow_show_button: "enable",//enable disable
        slideshow_show_title: "disable",//enable disable
        slideshow_button_text_color: "#CCC",
        slideshow_button_background_color: "#333",
        slideshow_button_current_background_color: "#666",
        slideshow_button_border_color: "#000",
        slideshow_loading_gif: "loading.gif",//loading pic position, you can replace it.
        slideshow_button_border_size: "0"
    });
}
