﻿jMaceria.core.namespace("ui.web.news");

jMaceria.ui.web.news = function() {
    var that = {};

    var constructor = function() {
        $(".ajouter-commentaire-news-button").live("click", onClickButtonAddComment);
        $(".supprimer-newscommentaire").live("click", onClickButtonDelComment);
        //$(".buttonCommentUsefullYes").live("click", onClickButtonUsefullYes);

        initialLoading();
    };

    var initialLoading = function() {
        makeMarkdownEditor();
    };

    var makeMarkdownEditor = function() {
        $(".markdownEditor").markItUp(mySettings);
    };

    var onClickButtonAddComment = function() {
        jMaceria.ui.web.controller.accountlogger.unbindLogonProcessEvent();

        var parentNewsDiv = $(this).parents(".newsEntity");
        var parentCommentDiv = $(this).parent(".ajouter-commentaire-news");
        var textboxComment = $(".markdownEditor", parentCommentDiv);
        var newsHidden = $(".newsArticleId", parentNewsDiv);
        var newsId = newsHidden.val();
        var textBody = textboxComment.val();

        var callbackPostCommentNotLogged = function() {
            processPostComment(newsId, textBody, parentNewsDiv);
        };

        if (!jMaceria.ui.web.controller.accountlogger.isAuthenticated()) {
            jMaceria.ui.web.controller.notification.show(jMaceria.ui.web.notificationmessage["OperationNotPermittedNotLogged"]);
            jMaceria.ui.web.controller.accountlogger.showLogonModal(callbackPostCommentNotLogged);
            return false;
        };

        processPostComment(newsId, textBody, parentNewsDiv);
    };

    var processPostComment = function(articleId, body, newsEntityDiv) {
        var postCallbackRefreshArticle = function() {
            $(".markdownEditor", newsEntityDiv).markItUp(mySettings);
            $(".liste-commentaires", newsEntityDiv).show();
            $(".fin-liste-commentaires", newsEntityDiv).show();
        };

        var callbackPostAddingComment = function() {
            newsEntityDiv.load("/news/newsentitycontrol?articleId=" + articleId, postCallbackRefreshArticle);
        };

        var parsedArticleId = parseInt(articleId);
        
        if (parsedArticleId !== undefined && parsedArticleId > 0) {
            $.post("/news/addcommenttoarticle?articleId=" + articleId, { body: body }, callbackPostAddingComment);
        };
        return false;
    };

    var onClickButtonDelComment = function() {
        var parentCommentDiv = $(this).parents(".commentEntity");
        var commentId = $(".commentId", parentCommentDiv);
        var parsedCommentId = parseInt(commentId.val());
        var parentNewsDiv = $(this).parents(".newsEntity");
        var newsHidden = $(".newsArticleId", parentNewsDiv);
        var newsId = newsHidden.val();

        var postCallbackRefreshArticle = function() {
            $(".markdownEditor", parentNewsDiv).markItUp(mySettings);
            $(".liste-commentaires", parentNewsDiv).show();
            $(".fin-liste-commentaires", parentNewsDiv).show();
        };

        var callbackPostdeleteComment = function() {
            parentNewsDiv.load("/news/newsentitycontrol?articleId=" + newsId, postCallbackRefreshArticle);
        };
        
        if (parsedCommentId !== undefined && parsedCommentId > 0) {
            $.post("/news/delcommentfromarticle?commentId=" + parsedCommentId, callbackPostdeleteComment);
        };
    };

    //Public Methods
    constructor();

    return that;
};

$(function() {
    jMaceria.core.namespace("ui.web.controller.news");
    jMaceria.ui.web.controller.news = jMaceria.ui.web.news();
});