var ExeTime2;

function Void(i) {
}

//  ##### Função oculta ou exibe todos os selects da página
function ExiOcuSelect(Tipo) {
    var objSel;
    objSel = document.getElementsByTagName('select');
    for (var i = 0; i < objSel.length; i++) {
        var link = objSel[i];
        if (Tipo == 0) link.style.visibility = "hidden";
        if (Tipo == 1) link.style.visibility = "visible";
    }
}


//##### Verifica Diretorio
function StrDir(D){
    if (D == 1) { return '' }
    else {
        var iStrDir;
		var retorno='';
        for (iStrDir = 2; iStrDir <= D; iStrDir++) {
            retorno = retorno + '../';
        }
        return retorno;
    }
}

//Namespace para validação
var vl = {};

    vl.LastCall = ''; //Referente a ultima chamada de validação
    vl.FormID = '';
    vl.JselForm = function () { return '#' + vl.FormID };   //Seletor do formulario

    //Tenta resetar a ulti'';validação
    vl.Reset = function () {
        try { vl.LastCall.resetForm() } catch (e) { }
        try {
            var form = $(vl.JselForm()).get(0);
            $.removeData(form, 'validator');
        } catch (e) { }
    }

    //Valida o formulario
    vl.Init = function () {
        vl.Reset();
        vl.LastCall = $(vl.JselForm()).validate({ onsubmit: false });
        return vl.LastCall;
    }

    //Valida e adiciona os erros em um sumario
    vl.InitSum = function (jSelSum) {
        vl.Reset();
        vl.LastCall = $(vl.JselForm()).validate({
            errorLabelContainer: $(jSelSum),
            wrapper: 'li',
            onsubmit: false
        });
        return vl.LastCall;
    }

    //Valida com as opções predifinidas manualmente
    vl.InitOptions = function (options) {
        vl.Reset();
        vl.LastCall = $(vl.JselForm()).validate(options);
        return vl.LastCall;
    }

    //Confirma e configura a validação
    vl.Valid = function () {
        return $(vl.JselForm()).valid();
    }

    //Seta a validação no campo (campo, configuração da validação, )
    vl.SetRule = function (jSel, rules) {
        var ob = $(jSel);
        ob.rules("remove");
        ob.rules("add", rules);
    }

    //Objeto de configuração das validações
    vl.ItemValidation = function (jSel, rule) {
        this.JSel = jSel; //identificação o campo
        this.Rule = rule; //validações do campo
    }

    //Adiciona os rules e retorna a validação
    vl.AddAndValid = function (arrayVlRules) {
        for (var i = 0; i < arrayVlRules.length; i++) {
            vl.SetRule(arrayVlRules[i].JSel, arrayVlRules[i].Rule);
        }

        return vl.Valid();
    }

    //Erro na validação
    vl.Error = function () {
        alert('Erro na sintaxe da validação');
        return false;
    }

    //Validação para exibir as mensagens próximas ao campo
    vl.ValidateForm = function (arrayVlRules, idForm) {
        try {
            vl.FormID = idForm;
            vl.Init();
            return vl.AddAndValid(arrayVlRules);
        }
        catch (e) {
            return vl.Error();
        }
    }

    //Validação para exibir as mensagens em um sumário
    vl.ValidateFormSum = function (jSelSum, arrayVlRules, idForm) {
        try {
            vl.FormID = idForm;
            vl.InitSum(jSelSum);
            return vl.AddAndValid(arrayVlRules);
        }
        catch (e) {
            return vl.Error();
        }
    }

    //Validação con configuração manual das opções de validação
    vl.ValidateFormOptions = function (options, arrayVlRules, idForm) {
        try {
            vl.FormID = idForm;
            vl.InitOptions(options);
            return vl.AddAndValid(arrayVlRules);
        }
        catch (e) {
            return vl.Error();
        }
    }

//##### Simula enumerador do navegador
function ENavegador() {
    var userAgent;
    userAgent = window.navigator.userAgent.toLowerCase();

    if (userAgent.indexOf('firefox') > -1) return 'FF';
    if (userAgent.indexOf('msie') > -1) return 'IE';
    if (userAgent.indexOf('chrome') > -1) return 'CH'
}

//##### Efeito Marquee
function AndaScroll2(ObjID,NScript)
{
    var Objeto=document.getElementById(ObjID)
    if (NScript==0) Objeto.scrollAmount=0;
    if (NScript==1) Objeto.scrollAmount=1;
}

//##### Grava os cliques do mercado livre
function LogClick(ItemID)
{
    var ifmMerc=document.getElementById("ifrLogMercado");
    ifmMerc.src=StrDir(Diretorio) + "scrStatsClickMercado.asp?ItemID=" + ItemID;    
}

//##### MensagePadrão
function MensagemNavegador(mensagem)
{
    alert(mensagem);
}

