﻿if (!Data) {
    var Data = new function () {
        this.wsPath = null;
        this.idTipo = null;
        this.idMarca = null;
        this.idAgrupacionAlimentos = null;
        this.listaFavoritos = null;

        function PintarAlimentoCargado(alimento) {
            var info = $("#Info");
            info.empty();
            //TOOD:alimento.EsFavorito
            var table = '<table cellpadding="0" cellspacing="0" width="100%">';
            table += '<tr><td style="color: #fff; padding: 2px; white-space: normal; background: #000;" colspan="2"><a href="javascript:void(0)" onclick="Data.AccionSwitchFav(this, ' + alimento.Id + ',\'' + alimento.Nombre + '\',' + alimento.CantidadNormal + ')" class="fav"><span class="' + (alimento.EsFavorito ? "isfav" : "nofav") + '"></span></a><strong>' + alimento.Nombre + '</strong>' + (alimento.Marca ? " (" + alimento.Marca + ")" : '') + '</td></tr>';
            for (var i = 0; i < alimento.Valores.length; i++)
                table += '<tr><td' + (i % 2 == 0 ? '' : ' class="impar"') + '>' + alimento.Valores[i].Nombre + '</td><td align="right"' + (i % 2 == 0 ? '' : ' class="impar"') + '>' + alimento.Valores[i].Valor + ' ' + alimento.Valores[i].Unidad + '</td></tr>';
            table += "</table>";
            info.html(table);
        }
        this.CargarAlimento = function () {
            var id = this.getAttribute("id");
            var cantidadNormal = this.getAttribute("c");
            document.getElementById("AlimentoSeleccionado").value = id;
            document.getElementById("Cantidad").value = cantidadNormal;
            var obj = this;
            $.ajax({
                cache: false,
                url: Data.wsPath + "cargarAlimento.ashx?id=" + id,
                success: function (alimento) {
                    PintarAlimentoCargado(alimento);
                    $("#Alimentos > a.current").each(function (i) { this.className = ""; });
                    obj.className = "current";
                },
                complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'CargarAlimento']); } catch (e1) { }
        }
        this.InsertaAlimentoDBObj = function () {
            var id = this.getAttribute("id");
            var cant = this.getAttribute("c");
            Data.InsertaAlimentoDB(id, cant);
        }
        this.InsertaAlimentoDB = function (id, cant) {

            var regex = new RegExp("[^0-9]", "g");
            if (cant != "" && !regex.test(cant)) {
                $.ajax({
                    url: Data.wsPath + "insertarAlimento.aspx?id=" + id + "&cantidad=" + cant,
                    cache: false,
                    success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                    complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
                });
            }
            else {
                alert("La cantidad introducida no es correcta.");
            }
            try { _gaq.push(['_trackEvent', 'Calculadora', 'InsertaAlimentoDB']); } catch (e1) { }
            return false;
        }
        this.EditarAlimentoDB = function (position, cant) {
            var regex = new RegExp("[^0-9]", "g");
            if (cant != "" && !regex.test(cant)) {
                $.ajax({
                    url: Data.wsPath + "Editar.aspx?position=" + position + "&cantidad=" + cant,
                    cache: false,
                    success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                    complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
                });
            }
            else {
                alert("La cantidad introducida no es correcta.");
                return false;
            }
            try { _gaq.push(['_trackEvent', 'Calculadora', 'EditarAlimentoDB']); } catch (e1) { }
            return false;
        }
        this.AccionEditar = function (position, cantidad) {
            var cant = promptJS("Pregunta", "¿Cantidad? en gramos", cantidad, "Data.EditarAlimentoDB(" + position + ",{var})");
            try { _gaq.push(['_trackEvent', 'Calculadora', 'AccionEditar']); } catch (e1) { }
        }
        this.AccionBorrar = function (position) {
            if (confirm("Borrara el alimento de la tabla\r\n¿Esta seguro?")) {
                $.ajax({
                    url: Data.wsPath + "borrar.aspx?position=" + position,
                    cache: false,
                    success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                    complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
                });
            }
            try { _gaq.push(['_trackEvent', 'Calculadora', 'AccionBorrar']); } catch (e1) { }
        }
        this.AccionArriba = function (position) {
            $.ajax({
                url: Data.wsPath + "ordenar.aspx?direccion=arriba&position=" + position,
                cache: false,
                success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'AccionArriba']); } catch (e1) { }
        }
        this.AccionAbajo = function (position) {
            $.ajax({
                url: Data.wsPath + "ordenar.aspx?direccion=abajo&position=" + position,
                cache: false,
                success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'AccionAbajo']); } catch (e1) { }
        }
        this.CambiarSeccion = function (seccion) {
            $.ajax({
                url: Data.wsPath + "cambiarSeccion.aspx?sec=" + escape(seccion),
                cache: false,
                success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'CambiarSeccion']); } catch (e1) { }
        }
        function isMatch(id, text, filter) {
            var isMatch = true;
            if (filter != "") {
                var lFilter = filter.split(" ");
                var match = true;
                for (var i = 0; i < lFilter.length && match; i++) {
                    var regExp = new RegExp(lFilter[i], "i");
                    match = text.match(regExp);
                }
                isMatch = match != null;
            }
            return isMatch;
        }
        this.AccionSwitchFav = function (obj, id, nombre, cantidad) {
            var jsObj = $(obj);
            var jsSpan = $("span", obj);
            var isFav = jsSpan[0].className == "isfav" ? true : false;
            $.ajax({
                url: Data.wsPath + (isFav ? "DelFav.ashx?id=" + id : "AddFav.ashx?id=" + id + "&nombre=" + escape(nombre) + "&cantidad=" + cantidad),
                cache: false,
                success: function (html) {
                    if (html == "nouser") {
                        alert('Los usuario anónimos no pueden utilizar la opción de favoritos.<br />Para identificarte o registrarte <a href="/Registro/registro.aspx">pincha aquí</a>');
                    }
                    else if (html == "ok") {
                        if (isFav) {
                            jsSpan.removeClass("isfav");
                            jsSpan.addClass("nofav");
                        }
                        else {
                            jsSpan.removeClass("nofav");
                            jsSpan.addClass("isfav");
                        }
                    }
                    else {
                        alert("opps: la operación ha fallado.");
                    }
                },
                complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'AccionSwitchFav']); } catch (e1) { }
        }
        function getSearchPattern() {
            var filter = document.getElementById("txtFilter").value.toLowerCase();
            if (filter != "") {
                var regExp = new RegExp("[^a-z0-9ñáéíóú_ ]+", "ig");
                filter = filter.replace(regExp, " ");
                filter = filter.replace(/[aá]/gi, "[aá]");
                filter = filter.replace(/[eé]/gi, "[eé]");
                filter = filter.replace(/[ií]/gi, "[ií]");
                filter = filter.replace(/[oó]/gi, "[oó]");
                filter = filter.replace(/[uú]/gi, "[uú]");
                filter = filter.replace(/^ +/, "");
                filter = filter.replace(/ +$/, "");
                filter = filter.replace(/ {2,}/, " ");
            }
            return filter;
        }

        this.Fill = function () {
            var filter = getSearchPattern();
            var objSelect = $("#Alimentos > a").each(function (i) { this.style.display = isMatch(this.getAttribute("i"), this.innerHTML, filter) ? "block" : "none" });
        }
        this.Inicializar = function (tipoAlimentoClientId, idMarcaClientId, idAgrupacionAlimentosClientId) {
            this.wsPath = common.UrlBase + "webservices/";
            this.idTipo = tipoAlimentoClientId;
            this.idMarca = idMarcaClientId;
            this.idAgrupacionAlimentos = idAgrupacionAlimentosClientId;
            Data.CargarAlimentos();
        }
        function setCookie(c_name, value, exdays) {
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
            document.cookie = c_name + "=" + c_value;
        }
        this.CargarAlimentos = function () {
            var selectTipo = $("#" + this.idTipo).get(0);
            var selectMarca = $("#" + this.idMarca).get(0);
            var selectAgrupacion = $("#" + this.idAgrupacionAlimentos).get(0);
            setCookie("AgrupacionAlimentos", selectAgrupacion.options[selectAgrupacion.selectedIndex].value, 90);
            $.ajax({
                url: Data.wsPath + "CargarAlimentos.ashx?t=" + selectTipo.options[selectTipo.selectedIndex].value + "&m=" + selectMarca.options[selectMarca.selectedIndex].value + "&a=" + selectAgrupacion.options[selectAgrupacion.selectedIndex].value,
                cache: selectAgrupacion.options[selectAgrupacion.selectedIndex].value == "todos",
                success: function (json) {
                    var div = $("#Alimentos");
                    div.empty();
                    for (var i = 0; i < json.length; i++) {
                        var row = document.createElement("A");
                        row.href = "javascript:void(0)";
                        row.setAttribute("i", json[i].Id);
                        row.setAttribute("c", json[i].CantidadNormal);
                        row.setAttribute("id", json[i].Id);
                        if (json[i].Marca != null)
                            row.setAttribute("m", json[i].Marca.Id);
                        if (json[i].TipoAlimento != null)
                            row.setAttribute("t", json[i].TipoAlimento.Id);
                        row.innerHTML = json[i].Nombre + (json[i].Marca != null ? " (" + json[i].Marca.Nombre + ")" : "");
                        row.onclick = Data.CargarAlimento;
                        row.ondblclick = Data.InsertaAlimentoDBObj;
                        div.append(row);
                    }
                    json.length = 0;
                    json = null;
                },
                complete: function (xMLHttpRequest, textStatus) {
                    if (xMLHttpRequest.status == 428) {
                        alert('Los usuario anónimos no pueden utilizar la opción de favoritos.<br />Para identificarte o registrarte <a href="/Registro/registro.aspx">pincha aquí</a>');
                    }
                    else if (textStatus != "success") {
                        alert("opps: la operación ha fallado.");
                    }
                }
            });
            try { _gaq.push(['_trackEvent', 'Calculadora', 'CargarAlimentos']); } catch (e1) { }
        }
        this.Nuevo = function () {
            if (confirm("Esto borrara todos los datos\r\n¿Está seguro?")) {
                $.ajax({
                    url: Data.wsPath + "nuevo.aspx",
                    cache: false,
                    success: function (html) { document.getElementById("Dieta").innerHTML = html; },
                    complete: function (xMLHttpRequest, textStatus) { if (textStatus != "success") { alert("opps: la operación ha fallado."); } }
                });
            }
            try { _gaq.push(['_trackEvent', 'Calculadora', 'Nuevo']); } catch (e1) { }
        }

        function promptJS(caption, msg, cant, funct) {
            var mPopupMask = document.createElement("div");
            mPopupMask.id = "popupMask";
            document.body.insertBefore(mPopupMask, document.getElementById("container1"));
            var mPopupContainer = document.createElement("div");
            mPopupContainer.id = "popupContainer";
            document.body.insertBefore(mPopupContainer, document.getElementById("container1"));

            var capaCaption = document.createElement("h1");
            capaCaption.innerHTML = caption;
            var capaMensaje = document.createElement("div");
            var capaMensaje_text = document.createElement("span");
            capaMensaje_text.innerHTML = msg;
            var capaMensaje_saltoLinea = document.createElement("br");
            var capaMensaje_input = document.createElement("input");
            capaMensaje_input.type = "text";
            capaMensaje_input.name = "promptValue";
            capaMensaje_input.id = "promptValue";
            capaMensaje_input.value = cant;
            var capaMensaje_capaAction = document.createElement("div");
            var capaMensaje_capaAction_input = document.createElement("input");
            capaMensaje_capaAction_input.type = "button";
            capaMensaje_capaAction_input.value = "Aceptar";
            capaMensaje_capaAction_input.onclick = function () {
                document.body.removeChild(mPopupContainer);
                document.body.removeChild(mPopupMask);
                eval(funct.replace("{var}", "'" + capaMensaje_input.value + "'"));
            };
            var capaMensaje_capaAction_inputCancel = document.createElement("input");
            capaMensaje_capaAction_inputCancel.type = "button";
            capaMensaje_capaAction_inputCancel.value = "Cancelar";
            capaMensaje_capaAction_inputCancel.onclick = function () {
                document.body.removeChild(mPopupContainer);
                document.body.removeChild(mPopupMask);
            }

            capaMensaje_capaAction.appendChild(capaMensaje_capaAction_input);
            capaMensaje_capaAction.appendChild(capaMensaje_capaAction_inputCancel);

            capaMensaje.appendChild(capaMensaje_text);
            capaMensaje.appendChild(capaMensaje_saltoLinea);
            capaMensaje.appendChild(capaMensaje_input);
            capaMensaje.appendChild(capaMensaje_capaAction);

            mPopupContainer.appendChild(capaCaption);
            mPopupContainer.appendChild(capaMensaje);
        }
    }
}
