﻿Type.registerNamespace('Migros.KulturProzent');

Migros.KulturProzent.Comment = function(data) {
    var _data = data;

    function CommentState() {
        this.CommentsPanelExpanded = "";
        this.WriteCommentPanelExpanded = "";
    }

    function CallServer(action) {
        __theFormPostData = '';
        WebForm_InitCallback();
        eval(_data.CallbackMethod);
    }

    function ToggleComments() {
        var commentsPanel = $get(_data.CommentsPanel);

        if (commentsPanel.style.display == "none") {
            commentsPanel.style.display = "block";
        }
        else {
            commentsPanel.style.display = "none";
        }

        UpdateState();
    }

    function ShowWriteComment(visible) {
        var writeCommentPanel = $get(_data.WriteCommentPanel);
        additiv.SetDisplay(writeCommentPanel, visible);
        additiv.SetDisplay($get(_data.WriteCommentHyperLink), !visible);
        UpdateState();
        if (visible) {
            SetFocus();
        }
    }

    function UpdateCommentLength() {
        var commentTextBox = $get(_data.CommentTextBox);
        var commentLengthLabel = $get(_data.CommentLengthLabel);

        if (commentTextBox.value.length > _data.CommentLength) {
            commentTextBox.value = commentTextBox.value.substring(0, _data.CommentLength);
        }

        commentLengthLabel.innerHTML = additiv.Format(_data.CommentLengthText, _data.CommentLength - commentTextBox.value.length);

    }

    function UpdateState() {
        var commentState = new CommentState();
        var commentsPanel = $get(_data.CommentsPanel);
        var writeCommentPanel = $get(_data.WriteCommentPanel);

        commentState.CommentsPanelExpanded = commentsPanel.style.display != 'none';
        commentState.WriteCommentPanelExpanded = writeCommentPanel.style.display != 'none';

        var stateField = $get(_data.StateId);
        stateField.value = JSON.stringify(commentState);

    }

    function SetAssetId(assetId) {
        var assetIdField = $get(_data.AssetValueId);
        assetIdField.value = assetId + '';
        CallServer('Update');
    }

    function ReceiveServerData(serverData, context) {
        var data = eval('(' + serverData + ')');

        if (data.Status == "Preview") {           
            OpenCommentPreviewPopup(data.Markup);
        }
        else {
            if (data.Target != null) {
                additiv.CopySnippet(data.Target, data.Markup);
            }
            else {
                var content = $get(_data.CallbackContentId);
                if (content != null) {
                    content.parentNode.innerHTML = data.Markup;
                    Init();


                    if (data.Status == "Canceled") {

                    } else if (data.Status == "Validated") {

                    }
                }
            }
        }
    }

    function SetFocus() {
        var writeCommentPanel = $get(_data.WriteCommentPanel);

        if (writeCommentPanel.style.display != 'none') {
            try {
                $get(_data.NameTextBox).focus();
            } catch (e) { }

        }
    }

    function Init() {
        var commentTextBox = $get(_data.CommentTextBox);
        $addHandler(commentTextBox, "keyup", UpdateCommentLength);
        window.setTimeout(SetFocus, 50);
    }

    Sys.Application.add_load(Init);

    return {
        CallServer: function(action) {
            CallServer(action);
        },
        ReceiveServerData: function(serverData, context) {
            ReceiveServerData(serverData, context);
        },
        SetAssetId: function(assetId) {
            SetAssetId(assetId);
        },
        ToggleComments: function() {
            ToggleComments();
        },
        ShowWriteComment: function(visible) {
            ShowWriteComment(visible);
        }
    };
}