//##### Menu Suspenso, Efeitos Alpha
    function ExibeMenuSuspenso(ObjID)
    {
        var ObjAt=$('#' + ObjID);

        if ((ObjAt.css("display") == "none")) {
            //### Pode ser chamado não apenas por menus
            try
                { OcultaMenus(); }
            catch (e)
                { }

            ObjAt.hide();
            ObjAt.fadeToggle('fast');
        }
        else {
            //### Tenta anular o relógio para ocultar
            try
                { clearTimeout(ExeTime2); }
            catch (e)
                { }
        }
    }
    
    //##### Array com os ids dos objetos
    function ArrayMenusIds()
    {
        var menusIDs=new Array();
        menusIDs[0]='DivMSSkate';
        menusIDs[1]='DivMSJogos';
        menusIDs[2]='DivMSSkoito';
        
        return menusIDs;
    }
    
    //##### Oculta todos os menus
    function OcultaMenus()
    {
        var objetos=ArrayMenusIds();
        var nObjetos=objetos.length
        for(var voltas=0; voltas<nObjetos; voltas++)
            document.getElementById(objetos[voltas]).style.display="none";
    }

    function OcultaMenuSuspenso(ObjID)
    {
        ExeTime2=setTimeout("OcultaMenuSuspensoCod('" + ObjID + "');",500)
    }

    function OcultaMenuSuspensoCod(ObjID)
    {
        document.getElementById(ObjID).style.display="none";
    }

//##### Metodos para os usuarios
var UsuarioService={};
    //##### Utilizado no cadastro de novo usuario
    UsuarioService.Cadastrar=function()
    {
        var url=StrDir(Diretorio) + 'integracao/ajIntegracaoUsuario.asp';
        ExibeDivNovaJanela('divNovaJanela',1,'&NDir=' + Diretorio, url);
    }
    
    //##### Utilizado para exibir os dados do usuario
    UsuarioService.ExibirDetalhes = function(usuarioID) {
        ExibeDivNovaJanela('divNovaJanela', 1, usuarioID + '&NDir=' + Diretorio, StrDir(Diretorio) + 'ajDetalheUsuario.asp');
    }
    
    //##### Convida o usuario para bate papo
    UsuarioService.ConvidarBatePapo=function(UsuarioIDConvite)
    {        
        ExecutaAjax('divAtualizaUsuario',
            UsuarioIDConvite + "&UIDP=" + UsuarioIDConvite + "&ts=1",
            StrDir(Diretorio) + "ajScrBatePapo.asp");
    }
    
    //##### Adiciona o usuario em favoritos
    UsuarioService.AddFavoritos=function(usuarioID)
    {
        ExecutaAjax('divAtualizaUsuario',
            "&UIDP=" + usuarioID + "&ts=6",
            StrDir(Diretorio) + "ajScrBatePapo.asp");
    }
    
    //##### Remove o usuario dos favoritos
    UsuarioService.DelFavoritos=function(usuarioID)
    {
        ExecutaAjax('divAtualizaUsuario',
            "&UIDP=" + usuarioID + "&ts=7",
            StrDir(Diretorio) + "ajScrBatePapo.asp");
    }
    
    //##### Atualiza o detalhe do usuario se estiver aberto
    UsuarioService.AtualizaDetalheUsuario=function(usuarioID)
    {
        var btnAddDelFavorito=document.getElementById('btnAddDelFavorito' + usuarioID.toString());
        
        if (btnAddDelFavorito!=null)
            UsuarioService.ExibirDetalhes(usuarioID);
    }

    //##### Abre a sessão UL
    UsuarioService.Go = function(crytpoValue) {
        ExibeDivNovaJanela('divNovaJanela', '0', '0', '0');
        //Corrige o erro do chrome para o location de outro frame
        var dirCurrent = ((ENavegador() == 'CH') && (Diretorio == 1)) ? StrDir(2) : StrDir(Diretorio);
        top.window.location = dirCurrent + "scrLogin.asp?cv=" + crytpoValue.toString();
    }

//namespace para ajax
var aj = {};

    //Exibe o update progress
    aj.Start = function () {        
    }

    //Oculta o update progress
    aj.Stop = function () {        
    }

    //Erro na chamada ajax
    aj.Error = function (ex) {
        aj.Stop();
    }

    //Chamada ajax padrão, chama o método handlerNameData passando como parametro o resultado da requisição
    aj.CallJson = function (url, requestParams, handlerNameData) {
        if (handlerNameData != null)
            aj.Start();

        $.ajax({
            type: "POST",
            url: url,
            data: requestParams,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (handlerNameData != null) {
                    aj.Stop();
                    handlerNameData(data);
                }
            },
            error: aj.Error
        });
    }

    //Chamada ajax padrão, chama o método handlerNameData passando como parametro o resultado da requisição
    aj.CallJsonMVC = function (url, requestParams, handlerNameData) {
        if (handlerNameData != null)
            aj.Start();

        $.ajax({
            type: "POST",
            url: url,
            data: requestParams,
            success: function (data) {
                if (handlerNameData != null) {
                    aj.Stop();
                    handlerNameData(data);
                }
            },
            error: aj.Error
        });
    }

    //Chamada personalizada
    aj.CallOptions = function (ajaxOptions, showProgress) {
        if (showProgress)
            aj.Start();

        $.ajax(ajaxOptions);
    }
    
