﻿// Name: createXMLDocument
// Input: String
// Output: XML Document
jQuery.createXMLDocument = function(string) {
    var browserName = navigator.appName;
    var doc;
    if (browserName == 'Microsoft Internet Explorer') {
        doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.async = 'false'
        doc.loadXML(string);
    } else {
        doc = (new DOMParser()).parseFromString(string, 'text/xml');
    }
    return doc;
}


        function mycarousel_itemLoadCallback(carousel, state) {
                    
            $('#paginaAtual').text(carousel.first);

            var ordemVisualizacao = $("#ddlOrdemVisualizacao").val();
            
            var qtItensPagina = 12;
            var urlAjax = "/site/Controls/Produto/ListaMarcas.aspx/Marcas";
            var dados = "{first: '" + carousel.first + "', last: '" + carousel.last + "', ordemVisualizacao: '" + ordemVisualizacao + "'}";
            var dadosPre = "{first: '" + (carousel.first + 1) + "', last: '" + (carousel.last + 1) + "', ordemVisualizacao: '" + ordemVisualizacao + "'}";
            var modeloHTML = "marcas";

            
            //Recupera URL personalizada
            var filtros = "";
            var conteudo = SWFAddress.getValue();
          
            if (conteudo.length > 0)
                conteudo = conteudo.substr(1, conteudo.length);                

            if (conteudo.search('Ordem') >= 0 && conteudo.search('Categoria') >= 0 && conteudo.search('Contem') >= 0) {
                conteudo = conteudo.split('&');
                
                var ordem = conteudo[0].substr(conteudo[0].lastIndexOf('=') + 1, conteudo[0].length);
                var categoria = conteudo[1].substr(conteudo[1].lastIndexOf('=') + 1, conteudo[1].length);
                var contem = conteudo[2].substr(conteudo[2].lastIndexOf('=') + 1, conteudo[2].length);

                filtros += (categoria != "Todos" ? categoria : "");

                if(contem != "Todos")
                filtros += "," + contem;
                
                ordemVisualizacao = (ordem == "V" ? "V" : "N"); //V = Mais Visualizadas

            }
            //Fim Recupera URL
            
            if (filtros.length > 0) {
                urlAjax = "/site/Controls/Produto/ListaMarcas.aspx/MarcasFiltradas";
                dados = "{first: '" + carousel.first + "', last: '" + carousel.last + "', ordemVisualizacao: '" + ordemVisualizacao + "', filtros: '" + filtros + "'}";
                dadosPre = "{first: '" + (carousel.first + 1) + "', last: '" + (carousel.last + 1) + "', ordemVisualizacao: '" + ordemVisualizacao + "', filtros: '" + filtros + "'}";
                modeloHTML = "marcasfiltrada";
                qtItensPagina = 8;
            }
            
            //Fim filtros

            //Se não tiver a pagina requisitada, carrega
            if (!carousel.has(carousel.first, carousel.last) || state == "init") {

                $.ajax({
                    async: true,
                    type: "POST",
                    url: urlAjax,
                    data: dados,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    cache: false,
                    success: function(xml) {
                        var doc = $.createXMLDocument(xml.d);
                        var itens = parseInt($('total', doc).text());
                        var paginas = Math.ceil((itens / qtItensPagina));
                        $('#paginasTotal').text(paginas);

                        mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, doc, modeloHTML);
                        $("#segurabuscando").hide();
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        //alert(textStatus);
                    }
                });
            }

            //Se não tem a proxima pagina
            if (carousel.size() <= carousel.first) {
                
                $.ajax({
                    async: true,
                    type: "POST",
                    url: urlAjax,
                    data: dadosPre,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    cache: false,
                    success: function(xml) {
                    var doc = $.createXMLDocument(xml.d);
                        var itens = parseInt($('total', doc).text());                        
                        var paginas = Math.ceil((itens / qtItensPagina));
                        
                        if (paginas > carousel.size()) {
                            carousel.size(carousel.first + 1);
                        }
                        mycarousel_itemAddCallback(carousel, carousel.first + 1, carousel.last + 1, doc, modeloHTML);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        //alert(textStatus);
                    }
                });
            }

        };

        function mycarousel_itemAddCallback(carousel, first, last, xml, modeloHTML) {

            var itens = parseInt($('total', xml).text());

            if (itens > 0) {
                $("#quantidademarca").html('A Nestlé tem <span id="qtMarcas">' + itens + '</span> Marca' + (itens > 1 ? '(s)' : '') + ' para você');
                $('#textoPaginacao').show();
            } else {
                $("#quantidademarca").html('Não encontramos resultados para esta busca / <span class="destaquecor">Tente de novo.</span>');
            }
                        
            //Por causa do PreLoad da proxima pagina, pode vir paginas em branco. Só adiciona se não for em branco
            if (first <= carousel.size()) {
                if (modeloHTML == "marcasfiltrada") {
                    carousel.add(first, GerarHTMLMarcasFiltradas(xml, first));
                }
                else {
                    carousel.add(first, GerarHTMLMarcas(xml, first));
                }
            }

            $("#quantidademarca").show();

            if (vIE() == '6') { $('.imagemPNG').pngFix(); }
            //Script que faz o lazy loading das imagens
            $.preload('#imagemLazy' + first + ' img', {//the first argument is a selector to the images
            placeholder: '/site/Controls/Produto/spinner_.gif', //this is the really important option
            notFound: '/site/Controls/Produto/notfound_lg.gif',
                threshold: 2 //'2' is the default, how many at a time, to load.
            });

            sIFR.replaceElement(named({ sSelector: "p.titTipoProduto span", sFlashSrc: "/site/css/frutiger_boldCn.swf", sColor: "#9b9b9b", nPaddingTop: 0, nPaddingBottom: 0, sWmode: "transparent", sFlashVars: "underline=true&textalign=center" }));
        };

        function GerarHTMLMarcas(xml, first) {
            var retorno = '';
            var contadorLinha = 0;

            $('data > marca', xml).each(function(i) {
                
                if (contadorLinha == 0) {
                    retorno += '<ul class="listamarcas"><span id="imagemLazy' + first + '">';
                }

                var urlDestino = $('url', this).text();
                var urlImagem = $('image', this).text();
                var nomeMarca = $('nome', this).text();

                retorno = retorno + '<li class="marca' + (contadorLinha + 1) + '"><div class="imagemPNG"><a href="' + urlDestino + '"><img border="0" alt="' + nomeMarca + '" src="' + urlImagem + '"/></a></div><p class="titTipoProduto"><span><a href="' + urlDestino + '">' + nomeMarca + '</a></span></p>   <p class="txtfazbem"><a href="' + urlDestino + '">Faz bem saber</a></p></li>';

                if (contadorLinha == 3) {
                    retorno += '</span></ul><div class="linhadivisa"></div>';
                }
                contadorLinha = (contadorLinha + 1) % 4;
            });
            
            //Fechar as tags caso nao tenha a linha completa
            if (contadorLinha > 0) {
                retorno += '</span></ul><div class="linhadivisa"></div>';
            }
            
            return retorno;
        };

        function GerarHTMLMarcasFiltradas(xml, first) {
            var retorno = '';
            var contadorLinha = 0;
            
            retorno += '<div class="boxmarcasfiltradasnestle"><div class="seguraBuscaMarcas">';

            $('data > marca', xml).each(function(i) {

                if (contadorLinha == 0) {
                    retorno += '<div class="seguraBuscaMarcasLinha"><span id="imagemLazy' + first + '">';
                }

                var urlDestino = $('url', this).text();
                var urlImagem = $('image', this).text();
                var nomeMarca = $('nome', this).text();

                retorno += '<div class="resultadosBuscaMarcasLista"><h4 class="imagemPNG"><img src="' + urlImagem + '"/></h4>';

                //Para cada tipo
                $('> tipo', this).each(function() {

                    var nomeTipo = $('> nome', this).text();
                    retorno += '<dl><dt><span>' + nomeTipo + '</span></dt>';

                    //Para cada produto
                    $('> produto', this).each(function() {
                    retorno += '<dd><a href="' + $('> url', this).text() +'">' + $('> nome', this).text() +'</a></dd>';
                    });

                    retorno += '</dl>';
                });

                retorno += '</div>';

                if (contadorLinha == 3) {
                    retorno += '</span></div>';
                }
                contadorLinha = (contadorLinha + 1) % 4;
            });

            //Fechar as tags caso nao tenha a linha completa
            if (contadorLinha > 0) {
                retorno += '</span></div>';
            }
            retorno += '</div></div>';
            return retorno;
        };

        var carossel = null;
        var ocasiaoSelecionada = "Todos";
        function ResetarCarossel(compUrl) {

            //Define url personalizada
            if (compUrl == null || compUrl.lenght == 0) {
                var Ocasiao = "Todos";
                $('#ctl00_ContentHolder_ctl00_rdlOcasioesMarcas input').each(function() { if (this.checked) { Ocasiao = this.value } });
                compUrl = 'Ordem=' + ($("#ddlOrdemVisualizacao").val() == 'V' ? 'V' : 'N');
                compUrl += '&Categoria=' + (($('#ddlCategoriasMarcas').val() == '0') ? 'Todos' : $('#ddlCategoriasMarcas').val());
                compUrl += '&Contem=' + Ocasiao;

                if (compUrl.length > 0)
                    SWFAddress.setValue(compUrl);
            }
                
            $('#textoPaginacao').hide();
            $("#quantidademarca").hide();
            $("#segurabuscando").show();

            if(carossel != null){
			carossel.size(1);carossel.reset();
			}

        }

        $(document).ready(function() {
            //Recupera url personalizada

            atualizarForm = function() {
                //Seleciona Combos
                alterarCombo = function(combo, valor) {
                    var $combo = $(combo);
                    var $option = $('option[value=' + valor + ']:last', $(combo));
                    var $text = $('input[type=text]:first', $combo.parent());
                    $('option[selected]', combo).removeAttr('selected');
                    $option.attr('selected', 'selected');
                    $combo.val(valor);
                    $text.val($option.text());
                }

                var conteudo = SWFAddress.getValue();
                if (conteudo.length > 0)
                    conteudo = conteudo.substr(1, conteudo.length);

                if (conteudo.search('Ordem') >= 0 && conteudo.search('Categoria') >= 0 && conteudo.search('Contem') >= 0) {
                    conteudo = conteudo.split('&');

                    var ordem = conteudo[0].substr(conteudo[0].lastIndexOf('=') + 1, conteudo[0].length);
                    var categoria = conteudo[1].substr(conteudo[1].lastIndexOf('=') + 1, conteudo[1].length);
                    var contem = conteudo[2].substr(conteudo[2].lastIndexOf('=') + 1, conteudo[2].length);

                    categoria = (categoria == "Todos" ? "0" : categoria);
                    ordem = (ordem == "Todos" ? "0" : ordem);



                    setTimeout(function() {
                        alterarCombo('#ddlOrdemVisualizacao', ordem);
                        alterarCombo('#ddlCategoriasMarcas', categoria);
                    }, 1);

                    //Seleciona Checkbox
                    var $input = $('#ctl00_ContentHolder_ctl00_rdlOcasioesMarcas input[value=' + contem + ']')
                    $input.attr('checked', 'checked');
                    $('#ctl00_ContentHolder_ctl00_rdlOcasioesMarcas label[for]').removeClass('checked');
                    $('#ctl00_ContentHolder_ctl00_rdlOcasioesMarcas label[for=' + $input.attr('id') + ']').addClass('checked');
                }
            }
            atualizarForm();

            //Adicionando o listener de change history
            SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);
            function handleChange(event) {
                ResetarCarossel(event.pathNames.toString());
                atualizarForm();
            }


            //Configura o carrossel
            $('#mycarousel').jcarousel({
                // Uncomment the following option if you want items
                // which are outside the visible range to be removed
                // from the DOM.
                // Useful for carousels with MANY items.

                // itemVisibleOutCallback: {onAfterAnimation: function(carousel, item, i, state, evt) { carousel.remove(i); }},

                itemLoadCallback: mycarousel_itemLoadCallback,
                scroll: 1,
                initCallback: function(instancia) { carossel = instancia; },
                size: 1
            });
        });
        
        