﻿/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("TraderMagazine");

TraderMagazine.Forum = function() {
    TraderMagazine.Forum.initializeBase(this);

}
TraderMagazine.Forum.prototype = {
    initialize: function() {
        TraderMagazine.Forum.callBaseMethod(this, 'initialize');
        this.categoryId = "trading";
        this.subCategoryId = "beginners";
        this.entrySelectPage = 0;
        TradersMag.WebService.ForumService.CreateForumPage(this.categoryId, this.subCategoryId, this.insertContent, GLOBALS.callError);
    },
    /// <summary>
    /// initialize handlers for this page
    /// </summary>
    initHandler: function() {

    },
    /// <summary>
    /// get page
    /// </summary>
    init: function() {
        TradersMag.WebService.ForumService.CreateForumPage(this.categoryId, this.subCategoryId, this.insertContent, GLOBALS.callError);
    },
    /// <summary>
    /// insert content
    /// </summary>
    switchEntrySelectPage: function(page) {
        PAGE.entrySelectPage += Number(page);
        TradersMag.WebService.ForumService.CreateEntrySelectTable(PAGE.entrySelectPage, PAGE.categoryId, PAGE.subCategoryId, PAGE.insertEntrySelect, GLOBALS.callError);

    },
    /// <summary>
    /// insert content
    /// </summary>
    insertContent: function(html) {

        $get("Content").innerHTML = html;
        if (GLOBALS.PageParameter > 0) {
            var threadId = GLOBALS.PageParameter;
            GLOBALS.PageParameter = 0;
            PAGE.selectEntry(threadId);
            PAGE.closeCategories();
            PAGE.closeEntrySelect();
        }
    },
    /// <summary>
    /// select category
    /// </summary>
    selectCategory: function(categoryId, subcategoryId) {
        PAGE.categoryId = categoryId;
        PAGE.subCategoryId = subcategoryId;
        PAGE.entrySelectPage = 0;
        this.switchCategories();
        if ($get("EntrySelectTable").innerHTML == "") {
            this.switchEntrySelect();
        } else {

            TradersMag.WebService.ForumService.CreateEntrySelectTable(PAGE.entrySelectPage, PAGE.categoryId, PAGE.subCategoryId, PAGE.insertEntrySelect, GLOBALS.callError);
        }


        // TradersMag.WebService.ForumService.CreateForumPage(PAGE.categoryId, PAGE.subCategoryId, PAGE.insertContent, GLOBALS.callError);

    },
    /// <summary>
    /// switch categories
    /// </summary>
    switchCategories: function() {
        if ($get("CategoryTable").innerHTML == "") {
            $get("SwitchCatBtn").src = IMG.arrow_switch_left.src;
            TradersMag.WebService.ForumService.CreateCategoryTable(PAGE.insertCategoryTable, GLOBALS.callError);
        } else {
            $get("SwitchCatBtn").src = IMG.arrow_switch_down.src;
            $get("CategoryTable").innerHTML = "";
        }
    },
    /// <summary>
    /// switch categories
    /// </summary>
    closeCategories: function() {
        $get("SwitchCatBtn").src = IMG.arrow_switch_down.src;
        $get("CategoryTable").innerHTML = "";

    },
    /// <summary>
    /// switch categories
    /// </summary>
    closeEntrySelect: function() {
        $get("SwitchEntrySelectBtn").src = IMG.arrow_switch_down.src;
        $get("EntrySelectTable").innerHTML = "";

    },
    /// <summary>
    /// insert category content
    /// </summary>
    insertCategoryTable: function(html) {
        $get("CategoryTable").innerHTML = html;
    },
    /// <summary>
    /// switch categories
    /// </summary>
    switchEntrySelect: function() {
        if ($get("EntrySelectTable").innerHTML == "") {
            $get("SwitchEntrySelectBtn").src = IMG.arrow_switch_left.src;
            TradersMag.WebService.ForumService.CreateEntrySelectTable(PAGE.entrySelectPage, PAGE.categoryId, PAGE.subCategoryId, PAGE.insertEntrySelect, GLOBALS.callError);
        } else {
            $get("SwitchEntrySelectBtn").src = IMG.arrow_switch_down.src;
            $get("EntrySelectTable").innerHTML = "";
        }
    },
    /// <summary>
    /// insert category content
    /// </summary>
    insertEntrySelect: function(result) {
        $get("EntrySelectTable").innerHTML = result.html;
        $get("SwitchEntrySelectBtnLabel").innerHTML = result.label;

    },
    /// <summary>
    /// insert category content
    /// </summary>
    insertEntryTable: function(html) {
        $get("EntrySelectTable").innerHTML = html;
        PAGE.switchEntrySelect();
    },
    /// <summary>
    /// select entry
    /// </summary>
    selectEntry: function(threadId) {
        TradersMag.WebService.ForumService.SelectEntry(threadId, this.insertEntry, GLOBALS.callError);
    },
    /// <summary>
    /// insert selected entry
    /// </summary>
    insertEntry: function(html) {
        $get("EntryPanel").innerHTML = html;
        $get("SwitchEntrySelectBtn").src = IMG.arrow_switch_down.src;
        $get("EntrySelectTable").innerHTML = "";
    },
    /// <summary>
    /// create new entry
    /// </summary>
    createNewEntry: function(catId, subId) {
        $get("ForumSelectArea").innerHTML = "";
        var t = COMP.createTable("ForumEntryTable", 7, 1, 500, "middle", "0");
        $get("ForumSelectArea").appendChild(t);

        $get("ForumEntryTable_0_0").innerHTML = Text.forum.new_entry_tags;
        $get("ForumEntryTable_2_0").innerHTML = Text.forum.new_entry_head;
        $get("ForumEntryTable_4_0").innerHTML = Text.forum.new_entry_text;

        $get("ForumEntryTable_1_0").innerHTML = "<input type='text' value='' id='ForumEntryTags' style='width:540px;' />";
        $get("ForumEntryTable_1_0").appendChild(COMP.createErrorField("ForumEntryTagsError"));

        $get("ForumEntryTable_3_0").innerHTML = "<input type='text' value='' id='ForumEntryHead' style='width:540px;' />";
        $get("ForumEntryTable_3_0").appendChild(COMP.createErrorField("ForumEntryHeadError"));
        $get("ForumEntryTable_5_0").innerHTML = "<textarea name='ForumEntryText' id='ForumEntryText'  rows='10'  style='width:540px;'></textarea>"
        $get("ForumEntryTable_5_0").appendChild(COMP.createErrorField("ForumEntryTextError"));
        $get("ForumEntryTable_6_0").innerHTML = "<a class='button_orange' id='ForumEntryBtn'>" + Text.forum.new_entry_btn + "</a>";

        $get("ForumEntryBtn").onclick = function() {
            ERROR.hideError("ForumEntryHeadError");
            ERROR.hideError("ForumEntryTagsError");
            ERROR.hideError("ForumEntryTextError");
            var forumTags = $get("ForumEntryTags").value;
            var forumHead = $get("ForumEntryHead").value;
            var forumText = $get("ForumEntryText").value;
            var success = true;
            if (!ERROR.checkField(forumHead, "ForumEntryHeadError", "singleline", 2, Text.errors.e28)) success = false;
            if (!ERROR.checkField(forumTags, "ForumEntryTagsError", "singleline", 0, Text.errors.e28)) success = false;
            if (!ERROR.checkField(forumText, "ForumEntryTextError", "multiline", 2, Text.errors.e29)) success = false;
            if (success)
                TradersMag.WebService.ForumService.SaveEntry(PAGE.categoryId, PAGE.subCategoryId, forumTags, forumHead, forumText, PAGE.insertForumEntry, GLOBALS.callError);
        }
    },
    /// <summary>
    /// insert category content
    /// </summary>
    insertForumEntry: function(response) {

        if (response == "no_auth") {
            ERROR.showError("ForumEntryTextError", Text.errors.e32);
        }
        if (response == "false") {
            ERROR.showError("ForumEntryTextError", Text.errors.e31);
        }
        if (response == "true") {
            $get("ForumSelectArea").innerHTML = Text.forum.entry_saved;
        }
    },
    /// <summary>
    /// save comment
    /// </summary>
    saveComment: function(threadId) {
        var cTags = $get("ForumCommentTags").value;
        var cComment = $get("ForumComment").value;

        ERROR.hideError("ForumCommentTagsError");
        ERROR.hideError("ForumCommentError");
        var success = true;
        if (!ERROR.checkField(cTags, "ForumCommentTagsError", "singleline", 2, Text.errors.e33)) success = false;
        if (!ERROR.checkField(cComment, "ForumCommentError", "multiline", 5, Text.errors.e33)) success = false;
        if (success) {
            TradersMag.WebService.ForumService.SaveComment(threadId, cTags, cComment, PAGE.insertForumComment, GLOBALS.callError);
            $get("ForumCommentTags").value = "";
            $get("ForumComment").value = "";
        }
    },
    /// <summary>
    /// create new entry
    /// </summary>
    insertForumComment: function(result) {

        if (result == "no_auth") {
            ERROR.showError("ForumCommentError", Text.errors.e32);
        }
        if (result == "false") {
            ERROR.showError("ForumCommentError", Text.errors.e31);
        }
        if (result == "true") {
            ERROR.showError("ForumCommentError", "<span style='color:#333;'>" + Text.forum.comment_saved + "<span>");

        }
    },
    //  ======================================================================
    //  editor methods
    //  =============================================================================
    /// <summary>
    /// edit a entry
    /// </summary>
    editCommentEntry: function(commentId) {
        TradersMag.WebService.ForumService.GetComment(commentId, PAGE.createCommentEditor, GLOBALS.callError);
    },
    /// <summary>
    /// create new entry
    /// </summary>
    createCommentEditor: function(comment) {
        $get("ForumSelectArea").innerHTML = "";
        $get("ForumSelectArea").style.padding = "15px";
        var t = COMP.createTable("ForumEntryTable", 7, 2, 600, "middle", "0");
        $get("ForumSelectArea").appendChild(t);

        $get("ForumEntryTable_0_0").innerHTML = Text.forum.new_entry_tags;
        $get("ForumEntryTable_2_0").innerHTML = Text.forum.comment;


        $get("ForumEntryTable_1_0").innerHTML = "<input type='text'  id='ForumEntryTags' style='width:540px;' value='" + comment.tags + "' />";
        $get("ForumEntryTable_1_0").appendChild(COMP.createErrorField("ForumEntryTagsError"));


        $get("ForumEntryTable_5_0").innerHTML = "<textarea name='ForumEntryText' id='ForumEntryText'  rows='10'  style='width:540px;'>" + comment.comment + "</textarea>"
        $get("ForumEntryTable_5_0").appendChild(COMP.createErrorField("ForumEntryTextError"));
        $get("ForumEntryTable_6_0").innerHTML = "<a class='button_orange' id='CommentEntryBtn'>" + Text.forum.new_entry_btn + "</a>";
        $get("ForumEntryTable_6_1").innerHTML = "<a class='button_orange' id='CommentDeleteBtn'>" + Text.forum.delete_entry.replace(" ", "&nbsp;") + "</a>";
        $get("CommentEntryBtn").onclick = function() {

            ERROR.hideError("ForumEntryTagsError");
            ERROR.hideError("ForumEntryTextError");
            var forumTags = $get("ForumEntryTags").value;

            var forumText = $get("ForumEntryText").value;
            var success = true;

            if (!ERROR.checkField(forumTags, "ForumEntryTagsError", "singleline", 0, Text.errors.e28)) success = false;
            if (!ERROR.checkField(forumText, "ForumEntryTextError", "multiline", 2, Text.errors.e29)) success = false;
            if (success)
                TradersMag.WebService.ForumService.UpdateComment(comment.commentId, forumTags, forumText, PAGE.commentUpdatedResult, GLOBALS.callError);
        }
        $get("CommentDeleteBtn").onclick = function() {
            TradersMag.WebService.ForumService.DeleteComment(comment.commentId, PAGE.commentDeletedResult, GLOBALS.callError);
        }
    },

    /// <summary>
    /// insert category content
    /// </summary>
    commentDeletedResult: function(result) {
        if (result)
            $get("ForumSelectArea").innerHTML = Text.forum.comment_deleted;
        else
            $get("ForumSelectArea").innerHTML = "error";
    },
    /// <summary>
    /// insert category content
    /// </summary>
    commentUpdatedResult: function(result) {
        if (result)
            $get("ForumSelectArea").innerHTML = Text.forum.comment_udated;
        else
            $get("ForumSelectArea").innerHTML = "error";
    },


    /// <summary>
    /// edit a entry
    /// </summary>
    editForumEntry: function(threadId) {
        TradersMag.WebService.ForumService.GetEntry(threadId, PAGE.createEntryEditor, GLOBALS.callError);
    },
    /// <summary>
    /// create new entry
    /// </summary>
    createEntryEditor: function(entry) {
        $get("ForumSelectArea").innerHTML = "";
        $get("ForumSelectArea").style.padding = "15px";
        var t = COMP.createTable("ForumEntryTable", 7, 2, 600, "middle", "0");
        $get("ForumSelectArea").appendChild(t);

        $get("ForumEntryTable_0_0").innerHTML = Text.forum.new_entry_tags;
        $get("ForumEntryTable_2_0").innerHTML = Text.forum.new_entry_head;
        $get("ForumEntryTable_4_0").innerHTML = Text.forum.new_entry_text;

        $get("ForumEntryTable_1_0").innerHTML = "<input type='text'  id='ForumEntryTags' style='width:540px;' value='" + entry.tags + "' />";
        $get("ForumEntryTable_1_0").appendChild(COMP.createErrorField("ForumEntryTagsError"));

        $get("ForumEntryTable_3_0").innerHTML = "<input type='text'  id='ForumEntryHead' style='width:540px;' value='" + entry.header + "' />";
        $get("ForumEntryTable_3_0").appendChild(COMP.createErrorField("ForumEntryHeadError"));
        $get("ForumEntryTable_5_0").innerHTML = "<textarea name='ForumEntryText' id='ForumEntryText'  rows='10'  style='width:540px;'>" + entry.text + "</textarea>"
        $get("ForumEntryTable_5_0").appendChild(COMP.createErrorField("ForumEntryTextError"));
        $get("ForumEntryTable_6_0").innerHTML = "<a class='button_orange' id='ForumEntryBtn'>" + Text.forum.new_entry_btn + "</a>";
        $get("ForumEntryTable_6_1").innerHTML = "<a class='button_orange' id='ForumDeleteBtn'>" + Text.forum.delete_entry.replace(" ", "&nbsp;") + "</a>";
        $get("ForumEntryBtn").onclick = function() {
            ERROR.hideError("ForumEntryHeadError");
            ERROR.hideError("ForumEntryTagsError");
            ERROR.hideError("ForumEntryTextError");
            var forumTags = $get("ForumEntryTags").value;
            var forumHead = $get("ForumEntryHead").value;
            var forumText = $get("ForumEntryText").value;
            var success = true;
            if (!ERROR.checkField(forumHead, "ForumEntryHeadError", "singleline", 2, Text.errors.e28)) success = false;
            if (!ERROR.checkField(forumTags, "ForumEntryTagsError", "singleline", 0, Text.errors.e28)) success = false;
            if (!ERROR.checkField(forumText, "ForumEntryTextError", "multiline", 2, Text.errors.e29)) success = false;
            if (success)
                TradersMag.WebService.ForumService.UpdateEntry(entry.threadId, forumTags, forumHead, forumText, PAGE.forumUpdatedResult, GLOBALS.callError);
        }
        $get("ForumDeleteBtn").onclick = function() {
            TradersMag.WebService.ForumService.DeleteEntry(entry.threadId, PAGE.forumDeletedResult, GLOBALS.callError);
        }
    },
    /// <summary>
    /// insert category content
    /// </summary>
    forumDeletedResult: function(result) {
        if (result)
            $get("ForumSelectArea").innerHTML = Text.forum.entry_deleted;
        else
            $get("ForumSelectArea").innerHTML = "error";
    },
    /// <summary>
    /// insert category content
    /// </summary>
    forumUpdatedResult: function(result) {
        if (result)
            $get("ForumSelectArea").innerHTML = Text.forum.entry_udated;
        else
            $get("ForumSelectArea").innerHTML = "error";
    },
    dispose: function() {
        //Add custom dispose actions here
        TraderMagazine.Forum.callBaseMethod(this, 'dispose');
    }
}
TraderMagazine.Forum.registerClass('TraderMagazine.Forum', Sys.Component);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
