﻿/// <reference path="jquery-1.3.2.min-vsdoc.js" />

var chatIntervalId = 0;
var onBoardIntervalId = 0;
var landingPageIntervalId = 0;
var windowId;

var CHAT_LOG_CHECK_FREQUENCY = 5000;
var LANDING_PAGE_FREQUENCY = 7000;

var landingMykus = new Object();
var landingPos = 0;

var closeWindowCallback = function(hash) { hash.w.fadeOut('slow', function() { hash.o.remove(); }) };
var openWindowCallback = function(hash) { hash.w.fadeIn('slow'); };

function PostChat(boardId) {
    clearInterval(chatIntervalId);

    var data = new Object();

    data["textMessage"] = $("#textChat").val();
    data["boardId"] = boardId;

    $.post('/MyKu.mvc/InsertChat', data,
                function(result) {
                    var resultData = eval('(' + result + ')');
                    if (resultData.isSuccessful == true) {
                        UpdateChatLog(false);
                    }
                    else {
                        alert('problem!');
                    }
                });

    chatIntervalId = setInterval("UpdateChatLog(false)", CHAT_LOG_CHECK_FREQUENCY);

    $('#textChat').val('');
    $('#textChat').focus();
}

function ShowJoinPopup() {

    $("#divJoinPopup").jqm({
        overlayClass: 'modalBoxOverlay',
        modal: true
    }).jqmShow();

}

function ShowHelpPopup() {
    var hideBoardHelp = $.cookie('hideBoardHelp');

    if (hideBoardHelp == 'true') {
        $('#chkHideHelp').attr('checked', true);
    }
    else {

        $('#divHelpPopup').jqm({
            overlayClass: 'modalBoxOverlay',
            modal: true
        }).jqmShow();
    }
}

function ShowCommentPopup(img) {

    $("#commentPostId").html(img.id);
    $("#commentText").val("");

    $("#divCommentPopup").jqm({
        overlayClass: "modalBoxOverlay",
        modal: true
    }).jqmShow();
}

function ShowEmailPopup(img) {

    $("#emailPostId").html(img.id);
    $("#emailAddress").val("");

    $("#divEmailPopup").jqm({
        overlayClass: "modalBoxOverlay",
        modal: true
    }).jqmShow();
}

function UpdateArrows() {
    $('.arrowIndicator').each(function() {
        var $this = $(this);
        var id = $this.html();

        var element = document.getElementById(id);
        element.style.visibility = "visible";

    });
}

function SetClueTips() {
    $('a.tips').cluetip();
    
    $('a.panel').cluetip(
        {
            local: true,
            cursor: 'pointer',
            sticky: true,
            mouseOutClose: true,
            showTitle: false,
            closeText: '',
            closePosition: 'bottom',
            dropShadow: true,
            width: '25px',
            height: '210px',
            overflow: 'hidden',
            positionBy: 'bottomTop',
            topOffset: -174
        }
    );
}

function LandingPage() {

    UpdateIndividualPanel(landingMykus[landingPos]);

    landingPos = landingPos + 1;

    if (landingPos == 8)
        ShowJoinPopup();
}

function showProfileQuickView(userId) {
    //alert('y0');
    var actionLink = '/User.mvc/ProfileQuickView?userId=' + userId;
   
    $("#divProfileQuickView").jqm({
        ajax: actionLink,
        overlayClass: "modalBoxOverlay"
    }).jqmShow();
}

function showWindow(object) {

    if (_isAuthenticated == "false") {
        alert('You must be logged in to post a myku. Please use the Member Login link at the top of the screen.');
        return;
    }
    
    var divId = "div" + object.id;

    $('#' + windowId).html('');

    $("<div id=" + divId + "></div>")
                .html("<img src='../../Content/Images/busy.gif' alt='Please wait' /> Please wait...")
                .addClass("modalBox")
                .appendTo("body")

    var indicator = object.id.slice(0, 4);
    var ajaxUrl;
    var modal;

    if (indicator == "view") {
        ajaxUrl = '/MyKu.mvc/ViewPost/' + object.id;
        modal = false;
    }
    else {
        ajaxUrl = '/MyKu.mvc/NewPost/' + object.id;
        modal = true;
    }

    windowId = divId;

    $("#" + divId).jqm({
        ajax: ajaxUrl,
        overlayClass: "modalBoxOverlay",
        modal: modal,
        onHide: closeWindowCallback,
        onShow: openWindowCallback
    }).jqmShow();
}


