﻿var timerID = 0;
var interval = 5000;
function UpdateTimer() {
    if (timerID) {
        clearTimeout(timerID);
    }

    Messages.UnreadMessages(OnUnreadMessagesSucceeded, OnFailed);
}

function OnUnreadMessagesSucceeded(results, eventArgs) {
    var messageDiv = document.getElementById("Messages");
    var messageWrp = $get("Message-wrapper");
    var messageCnt = $get("MessageContainer");
    var ul = document.createElement("UL")
    for (var x = 0; x < results.length; x++) {
        var userMessage = results[x];
        var li = document.createElement('li');
        var link = document.createElement('a');
        link.id = "message" + userMessage.UserPMessageID;
        link.href = "javascript:ShowMessage(" + userMessage.UserPMessageId + ")";
        link.appendChild(document.createTextNode(userMessage.Subject));
        li.appendChild(link);
        ul.appendChild(li);
    }
    if (results.length > 0) {
        messageDiv.innerHTML = "";
        messageDiv.appendChild(ul);
        var myHeight = results.length * 20 + 10;
        messageCnt.style.height = myHeight + "px";
        messageWrp.style.height = messageCnt.style.height;
        slidedown("MessageContainer");
    }
    else {
        if (messageCnt.style.display != "none")
        {
            slideup("MessageContainer");
            messageWrp.style.height = 0;
        }
    }

    timerID = setTimeout("UpdateTimer()", interval);
}

function ShowMessage(messageID) {
    Stop();
    Messages.GetMessage(messageID, OnGetMessageSucceeded, OnFailed);
}

function OnGetMessageSucceeded(results, eventArgs) {
    var messageDiv = $get("Message");
    var messageHeaderDiv = $get("MessageHeader");
    var messageBodyDiv = $get("MessageBody");
    messageHeaderDiv.innerHTML = results.Subject;
    messageBodyDiv.innerHTML = results.Body;
    messageDiv.style.display = '';
    // get the bounds of the div
    var messageLinkBounds = Sys.UI.DomElement.getBounds($get("message" + results.UserPMessageId));
    //  center of window
    var x = messageLinkBounds.x;
    // move to just below link
    var y = messageLinkBounds.y + 20;
    //	set the progress element to this position
    Sys.UI.DomElement.setLocation(messageDiv, x, y);
    
    //make call to mark this message as read
    Messages.MarkAsRead(results.UserPMessageID, OnMarkAsReadSucceeded, OnFailed);
}

function OnMarkAsReadSucceeded() {

// do nothing
}

function CloseMessage() {
    var messageDiv = $get("Message");
    messageDiv.style.display = 'none';
    Start();
}

function OnFailed(error) {
    var stackTrace = error.get_stackTrace();
    var message = error.get_message();
    var statusCode = error.get_statusCode();
    var exceptionType = error.get_exceptionType();
    var timedout = error.get_timedOut();

    // Display the error.    
    var RsltElem =
        "Stack Trace: " + stackTrace + "<br/>" +
        "Service Error: " + message + "<br/>" +
        "Status Code: " + statusCode + "<br/>" +
        "Exception Type: " + exceptionType + "<br/>" +
        "Timedout: " + timedout;
//    alert(RsltElem);
}

function Start() {
    UpdateTimer();
}

function Stop() {
    if (timerID) {
        clearTimeout(timerID);
        timerID = 0;
    }
}

function getClientBounds() {
    /// <summary>
    /// Gets the width and height of the browser client window (excluding scrollbars)
    /// </summary>
    /// <returns type="Sys.UI.Bounds">
    /// Browser's client width and height
    /// </returns>

    var clientWidth;
    var clientHeight;
    switch (Sys.Browser.agent) {
        case Sys.Browser.InternetExplorer:
            clientWidth = document.documentElement.clientWidth;
            clientHeight = document.documentElement.clientHeight;
            break;
        case Sys.Browser.Safari:
            clientWidth = window.innerWidth;
            clientHeight = window.innerHeight;
            break;
        case Sys.Browser.Opera:
            clientWidth = Math.min(window.innerWidth, document.body.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.body.clientHeight);
            break;
        default:  // Sys.Browser.Firefox, etc.
            clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth);
            clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight);
            break;
    }
    return new Sys.UI.Bounds(0, 0, clientWidth, clientHeight);
}
