﻿var Renderer = {
    reloadRenderer: function() {
        if (window.loadContentCallback) {
            if (document.location.hash.length > 0)
                window.loadContentCallback(document.location.hash);
            else
                window.loadContentCallback(document.location.pathname);
        }
        else {
            document.location.reload(true);
        }
    },

    addNewPage: function(sender, pageName) {
        Pluritech.FlexPage.Service.CreateNewPage(pageName, function(str) {
            if (str.length > 0)
                alert(str);
            else
                Renderer.reloadRenderer();
        });
    },

    addBlockOnPage: function(sender) {
        var select = $(sender).previous();
        var pageid = select.readAttribute('page');
        var blockid = $F(select);

        Pluritech.FlexPage.Service.AddBlockToPage(blockid, pageid, function(str) {
            if (str.length > 0) alert(str);
            Renderer.reloadRenderer();
        });
    },

    toggleBlockVisibility: function(sender, aliasno) {
        Pluritech.FlexPage.Service.ToggleBlockVisibility(aliasno, function(imgUrl) {
            if (imgUrl.length == 0) return;
            $(sender).down().src = imgUrl;
        });
    },

    deleteBlockFromPage: function(sender, aliasno) {
        if (confirm('Confirm delete (no undo possible!)?'))
            Pluritech.FlexPage.Service.DeleteBlockFromPage(aliasno, function(success) {
                if (!success) return;
                var o = $(sender).up('.blockWrapper').remove();
                o = null;
            });
    },

    moveBlockUp: function(sender, aliasno) {
        Pluritech.FlexPage.Service.MoveBlock(aliasno, -1, function(success) {
            if (!success) return;
            var curr = $(sender).up('.blockWrapper');
            var prev = curr.previous('.blockWrapper');
            if (curr && prev) {
                prev.insert({ before: curr });
                //IE hides cmsEditButtons after reorder. Trigger visibility to fix it.
                $$(".cmsEditButton").invoke("hide").invoke("show");
            }
        });
    },

    moveBlockDown: function(sender, aliasno) {
        Pluritech.FlexPage.Service.MoveBlock(aliasno, 1, function(success) {
            if (!success) return;
            var curr = $(sender).up('.blockWrapper');
            var next = curr.next('.blockWrapper');
            if (curr && next) {
                next.insert({ after: curr });
                //IE hides cmsEditButtons after reorder. Trigger visibility to fix it.
                $$(".cmsEditButton").invoke("hide").invoke("show");
            }
        });
    },


    addNewBlogPost: function(sender) {
        Pluritech.FlexPage.Service.AddNewBlogPost(function(str) {
            if (str.Length > 0) { alert('Error creating new post:' + str); return; }
            Renderer.reloadRenderer();
        });
    },

    togglePostVisibility: function(sender, id) {
        Pluritech.FlexPage.Service.TogglePostVisibility(id, function(imgUrl) {
            if (imgUrl.length == 0) return;
            $(sender).down().src = imgUrl;
        });
    },

    deletePost: function(sender, id) {
        if (confirm('Confirm delete (no undo possible!)?'))
            Pluritech.FlexPage.Service.DeletePost(id, function(success) {
                if (!success) return;
                var o = $(sender).up('.post').remove();
                o = null;
            });
    },

    toggleCommentApproval: function(sender, id, f) {
        Pluritech.FlexPage.Service.ToggleCommentApproval(id, function(imgUrl) {
            if (imgUrl.length == 0) return;
            $(sender).down().src = imgUrl;
            f(typeof (f) === "function")
            f(id);
        });
    },

    deleteComment: function(sender, id, f) {
        if (confirm('Confirm delete (no undo possible!)?'))
            Pluritech.FlexPage.Service.DeleteComment(id, function(success) {
                if (!success) return;
                if (typeof (f) === "function")
                    f(id);
                else {
                    var o = $(sender).up('.comment').remove();
                    o = null;
                }
            });
    }

};
