﻿// Reference a file-based JavaScript 
/// <reference path="../jquery/jquery-1.4.2.js" />
/// <reference path="~/content/js/danskit/danskit.notifier.js" />
/// <reference path="~/content/js/danskit/danskit.common.js" />

/*  Depends on:
 *	danskit.common.js
 *  danskit.notifier.js
 *  jquery-1.4.2.js
 */


var StringsLogin = {

    _LoggingInTitle: "Logger ind"
	, _LoggingInText: "Vent venligst..."
	, _LoginErrorOccuredTitle: 'Der opstod en login-fejl!'
	, _LoginErrorOccuredText: 'Det lykkedes ikke at logge ind. Serveren returnerede flg. fejl: <br><br><b> - {0}</b><p>Hvis denne fejl opstår igen bedes du venligst kontakte Dansk IT.</p>'
}


$(document).ready(function () {

    // attach event handlers:
    $("#link-login").click(function () { $("#topmenu-right").stop(true, true).toggleClass('expand', 'fast'); return false; });
    
    $("#btnSendPassword").click(function () { DoSendPassword(); });
    EnableLogin(true);

    $(":text, :password").labelify({ text: "title", labelledClass: "input-label", labelledFadedClass: "input-label-faded" });
    $("#btnLogin").button({ text: true });
    $("#btnSendPassword").button({ text: true });
    $("#chkLoginRemember").button({ text: false, icons: { primary: 'ui-icon-check'} });

    ReadCookie();
    $("#chkLoginRemember").click(function () { UpdateCookie(true); });

    $("#logout").click(DoLogout);
    $("#logout").attr("href", "#");

});

function EnableLogin(enable) {

    var $btn = $("#btnLogin");

    if (enable)
        $btn.bind('click', DoLogin);
    else
        $btn.unbind('click', DoLogin);


    $btn.button({ disabled: !enable });

}



function DoLogout() {

    var html = $("#div_logout_notice").html();
    var notice = $.notify({
        title: 'Er du sikker på at du vil logge af dit.dk?'
        ,text: html
        ,autohide: false
        , insert_brs: false
        , type: 'error'
    });

    notice.find('#lnkLogoutConfirm').click(function () {
        var handlerUrl = Strings.Urls._MemberHandlerUrl + '?m=LogoutMember';

        $.ajax({
            type: "POST"
            ,url: handlerUrl
            ,success: onDoLogoutSuccess 
            ,beforeSend: function (xhr) {
                if ($.browser.msie) {
                    xhr.setRequestHeader("Content-type", "application/json; charset=iso-8859-1")
                }
                else {
                    xhr.setRequestHeader("Content-type", "application/json; charset=utf-8")
                }
            }          
        });
        return false;
    });
    notice.find('#lnkLogoutCancel').click(function () {
        $.notify_clear();
        return false;
    });
}

function onDoLogoutSuccess(data, textStatus, XMLHttpRequest) {

    if (null != data) {
        if(data.RedirectUrl)
            window.location.href = data.RedirectUrl;
        else
            window.location.href = window.location;
    }
    
}

/// 
///	DO LOGIN FUNCTIONS
/// ##################
function DoLogin() {

    EnableLogin(false);
    UpdateCookie();

    var memberEmail = $('#txtLoginUserName').val();

    var memberPassword = encodeURIComponent($('#txtLoginPassword').val());
    var companyLogin = ($('#rbCompany').attr('checked')) ? "1" : "0";

    var dataString = '&email=' + memberEmail + '&password=' + memberPassword + '&company=' + companyLogin;
    var handlerUrl = Strings.Urls._MemberHandlerUrl + '?m=LoginMember';

    handlerUrl += dataString;

    $.notify({ title: StringsLogin._LoggingInTitle, text: StringsLogin._LoggingInText, loader: true, autohide: false });

    $.ajax({
        type: "POST"
        ,url: handlerUrl
        ,beforeSend: function (xhr) {
            if ($.browser.msie) {
                xhr.setRequestHeader("Content-type", "application/json; charset=iso-8859-1")
            }
            else {
                xhr.setRequestHeader("Content-type", "application/json; charset=utf-8")
            }
        }
		, data: {}
		, success: onLoginSuccess
        , error: onLoginError
		, complete: onLoginComplete

    });
    return 1;
}


function onLoginSuccess(data, textStatus, XMLHttpRequest) {

    if (null != data) {
        if (data.LoginSuccess) {
            window.location.href = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
        }
        else {
            if (data.Messages != undefined) {
                if (data.Messages.length > 0) {
                    var msg = BuildLoginErrorMessage(data);
                    $.notify({ title: data.LoginStatus, text: msg, type: "error", clear: true });
                    return;
                }
            }
            var error = (data.LoginStatus) ? data.LoginStatus : data;
            $.notify({ text: $.format(StringsLogin._LoginErrorOccuredText, error), type: "error", clear: true });

        }
    }

}