function UpdateUsersOnBoard(boardId) {
    var data = new Object();

    data["boardId"] = boardId;

    $.post('/MyKu.mvc/GetBoardUsers', data, function(result) {
        var resultData = eval('(' + result + ')');
        if (resultData.isSuccessful == true) {
            $('#userList').html('');
            var lineArray = resultData.data.split('|');
            for (i = 0; i < lineArray.length; i++) {
                if (lineArray[i].length > 0) {
                    $('#userList').append('<div id="' + lineArray[i] + '" class="userItem" onmouseover="highlightUser(this)" onmouseout="unhighlightUser(this)">'
                        + lineArray[i] + '</div>');
                }
            }

            lineArray = null;
            result = null;
            resultData = null;
        }
        else {
            alert('update failed');
        }
    });
}

function toBottom() {
    var objDiv = document.getElementById("chatWindow");
    objDiv.scrollTop = objDiv.scrollHeight;
}

function GetLastChatId() {
    var data = new Object();

    data["boardId"] = _boardId;

    $.post('/MyKu.mvc/GetLastChatId', data, function(result) {
        var resultData = eval('(' + result + ')');
        if (resultData.isSuccessful == true) {
            $('#lastChatId').val(resultData.data);
        }
        else {
            alert('failed to connect to chat');
        }
    });
}

function UpdateChatLog(single) {
    
    var data = new Object();

    data["boardId"] = _boardId;
    data["lastChatId"] = $('#lastChatId').val();

    if (single == true)
        data["singleId"] = $('#lastChatId').val();

    $.post('/MyKu.mvc/UpdateChat', data, function(result) {
        var resultData = eval('(' + result + ')');
        if (resultData.isSuccessful == true) {
            $('#lastChatId').val(resultData.LastChatId);
            var lineArray = resultData.data.split('|');
            for (i = 0; i < lineArray.length; i++) {
                if (lineArray[i].length > 0) {
                    $('#chatWindow').append('<p>' + lineArray[i] + '</p>');
                    toBottom();
                }
            }

            lineArray = null;
            result = null;
            resultData = null;
        }
        else {
            alert('update failed');
        }
    });
}

function RemoveStart() {
    $('.startContainer').each(function() {
        var $this = $(this);

        $this.html('');
    });
}

function UpdateMatrix() {

    var data = new Object();
    
    data['id'] = _boardId;

    $.post('/MyKu.mvc/GetMatrix' + '/' + data["id"], data, function(result) {
        var resultData = eval('(' + result + ')');
        if (resultData.isSuccessful == true) {
            var panelArray = resultData.data.split(';');
            for (i = 0; i < panelArray.length; i++) {
                if (panelArray[i].length > 0) {
                    var children = document.getElementById(panelArray[i]).childNodes;
                    for (j = 0; j < children.length; j++) {
                        if (children[j].className == "compass") {
                            var updateElement = document.getElementById(panelArray[i]);
                            var updateData = new Object();
                            updateData["id"] = updateElement.id;

                            $.post('/MyKu.mvc/IndividualPost' + '/' + updateData["id"], updateData, function(updateResult) {
                                $('#' + updateElement.id).html(updateResult).hide().fadeIn("slow", function() { if ($.browser.msie) this.style.removeAttribute('filter'); });
                                RemoveStart();
                                UpdateArrows();
                                SetClueTips();
                            });
                        }
                    }
                }
            }
        }
        else {
            alert("broke");
        }
    });
}

function UpdateIndividualPanel(id) {
    var updateElement = document.getElementById(id);
    var updateData = new Object();
    updateData["id"] = updateElement.id;

    $.post('/MyKu.mvc/IndividualPost' + '/' + updateData["id"], updateData, function(updateResult) {
        $('#' + updateElement.id).html(updateResult).hide().fadeIn("slow", function() { if ($.browser.msie) this.style.removeAttribute('filter'); });
        RemoveStart();
        UpdateArrows();
        SetClueTips();

    });
}

function mouseover_cell(object, compassId) {
    object.className = "cellHover";
    var innerDiv = document.getElementById(compassId);
    if (innerDiv != null) {
        innerDiv.style.visibility = "visible";
    }
}

function mouseout_cell(object, compassId) {
    object.className = "cellDefault";
    var innerDiv = document.getElementById(compassId);
    if (innerDiv != null) {
        innerDiv.style.visibility = "hidden";
    }
}

function highlightParent(id, row, col, boardId) {

    var profileElement = $('#profileicon-' + row + '-' + col + '-' + boardId);

    if (profileElement.length == 0) {
        var arrow = $(id);
        arrow.attr("onclick", "");
       
        return;
    }

    var element = document.getElementById(row + '-' + col + '-' + boardId);
    element.className = "highlightParent";
}

function unhighlightParent(id, row, col, boardId) {
    var element = document.getElementById(row + '-' + col + '-' + boardId);
    element.className = "myKuItem";

}

