﻿/**
 * 登录类型切换
 */
$('.logintypebtn').click(function () {
    var logintype = $(this).data('logintype');
    ChangeLogInType(logintype);
});

/**
 * 登录类型切换
 */
function ChangeLogInType(logintype) {
    $('.logintype').hide();
    $('.' + logintype + '').show();

    if (logintype == 'quicklogin') {
        $('.quicklogin')[0].reset();
        InitLogError($('#quickloginform'));
        InitPlaceHolder();
    }
    else {
        ChangeLogInUserAs('loginuseras1');
    }
}

/**
 * 用户身份切换
 */
$('.loginuserasbtn').click(function () {
    var loginuseras = $(this).data('loginuseras');
    var curloginuseras = $('.loginuserasbtn.cur').data('loginuseras');

    if (loginuseras != curloginuseras) {
        $('.loginuserasbtn').toggleClass('cur');
        ChangeLogInUserAs(loginuseras);
    }
});

/**
 * 用户身份切换
 */
function ChangeLogInUserAs(loginuseras) {
    $('.loginuseras').hide();
    var form = $('form.' + loginuseras);
    $('.' + loginuseras).show();
    $('form.' + loginuseras)[0].reset();
    $('form.loginuseras [name="p"]').val('');

    InitLogError(form);
    InitPlaceHolder();
}

/**
 * 登录错误
 */
function InitLogError(form) {
    $(form).find('[name="pwd"]').val('');
}

/**
 * 初始化登录验证 
 */
function InitValidate() {
    var loginuseras1formValidateObj = $('#loginuseras1form').validate({
        // onclick主要是针对radio，checkbox，select，如果用layui就用不到了
        onclick: function (element) {
            $(element).valid();
        },
        onfocusout: function (element) {
            $(element).valid();
        },
        errorPlacement: function (error, element) {
            if (element.is(":checkbox") || element.is(":radio")) {
                element.parent().append(error);
            } else {
                element.parent('div').append(error);
            }
        },
        // 忽略验证的元素，可根据情况自己写
        // 下面这个只要是class="ignore"下的所有元素都不进行验证
        ignore: ".ignore *",
        rules: {
            username: {
                required: true,
                //account: true
            },
            pwd: {
                required: true
            }
        },
        messages: {
            username: {
                required: '请输入手机号'
            },
            pwd: {
                required: '请输入密码'
            }
        }
    });

    var loginuseras2formValidateObj = $('#loginuseras2form').validate({
        // onclick主要是针对radio，checkbox，select，如果用layui就用不到了
        onclick: function (element) {
            $(element).valid();
        },
        onfocusout: function (element) {
            $(element).valid();
        },
        errorPlacement: function (error, element) {
            if (element.is(":checkbox") || element.is(":radio")) {
                element.parent().append(error);
            } else {
                element.parent('div').append(error);
            }
        },
        // 忽略验证的元素，可根据情况自己写
        // 下面这个只要是class="ignore"下的所有元素都不进行验证
        ignore: ".ignore *",
        rules: {
            username: {
                required: true,
                //account: true
            },
            pwd: {
                required: true
            }
        },
        messages: {
            username: {
                required: '请输入手机号'
            },
            pwd: {
                required: '请输入密码'
            }
        }
    });

    var reloginformValidateObj = $('#reloginform').validate({
        // onclick主要是针对radio，checkbox，select，如果用layui就用不到了
        onclick: function (element) {
            $(element).valid();
        },
        onfocusout: function (element) {
            $(element).valid();
        },
        errorPlacement: function (error, element) {
            if (element.is(":checkbox") || element.is(":radio")) {
                element.parent().append(error);
            } else {
                element.parent('div').append(error);
            }
        },
        // 忽略验证的元素，可根据情况自己写
        // 下面这个只要是class="ignore"下的所有元素都不进行验证
        ignore: ".ignore *",
        rules: {
            pwd: {
                required: true
            }
        },
        messages: {
            pwd: {
                required: '请输入密码'
            }
        }
    });

    var quickloginformValidateObj = $('#quickloginform').validate({
        // onclick主要是针对radio，checkbox，select，如果用layui就用不到了
        onclick: function (element) {
            $(element).valid();
        },
        onfocusout: function (element) {
            $(element).valid();
        },
        errorPlacement: function (error, element) {
            if (element.is(":checkbox") || element.is(":radio")) {
                element.parent().append(error);
            } else {
                element.parent('div').append(error);
            }
        },
        // 忽略验证的元素，可根据情况自己写
        // 下面这个只要是class="ignore"下的所有元素都不进行验证
        ignore: ".ignore *",
        rules: {
            useras: {
                required: true
            },
            mobile: {
                required: true,
                mobile: true
            },
            captcha: {
                required: true,
                captcha: true
            }
        },
        messages: {
            useras: {
                required: '请选择账号类型'
            },
            mobile: {
                required: '请输入手机号'
            },
            captcha: {
                required: '请输入短信验证码'
            }
        }
    });
}

