﻿/************************************************************************************
*                                                                                   *
*                      Classe que controla a página header.ascx                     *
*                                                                                   *
************************************************************************************/

function cHeader() {
    //Vairáveis de Uso do AutoComplete.
    this.cAutoCompleteReceita = new cAutoCompleteReceita();

    var objDataViewImage;
    var objAutoComplete;
    var intInterval = 0;
    var e_aux;
    var objDataViewReceita;
    var intReceitaSelected = 0;

    //Método que Verifica a Busca do Blog.
    this.verifyBlogBusca = function() {
        //Verifica a Quantidade de Caracteres Digitados.
        if (document.getElementById("blogMenuLateral_txtBlogBusca").value.length <= 3) {
            document.getElementById("lblBlogBuscaError").innerHTML = "Informe ao menos 3 caracteres para a busca!";
            document.getElementById("blogMenuLateral_txtBlogBusca").focus();
            return false;
        }
    }

    // Funções de TRIM para javascript
    function trim(str, chars) {
        return ltrim(rtrim(str, chars), chars);
    }

    // limpa os caracteres à esquerda deixando a string limpa de " ","\t","\n","\r","\0","\x0B"
    function ltrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    }

    // limpa os caracteres à direira deixando a string limpa de " ","\t","\n","\r","\0","\x0B"
    function rtrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
    }

    this.mostrarAtencao = function() {

        //Exibe o Modal de Atenção.
        $.blockUI({ message: $('#container_modal_blog_atencao_busca'),
            css: { top: ($(window).height() - 315) / 2 + 'px',
                left: ($(window).width() - 475) / 2 + 'px'
            }
        });
    }

    this.hideAtencao = function() {
        $.unblockUI();
    }

    //Método que Chama a Busca de Receita Detalhada.
    this.getReceitaDetalhada = function() {

        // Atribuo o valor para a variavel
        var campo = document.getElementById("txtBusca").value;

        // Limpeza do Campo
        campo = trim(campo, " ");

        // verifica se existe espaços vazios
        if (campo == "") {
            this.mostrarAtencao();
        }
        // verifica se o campo esta escrito "Busca por Titulo"
        else if (campo == "Busca por título") {
            this.mostrarAtencao();
        }
        // verifica se o campo tem menos que 3 digitos
        else if (campo.length < 3) {
            this.mostrarAtencao();
        }
        // finalmente busca o que foi digitado
        else {
            //Esconde o Autocomplete.
            var objDvAutoComplete = document.getElementById("dvAutoComplete");
            objDvAutoComplete.style.display = "none";

            //Gera a Url de Busca.
            var strUrl = new String();
            strUrl = "&&param=" + campo + "&&param=0&&param=0&&param=0&&param=&&param=0&&param=&&param=&&param=&&param=&&param=&&param=&&param=";

            try {
                //Chama o Método Anula a Paginação.                    
                Ajinomoto.Site.Interface.controls.header.setPageIndexNull().value;

                //Chama o Método que Codifica a Url.                    
                var strCryptUrl = Ajinomoto.Site.Interface.controls.header.cryptUrl(strUrl).value;
            }
            catch (err) {
                window.location = "erro.aspx?msg=" + err.description;
            }

            //Redireciona para a Tela de Busca.
            window.location = "busca-resultado.aspx?busca=" + strCryptUrl;
        }

        // Zero o Campo
        document.getElementById("txtBusca").value = "Busca por título";
    }

    //Recupera a Galeria de Receita.
    this.getAllReceita = function() {
        try {
            objDataViewReceita = new Ajax.Web.DataTable();
            objDataViewReceita = Ajinomoto.Site.Interface.controls.header.getAllReceita().value;
        }
        catch (err) {
            window.location = "erro.aspx?msg=" + err.description;
        }
    }

    //Chama a Mecânica do AutoComplete de Imagens para Receita.
    this.callAutoCompleteReceita = function(_objAutoComplete, ev) {
        //Recupera a Tecla Digitada.
        if (document.all)
        { e_aux = event.keyCode; }
        else
        { e_aux = ev.which; }

        if (e_aux == 13)
            return;

        //Limpa o Intervalo de Digitação do AutoComplete.
        clearInterval(intInterval);

        //Seta os Dados para Execução do AutoComplete.
        objDataViewImage = objDataViewReceita;
        objAutoComplete = _objAutoComplete;

        //Verifica se o Texto Digitado tem o Tamanho Maior que 3 Caracteres.
        if (objAutoComplete.value.length >= 5) {
            //Invoca a Função de AutoComplete de Imagens para Receita.
            intInterval = window.setInterval(this.getSortDataReceita, 250);

            //Seleciona o ID da Imagem Escolhida.
            intReceitaSelected = cAutoCompleteReceita.IDSelected;
        }
        else {
            var objDvAutoComplete = document.getElementById("dvAutoComplete");
            objDvAutoComplete.style.display = "none";
        }
    }

    //Método que Filtra os Dados Conforme o Texto Digitado.                                                         
    this.getSortDataReceita = function() {
        if (e_aux != 13 && e_aux != 38 && e_aux != 40 && e_aux != 37 && e_aux != 39) {
            objDataViewImage = Ajinomoto.Site.Interface.controls.header.getSortData(objDataViewImage, objAutoComplete.value).value;
            cHeader.cAutoCompleteReceita.objDataTable(objDataViewImage);
            cHeader.cAutoCompleteReceita.objAutoComplete(objAutoComplete);
            cHeader.cAutoCompleteReceita.e(e_aux);
            cHeader.cAutoCompleteReceita.showAutoComplete();
            clearInterval(intInterval);
        }
    }

    //Método que Valida o Login do Usuário.
    this.getLoginUsuario = function() {
        //Variáveis de Uso Local.
        var strLogin = document.getElementById("txtLogin").value;
        var strSenha = document.getElementById("txtSenha").value;

        //Verifica a Obrigatoriedade dos Campos.
        if (strLogin == "") {
            document.getElementById("txtLogin").focus();
            return;
        }

        //Verifica a Obrigatoriedade dos Campos.
        if (strSenha == "") {
            document.getElementById("txtSenha").focus();
            return;
        }

        try {
            //Chama a Função que Valida o Login do Usuário.
            var objDataTable = new Ajax.Web.DataTable();
            objDataTable = Ajinomoto.Site.Interface.controls.header.getLoginUsuario(strLogin, strSenha).value;

            //Verifia se a Autenticação do Usuário é Válida.
            if (objDataTable.Rows.length > 0) {
                cHeader.hideLogin();
                document.getElementById("lblNome").innerHTML = "<b>Bem-vindo! " + objDataTable.Rows[0].NOME + " " + objDataTable.Rows[0].SOBRENOME + "</b>";
                document.getElementById("header_usuario").style.display = "block";
                document.getElementById("lnkLogin").style.display = "none";
                document.getElementById("lnkLogoff").style.display = "block";
            }
            else {
                document.getElementById("login_msg_erro").innerHTML = "Usuário não Cadastrado!";
                document.getElementById("txtLogin").value = "";
                document.getElementById("txtSenha").value = "";
                document.getElementById("txtLogin").focus();
            }
        }
        catch (err) {
            window.location = "erro.aspx?msg=" + err.description;
        }
    }

    //Método que Executa o LogOff do Usuário.
    this.getLogoffUsuario = function() {
        try {
            //Chama a Função que Valida o Login do Usuário.                        
            var blnRetorno = Ajinomoto.Site.Interface.controls.header.getLogoffUsuario().value;

            //Verifica o Retorno.
            if (blnRetorno) {
                document.getElementById("lblNome").innerHTML = "";
                document.getElementById("header_usuario").style.display = "none";
                document.getElementById("lnkLogin").style.display = "block";
                document.getElementById("lnkLogoff").style.display = "none";

                //Redreciona o Usuário para a Home.
                window.location = "default.aspx";
            }
        }
        catch (err) {
            window.location = "erro.aspx?msg=" + err.description;
        }
    }

    //Método que Verifica se o Usuário está Logado.
    this.checkLoginUsuario = function() {
        try {
            //Chama a Função que Valida o Login do Usuário.                        
            var strUserName = Ajinomoto.Site.Interface.controls.header.checkLoginUsuario().value;

            //Verifica o Retorno.
            if (strUserName != "" && strUserName != null) {
                document.getElementById("lblNome").innerHTML = "<b>Bem-vindo! " + strUserName + "</b>";
                document.getElementById("header_usuario").style.display = "block";
                document.getElementById("lnkLogin").style.display = "none";
                document.getElementById("lnkLogoff").style.display = "block";
            }
        }
        catch (err) {
            window.location = "erro.aspx?msg=" + err.description;
        }
    }

    //Método que Exibe a Caixa de Login.
    this.showLogin = function() {
        var objDiv = document.getElementById("container_login");
        var element = document.getElementById("imgLogin");
        var absPosition = new String();
        absPosition = cHeader.getAbsolutePosition(element).toString();

        var absX = new String();
        absX = absPosition.split(",")[0];

        var absY = new String();
        absY = absPosition.split(",")[1];

        absX = absX.replace("(", "");
        absY = absY.replace(")", "");

        objDiv.style.top = absY + "px";
        objDiv.style.left = (parseInt(absX) - 242) + "px";

        document.getElementById("txtLogin").value = "";
        document.getElementById("txtSenha").value = "";
        document.getElementById("login_msg_erro").innerHTML = "&nbsp;";

        $("#" + objDiv.id).slideDown(300);

        setTimeout("cHeader.showLoginCallBack()", 500);
    }

    //Callback da Função que Exibe do Login.
    this.showLoginCallBack = function() {
        //Seta o Focus para o Campo de Login.
        document.getElementById("txtLogin").focus();
    }

    //Método que Esconde a Caixa de Login.
    this.hideLogin = function() {
        var objDiv = document.getElementById("container_login");

        $("#" + objDiv.id).slideUp(300);
    }

    //Método que Exibe o Modal.
    this.showModal = function(strPagina, strWidth, strHeigth) {
        $.blockUI({ message: "<iframe scrolling=\"no\" frameborder=\"0\" style=\"width:" + strWidth + "px;height:" + strHeigth + "px\" src=\"" + strPagina + "\"></iframe>",
            css: { top: ($(window).height() - strHeigth) / 2 + 'px',
                left: ($(window).width() - strWidth) / 2 + 'px',
                width: strWidth
            }
        });
    }

    //Método que Esconde o Modal.
    this.hideModal = function() {
        $.unblockUI();
    }

    //Exibe o Tooltip de Help.            
    this.showHelp = function(e, strID) {
        //Verifica o Browser.
        if (document.all) {
            var intLeft = event.clientX + document.documentElement.scrollLeft;
            var intTop = event.clientY + document.documentElement.scrollTop;
        }
        else {
            var intLeft = e.pageX + document.body.scrollLeft;
            var intTop = e.pageY + document.body.scrollTop;
        }

        //Posiciona o Div de Produtos.
        document.getElementById(strID).style.left = (intLeft) + "px";
        document.getElementById(strID).style.top = (intTop + 20) + "px";
        document.getElementById(strID).style.display = "block";
    }

    //Método que Esconde o Tooltip de Help. 
    this.hideHelp = function(strID) {
        //Esconde o Tootip.
        document.getElementById(strID).style.display = "none";
    }

    //Recupera a Posição Absoluta de Qualquer Elemento.
    this.getAbsolutePosition = function(element) {
        var ret = new cHeader.Point();
        for (;
                element && element != document.body;
                ret.translate(element.offsetLeft, element.offsetTop), element = element.offsetParent
                );

        return ret;
    }

    //Cria os Pontos de Eixo "X" e "Y";
    this.Point = function(x, y) {
        this.x = x || 0;
        this.y = y || 0;
        this.toString = function() {
            return '(' + this.x + ', ' + this.y + ')';
        };
        this.translate = function(dx, dy) {
            this.x += dx || 0;
            this.y += dy || 0;
        };
        this.getX = function() { return this.x; }
        this.getY = function() { return this.y; }
        this.equals = function(anotherpoint) {
            return anotherpoint.x == this.x && anotherpoint.y == this.y;
        };
    }

    //Função de QueryString em Javascript.
    this.QueryString = function(variavel) {
        var variaveis = location.search.replace(/\x3F/, "").replace(/\x2B/g, " ").split("&")
        var nvar

        if (variaveis != "") {
            var qs = []

            for (var i = 0; i < variaveis.length; i++) {
                nvar = variaveis[i].split("=")
                qs[nvar[0]] = unescape(nvar[1])
            }

            return qs[variavel]
        }
        return null
    }
}