function highlightUser(object) {
    var element = document.getElementById(object.id);
    element.className = "userItemHover";
}

function unhighlightUser(object) {
    var element = document.getElementById(object.id);
    element.className = "userItem";
}

function PostQuickViewComment(threadId) {
    var data = new Object();

    data["threadId"] = threadId;
    data["text"] = $('#text').val();

    $.post("/MyKu.mvc/AddQuickViewComment", data, function(result) {
        var resultData = eval('(' + result + ')');
    });
}

function UpdateChain() {
    $.getJSON("/MyKu.mvc/GetSavedChain", { boardId: _boardId }, function(result) {
        $.each(result, function(index, chainItem) {
            var image = "#chainimage-" + chainItem.Row + "-" + chainItem.Col + "-" + chainItem.BoardId;
            ToggleChainImage($(image));
        });
    });
}

function ToggleChainImage(image) {
    if (image.attr("src") == "../../Content/Images/chain-off.png") {
        image.attr("src", "../../Content/Images/chain-on.png");
    }
    else {
        image.attr("src", "../../Content/Images/chain-off.png");
    }
}

function BoardStar(img) {
    var image = $(img);

    var parts = image.attr("id").split("-");

    $.post("/MyKu.mvc/ToggleFavoriteFromPanel", { row: parts[1], col: parts[2], boardId: parts[3] }, function(result) {
        alert('Updated favorite myku');
    });
}

function FollowThisAuthor(img) {
    var image = $(img);

    var parts = image.attr("id").split("-");

    $.post("/User.mvc/FollowFriendByThread", { row: parts[1], col: parts[2], boardId: parts[3] }, function(result) {
        alert('You are now following this writer.');
    });
}

function BoardFlag(img) {
    var image = $(img);

    var parts = image.attr("id").split("-");

    $.post("/MyKu.mvc/SaveToChain", { row: parts[1], col: parts[2], boardId: parts[3] }, function(result) {
        var title = $("#view-" + parts[1] + "-" + parts[2] + "-" + parts[3]);

        title.removeClass();
        title.addClass("myKuDisplayTitleIsFlagged");

        var icon = $("#flaggedicon-" + parts[1] + "-" + parts[2] + "-" + parts[3]);
        icon.attr("src") == "../../Content/Images/board-greendot.png";
        
        alert('Successfully flagged.');
    });
}

function BoardTreasure(img) {
    var data = new Object();

    data["id"] = _boardId;

    $.post('/MyKu.mvc/ToggleBoardFavorite/' + _boardId, data, function(result) {
        var resultData = eval('(' + result + ')');
        if (resultData.isSuccessful == true) {
            if ($('#favoriteImage').attr('src') == '../../Content/Images/favorite-unselected.png') {
                $('#favoriteImage').attr('src', '../../Content/Images/favorite-selected.png');
                alert("This board has been saved to your favorites");
            }
            else {
                $('#favoriteImage').attr('src', '../../Content/Images/favorite-unselected.png');
                alert("This board has been removed from your favorites");
            }
        }
    });
}