//##### Função de Ajax
function ExecutaAjax(DivID, scrParametros, scrPagina) {
    // ### DivID - ID do Objeto
    // ### scrParametros Parâmetros do div
    // ### Endereço da página

    $('#' + DivID).html('Carregando...');
    var ajaxOptions = {
        type: "POST",
        url: scrPagina + "?id=" + scrParametros,
        data: {},
        contentType: "text/html; charset=utf-8",
        dataType: "html",
        success: function (data) {
            $('#' + DivID).html(data);
        }
    };
    aj.CallOptions(ajaxOptions, false);
}

// ##### Utilizado para o com sinal de mais e menos
function ExibeDivSinalDeMais(DivID,imgDivID,scrParametros,scrPagina){
    // ### DivID - ID do Objeto, scrParametros - Parâmetros do div, scrPagina -Endereço da página
    
    var objDiv=document.getElementById(DivID);
    var objImagem=document.getElementById(imgDivID);
    
    if (objDiv.style.display=='block'){
        objDiv.style.display='none';
        objImagem.src='/imagens/sinalmais.gif';
    }
    else{
        objDiv.style.display='block';
        objImagem.src='/imagens/sinalmenos.gif';
        objDiv.innerHTML="Carregando";
        ExecutaAjax(DivID,scrParametros,scrPagina);
    }
}

// ##### utilizado para o div nova janela
function ExibeDivNovaJanela(DivID,NTipo,scrParametros,scrPagina)
{
    //### 1 - Exibe, 2 - Oculta
    var ObjDiv = $('#' + DivID);
    if (NTipo==1)
    {
        ObjDiv.hide();
        ObjDiv.slideToggle('fast')
        
        ObjDiv[0].style.top=document.body.scrollTop;
        
        ExiOcuSelect(0);
        
        ExecutaAjax('divAtualizaNJ',scrParametros,scrPagina);
    }
    else
    {
        ObjDiv.hide();
        document.getElementById("divAtualizaNJ").innerHTML="Carregando";
        
        ExiOcuSelect(1);
    }
}

//##### Maximiza e restaura o Nova Janela
function MaxMinNovaJanela() {
    var AlturaDiv, LarguraDiv, AlturaDivAtualiza, LarguraDivAtualiza, LarguraDivAtualizaSombra;
    var Altura = parseInt(document.body.clientHeight) - 50;
    var Largura = parseInt(document.body.clientWidth) - 40;
    var navegador = ENavegador();

    var divTituloNJ = document.getElementById("divTituloNJ");
    var divAtualizaNJ = document.getElementById("divAtualizaNJ");
    var divNJSombraInferior = document.getElementById("divNJSombraInferior");
    var divNJSombraDireita = document.getElementById("divNJSombraDireita");
    var lblMaxMin = document.getElementById("lblMaxMin");
    var divAtualizaNJSombraDireita = document.getElementById("divAtualizaNJSombraDireita");
    var divSeparaAtualizaNJ = document.getElementById("divSeparaAtualizaNJ");

    if (divTituloNJ.style.width == Largura + "px") {
        AlturaDiv = "405px"; //Altura Normal
        LarguraDiv = "622px"; //Largura Normal

        if (navegador == "FF") //Resolve o problema da largura e altura do ff
        {
            AlturaDivAtualiza = '403px';
            LarguraDivAtualiza = '620px';
        }
        else {
            AlturaDivAtualiza = AlturaDiv;
            LarguraDivAtualiza = LarguraDiv;
        }

        LarguraDivAtualizaSombra = "637px";

        lblMaxMin.innerHTML = "#";
    }
    else {
        AlturaDiv = Altura + "px";
        LarguraDiv = Largura + "px";

        if (navegador == "FF") //Resolve o problema da largura e altura do ff
        {
            AlturaDivAtualiza = (Altura - 2) + "px";
            LarguraDivAtualiza = (Largura - 2) + "px";
        }
        else {
            AlturaDivAtualiza = AlturaDiv;
            LarguraDivAtualiza = LarguraDiv;
        }

        LarguraDivAtualizaSombra = (Largura + 15) + "px";

        lblMaxMin.innerHTML = "_";
    }

    divSeparaAtualizaNJ.style.width = LarguraDivAtualizaSombra;
    divTituloNJ.style.width = LarguraDiv;
    divAtualizaNJSombraDireita.style.width = LarguraDivAtualizaSombra;
    divAtualizaNJ.style.width = LarguraDivAtualiza;
    divAtualizaNJ.style.height = AlturaDivAtualiza;

    divNJSombraInferior.style.width = LarguraDiv;
    divNJSombraDireita.style.height = AlturaDiv;

    document.getElementById('divNovaJanela').style.top = document.body.scrollTop;
}

