var currentPage = {};

currentPage.TransitionManager = (function ($) {
    var $container;
    var $main;
    var $detalleNoticia;
    var init = function(){
        $main = $("#panelNoticias");
        $container = $("#container-main");
        $detalleNoticia = $("#panelDetalle");
    };
    
    var mainToDetalle = function(){       
        $main.fadeOut(800, function () {
            $main.addClass("hidden");
            $detalleNoticia.hide().removeClass("hidden").fadeIn(800);
            
        });
    };
    
    var detalleToMain=function(){       
        $detalleNoticia.fadeOut(800, function () {
            $detalleNoticia.addClass("hidden");
            $main.hide().removeClass("hidden").fadeIn(800);
            
        });
    };

    return {
        init : init,
        mainToDetalle : mainToDetalle,
        detalleToMain:detalleToMain
    };
})(jQuery);

currentPage.ModalFormNoticia = (function ($) {
    var $modal;
    var $tbxTitulo;
    var initialized=false;
    var $parent;
    var init = function(_$parent){    
        $parent=_$parent;
        $tbxTitulo=$('#tbxTitulo');
        $modal=$('#modalFormNoticia');
        $modal.on('show.bs.modal', function(){
            $modal.find(".error-container").html("");
            $modal.find(".has-error").removeClass("has-error");
        });
        $modal.on('shown.bs.modal', function () {
            $tbxTitulo.focus();
        });
        $modal.find(".btn-primary").on("click",guardarNuevo);

    };
    var _initNuevo=function(_$parent){   
        if(!initialized){
            initialized=true;
            init(_$parent);
        }
        $tbxTitulo.val("");
        $modal.modal();
    };
    
    var guardarNuevo = function(){
        if(validateForm()){
            $.ajax({
                url: "crearNoticia.php",
                data:{titulo:$tbxTitulo.val()}
            }).done(function (respuesta) {
                if(respuesta.error){
                    bootbox.alert("Se produjo un error al crear la noticia.<br/>Por favor intente nuevamente.")
                }else{
                    $modal.modal("hide");
                    $parent.trigger("noticia-creada",respuesta.noticia);
                }
                
            });
            /*$modal.modal("hide");
            $parent.trigger("noticia-creada",{id:10,titulo:$tbxTitulo.val(),estado:"NO_PUBLICADO",fecha_creacion:"02-02-2016",fecha_publicacion:null,ruta:"2016/10"});*/
        }
    };
    
    
    var validateForm = function(){
        $modal.find(".error-container").html("");
        $modal.find(".has-error").removeClass("has-error");
        $tbxTitulo.val($.trim($tbxTitulo.val()));
        if ("" === $tbxTitulo.val()) {
            $tbxTitulo.focus().closest(".form-group").addClass("has-error");
            var $error = $("<div class='alert alert-danger collapse' role='alert'><i class='fa fa-exclamation-triangle'></i> Debe ingresar un título para la noticia</div>");
            $modal.find(".error-container").append($error); 
            $error.fadeIn(500);
            return false;
        }

        return true;

    };


    return {
        initNuevo:_initNuevo
    };

})(jQuery);