/**
 * 账号密码登录
 */
function LogIn(form) {
    var captcha = new TencentCaptcha(AppSettings.TencentCaptchaConfig.APP_ID, function (res) {
        if (res.ret === 0) {
            $(form).find('[name="tencentcaptcha_t"]').val(res.ticket);
            $(form).find('[name="tencentcaptcha_r"]').val(res.randstr);

            var rsa = new JSEncrypt();
            rsa.setPublicKey($("#RSA_PublicKey").val());

            var pwd = $(form).find('[type="password"]').val();
            var pwdrsa = rsa.encrypt(pwd);
            $(form).find('[name="p"]').val(pwdrsa);

            $.ajax({
                url: AppSettings.SiteConfig.Www + '/user/loginasync',
                type: 'post',
                data: $(form).serialize(),
                dataType: 'json',
                beforeSend: function () {
                    layer.load(2, { shade: 0.4 });
                },
                error: function () {
                    layer.closeAll();
                    layer.msg('登录错误', { icon: 2, shade: 0.4 });
                },
                success: function (json) {
                    layer.closeAll();
                    if (json.code == 1) {
                        var returnUrl = json.data.returnUrl
                        if (returnUrl=="/") {
                            returnUrl = AppSettings.SiteConfig.Www + returnUrl;
                        }
                        location.href = returnUrl;
                    }
                    else {
                        InitLogError(form);
                        layer.msg(json.msg, { icon: 2, shade: 0.4 });
                    }
                }
            });
        }
    });
    captcha.show();    
}

/**
 * 快速登录
 */
function QuickLogIn(form) {
    $.ajax({
        url: AppSettings.SiteConfig.Www + '/user/quickloginasync',
        type: 'post',
        data: $(form).serialize(),
        dataType: 'json',
        beforeSend: function () {
            layer.load(2, { shade: 0.4 });
        },
        error: function () {
            layer.closeAll();
            layer.msg('登录错误', { icon: 2, shade: 0.4 });
        },
        success: function (json) {
            layer.closeAll();
            if (json.code == 1) {
                location.href = json.data.returnUrl;
            }
            else {
                layer.msg(json.msg, { icon: 2, shade: 0.4 });
            }

        }
    });
}

/**
 * 初始化是否超时需要重新登录
 */
function InitReLogIn() {

    
    var K8008_USERNAME = lumStr;

    if (!!K8008_SESSIONID && !!K8008_USERAS && !!K8008_USERNAME) {
        $.ajax({
            url: AppSettings.SiteConfig.Www + '/user/getisneedrelogin',
            type: 'post',
            dataType: 'json',
            success: function (json) {
                var form = $('form.relogin');
                if (json.code == 1) {
                    form.find('[name="username"]').val(json.data.Mobile);
                    form.find('[name="useras"]').val(json.data.K8008_USERAS);
                    form.find('#relogin_username').html(json.data.Mobile);
                    //form.find('#relogin_usertypedesc').html(json.data.UserAsDesc);
                    ChangeLogInUserAs('relogin');
                }
                else {
                    form.find('[name="username"]').val('');
                    form.find('[name="useras"]').val('');
                    form.find('#relogin_username').html('');
                    //form.find('#relogin_usertypedesc').html('');
                }
            }
        });
    }
}

$(function () {
    InitValidate();

    layui.use(['form'], function () {
        InitReLogIn();

        layui.form.on('submit(UserAs1LogIn)', function (data) {
            var validResult = $(data.form).valid();
            if (validResult) {
                LogIn(data.form);
            }

            return false;
        });

        layui.form.on('submit(UserAs2LogIn)', function (data) {
            var validResult = $(data.form).valid();
            if (validResult) {
                LogIn(data.form);
            }

            return false;
        });

        layui.form.on('submit(ReLogIn)', function (data) {
            var validResult = $(data.form).valid();
            if (validResult) {
                LogIn(data.form);
            }

            return false;
        });

        layui.form.on('submit(QuickLogIn)', function (data) {
            var validResult = $(data.form).valid();
            if (validResult) {
                QuickLogIn(data.form);
            }

            return false;
        });
    });
});