//Exibe a div confore a posição do ponteiro do mouse
var DivPosicaoMouse={};

    //###### Exibe conforme a posição do mouse
    DivPosicaoMouse.PubMouseOverOut=function(strDiv, TipoScript, e)
    {
        //### TipoScript 0 - Oculta, 1 Exibe
        
        //### Limpa o Loop de ocultar
        try {clearTimeout(LoopVerifica);}
        catch(a){}
        
        var DivID=document.getElementById(strDiv);
    
        if(TipoScript == 0)
        {
            LoopVerifica=setTimeout("PubOnMouseOut('" + strDiv + "');",1000);
            DivID.onmouseover=function()
            {
                clearTimeout(LoopVerifica);
            }
            DivID.onmouseout=function()
            {
                LoopVerifica=setTimeout("PubOnMouseOut('" + strDiv + "');",1000);
            }
        }
        
        if(TipoScript == 1)
        {
            if (DivID.style.display != "block")
            {
                //### Guarda as Posições
                var posx = 0;
                var posy = 0;
                if (!e) var e = window.event;
                if (e.pageX || e.pageY)
                {
                    posx = e.pageX;
                    posy = e.pageY;
                }
                else if (e.clientX || e.clientY)
                {
                    posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
                    posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
                }
                
                DivID.style.left = posx + 40 + "px";
                DivID.style.top = posy - 100 + "px";
                DivID.style.display = "block";
                DivID.innerHTML = "Testando";
            }
        }
    }
    
    //##### Complementa a função PubMouseOverOut, oculta o div
    DivPosicaoMouse.PubOnMouseOut=function(strDiv)
    {
        var DivID=document.getElementById(strDiv);
        DivID.style.display = "none";
    }

//##### Apenas referente a textos
//##### Caracteres para Remover
var RetiraCaracteres = {};
    RetiraCaracteres.CaracterRemover = function () {
        var caracter = new Array();
        caracter[0] = " ";
        caracter[1] = "&";
        return caracter;
    }

    RetiraCaracteres.Retira = function (strMensagem) {
        var remover = RetiraCaracteres.CaracterRemover();
        var nObjetos = remover.length;

        for (var voltas = 0; voltas < nObjetos; voltas++) {
            alterar = '-;' + remover[voltas].charCodeAt(0).toString() + ';-';
            strMensagem = strMensagem.split(remover[voltas].toString()).join(alterar); //replace(remover[voltas].toString(), alterar);
        }

        return strMensagem;
    }

//##### Salva o texto Selecionado
function strTextoSelecionado(ObjID) {
    var SelTexto;
    var Navegador = navigator.appName;
    if (Navegador == "Microsoft Internet Explorer") {
        SelTexto = document.selection.createRange().text;
    }
    else {
        var inicio = document.getElementById(ObjID).selectionStart;
        var fim = document.getElementById(ObjID).selectionEnd;
        var SelTexto = document.getElementById(ObjID).value.substring(inicio, fim);
    }
    return SelTexto;
}

//##### Utilizado para as formatações simples
function FormatText(ObjID, strTag, strPrompt) {
    //### ObjID - Objeto que vai receber a instrução
    //### strTag - Identificador da tag a ser alterada
    //### strPrompt - Mensagem que vai aparecer ao usuario

    var SelText = strTextoSelecionado(ObjID);
    var Obj = document.getElementById(ObjID);
    if (strPrompt == '') { strPrompt = 'Digite o texto a ser formatado' }
    if (SelText != '') {
        Obj.value = Obj.value.replace(SelText, '[' + strTag + ']' + SelText + '[/' + strTag + ']');
    }
    else {
        SelText = prompt(strPrompt, "Texto");
        if (SelText != null) { Obj.value += ' ' + '[' + strTag + ']' + SelText + '[/' + strTag + ']' + ' '; }
    }
    Obj.focus();
}

//##### Utilizado para as formatações com dois prompts
function FormatText2(ObjID, strTag) {
    //### ObjID - Objeto que vai receber a instrução
    //### strTag - Identificador da tag a ser alterada
    //### strPrompt - Mensagem que vai aparecer ao usuario

    var strPrompt;
    var strPromptText;

    if (strTag == 'lurl') {
        strPrompt = 'Digite a url do link.'
        strPromptText = 'http://'
    }
    if (strTag == 'lema') {
        strPrompt = 'Digite o email.'
        strPromptText = 'mailto:'
    }
    if (strTag == 'imag') {
        strPrompt = 'Digite a url da imagem.'
        strPromptText = 'http://'
    }

    var Obj = document.getElementById(ObjID);
    var SelText = strTextoSelecionado(ObjID);

    var strUrl = prompt(strPrompt, strPromptText);

    if (strTag == 'imag') {
        Obj.value += ' ' + '[' + strTag + ':"' + strUrl + '"]';
    }
    else {
        if (SelText != '') {
            Obj.value = Obj.value.replace(SelText, '[' + strTag + ':"' + strUrl + '"]' + SelText + '[/' + strTag + ']');
        }
        else {
            SelText = prompt('Digite o texto');
            if (SelText != null) { Obj.value += ' ' + '[' + strTag + ':"' + strUrl + '"]' + SelText + '[/' + strTag + ']' + ' '; }
        }
    }
    Obj.focus();
}