currentPage.Main = (function ($) {
    var tblNoticias;
    var tmplBotones;
    var $rowUpdate;//fila a actualizar
    var jsonNoticias;
    var $self;
    var _init = function(){
        $self = $('#panelNoticias');
        //var fullJSON = JSON.parse($("#dataNoticias").html());
        jsonNoticias=JSON.parse($("#dataNoticias").html());
        tmplBotones=$('#templateBotones').html();
        tblNoticias = $('#tblNoticias').DataTable({
            "columns": [
                {"data": "titulo"},
                {"data": "fecha_creacion", "render":function(data, type, full, meta){
                        return moment(data).format("DD-MM-YYYY h:mm");
                }},
                {"data": "fecha_publicacion", "render": function (data, type, full, meta) {
                        return data === null ? "No publicado" : moment(data).format("DD-MM-YYYY h:mm");
                    }},
                {"data": "id","type":"date-esp", "render": function (data, type, full, meta) {
                        var datos = {};
                        datos.id=full.id;
                        datos.publicado=full.fecha_publicacion!==null;
                        return Mustache.render(tmplBotones, datos);
                    }}

            ],
            "order": [[1, "desc"]]
        });
        
        $('#tblNoticias_wrapper .table-control').append("<button type='button' class='btn btn-success btnNuevo'><span class='glyphicon glyphicon-plus-sign'></span> Nuevo</button>");
        
        //boton 'nuevo'
        $("#tblNoticias_wrapper .table-control .btnNuevo").on("click",function(){
            $self.one("noticia-creada",function(e,noticia){
                e.stopPropagation();
                tblNoticias.row.add(noticia);
                tblNoticias.order([1, "desc"]).draw();
                currentPage.VentanaDetalleNoticia.show(noticia);
            });
            currentPage.ModalFormNoticia.initNuevo($self);
        });
        
        //boton 'editar' en la tabla
        $('#tblNoticias tbody').on("click",".btnEditar",function(){
            var row = $(this).closest("tr");
            var noticia = tblNoticias.row(row).data(); 
            $self.off("noticia-actualizada").on("noticia-actualizada",function(e,noticia){
                e.stopPropagation();
                tblNoticias.row(row).data(noticia).draw();
            });
            currentPage.VentanaDetalleNoticia.show(noticia);
        });
        
        
        
        
        
        //boton 'eliminar' en la tabla
        $('#tblNoticias tbody').on("click",".btnEliminar",function(){
            var $boton = $(this);
            $rowUpdate = $(this).closest("tr");
            bootbox.confirm("Realmente desea eliminar los datos seleccionados?", function (result) {
                if (result) {
                    $.ajax({
                            method: "POST",
                            url: "deleteNoticia.php",
                            data: {id:$boton.data("id")}
                        }).done(function (respuesta) {
                            if (respuesta.error) {
                                bootbox.alert("Se produjo un error. Intente nuevamente");
                            } else {
                                tblNoticias.row($rowUpdate).remove().draw();
                                
                                bootbox.alert("Los datos fueron eliminados correctamente.");
                            }
                        });
                }
            });
        });
        
        $('#tblNoticias tbody').on("click",".btnPublicar",function(){            
            $rowUpdate = $(this).closest("tr");
            var noticia = tblNoticias.row($rowUpdate).data();
            $.ajax({
                method: "POST",
                url: "publicarNoticia.php",
                data:{id:noticia.id}
            }).done(function (respuesta) {
                if(respuesta.error){
                    bootbox.alert(respuesta.mensaje);
                }else{
                    noticia.fecha_publicacion=respuesta.fecha_publicacion;
                    tblNoticias.row($rowUpdate).data(noticia).draw();
                }
            });
                
           
        });
        
        tblNoticias.rows.add(jsonNoticias);
        tblNoticias.draw();  
        
        //editor de texto se debe incializar al prinicio, pero pertenece a la ventana de detalle
        tinymce.init({
            selector: 'textarea#editor',
            height: 500,
            plugins: [
                'advlist autolink lists link image charmap print preview anchor',
                'searchreplace visualblocks code fullscreen',
                'insertdatetime media table contextmenu paste code'
            ],
            toolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
            content_css: [
                '//fast.fonts.net/cssapi/e6dc9b99-64fe-4292-ad98-6974f93cd2a2.css',
                '//www.tinymce.com/css/codepen.min.css'
            ]
        });
    };
 

    return {
        init: _init
    };

})(jQuery);

