﻿var isloggedin = null;
var username = null;

function raknaTecken(langd) {

    var l = langd.value.length;

    if (l > 799) {
        langd.value = langd.value.substring(0, 800);
        document.getElementById("teckenKvar").innerHTML = 0;
    } else {
        var kvar = 800 - l;
        document.getElementById("teckenKvar").innerHTML = kvar;
    }
}

//Fix av svenska tecken när man postar data med updatepanel
//http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=282229
function pageLoad(sender, args) {
    try {
        if (!args.get_isPartialLoad()) {
            Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(OnBeginRequest);
        }
    }
    catch (e) {}
}
function OnBeginRequest(sender, args) {
    args.get_request().get_headers()["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8";
}


function showLogin() {

    var username = readCookie('username');
    if (username == "") {
        // kom inte ihåg anvnamn
        $("#rememberpassword").attr("checked", "");
        $("#username,#password").val("");
    }

    if (username != null && username.length > 0) {
        $("#username").val(username);
        $("#rememberpassword").attr("checked", "checked");
    }

    $("#loginBox").dialog({
        height: 320,
        width: 240,
        modal: true,
        title: "Logga in",
        open: function () {
            if ($("#username").val().length > 0)
                $("#password").focus();
        },
        buttons: {
            "Logga in": function () {

                var username = $("#username").val();
                var password = $("#password").val();

                var c = $("#rememberpassword").attr("checked");
                if (c == true || c == "checked") {
                    createCookie('username', username, 365);
                }
                else
                    createCookie('username', '', 365);

                TM.LoginService.SignIn(username, password, function (result) {
                    if (result.Error != null && result.Error != "")
                        alert(result.Error);
                    else {
                        isloggedin = true;
                        checkLogin();

                        $("#loginBox").dialog("close");
                    }
                }, function () {
                    alert("Ett fel har uppstått i inloggningen.");
                });


            },
            "Avbryt": function () {
                $(this).dialog("close");
            }
        }
    });

    $("#password").unbind("keydown").keydown(function (k) {
        if (k.keyCode == 13) {
            $(".ui-dialog:visible .ui-dialog-buttonset button:first").click();
            return false;
        }
    });
}

function showRegister() {
    $("#registerBox").dialog({
        height: 450,
        width: 300,
        modal: true,
        title: "Skapa ny inloggning",
        buttons: {
            "Skapa": function () {

                if (!$("#reg_approve").is(":checked")) {
                    alert("Du måste godkänna unt:s regler för artikelkommentarer");
                    return;
                }

                var err = false;
                $("#registerBox input.required").each(function () {
                    if ($(this).val() == "") {
                        alert("Fyll i alla fält markerade med *");
                        err = true;
                        return false;
                    }
                });

                if (err)
                    return;

                var fornamn = $("#reg_fornamn").val();
                var efternamn = $("#reg_efternamn").val();
                var alias = $("#reg_alias").val();
                var password = $("#reg_password").val();
                var epost = $("#reg_email").val();
                var tel = $("#reg_phone").val();
                var url = window.location.href;

                $(this).dialog("close");
                var dialog = this;

                TM.RegistrationService.SendReg(fornamn, efternamn, alias, password, epost, tel, url, function (result) {
                    if (result.Error != null && result.Error != "") {
                        alert(result.Error);
                        $(dialog).dialog("open");
                    }
                    else if (result.Value2 != "") {
                        alert(result.Value2);
                    }
                    else {
                        alert("Ogiltigt svar.");
                        $(dialog).dialog("open");
                    }
                }, function () {
                    alert("Ett fel har uppstått i registreringen.");
                    $(dialog).dialog("open");
                });

            },
            "Avbryt": function () {
                $(this).dialog("close");
            }
        }
    });
}

function showForgotpassword() {
    $("#forgotpasswordBox").dialog({
        height: 300,
        width: 200,
        modal: true,
        title: "Glömt lösenord?",
        buttons: {
            "Skicka": function () {

                var email = $("#fgt_email").val();
                var password = $("#fgt_password").val();
                var returnurl = window.location.href;

                TM.RegistrationService.GenerateNewPassword(email, password, returnurl, function (result) {

                    alert("E-post skickas till " + email + ".\n\nKlicka på länken i e-postmeddelandet för att aktivera ändringen.");
                    $("#forgotpasswordBox").dialog("close");

                }, function (err) {
                    alert(err.get_message());
                });

            },
            "Avbryt": function () {
                $(this).dialog("close");
            }
        }
    });
}

function logout(finished) {
    TM.LoginService.SignOut(function (result) {
        isloggedin = false;
        checkLogin();

        if (finished)
            finished();
    }, function () {
        alert("Ett fel har uppstått, kunde inte logga ut.");
    });
}


// kollar om inloggad och ställer om länkar etc efter login status
function checkLogin() {

    if (isloggedin == null) {
        if (readCookie('E2nt') == null) {
            isloggedin = false;
            setupLogin();
        }
        else
            TM.LoginService.GetUserName(function (username) {
                isloggedin = username != null;
                setupLogin();
            });
    }
    else
        setupLogin();
}

var to = null; addedLoginHoverBox = false;
function hidehoverloginbox() {
    if (to)
        clearTimeout(to);
    to = setTimeout(function () {
        $("#loginhoverBox").hide();
    }, 500);
}

function setupLogin() {

    $("#loginLinks *").remove();
    $("#loginhoverBox").remove();
    $(".Krubrik").unbind("focus");
    $(".MessageText").unbind("mouseenter").unbind("mouseleave").unbind("focus");

    if (isloggedin) {
        $("#loginLinks").append(
                    $("<a />").attr("href", "#").addClass("mer").addClass("logout").text("Logga ut")
                );

        $(".MessageText").addClass("loggedin");
        $(".sendcomment").attr("disabled", "");
    }
    else {
        $("#loginLinks").append(
                    $("<a />").attr("href", "#").addClass("mer").text("Logga in").click(function () { showLogin(); return false; })
                ).append(
                    "<br />"
                ).append(
                    $("<a />").attr("href", "#").addClass("mer").text("Skapa inloggning").click(function () { showRegister(); return false; })
                );

        $(".MessageText").addClass("not-loggedin").mouseenter(function (e) {

            if (!addedLoginHoverBox) {

                $("#expandKommen").append(
                    $("<div id=\"loginhoverBox\">Klicka här för att logga in</div>").hide().css({ 'position': 'absolute', 'top': parseInt(mb.offset().top - $("#expandKommen").offset().top + (mb.height() / 2) - 20) + 'px', 'left': parseInt(mb.offset().left - $("#expandKommen").offset().left + 10) + 'px', 'z-index': '100', 'width': parseInt(mb.width() - 40) + 'px', 'text-align': 'center', 'color': '#00537E', 'text-decoration': 'underline', 'background': '#FFF9D4', 'font-size': '17px', 'padding': '10px', 'cursor': 'pointer' })
                                .hover(function () {
                                    $(this).show();
                                    if (to)
                                        clearTimeout(to);
                                }, function () {
                                    hidehoverloginbox();
                                })
                     );

                $("#loginhoverBox").click(function () {
                    showLogin();
                });

                addedLoginHoverBox = true;
            }

            $("#loginhoverBox").show();

            if (to)
                clearTimeout(to);
            return false;

        }).mouseleave(function (e) {

            hidehoverloginbox();
            return false;

        }).focus(function () {

            showLogin();

        });

        $(".Krubrik").focus(showLogin);

        $(".sendcomment").attr("disabled", "disabled");

        var mb = $(".MessageText");



    }

}

function checkIsScrolledIntoView() {
    var el = $(".MessageText").first();
    if (el.is(":visible") && isScrolledIntoView(el)) {
        $(window).unbind("scroll");
        checkLogin();
    }
}

$(document).ready(function () {

    $(window).scroll(checkIsScrolledIntoView);

    setTimeout(function () {

        checkIsScrolledIntoView();

    }, 1000);

    $("#forgotpassword").click(function () {
        showForgotpassword();
        return false;
    });

    $(".newlogin").click(function () {
        showRegister();
        return false;
    });

    $(".logout").live("click", function () {
        var that = this;
        logout(function () {
            if ($(that).hasClass("logoutdone")) {
                $(that).hide(1000);
                window.location.reload();
            }
        });
        return false;
    });

});
   