//##### Utilizado para links internos com javascript
function FormatText3(ObjID, strTag, strLink) {
    var Obj = document.getElementById(ObjID);
    var strLink2 = strLink.replace("mini", "foto")
    Obj.value += ' ' + '[lur2:"javascript:ExibeDivNovaJanela(|NovaJanela|,|1|,|' + strLink2 + '|,|../noticias/ajExibeImagem.asp|)"]' + '[imag:"' + strLink + '"]' + '[/lur2]';
}

//##### Utilizado para as formataçãoes com parametros de tags
function FormatTextINP(ObjID, strTag, strPrompt, strValor) {
    //### ObjID - Objeto que vai receber a instrução
    //### strTag - Identificador da tag a ser alterada
    //### strPrompt - Mensagem que vai aparecer ao usuario
    //### strValor - Parametros da tag de formatação

    var Obj = document.getElementById(ObjID);
    var SelText = strTextoSelecionado(ObjID);

    if (strPrompt == '') { strPrompt = 'Digite o texto a ser formatado' }
    if (SelText != '') {
        Obj.value = Obj.value.replace(SelText, '[' + strTag + ':"' + strValor + '"]' + SelText + '[/' + strTag + ']');
    }
    else {
        SelText = prompt(strPrompt, "Texto");
        if (SelText != null) { Obj.value += ' ' + '[' + strTag + ':"' + strValor + '"]' + SelText + '[/' + strTag + ']' + ' '; }
    }
    Obj.focus();
}

function Emoticon(ObjID, NSmiley) {
    var Obj = document.getElementById(ObjID);
    Obj.value += " -:img" + MaisCaracteres(NSmiley, 2) + ":- ";
    Obj.focus()
}

function MaisCaracteres(strNumero, nCaracteres) {
    while (strNumero.length < nCaracteres) {
        strNumero = '0' + strNumero;
    }
    return strNumero;
}

function inpForm() {
    document.getElementById("hdnTipoForm").value = '0';
    document.getElementById("Enviar").click();
}

function VerificaNulo(ObjetoID) {
    if (document.getElementById(ObjetoID).value == "") return true;
    else return false;
}

function ComparaCaixas(ObjetoID, ObjetoID2) {
    if (document.getElementById(ObjetoID).value == document.getElementById(ObjetoID2).value) return false;
    else return true
}

function VerificaNCaracters(objetoID, objetoIDNCar, NMaximo) {
    //### Incluir em onkeyup="return ..."

    objetoID = document.getElementById(objetoID);
    if (objetoID.value.length <= NMaximo)
        document.getElementById(objetoIDNCar).innerHTML = objetoID.value.length;
    else {
        objetoID.value = objetoID.value.substring(0, NMaximo);
        return false;
    }
}

//#####  Utilizado para exibir mensagens de erro e destacar labels dos campos
function MensagemErroFormulario(strMensagem, strObjeto) {
    var lblErro = document.getElementById('lbl' + strObjeto);
    lblErro.innerHTML = "*";
    MensagemNavegador(strMensagem);
}

//##### Comentários
//##### Remove a formatação de erro das texts
function ResetaLabelsValidacao(objetoIDs) {
    var nObjetos = objetoIDs.length;
    var objeto;
    for (var voltas = 0; voltas < nObjetos; voltas++) {
        objeto = document.getElementById('lbl' + objetoIDs[voltas]);
        objeto.innerHTML = "&nbsp;";
    }
}

//##### Ids dos Objetos de validação
function ArrayObjetosValidar(codigo) {
    var txtObjetosValidar = new Array();
    txtObjetosValidar[0] = "txtComentarioNome" + codigo;
    txtObjetosValidar[1] = "txtComentarioEmail" + codigo;
    txtObjetosValidar[2] = "txtComentarioComentario" + codigo;
    return txtObjetosValidar;
}

//##### Mensagens de erro para cada objeto
function ArrayMensagensObjetos() {
    var mensagem = new Array();
    mensagem[0] = 'Favor preencher o campo nome.';
    mensagem[1] = 'Favor preencher o campo e-mail.';
    mensagem[2] = 'Favor preencher o campo comentário.';
    return mensagem;
}

