﻿window.bloemen.openid_window=null;
window.bloemen.openid_polling_interval = 0;

function bloemenLogin(email, pwd, rememberme) {
    $('#preloader').center().jqmShow();
    $.ajax({
        type: "POST",
        url: '/handlers/login.ashx?do=login&network=' + (window.bloemen.network ? window.bloemen.network : "") + "&appName=" + window.bloemen.appName,
        data: {
            email: email,
            password: pwd,
            rememberme: rememberme
        },
        success:
        function (data, status, xhr) {
            if (data && data == "0") {
                if (!window.bloemen.login_redirect_url)
                    window.bloemen.reload();
                else
                    document.location = window.bloemen.login_redirect_url;
            } else {
                $('#preloader').jqmHide();
                var loginError = window.bloemen.errorMessages.loginError;
                if (data == "1") {
                    $login_validator.showErrors({ "login_email": loginError.user_not_found });
                }
                else if (data == "2") {
                    $login_validator.showErrors({ "login_password": loginError.incorrect_password });
                }
            }
        },
        error: function (xhr, status, err) {
            $('#preloader').jqmHide();
            $login_validator.showErrors({ "login_password": err });
        }
    });
}

function handleSocialLoginCallback(data, type) {
    if (data == "0") {
        if (!window.bloemen.login_redirect_url)
            window.bloemen.reload(document.location.pathname);
        else
            document.location = window.bloemen.login_redirect_url;
    } else if (data == "1") {
        document.location = window.bloemen.registerLink + '?st=' + type;
    } else if (data == "2") {
        $('#preloader').jqmHide();
        showMessage(window.bloemen.errorMessages.loginError.user_not_activated);
    }
}

function socialLogin(type) {
    $('#preloader').center().jqmShow();
    $.get('/handlers/login.ashx?rnd=' + Math.random(),
            {
                "do": "login_network",
                network: type,
                appName: window.bloemen.appName
            },
            function (data) {
                handleSocialLoginCallback(data, type);
            });
}

function openidSignInCallback(result) {
    if (result.success) {
        socialLogin("openid")
    } else {
        showMessage(window.bloemen.errorMessages.loginError["openid_fail"]);
        $login_popup.jqmShow();
    }
    clearInterval(window.bloemen.openid_polling_interval);
}

var $login_validator;
var $forget_validator;
var $login_popup = $('#login_popup');
var $login_form = $('#login_form');
var $login_submit = $('#login_submit');

$(function () {
    $login_popup.jqm({ modal: true });
    $('#forget_password').jqm({ modal: true });

    $('#a_login').click(function () {
        $("#login_email").val('');
        $("#login_password").val('');
        $login_popup.center().jqmShow();
    });

    $login_form.keypress(function (evt) {
        if (evt.which == '13')
            $login_submit.click();
    });

    $login_validator = $login_form.validate({
        errorElement: "span",
        wrapper: 'div',
        errorPlacement: function (error, element) {
            error.appendTo(element.closest('dd,div'));
            $(error).attr("class", "error_tip");
            $(error).find("span").css("display", "block");
        },
        highlight: function (element, errorClass, validClass) {
            $(element).closest('dd,div').addClass("valid_error");
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).closest('dd,div').removeClass("valid_error");
            $(element).closest('dd,div').find(".error_tip").remove();
        }
    });

    $login_submit.click(function (evt) {
        if ($login_form.valid()) {
            bloemenLogin($('#login_email').val(), $('#login_password').val(), $('#login_rememberme').is(':checked') ? "1" : "0", false);
        }
        evt.preventDefault();
    });

    $forget_validator = $('#forgetForm').validate({
        errorElement: "span",
        wrapper: 'div',
        errorPlacement: function (error, element) {
            error.appendTo(element.closest('dd,div'));
            $(error).attr("class", "error_tip");
            $(error).find("span").css("display", "block");
        },
        highlight: function (element, errorClass, validClass) {
            $(element).closest('dd,div').addClass("valid_error");
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).closest('dd,div').removeClass("valid_error");
            $(element).closest('dd,div').find(".error_tip").remove();
        }
    });


    function signInComplete(signInCompletedEventArgs) {
        $login_popup.jqmHide();
        if (signInCompletedEventArgs.get_resultCode() != Microsoft.Live.AsyncResultCode.success) {
            showMessage(window.bloemen.errorMessages.loginError.windows_live_fail);
            $login_popup.jqmShow();
            return;
        }
        else {
            socialLogin("live");
        }
    }

    $('#wlLogin').click(function () {
        $login_popup.jqmHide();
        Microsoft.Live.App.signIn(signInComplete);
    });

    $('#openIdLogin').click(function (evt) {
        $login_popup.jqmHide();
        if (window.bloemen.openid_window && !window.bloemen.openid_window.closed) {
            window.bloemen.openid_window.close();
        }
        window.bloemen.openid_window = window.open('/handlers/openid.aspx?app=' + window.bloemen.appName, '_blank', 'toolbar=0,width=700,height=500', '');
        window.bloemen.openid_polling_interval = setInterval(function () {
            if (window.bloemen.openid_window && window.bloemen.openid_window.closed) {
                openidSignInCallback({ success: false });
            }
        }, 1500);
    });

    $('.a_forget_pwd').click(function () {
        $(this).closest('div.popup').jqmHide();
        $('#forget_password').center().jqmShow();
    });

    $("#a_get_pwd").click(function () {
        if ($('#forgetForm').valid()) {
            $.get('/handlers/login.ashx?rnd=' + Math.random(),
             {
                 "do": "forget",
                 appName: window.bloemen.appName,
                 email: $('#forget_email').val()
             },
             function (data) {
                 if (data == "0") {
                     $('#forget_password').jqmHide();
                     showMessage($('#s_mailsent').text());
                 } else if (data == "1") {
                     $forget_validator.showErrors({ "forget_email": window.bloemen.errorMessages.loginError.user_not_found });
                 }
             });
        }
    });
 });

 $('#fbLogin').click(function () {
     $('#login_popup').jqmHide();
     FB.login(function (response) {
         if (response.session) {
             socialLogin("facebook");
         } else {
             showMessage(window.bloemen.errorMessages.loginError.facebook_fail);
             $('#login_popup').jqmShow();
         }
     }, { perms: 'email,user_photos,user_location,user_about_me,user_birthday,friends_about_me,friends_location,friends_birthday,friends_photos' });
 });