currentPage.VentanaDetalleNoticia = (function ($) {
    var $textEditor;
    var $tbxTitulo;
    var noticiaJSON;
    var $self;
    var $main;
    var initialized = false;
    var $upload;
    var detalleJSON;
    var init = function(){
        if(initialized){
            return;
        }
        $self = $('#panelDetalle');
        $main = $('#panelNoticias');
        $tbxTitulo=$("#tbxDetalleTitulo");
        $textEditor=$("#editor");        
        new Clipboard(".btnCopy");
        $upload=$("#btnCargarImagen");
        $upload.fileupload({
            dataType: 'json',
            url: "uploadImage.php",
            done: function (e, data) {

                App.loadingModal.hide();
                if (detalleJSON.img === null) {
                    detalleJSON.img = [{nombre: data.result.img, ruta: noticiaJSON.ruta}];
                } else if(!data.result.reemplazo){
                    detalleJSON.img.push({nombre: data.result.img, ruta: noticiaJSON.ruta});
                }
                
                $("#img-default-alert").show();

                for (var i = 0; i < detalleJSON.img.length; i++) {
                    detalleJSON.img[i].index=i;
                    detalleJSON.no_cache=new Date().getTime();
                    if(detalleJSON.img[i].nombre.split(".")[0]==="principal"){
                        
                        $("#img-default-alert").hide();
                        break;
                    }
                }
                $("#row-imagenes").html(Mustache.render($('#templateImagen').html(), detalleJSON));
            },
            add: function (e, data) {
                var ext = data.files[0].name.split('.').pop().toLowerCase();
                $('#fileFlujo').html(data.files[0].name);
                if (ext !== "jpg" && ext !== "jpeg" && ext !== "png" && ext !== "bmp") {
                    bootbox.alert("Las extensiones permitidas son :jpg, jpeg, png, bmp");
                } else {
                    var nombre=null;
                    if (detalleJSON.img !== null) {
                        for(var i=0;i<detalleJSON.img.length;i++){
                            if(data.files[0].name.toLowerCase()===detalleJSON.img[i].nombre.toLowerCase()){
                                nombre=detalleJSON.img[i].nombre;
                                break;
                            }
                        }
                    }
                    
                    
                    if(nombre===null){
                        data.formData = {idNoticia:noticiaJSON.id, ruta:noticiaJSON.ruta, reemplazo:false};
                        data.submit();
                    }else{
                        bootbox.confirm("¿Realmente desea reemplazar el archivo "+nombre+"?", function (result) {
                            if (result) {
                                data.formData = {idNoticia:noticiaJSON.id, ruta:noticiaJSON.ruta, reemplazo:true};
                                data.submit();
                            }
                        });
                    }   
                }
            }
        });
        $("#btnGuardarDetalle").click(function(){
            var data ={};
            data.cuerpo = tinyMCE.activeEditor.getContent();
            data.titulo = $tbxTitulo.val();//validar vacio
            data.id=noticiaJSON.id;
            
            
            $.ajax({
                method: "POST",
                url: "updateNoticia.php",
                data: data
            }).done(function (respuesta) {
                if (respuesta.error) {
                    bootbox.alert(respuesta.mensaje);
                } else {
                    noticiaJSON.titulo = $tbxTitulo.val();
                    $main.trigger("noticia-actualizada",noticiaJSON);
                    $self.find(".panel-heading").html(noticiaJSON.titulo);
                    bootbox.alert("Los datos fueron actualizados correctamente.");
                }
            });
            
         });
        
        $("#btnVolverDetalle").click(function(){
            currentPage.TransitionManager.detalleToMain();
        });
        
        $('#row-imagenes').on("click",".btn-danger",function(){ 
            var $btn=$(this);
            var nombre = $btn.data("nombre");
            bootbox.confirm("¿Realmente desea eliminar la imagen " + nombre + "?", function (result) {
                if (result) {
                    $.ajax({
                        method: "POST",
                        url: "deleteImage.php",
                        data:{nombre:nombre,ruta:noticiaJSON.ruta}
                    }).done(function (respuesta) {
                        if(respuesta.error===null){
                            $("#img_"+$btn.data("id")).fadeOut(500,function(){
                                $("#img_"+$btn.data("id")).remove();
                            });
                            $("#img-default-alert").show();
                            for(var i=0;i<detalleJSON.img.length;i++){
                                if(detalleJSON.img[i].nombre.toLowerCase()===nombre.toLowerCase()){
                                    detalleJSON.img.splice(i, 1);
                                }

                            }
                            for(var i=0;i<detalleJSON.img.length;i++){

                                if(detalleJSON.img[i].nombre.split(".")[0].toLowerCase()==="principal"){
                                    $("#img-default-alert").hide();
                                }
                            }
                            
                        }else{
                            bootbox.alert(respuesta.error);
                        }
                    });
                }
            });
        });
        
        
        initialized=true;
    };
    
    var _show = function(_noticiaJSON)
    {
        noticiaJSON=_noticiaJSON;
        init();
        
        $.ajax({
                url: "getDetalleNoticia.php",
                data:{id:noticiaJSON.id},
                method :"GET"
            }).done(function (data) {
                detalleJSON = data;
            /*var detalle = {};
            detalle.cuerpo = "<p>Cuerpo de la noticia</p>";
            detalle.img = [{nombre:"not1.jpg",ruta:"2016/1/not1.jpg"},{nombre:"not2.jpg",ruta:"2016/1/not1.jpg"}];*/
            $self.find(".panel-heading").html(noticiaJSON.titulo);
            /*$self.find(".panel-heading").one("click",function(){
                alert(tinyMCE.activeEditor.getContent());
            });*/
            $tbxTitulo.val($("<textarea/>").html(noticiaJSON.titulo).text());
            tinyMCE.activeEditor.setContent(detalleJSON.cuerpo);
            $("#img-default-alert").show();
            if(detalleJSON.img !== null){
                //$("#row-imagenes").html(Mustache.render($('#templateImagen').html(), detalleJSON));
                for(var i=0;i<detalleJSON.img.length;i++){
                    detalleJSON.img[i].index=i;
                    detalleJSON.no_cache=new Date().getTime();
                    if(detalleJSON.img[i].nombre.split(".")[0]==="principal"){
                        
                        $("#img-default-alert").hide();
                        break;
                    }
                }
                $("#row-imagenes").html(Mustache.render($('#templateImagen').html(), detalleJSON));
            }else{
                $("#row-imagenes").html("<div class='col-xs-12' id='no-img'><p>No existen imágenes</p></div>");
                
            }
            currentPage.TransitionManager.mainToDetalle();
            });
        
        
        
        
    } ;

    return {
        init: init,
        show:_show
    };

})(jQuery);

$(document).ready(function () {
    if($("#modalFormLogin").length===0){
        currentPage.TransitionManager.init();
        currentPage.Main.init();
    }else{
        $("#btnLogin").click(function () {
            if ($("#tbxUsername").val() !== "" && $("#tbxPassword").val() !== "") {
                $.ajax({
                    method: "POST",
                    url: "login.php",
                    data: {username: $("#tbxUsername").val(), password: $("#tbxPassword").val()}
                }).done(function (respuesta) {
                    if (!respuesta.error) {
                        $("#modalFormLogin").modal("hide");
                        location.reload();
                    } else {
                        bootbox.alert(respuesta.mensaje);
                    }
                });
            } else {
                $("#modalFormLogin").modal("hide");
                bootbox.alert("Ingrese el nombre de usuario y contraseña",function(){
                    $("#modalFormLogin").modal();
                });
            }
        });
        
        
        $("#modalFormLogin").modal();
    }
    
});