//##### Valida o formulário de comentários
function ValidaComentario(codigo, logado) {
    var txtObjetosValidar, mensagem, nObjetosValidar;

    if (logado) {
        txtObjetosValidar = new Array();
        mensagem = new Array();

        txtObjetosValidar[0] = "txtComentarioComentario" + codigo;
        mensagem[0] = 'Favor preencher o campo comentário.';
        nObjetosValidar = 1;
    }
    else {
        txtObjetosValidar = ArrayObjetosValidar(codigo);
        mensagem = ArrayMensagensObjetos();
        nObjetosValidar = txtObjetosValidar.length;
    }

    ResetaLabelsValidacao(txtObjetosValidar);

    for (var voltas = 0; voltas <= (nObjetosValidar - 1); voltas++) {
        if (VerificaNulo(txtObjetosValidar[voltas])) {
            MensagemErroFormulario(mensagem[voltas], txtObjetosValidar[voltas]);
            return false;
        }
    }
}

//##### Limpa as caixas de texto
function ResetaObjetosValidacao(objetoIDs) {
    var nObjetos = objetoIDs.length;
    var objeto;
    for (var voltas = 0; voltas < nObjetos; voltas++) {
        objeto = document.getElementById(objetoIDs[voltas]);
        objeto.value = "";
    }
}

//##### Executa o ajax para exibir os comentários
function AtualizaComentarios(codigo, tipoComentario) {
    var divAtualizaComentarioID;

    divAtualizaComentarioID = "divAtualizaComentarios" + codigo;
    ExecutaAjax(divAtualizaComentarioID,
            codigo + '&hdnTipoComentario' + codigo + '=' + tipoComentario + '&ts=3&NDir=' + Diretorio,
            StrDir(Diretorio) + 'scrComentarios.asp');
}

function FinalizaNovoComentario(codigo, tipoComentario, logado) {
    var txtObjetosValidar;

    MensagemNavegador('Obrigado por adicionar o seu comentário!');
    AtualizaComentarios(codigo, tipoComentario);

    if (logado) {
        txtObjetosValidar = new Array();
        txtObjetosValidar[0] = "txtComentarioComentario" + codigo;
        ResetaObjetosValidacao(txtObjetosValidar);
    }
    else
        ResetaObjetosValidacao(ArrayObjetosValidar(codigo));
}