$().ready(function() {
    ShowHelpPopup();
    GetLastChatId();
    SetBackground();
    SetClueTips();
    UpdateChain();
    UpdateArrows();

    $("#btnSubmitEmail").click(function() {
        var emailAddress = $("#emailAddress").val();

        var postId = $("#emailPostId");

        var parts = postId.html().split("-");

        $.post("/MyKu.mvc/EmailMykuFromPanel", { row: parts[1], col: parts[2], boardId: parts[3], email: emailAddress }, function(result) {
            alert("This myku has been sent to: " + emailAddress);
        });

        $('#divEmailPopup').jqmHide();
    });

    $("#btnSubmitComment").click(function() {
        var commentText = $("#commentText").val();

        var postId = $("#commentPostId");

        var parts = postId.html().split("-");

        $.post("/MyKu.mvc/AddCommentFromPanel", { row: parts[1], col: parts[2], boardId: parts[3], text: commentText }, function(result) {
            alert("Comment posted");
        });

        $('#divCommentPopup').jqmHide();
    });

    $(".board-star").click(function() {

        var image = $(this);

        var parts = image.attr("id").split("-");

        $.post("/MyKu.mvc/ToggleFavoriteFromPanel", { row: parts[1], col: parts[2], boardId: parts[3] }, function(result) {
            alert('Updated favorite myku');
        });
    });



    $('.board-flag').click(function() {
        var image = $(this);

        var parts = image.attr("id").split("-");

        $.post("/MyKu.mvc/SaveToChain", { row: parts[1], col: parts[2], boardId: parts[3] }, function(result) {
            //var title = $("#view-" + parts[1] + "-" + parts[2] + "-" + parts[3]);
            //var icon = $("#flaggedicon-" + parts[1] + "-" + parts[2] + "-" + parts[3]);

            /*title.removeClass();
            title.addClass("myKuDisplayTitleIsFlagged");*/

            var icon = $("#flaggedicon-" + parts[1] + "-" + parts[2] + "-" + parts[3]);
            icon.attr("src") == "../../Content/Images/board-greendot.png";
            alert('Successfully flagged.');
        });
    });

    $('.chainImage').click(function() {
        var image = $(this);

        var parts = image.attr("id").split("-");

        if (image.attr("src") == "../../Content/Images/chain-off.png") {
            $.post("/MyKu.mvc/SaveToChain", { row: parts[1], col: parts[2], boardId: parts[3] });
        }
        else {
            $.post("/MyKu.mvc/RemoveFromChain", { row: parts[1], col: parts[2], boardId: parts[3] });
        }

        ToggleChainImage(image);
    });

    $('#chkHideHelp').click(function() {
        var isChecked = $('#chkHideHelp').is(':checked');

        if (isChecked == true) {
            $.cookie('hideBoardHelp', 'true', { expires: 365 });
        }
        else {
            $.cookie('hideBoardHelp', 'false', { expires: 365 });
        }
    });


    $("#favoriteImage").click(function() {
        var data = new Object();

        data["id"] = _boardId;

        $.post('/MyKu.mvc/ToggleBoardFavorite/' + _boardId, data, function(result) {
            var resultData = eval('(' + result + ')');
            if (resultData.isSuccessful == true) {
                if ($('#favoriteImage').attr('src') == '../../Content/Images/favorite-unselected.png') {
                    $('#favoriteImage').attr('src', '../../Content/Images/favorite-selected.png');
                }
                else {
                    $('#favoriteImage').attr('src', '../../Content/Images/favorite-unselected.png');
                }
            }
        });
    });

    $(".board-treasure").click(function() {
        var data = new Object();

        data["id"] = _boardId;

        $.post('/MyKu.mvc/ToggleBoardFavorite/' + _boardId, data, function(result) {
            var resultData = eval('(' + result + ')');

            if (resultData.data == true) {
                alert("This board has been saved to your favorites");
                if ($('#favoriteImage').attr('src') == '../../Content/Images/favorite-unselected.png') {
                    $('#favoriteImage').attr('src', '../../Content/Images/favorite-selected.png');
                }
            }
            else {
                $('#favoriteImage').attr('src', '../../Content/Images/favorite-unselected.png');
                alert("This board has been removed from your favorites");
            }
        });
    });

    $('#textChat').keypress(function(e) {
        if (e.which == 13)
            PostChat(_boardId);
    });

    $("#btnEnterText").click(function() {
        PostChat(_boardId);
    });


    // update the matrix every 10 seconds
    setInterval("UpdateMatrix()", 10000);

    chatIntervalId = setInterval("UpdateChatLog(false)", CHAT_LOG_CHECK_FREQUENCY);
    onBoardIntervalId = setInterval("UpdateUsersOnBoard(" + _boardId + ")", 15000);

    var defaultCol = $('#defaultCol').val();
    var defaultRow = $('#defaultRow').val();

    if (defaultCol != -1) {

        var element = document.getElementById(defaultRow + '-' + defaultCol + '-' + _boardId);

        element.className = "highlightParent";

        var id = 'view-' + defaultRow + '-' + defaultCol + '-' + _boardId;

        var tempObject = document.createElement('div');
        tempObject.id = id;

        showWindow(tempObject);
    }

    if (_landingPage == 'True') {

        $('#userList').hide();
        $('#userListHeader').hide();
        $('#chatContainer').hide();
        $('#countOfUsersOnline').hide();
        $('#breadcrumb').hide();
        $('#userInfoPane').hide();


        landingMykus[0] = 'updatepanel-2-2-' + _tutorialId;
        landingMykus[1] = 'updatepanel-2-3-' + _tutorialId;
        landingMykus[2] = 'updatepanel-3-4-' + _tutorialId;
        landingMykus[3] = 'updatepanel-2-4-' + _tutorialId;
        landingMykus[4] = 'updatepanel-1-3-' + _tutorialId;
        landingMykus[5] = 'updatepanel-0-2-' + _tutorialId;
        landingMykus[6] = 'updatepanel-1-1-' + _tutorialId;
        landingMykus[7] = 'updatepanel-1-1-' + _tutorialId;

        LandingPage();
        landingPageIntervalId = setInterval("LandingPage()", LANDING_PAGE_FREQUENCY);

        return;
    }

});


    
    
    




