﻿function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
} 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}


var chatUpdateTimer;

function updateStatusBar() {
    $("statusbarloading").style.display = "inline-block";

    new Ajax.Request(urlStatusbar, {
        method: 'get',
        onSuccess: function(transport) {
            var json = transport.responseText.evalJSON();

            $("statusbarcontent").descendants().each(function(o) { o.remove(); });

            if (json.UserID > 0) {
                var d1 = document.createElement("div");
                d1.className = "LoggedIn1";
                d1.innerHTML = "Logget inn som <a href='" + urlProfileShow + "/" + json.UserID + "'>" + json.Nick + "</a> (" + json.Name + ") [<a href='" + urlProfileEdit + "'>rediger</a>|<a href='" + urlLogout + "'>logg ut</a>]";
                var d2 = document.createElement("div");
                d2.className = "LoggedIn2";
                d2.innerHTML = "<strong>Karma:</strong> " + json.Karma;
                var d3 = document.createElement("div");
                d3.className = "LoggedIn3";
                d3.innerHTML = "<strong>Meldinger:</strong> <a href='" + urlMessages + "'>" + json.TotalMessages + "</a> (" + json.NewMessages + " uleste)";
                $("statusbarcontent").appendChild(d1);
                $("statusbarcontent").appendChild(d2);
                $("statusbarcontent").appendChild(d3);
            }
            else {
                var d1 = document.createElement("div");
                var span1 = document.createElement("span");
                var span2 = document.createElement("span");
                span1.innerHTML = "Du er ikke innlogget. <a href='" + urlLoginRegister + "'>Registrer deg</a> eller ";
                span2.innerHTML = "Logg inn";
                span2.className = "FakeLink";
                span2.onclick = new Function("toggleLogin();");
                d1.className = "Anonymous1";
                d1.appendChild(span1);
                d1.appendChild(span2);
                $("statusbarcontent").appendChild(d1);
            }

            var dChat = document.createElement("div");
            dChat.onclick = new Function("toggleChat();");
            if (json.UserID > 0) { dChat.className = "LoggedIn4 FakeLink"; } else { dChat.className = "Anonymous2 FakeLink"; }
            dChat.innerHTML = "<strong>Chat</strong>";
            var nc = json.NewChat;
            if ($("statusbarchatcontainer").style.display != "none") { nc = 0; }
            if (nc > 0) { dChat.innerHTML = dChat.innerHTML + " <span> (" + json.NewChat + ")</span>"; }
            dChat.innerHTML = dChat.innerHTML + ": "
            var lc = json.LastChatMessage;
            if (lc.length > 50) { lc = lc.substring(0, 50) + "..."; }
            dChat.innerHTML = dChat.innerHTML + json.LastChatNick + " - " + lc;

            $("statusbarcontent").appendChild(dChat);


            var bAlt = false;
            $("statusbarchatmessages").descendants().each(function(o) { o.remove(); });
            json.LastChatMessages.each(function(o) {
                var dMsg = document.createElement("div");
                if (bAlt) { dMsg.className = "ChatMessage"; } else { dMsg.className = "ChatMessageAlternate"; }
                var dMsgDate = new Date(o.DateCreated);
                dMsg.innerHTML = "<a href='" + urlProfileShow + "/" + o.PersonID + "'>" + o.Nick + "</a> (" + o.Extended_TimeAgoShort + "): " + o.Message;
                $("statusbarchatmessages").appendChild(dMsg);
                bAlt = !bAlt;
            });
        }
    });


    $("statusbarloading").style.display = "none";
    clearTimeout(chatUpdateTimer);
    chatUpdateTimer = setTimeout("updateStatusBar()", 15000);
}


function toggleChat() {
    Effect.toggle('statusbarchatcontainer', 'appear', { duration: 0.4, afterFinish: function() {
        $("statusbarchatmessages").scrollTop = $("statusbarchatmessages").scrollHeight;
        new Ajax.Request(urlSetChatRead, {
            method: 'post',
            onSuccess: function(transport) {
            }
        });
    }
    });
}

function toggleLogin() {
    Effect.toggle('statusbarlogincontainer', 'appear', { duration: 0.4, afterFinish: function() {
    }
    });
}

var chatInputDefaultText = "Skriv din beskjed her";

document.observe("dom:loaded", function() {
    setTimeout("updateStatusBar()", 100);
    if (loggedInID > 0) {
        $("master_newchatmessage_text").value = chatInputDefaultText;
        $("master_newchatmessage_text").observe("keypress", postNewChat);
        $("master_newchatmessage_text").observe("focus", chatFocus);
        $("master_newchatmessage_text").observe("blur", chatBlur);
        $("master_newchatmessage_text").disabled = "";
    } else {
        $("master_newchatmessage_text").disabled = "disabled";
        $("master_newchatmessage_text").value = "Du må logge inn for å skrive";
        $("master_login_dologin").observe("click", doAjaxLogin);
        $("master_login_username").observe("keypress", postLogin);
        $("master_login_password").observe("keypress", postLogin);
    }
});

function chatFocus(event) {
    if ($("master_newchatmessage_text").value == chatInputDefaultText) {
        $("master_newchatmessage_text").value = "";
        $("master_newchatmessage_text").className = "Active";
    }
}

function chatBlur(event) {
    if ($("master_newchatmessage_text").value == chatInputDefaultText || $("master_newchatmessage_text").value == "") {
        $("master_newchatmessage_text").value = chatInputDefaultText;
        $("master_newchatmessage_text").className = "";
    }
}


function postNewChat(event) {
    var key = event.which || event.keyCode;
    if (key == Event.KEY_RETURN && loggedInID > 0) {
        var newMsg = $("master_newchatmessage_text").value;
        if (newMsg != chatInputDefaultText && trim(newMsg) != chatInputDefaultText && trim(newMsg) != "") {
            newMsg = trim(newMsg);

            $("master_newchatmessage_text").value = chatInputDefaultText;
            $("master_newchatmessage_text").className = "";
            $("master_newchatmessage_text").blur();
            
            new Ajax.Request(urlPostChat, {
                method: 'post',
                parameters: { Message: newMsg },
                onSuccess: function(transport) {
                    updateStatusBar();
                }
            });
            
        }
    }
}

function postLogin(event) {
    var key = event.which || event.keyCode;
    if (key == Event.KEY_RETURN) { doAjaxLogin(); }
}


function doAjaxLogin(event) {
    var lUsername = $("master_login_username").value;
    var lPassword = $("master_login_password").value;
    var lRememberMe = 0;
    if ($("master_login_rememberme").checked) { lRememberMe = 1; }

    new Ajax.Request(urlPostLogin, {
        method: 'post',
        parameters: {
            Username: lUsername,
            Password: lPassword,
            RememberMe: lRememberMe
        },
        onSuccess: function(transport) {
            if (parseInt(transport.responseText) > 0) {
                window.location.reload();
            } else {
                alert("Ugyldig brukernavn eller passord!");
            }
        }
    });
}

function recoverPassword() {
    var madr = prompt("Hvilken epostadresse registrerte du deg med?");
    if (madr == null) { return; }
    if (madr == "") { alert("Du må fylle inn epostadressen din for at vi skal kunne sende deg passordet ditt"); return; }

    new Ajax.Request(urlPostRecover, {
        method: 'post',
        parameters: {
            Email: madr
        },
        onSuccess: function(transport) {
            alert(transport.responseText);
        }
    });    
}