//Namespace para slide
var sl = {};

    sl.AutoSlide = ''; //Intervalo do slide automático
    sl.IDsElements = new Array(); //Id dos elementos do slide
    sl.IntervalScroll = ''; //Intervalo para o scroll automático do carrossel

    //Reseta os botoes de navegação
    sl.ResetNav = function (jSel) {
        $(jSel + " .left").unbind("click");
        $(jSel + " .right").unbind("click");
    }

    //Configura a navegação
    sl.ConfigNav = function (jSel, posCurr) {
        $(jSel + " .left").click(function () {
            var posLeft = (posCurr == 0) ? sl.IDsElements.length - 1 : posCurr - 1;
            sl.ShowElement(jSel, posCurr, posLeft);
        });

        $(jSel + " .right").click(function () {
            var posRight = (posCurr == (sl.IDsElements.length - 1)) ? 0 : posCurr + 1;
            sl.ShowElement(jSel, posCurr, posRight);
        });
    }

    //Exibe o elemento
    sl.ShowElement = function (jSel, posCurr, posTo) {
        sl.SetInterval(jSel); //Garante que não vai ser executado durante a animação
        var obHide = $(jSel + ' .slideElementSel' + sl.IDsElements[posCurr]);
        var obShow = $(jSel + ' .slideElementSel' + sl.IDsElements[posTo]);
        sl.ResetNav(jSel);

        $(jSel).attr("idSl", posTo.toString()); //Indica o posCurr

        obHide.find('.slideInfoZone').show(); //Confirma a exibição
        obHide.find('.slideInfoZone').slideToggle('slow', function () { //Oculta o texto com animação
            obHide.fadeOut('slow', function () { //Oculta o slide
                obShow.find('.slideInfoZone').hide(); //confirma que está oculto
                obShow.fadeIn('slow', function () {//Exibe o slide
                    obShow.find('.slideInfoZone').slideToggle('slow', function () {//exibe o texto
                        sl.ConfigNav(jSel, posTo);
                    });
                });
            });
        });
    }

    //Aciona a navegação para o próximo slide
    sl.NavAuto = function (jSel) {
        $(jSel + " .right").click();
    }

    //Configura o intervalo para a navegação automática
    sl.SetInterval = function (jSel) {
        clearInterval(sl.AutoSlide);
        sl.AutoSlide = setInterval('sl.NavAuto("' + jSel + '")', 10000);
    }

    //Execução do mouseOver da imagem do carrossel
    sl.ThumbMouseOver = function (jSel, jSelThumb) {
        var thumb = $(jSelThumb);
        thumb.find('.thumbnail').fadeTo('fast', 0.9);
        var a = $(jSel + " .carouselContainer .label .link");
        a.attr('href', thumb.attr('href')); //altera o link
        a.text(thumb.find('.thumbnail').attr('alt')); //altera a descrição do link

        var pos = parseInt(thumb.attr('id')) + 1;
        $(jSel + " .carouselContainer .label .number .pos").text(pos.toString()); //altera o numero da imagem
        $(jSel + " .carouselContainer .label .number").show();
    }

    //Execução do mouse out
    sl.ThumbMouseOut = function (jObj) {
        jObj.find('.thumbnail').fadeTo('fast', 0.5);
    }

    //Adiciona a imagem no carrocel de imagens
    sl.AddThumb = function (jSel, objSlideElement, posArray, thumbs) {
        var thumb = $(objSlideElement).find('.imgThumbnail');
        var carWidth = parseInt(thumb.attr('totalWidth')); //soma o tamanho para todas imagens
        thumb.attr('id', posArray.toString());
        thumb.remove(); //remove do html            
        thumbs.append(thumb); //adiciona no carrossel

        thumb = $(jSel + ' .carouselInner #' + posArray.toString()); //Resgata somente a imagem adicionada
        thumb.bind('mouseover', function () {
            setTimeout(function () { sl.ThumbMouseOver(jSel, thumb.selector); }, 0);
        });
        thumb.bind('mouseout', function () {
            setTimeout(function () { sl.ThumbMouseOut(thumb); }, 0);
        });
        thumb.bind('click', function () {
            var posCurr = parseInt($(jSel).attr("idSl"));
            sl.ShowElement(jSel, posCurr, posArray);
        });

        return carWidth;
    }

    //Retorna a velocidade do scroll do carrossel
    sl.GetSpeedScroll = function (area, pos) {
        var percent = pos / area * 100;
        if (parseInt(percent) <= 30) {
            return (30 - percent) * (-1);
        }
        else if (parseInt(percent) >= 70) {
            return (70 - percent) * (-1);
        }
        else
            return 0;
    }

    //Encerra o scroll automático
    sl.ClearIntervalScroll = function () {
        clearInterval(sl.IntervalScroll);
    }

    //Altera o scroll do carrossel
    sl.ScrollCar = function (jObj, speed) {
        var scrLeft = jObj.scrollLeft();
        var scrMax = jObj[0].scrollWidth - parseInt(jObj.innerWidth());

        if (((speed > 0) && (scrLeft < scrMax)) || ((speed < 0) && (scrLeft > 0))) {
            jObj.scrollLeft(scrLeft + speed);
            sl.SetIntervalScroll(jObj, speed);
        }
        else
            sl.ClearIntervalScroll();
    }

    //Ativa o scroll automático
    sl.SetIntervalScroll = function (jObj, speed) {
        sl.ClearIntervalScroll();
        sl.IntervalScroll = setInterval(function () {
            sl.ScrollCar(jObj, speed);
        }, 10);
    }

    //Configura o carrossel de imagens
    sl.CongifCarousel = function (jSel, thumbs, carWidth) {
        thumbs.css('width', carWidth.toString() + 'px');

        $(jSel + " .carouselWrapper").mousemove(function (e) {
            var objCoords = ut.PosObject(this);
            var x = e.pageX - objCoords.x;

            var speed = sl.GetSpeedScroll(parseInt($(this).outerWidth(true)), x);
            if (speed != 0) {
                sl.SetIntervalScroll($(this), speed);
            }
            else
                sl.ClearIntervalScroll();
        });

        $(jSel + " .carouselWrapper").mouseout(function (e) {
            sl.ClearIntervalScroll();
        });

        $(jSel + " .carouselBtn a").click(function () {
            $(jSel + " .carousel").slideToggle('slow');
            $(jSel + " .carouselContainer .label .number .total").text('/' + sl.IDsElements.length.toString() + ':');
            $(jSel + " .carouselContainer .label .number").hide();
        });
    }

    //Inicializa e configura a galeria
    sl.IniAssync = function (jSel, showCar) {
        var posArray = 0;
        var carWidth = 0;
        var thumbs = $(jSel + ' .carouselInner');
        $(jSel + " .slideElementSel").each(function () {
            var id = ($(this).attr('id') == "" || $(this).attr('id') == "0") ? posArray.toString() : $(this).attr('id');
            $(this).addClass('slideElementSel' + id);
            sl.IDsElements[posArray] = id;

            carWidth += sl.AddThumb(jSel, this, posArray, thumbs);

            posArray++;
        });

        $(jSel + ' .slideElementSel' + sl.IDsElements[0]).show();
        sl.ConfigNav(jSel, 0);
        sl.SetInterval(jSel);

        if (showCar)
            sl.CongifCarousel(jSel, thumbs, carWidth);
    }

    //Chamada assincrona da inicianização
    sl.Init = function (jSel) {
        setTimeout(function () { sl.IniAssync(jSel, true); }, 0);
    }

    //Configura para exibir ou não exibir o carrossel
    sl.InitShowCar = function (jSel, showCar) {
        setTimeout(function () { sl.IniAssync(jSel, showCar); }, 0);
    }


    //Namespace para a vitrine do mercado livre
    var vtm = {
        ConfigHeader: function (jSel) {
            $(jSel + " .divHeader .item a").each(function () {
                $(this).click(function () {
                    $(jSel + " .vitrine .divCommerceContent .progress").show();
                    $(jSel + " .divHeader .item a").each(function () {
                        $(this).removeClass("select");
                    });
                    $(this).addClass("select");
                    vtm.ClickHeader($(this).html(), jSel);
                });
            });

			vtm.AddGATrackLinks(jSel);
		},
		TrackRefresh: function () {
			_gaq.push(['_trackPageview', '/refreshVitrine.html']);
		},
		TrackProduto: function () {
			_gaq.push(['_trackPageview', '/produtoML.html']);
		},
		AddGATrackLinks: function (jSel) {
			$(jSel + " .vitrineHeader .divHeader .item a").click(function () {
				vtm.TrackRefresh();
			});
			$(jSel + " .divCommerceNav .divNavItem a").click(function (e) {
				vtm.TrackRefresh();
			});
			$(jSel + " .divCommerceContent .divPainel li a").click(function (e) {
				vtm.TrackProduto();
			});
		},
        //carrega a vitrine com o tipo selecionado
        ClickHeader: function (tipoVitrine, jSel) {
            var params = { id: tipoVitrine, jSel: jSel };
            aj.CallJsonMVC("/ajVitrine.asp", params, vtm.CallClickHeader);
        },
        CallClickHeader: function (data) {            
            var htmlVitrine = $(data);
            var htmlVitrineContent = htmlVitrine.find(".vitrine").html();
            var jSel = htmlVitrine.find("#jSel").html();
            $(jSel + " .vitrine").html(htmlVitrineContent);
            $(jSel + " .vitrine").configVitrine({ WidthDefault: 750 });
            $(jSel + " .vitrine .divCommerceContent .progress").hide();
        }
    };

    //Utilitário para o google Gmap
    var SMap = {
        Markers: new Array(),
        Map: '',

        //Adiciona o mapa na tela
        Init: function (divMapID) {
            SMap.Map = SMap.GetGMapDefault(divMapID);
        },

        //Adiciona o mapa na tela com a localização exata
        //{Latitude, Logitude, Zoom}
        InitOptions: function (divMapID, options) {
            SMap.Map = SMap.GetGMap(divMapID, options.Latitude, options.Longitude, options.Zoom);
        },

        //Adiciona a lista de marcadores jSon
        AddMarkers: function (markers) {
            for (var i = 0; i < markers.length; i++) {
                var center = new google.maps.LatLng(markers[i].Localizacao.Latitude, markers[i].Localizacao.Longitude);
                SMap.Markers.push(SMap.AddMarker(markers[i].Titulo, center, SMap.Map, markers[i].Descricao));
            }
        },

        //Adiciona o mapa padrão
        GetGMapDefault: function (divMapID) {
            return SMap.GetGMap(divMapID, -15.749963, -49.482422, 4);
        },

        //gera o mapa pela posição
        GetGMap: function (divMapID, latitude, logitude, zoom) {
            var center = new google.maps.LatLng(latitude, logitude);
            var mapOptions = {
                zoom: zoom,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                center: center,
                navigationControlOptions: {
                    style: google.maps.NavigationControlStyle.SMALL
                }
            };
            return new google.maps.Map(document.getElementById(divMapID), mapOptions);
        },

        //Atualiza a posição do mapa
        UpdMapPosition: function (latitude, longitude, zoom) {
            //SMap.Map.setCenter(new google.maps.LatLng(latitude, longitude), zoom);
            SMap.Map.panTo(new google.maps.LatLng(latitude, longitude));
            setTimeout(function () {
                SMap.Map.setZoom(zoom)
            }, 500);
        },

        //Adiciona um novo marcador
        AddMarker: function (title, latLng, map, htmlInfo) {
            var marker = new google.maps.Marker({
                map: map,
                draggable: false,
                animation: google.maps.Animation.DROP,
                position: latLng,
                title: title,
                clickable: true
            });

            var infowindow = new google.maps.InfoWindow({
                content: htmlInfo
            });

            google.maps.event.addListener(marker, 'click', function () {
                infowindow.open(map, marker);
            });

            return marker;
        },

        //remove todos os marcadores
        DelAllMarkers: function () {
            while (SMap.Markers.length > 0) {
                var marker = SMap.Markers.pop();
                marker.setMap(null);
            }
        },

        //Retorna um novo evento ao objeto selecionado
        AddEvent: function (toObject, eventName, handler) {
            return google.maps.event.addListener(toObject, eventName, handler);
        },

        //Remove o evento adicionado
        DelEvent: function (event) {
            google.maps.event.removeListener(event);
        }
    };
