/*
* API Parceria Perfeita
* Gerar this personalizada de produtos para o afiliado
*
* Copyright (c) 2009 www.Fbits.com.br
* Author: Daniel Repula, Phillipe Cardoso Santana
* Exemplos e documentação em: http://beta.parceriaperfeita.com.br/algumacoisa
* 
* Versão: 1.0 (14/12/2009)                  Autor: Daniel Repula, Phillipe Cardoso Santana
* Versão teste inicial... 
*
* Versão: 1.1   Modificação: 30/12/2009     Autor: Daniel Repula
* Obs: Removido ajax para requisições de conteudo, esta não permite cross domain, logo solução encontrada foi técnica do google, abre-se um iframe, e este faz a requisição, em seguida retorna para a tela da qual o abriu o conteudo requisitado atravês dos links das imagens!
* 
* Versão: 1.2   Modificação: 04/12/2009     Autor: Daniel Repula
* Obs: Solução de iframe encontrada pelo google, não vem ao nosso caso, pois como o retorno da requisição e de tamanho maior q 500k (possivel), gerar muitos iframes se torna inviavel. utilizada nova forma de chamada, url do script direta.
* 

*/

//Variáveis globais que necessitam ser salvas para após requisição serem instaciadas novamente

//Classe MASTER
function Vitrine() {
    /*
    Variáveis de classe publicas
    */
    var anunciante = undefined;
    var categorias = undefined;
    var palavrasChave = undefined;
    var precoMinimo = undefined;
    var precoMaximo = undefined;
    var ordenacaoCampo = undefined;
    var ordenacaoDirecao = undefined;
    var quantidade = undefined;
    var container = undefined;
    var xml = undefined;
    var css = 'http://beta.parceriaperfeita.com.br/css/ApiPP.css';
    //Variáveis de classe privadas

    this.urlTemplate = 'http://beta.parceriaperfeita.com.br/js/API/template.html',
    this.urlLoading = 'http://beta.parceriaperfeita.com.br/img/icons/loading.gif';

    this.templateContext = '<div class="item" style="width: 180px;"><a target="_blank"  href="{#URLProduto}"><img border="0" src="{#URLImagem}" alt="{#Nome}" /></a><br /><a target="_blank"  href="{#URLProduto}">{#Nome} - {#Fabricante}</a><br /><span>R$ {#MenorPreco}</span></div>';

    //Converte string para valor Boleano
    this.boolParse = function(string) {2
        switch (string.toLowerCase()) {
            case "true": case "yes": case "1": return true;
            case "false": case "no": case "0": case null: return false;
            default: return Boolean(string);
        }
    },
    /* 
    Adiciona um documento de estilo à página.
    @cssUrl: String: A URL do arquivo CSS.
    */
    this.adicionarCss = function(cssUrl) {
        var link = document.createElement('link');
        link.href = cssUrl;
        link.media = 'screen';
        link.rel = 'stylesheet'
        link.type = 'text/css';
        document.getElementsByTagName('head')[0].appendChild(link);
    },

    /*
    Helper para ler as propriedades e os valores das mesmas de um objeto JavaScript.
    @obj: Object: O objeto alvo.
    @element: Object ou String: Opcional. O elemento ou ID do elemento onde a informação será lançada.
    Se não informado, a informação será lançada em um alert.
    */
    this.debugObject = function(obj, element) {
        var info = [];
        if (obj) {
            for (var i in obj) {
                try { info.push(i + ': ' + obj[i]); } catch (e) { }
            }
        }
        else
            info.push('undefined');

        info = info.join('\n');
        alert(info);
    },

    /*
    Processa um template substituindo as paralvras chaves por seus respectivos valores.
    Retorna uma versão do template onde os valores foram substituídos por seus respectivos valores.
    @template: String: O template a ser processado.
    @xmlNode: Object: O nó XML com as informações para substituir no template.]
    */
    this.processarTemplate = function(template, xmlNode) {
        try {
            //Funcão privada para leitura do XML
            var getAtribute = function(obj, tagName) {
                //funcao crossbrowser
                var attr = obj.attributes.getNamedItem(tagName);
                if (typeof (attr) != 'undefined' && typeof (attr.value) != 'undefined')
                    return attr.value;
                else {
                    alert('Chave não encontrada no XML!');
                    return null;
                }
            };
            var currentMultilineOption = RegExp.multiline;
            RegExp.multiline = true;
            var rePalavrasChave = /{#([^}]*)}/gm;
            while ((matches = rePalavrasChave.exec(template)))
                template = template.replace(matches[0], getAtribute(xmlNode, matches[1]));
            RegExp.multiline = currentMultilineOption;
            return template;
        }
        catch (e) {
            alert(e);
        }
    },

    /* 
    Imprime os anúncios do PP para o site.
    @container: Object ou String: O elemento ou ID do elemento que conterá os anúncios.
    @htmlTemplate: String: Opcional. A URL do arquivo HTML com o template para os anúncios.
    */
    this.imprimir = function(container, urlHtmlTemplate) {
        container = document.createElement('div');        
        this.container = container;
        this.adicionarCss(css);
        container.innerHTML = '<img  src="' + this.urlLoading + '"><span style="font-family: arial; font-size: 11px;">Carregando...</span>';
        var temp = 'apiPPLoad_' + Math.floor(Math.random()*111);
        document.write('<div id="'+ temp + '">'+container.innerHTML+'</div>');
        try {        
            var Super = this;     
            //atribui classe css para o container
            
            var xml = undefined;
            if (window.DOMParser) {
                parser = new DOMParser();
                xml = parser.parseFromString(Base64.decode(this.xml), "text/xml");
            }
            else // Internet Explorer
            {
                xml = new ActiveXObject("Microsoft.XMLDOM");
                xml.async = "false";
                xml.loadXML(Base64.decode(this.xml));
            }
            var itemTemplate = this.templateContext;
            var htmlBuilder = [];
            var anuncios = xml.getElementsByTagName('Produto');
            if (anuncios.length > 0) {
                for (var i = 0; i < anuncios.length; i++) {
                    htmlBuilder.push(Super.processarTemplate(itemTemplate, anuncios[i]));
                }
            }
            var div = document.getElementById(temp);
            if( div!= null)
                div.innerHTML='';
            container.innerHTML = htmlBuilder.join(''); 
//            //preview da API!           
//            if(document.domain == 'localhost') {
//                document.getElementById('preview').innerHTML = '<div class="apiPP">'+container.innerHTML+'</div>';
//            }
//            else {
                document.write('<div class="apiPP">'+container.innerHTML+'</div>');            
            //}
        }
        catch (Exception) {
            document.write('<div>Erro ao carregar os Produtos!</div>');            
        }
    };
}

//Inicia API
function Init() {
    //intancia vitrine atravês do handler
    var _vitrine = new Vitrine();_vitrine.anunciante='1';
_vitrine.palavraschave='redutor';
_vitrine.precomin='10';
_vitrine.quantidade='6';
_vitrine.xml = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxWaXRyaW5lPg0KICA8UHJvZHV0byBJZD0iNjA0IiBOb21lPSJCaW9zbGltIChHZWwgUmVkdXRvciBBbnRpY2VsdWxpdGUpIiBGYWJyaWNhbnRlPSJIZXJiYXJpdW0iIFVSTEltYWdlbT0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvOTE3LmpwZz9zb3VyY2U9MTIweDEyMCIgVVJMUHJvZHV0bz0iaHR0cDovL3d3dy5jb3Jwb3BlcmZlaXRvLmNvbS5ici9wcm9kdXRvL0Jpb3NsaW1fR2VsX1JlZHV0b3JfQW50aWNlbHVsaXRlX0hlcmJhcml1bSIgU0FDPSIwODAwIDc3MiAwNTg4IiBNYWlvclByZWNvPSIyNCwzMCIgTWVub3JQcmVjbz0iMjQsMzAiIE1lbm9yUGFyY2VsYW1lbnRvUXVhbnRpZGFkZT0iMTAiIE1lbm9yUGFyY2VsYW1lbnRvVmFsb3I9IjI0LDMwIj4NCiAgICA8U3ViUHJvZHV0byBJZD0iOTE3IiBOb21lPSJCaW9zbGltIChHZWwgUmVkdXRvciBBbnRpY2VsdWxpdGUpIiBVbmlkYWRlTWVkaWRhPSIxMzBnIiBDb3I9IiIgU2Fib3I9IiIgUHJlY29EZT0iMjQiIFByZWNvUG9yPSIiIFByYXpvPSIxIGEgMyBkaWFzIMO6dGVpcyIgVVJMUHJvZHV0bz0iaHR0cDovL3d3dy5jb3Jwb3BlcmZlaXRvLmNvbS5ici9wcm9kdXRvLzkxNyI+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvOTE3LmpwZz9zb3VyY2U9ODB4ODAiIFRhbWFuaG89IjgweDgwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzkxNy5qcGc/c291cmNlPTMyeDMyIiBUYW1hbmhvPSIzMngzMiIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici85MTcuanBnP3NvdXJjZT0zMDB4MzAwIiBUYW1hbmhvPSIzMDB4MzAwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzkxNy5qcGc/c291cmNlPTQ2MHg0NjAiIFRhbWFuaG89IjQ2MHg0NjAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvOTE3LmpwZz9zb3VyY2U9MTIweDEyMCIgVGFtYW5obz0iMTIweDEyMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici85MTcuanBnP3NvdXJjZT0xMjAweDEyMDAiIFRhbWFuaG89IjEyMDB4MTIwMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICA8L1N1YlByb2R1dG8+DQogIDwvUHJvZHV0bz4NCiAgPFByb2R1dG8gSWQ9IjEwMTYiIE5vbWU9IkNhbWlzZXRhIE1vZGVsYWRvcmEgZSBSZWR1dG9yYSBkZSBCaW9jZXLDom1pY2EiIEZhYnJpY2FudGU9IkludmVsIiBVUkxJbWFnZW09Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzM3NjUuanBnP3NvdXJjZT0xMjB4MTIwIiBVUkxQcm9kdXRvPSJodHRwOi8vd3d3LmNvcnBvcGVyZmVpdG8uY29tLmJyL3Byb2R1dG8vQ2FtaXNldGFfTW9kZWxhZG9yYV9lX1JlZHV0b3JhX0Jpb2NlcsOibWljYV9JbnZlbCIgU0FDPSIwODAwIDc3MiAwNTg4IiBNYWlvclByZWNvPSIyNzksMDAiIE1lbm9yUHJlY289IjI3OSwwMCIgTWVub3JQYXJjZWxhbWVudG9RdWFudGlkYWRlPSIxMCIgTWVub3JQYXJjZWxhbWVudG9WYWxvcj0iMjcsOTAiPg0KICAgIDxTdWJQcm9kdXRvIElkPSIzNzY1IiBOb21lPSJDYW1pc2V0YSBNb2RlbGFkb3JhIGUgUmVkdXRvcmEgZGUgQmlvY2Vyw6JtaWNhIiBVbmlkYWRlTWVkaWRhPSJQIiBDb3I9IiIgU2Fib3I9IiIgUHJlY29EZT0iMjc5IiBQcmVjb1Bvcj0iIiBQcmF6bz0iMSBhIDMgZGlhcyDDunRlaXMiIFVSTFByb2R1dG89Imh0dHA6Ly93d3cuY29ycG9wZXJmZWl0by5jb20uYnIvcHJvZHV0by8zNzY1Ij4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY1LmpwZz9zb3VyY2U9MTIwMHgxMjAwIiBUYW1hbmhvPSIxMjAweDEyMDAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvMzc2NS5qcGc/c291cmNlPTMwMHgzMDAiIFRhbWFuaG89IjMwMHgzMDAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvMzc2NS5qcGc/c291cmNlPTMyeDMyIiBUYW1hbmhvPSIzMngzMiIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY1LmpwZz9zb3VyY2U9MTIweDEyMCIgVGFtYW5obz0iMTIweDEyMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY1LmpwZz9zb3VyY2U9NDYweDQ2MCIgVGFtYW5obz0iNDYweDQ2MCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY1LmpwZz9zb3VyY2U9ODB4ODAiIFRhbWFuaG89IjgweDgwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgIDwvU3ViUHJvZHV0bz4NCiAgICA8U3ViUHJvZHV0byBJZD0iMzc2OCIgTm9tZT0iQ2FtaXNldGEgTW9kZWxhZG9yYSBlIFJlZHV0b3JhIGRlIEJpb2NlcsOibWljYSIgVW5pZGFkZU1lZGlkYT0iR0ciIENvcj0iIiBTYWJvcj0iIiBQcmVjb0RlPSIyNzkiIFByZWNvUG9yPSIiIFByYXpvPSIxIGEgMyBkaWFzIMO6dGVpcyIgVVJMUHJvZHV0bz0iaHR0cDovL3d3dy5jb3Jwb3BlcmZlaXRvLmNvbS5ici9wcm9kdXRvLzM3NjgiPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzM3NjguanBnP3NvdXJjZT0zMngzMiIgVGFtYW5obz0iMzJ4MzIiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvMzc2OC5qcGc/c291cmNlPTQ2MHg0NjAiIFRhbWFuaG89IjQ2MHg0NjAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvMzc2OC5qcGc/c291cmNlPTgweDgwIiBUYW1hbmhvPSI4MHg4MCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY4LmpwZz9zb3VyY2U9MTIweDEyMCIgVGFtYW5obz0iMTIweDEyMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY4LmpwZz9zb3VyY2U9MzAweDMwMCIgVGFtYW5obz0iMzAweDMwMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici8zNzY4LmpwZz9zb3VyY2U9MTIwMHgxMjAwIiBUYW1hbmhvPSIxMjAweDEyMDAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgPC9TdWJQcm9kdXRvPg0KICA8L1Byb2R1dG8+DQogIDxQcm9kdXRvIElkPSIyMjc0IiBOb21lPSJHZWwgUmVkdXRvciBBbnRpY2VsdWxpdGUgYy8gRE1BRSIgRmFicmljYW50ZT0iQmlvLU3DqWRpY2luIiBVUkxJbWFnZW09Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzYxODAuanBnP3NvdXJjZT0xMjB4MTIwIiBVUkxQcm9kdXRvPSJodHRwOi8vd3d3LmNvcnBvcGVyZmVpdG8uY29tLmJyL3Byb2R1dG8vR2VsX1JlZHV0b3JfQW50aWNlbHVsaXRlX2NfRE1BRV9CaW8tTcOpZGljaW4iIFNBQz0iMDgwMCA3NzIgMDU4OCIgTWFpb3JQcmVjbz0iNzksOTAiIE1lbm9yUHJlY289Ijc5LDkwIiBNZW5vclBhcmNlbGFtZW50b1F1YW50aWRhZGU9IjEwIiBNZW5vclBhcmNlbGFtZW50b1ZhbG9yPSIxNSw5OCI+DQogICAgPFN1YlByb2R1dG8gSWQ9IjYxODAiIE5vbWU9IkdlbCBSZWR1dG9yIEFudGljZWx1bGl0ZSBjLyBETUFFIiBVbmlkYWRlTWVkaWRhPSIxNTBnIiBDb3I9IiIgU2Fib3I9IiIgUHJlY29EZT0iODAiIFByZWNvUG9yPSIiIFByYXpvPSIxIGEgMyBkaWFzIMO6dGVpcyIgVVJMUHJvZHV0bz0iaHR0cDovL3d3dy5jb3Jwb3BlcmZlaXRvLmNvbS5ici9wcm9kdXRvLzYxODAiPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzYxODAuanBnP3NvdXJjZT0xMjAweDEyMDAiIFRhbWFuaG89IjEyMDB4MTIwMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici82MTgwLmpwZz9zb3VyY2U9NDYweDQ2MCIgVGFtYW5obz0iNDYweDQ2MCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici82MTgwLmpwZz9zb3VyY2U9MTIweDEyMCIgVGFtYW5obz0iMTIweDEyMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici82MTgwLmpwZz9zb3VyY2U9ODB4ODAiIFRhbWFuaG89IjgweDgwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzYxODAuanBnP3NvdXJjZT0zMDB4MzAwIiBUYW1hbmhvPSIzMDB4MzAwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzYxODAuanBnP3NvdXJjZT0zMngzMiIgVGFtYW5obz0iMzJ4MzIiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgPC9TdWJQcm9kdXRvPg0KICA8L1Byb2R1dG8+DQogIDxQcm9kdXRvIElkPSI1NzMwIiBOb21lPSJLaXQgMiBHw6lpcyBSZWR1dG9yZXMgQW50aWNlbHVsaXRlIGMvIERNQUUgKEdSw4FUSVMgTmVjZXNzYWlyZSkiIEZhYnJpY2FudGU9IkJpby1Nw6lkaWNpbiIgVVJMSW1hZ2VtPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici81NjA3LmpwZz9zb3VyY2U9MTIweDEyMCIgVVJMUHJvZHV0bz0iaHR0cDovL3d3dy5jb3Jwb3BlcmZlaXRvLmNvbS5ici9wcm9kdXRvL0tpdF8yX0fDqWlzX1JlZHV0b3Jlc19BbnRpY2VsdWxpdGVfY19ETUFFX0dSw4FUSVNfTmVjZXNzYWlyZV9CaW8tTcOpZGljaW4iIFNBQz0iMDgwMCA3NzIgMDU4OCIgTWFpb3JQcmVjbz0iMTU5LDkwIiBNZW5vclByZWNvPSIxNTksOTAiIE1lbm9yUGFyY2VsYW1lbnRvUXVhbnRpZGFkZT0iMTAiIE1lbm9yUGFyY2VsYW1lbnRvVmFsb3I9IjE1LDk5Ij4NCiAgICA8U3ViUHJvZHV0byBJZD0iNTYwNyIgTm9tZT0iS2l0IDIgR8OpaXMgUmVkdXRvcmVzIEFudGljZWx1bGl0ZSBjLyBETUFFIChHUsOBVElTIE5lY2Vzc2FpcmUpIiBVbmlkYWRlTWVkaWRhPSIxNTBnIiBDb3I9IiIgU2Fib3I9IiIgUHJlY29EZT0iMTYwIiBQcmVjb1Bvcj0iIiBQcmF6bz0iMSBhIDMgZGlhcyDDunRlaXMiIFVSTFByb2R1dG89Imh0dHA6Ly93d3cuY29ycG9wZXJmZWl0by5jb20uYnIvcHJvZHV0by81NjA3Ij4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici81NjA3LmpwZz9zb3VyY2U9MTIweDEyMCIgVGFtYW5obz0iMTIweDEyMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici81NjA3LmpwZz9zb3VyY2U9MzAweDMwMCIgVGFtYW5obz0iMzAweDMwMCIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici81NjA3LmpwZz9zb3VyY2U9MTIwMHgxMjAwIiBUYW1hbmhvPSIxMjAweDEyMDAiIFByaW5jaXBhbD0iRmFsc2UiIC8+DQogICAgICA8SW1hZ2VtIFVSTD0iaHR0cDovL3Byb2R1dG8uY29ycG9wZXJmZWl0by5jb20uYnIvNTYwNy5qcGc/c291cmNlPTMyeDMyIiBUYW1hbmhvPSIzMngzMiIgUHJpbmNpcGFsPSJGYWxzZSIgLz4NCiAgICAgIDxJbWFnZW0gVVJMPSJodHRwOi8vcHJvZHV0by5jb3Jwb3BlcmZlaXRvLmNvbS5ici81NjA3LmpwZz9zb3VyY2U9ODB4ODAiIFRhbWFuaG89IjgweDgwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgICAgPEltYWdlbSBVUkw9Imh0dHA6Ly9wcm9kdXRvLmNvcnBvcGVyZmVpdG8uY29tLmJyLzU2MDcuanBnP3NvdXJjZT00NjB4NDYwIiBUYW1hbmhvPSI0NjB4NDYwIiBQcmluY2lwYWw9IkZhbHNlIiAvPg0KICAgIDwvU3ViUHJvZHV0bz4NCiAgPC9Qcm9kdXRvPg0KPC9WaXRyaW5lPg==';
_vitrine.imprimir(null,null);
}

//Classe para tratamento da base64
var Base64 = {
    // private property
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    // public method for encoding
    encode: function(input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = Base64._utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
        }
        return output;
    },
    // public method for decoding
    decode: function(input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = Base64._utf8_decode(output);
        return output;
    },
    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    },
    // private method for UTF-8 decoding
    _utf8_decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while (i < utftext.length) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}
Init();