function onLoginError(xhr, textStatus, errorThrown) {

    $.notify({ text: $.format(StringsLogin._LoginErrorOccuredText, xhr.statusText), type: "error", clear: true });   
}

function onLoginComplete(XMLHttpRequest, textStatus) {
    EnableLogin(true);
}

function BuildLoginErrorMessage(data) {

    var html = "";
    if (data.Messages != null) {
        for (i = 0; i < data.Messages.length; i++) {
            html += "<span class='message'> - " + data.Messages[i] + "</span><br />";
        }
    }
    return html;
}


/// 
///	SEND PASSWORD FUNCTIONS
/// #######################
function DoSendPassword() {

    var memberEmail = $('#txtLoginUserName').val();

    if (memberEmail == "Skriv email her" | memberEmail.length < 4) {
        $.notify({ title: "Ugyldig email", text: "Den indtastede email er ikke en gyldig email adresse!", type: "error" });
        return;
    }

    var dataString = '&email=' + memberEmail;
    var handlerUrl = Strings.Urls._MemberHandlerUrl + '?m=SendPassword';
    handlerUrl += dataString;

    $.notify({ text: "Kontakter server. Vent venligst.... ", loader: true });

    $.ajax({
        type: "POST"
            , url: handlerUrl
            , beforeSend: function (xhr) {
                if ($.browser.msie) {
                    xhr.setRequestHeader("Content-type", "application/json; charset=iso-8859-1")
                }
                else {
                    xhr.setRequestHeader("Content-type", "application/json; charset=utf-8")
                }
            }
        , data: {}
		, success: onSendSuccess
		, complete: onSendComplete

    });
    return false;
}


function onSendSuccess(data, textStatus, XMLHttpRequest) {

    if (null != data) {
        if (data.LoginSuccess) {
            var msg = "Din adgangskode er hermed blevet sendt til din email!";
            $.notify({ text: msg, type: "success", clear: true });
        }
        else {
            $.notify({ text: "Serveren svarede ikke som forventet.<br/>Hvis denne fejl opstår igen bedes du venligst kontakte Dansk IT.", clear: true, type: "error" });
        }
    }

}

function onSendComplete(XMLHttpRequest, textStatus) { }


function UpdateTooltipForRememberLogin() {

    var chkLoginRemember = $('#chkLoginRemember');
    var lblchkLoginRemember = $('#lblchkLoginRemember');

    if (chkLoginRemember.attr('checked')) {
        lblchkLoginRemember.attr("title", "Klik her hvis du ikke længere ønsker at gemme brugernavn og adgangskode");

    }
    else {
        lblchkLoginRemember.attr("title", "Klik her, hvis du ønsker at gemme brugernavn og adgangskode i en cookie, lokalt på din computer. Gem aldrig din adgangskode på offentlige eller andres computere.");
    }
}


/// 
///	COOKIE FUNCTIONS
/// ################
function UpdateCookie(displayNotification) {

    if ($('#chkLoginRemember').attr('checked')) {

        var username = $('#txtLoginUserName').attr("value");
        var password = encodeURIComponent($('#txtLoginPassword').attr("value"));
        var isCompany = $('#rbCompany').attr('checked');

        var daysToExpire = 14;
        // set cookies to expire in 14 days
        $.cookie('username', username, { expires: daysToExpire });
        $.cookie('password', password, { expires: daysToExpire });
        $.cookie('remember', true, { expires: daysToExpire });
        $.cookie('isCompany', isCompany, { expires: daysToExpire });

        if (displayNotification)
            $.notify({ title: "Brugernavn og adgangskode gemt!", text: "Der er nu oprettet en cookie med dit brugernavn og adgangskode.<p>- Gem aldrig din adgangskode på offentlige eller andres computere!</p>", clear: true });

    } else {
        // reset cookies
        $.cookie('username', null);
        $.cookie('password', null);
        $.cookie('remember', null);
        $.cookie('isCompany', null);

        if(displayNotification)
            $.notify({ title: "Brugernavn og adgangskode slettet!", text: "Cookien med dit brugernavn op adgangskode er slettet.", clear: true });
    }

    UpdateTooltipForRememberLogin();
}



function ReadCookie() {

    var remember = $.cookie('remember');
    if (remember == 'true') {
        var username = $.cookie('username');
        var password = decodeURIComponent($.cookie('password'));
        var isCompany = ("true" == $.cookie('isCompany'));
        var chkLogin = $('#chkLoginRemember');
        // autofill the fields
        $('#txtLoginUserName').attr("value", username);
        $('#txtLoginPassword').attr("value", password);
        $('#rbCompany').attr("checked", isCompany);
        chkLogin.attr('checked', remember);
        chkLogin.button('refresh');
        $("#btnSendPassword").button({ text: true });
    }
}


