﻿var userControllerUrl = '/User';
var lastRegName = lastRegEmail1 = lastRegPwd1 = lastRegPwd2 = lastInvitationCode = '';
var boolRegName = boolRegEmail1 = boolRegPwd1 = boolRegPwd2 = boolInvitationCode = false;
$(document).ready(function() {
    //    $('#txtInvitationCode').unbind().bind('keypress', IntKeyEvent)
    //                .bind('keyup', IntKeyEvent);


    //    if ($.trim($('#txtInvitationCode').val()).length > 0) {
    //        boolInvitationCode = true;
    //        RegTips("txtInvitationCode", "", 1);
    //        lastInvitationCode = $.trim($('#txtInvitationCode').val());
    //    }

    InitCityObj("selProvince", "selCity");

    //注册按钮
    $('#btnRegister').unbind().hover(function() {
        $(this).addClass('regcolor');
    }, function() {
        $(this).removeClass('regcolor');
    }).click(function() {
        if (!boolRegEmail1)
            CheckRegEmail1();
        if (!boolRegEmail1) {
            AlertTips("系统提示：", "您填写的电子邮箱不正确，请重新填写！", 1, "$('#txtRegEmail1')[0].focus()");
            return;
        }

        if (!boolRegName)
            CheckRegName();
        if (!boolRegName) {
            AlertTips("系统提示：", "您填写的昵称不正确，请重新填写！", 1, "$('#txtRegName')[0].focus()");
            return;
        }
        var provinceID = parseInt($('#selProvince').val());
        if (provinceID == 0) {
            AlertTips("系统提示：", "请选择所在省份！");
            return;
        }

        var cityID = parseInt($('#selCity').val());
        if (cityID == 0) {
            AlertTips("系统提示：", "请选择所在城市！");
            return;
        }

        if (!boolRegPwd1)
            CheckRegPwd1();
        if (!boolRegPwd1) {
            AlertTips("系统提示：", "您填写的密码不正确，请重新填写！", 1, "$('#txtRegPwd1')[0].focus()");
            return;
        }

        if (!boolRegPwd2)
            CheckRegPwd2();
        if (!boolRegPwd2) {
            AlertTips("系统提示：", "您填写的确认密码不正确，请重新填写！", 1, "$('#txtRegPwd2')[0].focus()");
            return;
        }

        var vCode = $.trim($('#txtValidateCode').val());
//        if (vCode == '') {
//            AlertTips("系统提示：", "请输入注册验证码！", 1, "$('#txtValidateCode')[0].focus()");
//            return;
//        }

        boolInvitationCode = true;
        if (boolRegName && boolRegEmail1 && boolRegPwd1 && boolRegPwd2 && boolInvitationCode) {
            var userName = $.trim($('#txtRegName').val());
            var email = $.trim($('#txtRegEmail1').val());
            var password = $.trim($('#txtRegPwd1').val());
            var invitationCode = $.trim($('#txtInvitationCode').val());
            var sex = $('#radmale').attr('checked') ? true : false;
            var birthday = $.trim($('#selYear').val()) + '-' + $.trim($('#selMonth').val()) + '-' + $.trim($('#selDay').val());
            var introducerID = $.trim($('#txtIntroducerID').val());

            ShowLoading();
            $.ajax({
                type: "POST",
                url: userControllerUrl + '/RegisterUserAjax/',
                data: { 'userName': userName,
                    'email': email,
                    'password': password,
                    'invitationCode': invitationCode,
                    'introducerID': introducerID,
                    'sex': sex,
                    'birthday': birthday,
                    'provinceID': provinceID,
                    'cityID': cityID,
                    'vCode': vCode,
                    'guid': guid
                },
                success: function(data) {
                    HideLoading();
                    if (data == '-1')
                        AlertTips("系统提示：", "您输入的邀请码不存在!", 2);
                    else if (data == '-2')
                        AlertTips("系统提示：", "注册失败，请联系管理员或稍候重试!", 2);
//                    else if (data == '-3')
//                        AlertTips("系统提示：", "验证码错误，请重新输入!", 2);
                    else {
                        $('#divRegister').hide();
                        $('#linkRegEmail').html(email);
                        var emailArr = GetEmailServer(email);
                        if (emailArr[0].length > 0) {
                            $('#divRegInformation').after('<a href="' + emailArr[1] + '" style="display:block;border:1px solid #77B4D3;background:#F0FAFF;width:280px;height:25px;line-height:25px;margin:10px;text-align:center;font-size:14px;" target="_blank">点此登录' + emailArr[0] + '邮箱查收注册确认信</a>');
                        }
                        $('#divRegisterSuccess').show();
                        $('#btnSendRegEmail').unbind().click(function() {
                            ShowLoading();
                            $.ajax({
                                type: "POST",
                                url: userControllerUrl + '/ReSendRegEmailAjax/',
                                data: { 'userName': userName,
                                    'email': email,
                                    'guid': guid
                                },
                                success: function(data) {
                                    HideLoading();
                                    AlertTips("系统提示：", "邮件已发送，请进入邮箱查收！");
                                },
                                error: function(xmlHttpRequest, error) {
                                    HideLoading();
                                    AlertTips("系统提示：", "对不起，系统故障，我们将尽快处理！", 2);
                                }
                            });
                        });
                    }
                },
                error: function(xmlHttpRequest, error) {
                    HideLoading();
                    AlertTips("系统提示：", "对不起，系统故障，我们将尽快处理！", 2);
                }
            });
        }
        else {
            AlertTips("系统提示：", "您填写的注册信息不完整，请填写完整后重试");
        }
    });

    $('#txtRegName,#txtRegEmail1,#txtRegPwd1,#txtRegPwd2,#txtInvitationCode').focus(function() {
        $(this).addClass('inputborder');
        $(this).parent().prev().removeClass().addClass('logininfotext_1');
    }).keypress(function(e) {
        var event = e || window.event;
        if (event.keyCode == 13)
            $('#btnRegister').click();

        var currObjId = this.id;
        var $currIcon = $(this).next();
        var $currRegTips = $(this).parent().next();
        switch (currObjId) {
            case "txtRegName": //昵称
                $currRegTips.html('您在我会啊使用的唯一称呼，可作登录名使用。<br />可由两位以上汉字，或4位以上字符、数字、下划线组成<br />最多10个英文或5个中文');
                break;
            case "txtRegEmail1": //邮箱地址
                $currRegTips.html('用此邮箱接收确认邮件才能完成注册，并且可做登录名使用。请谨慎填写！');
                break;
            case "txtRegPwd1": //密码
                $currIcon = $currIcon.next().next().next();
                $currRegTips.html('密码为6-16位，高强度的密码由字符(区分大小写)、数字、符号构成');
                break;
            case "txtRegPwd2": //确认密码
                $currRegTips.html('请再次输入登录密码');
                break;
            //            case "txtInvitationCode": //邀请码                   
            //                $currIcon = $currIcon.next().next();                   
            //                $currRegTips.html('请输入您的邀请码');                   
            //                break;                   
        }
        $currIcon.hide();
        $currRegTips.removeClass().addClass('logininfotext2');
    }).blur(function() {
        $(this).removeClass('inputborder');
        $(this).parent().prev().removeClass().addClass('logininfotext');

        var currObjId = this.id;
        switch (currObjId) {
            case "txtRegName": //昵称
                CheckRegName();
                break;
            case "txtRegEmail1": //邮箱地址
                CheckRegEmail1();
                break;
            case "txtRegPwd1": //密码
                CheckRegPwd1();
                break;
            case "txtRegPwd2": //确认密码
                CheckRegPwd2();
                break;
            //            case "txtInvitationCode": //邀请码                   
            //                lastInvitationCode = value;                   
            //                if (len == 0) {                   
            //                    boolInvitationCode = false;                   
            //                    RegTips(currObjId, "邀请码不能为空！", 2);                   
            //                }                   
            //                else {                   
            //                    boolInvitationCode = true;                   
            //                    RegTips(currObjId, "", 1);                   
            //                }                   
            //                break;                   
        }
    });

    $('.lotteryClose').unbind().click(function() {
        $('.lottery-head').slideToggle("slow");
    });

    //判断密码安全度
    $('#txtRegPwd1').keyup(CheckPwdSafty).blur(CheckPwdSafty);
});

//检查昵称
function CheckRegName() {
    var value = $.trim($('#txtRegName').val());
    var len = strLen(value);
    var currObjId = "txtRegName";
    lastRegName = value;
    if (len == 0) {
        boolRegName = false;
        RegTips(currObjId, "昵称不能为空！", 2);
    }
    else if (len < 4 || len > 25) {
        boolRegName = false;
        RegTips(currObjId, len < 4 ? "对不起，您输入的用户名小于4个字符！" : "对不起，您输入的用户名超过 25 个字符！", 2);
    }
    else if (CheckUserName(value)) {
        $.ajax({
            type: "POST",
            url: userControllerUrl + '/CheckUserNameAjax/',
            data: { 'userName': value },
            success: function(data) {
                if (data.toLowerCase() == 'false') {
                    boolRegName = true;
                    RegTips(currObjId, "", 1);
                }
                else {
                    boolRegName = false;
                    RegTips(currObjId, "该用户名已存在！", 2);
                }
            },
            error: function(xmlHttpRequest, error) {
                HideLoading();
                AlertTips("系统提示：", "对不起，系统故障，我们将尽快处理！", 2);
            }
        });
    }
    else {
        boolRegName = false;
        RegTips(currObjId, "用户名只能包含字母、汉字、数字、“_”、“.”，并以字母或汉字开头！", 2);
    }
}

//检查邮箱地址
function CheckRegEmail1() {
    var value = $.trim($('#txtRegEmail1').val());
    var len = strLen(value);
    var currObjId = "txtRegEmail1";
    lastRegEmail1 = value;
    if (len == 0) {
        boolRegEmail1 = false;
        RegTips(currObjId, "邮箱地址不能为空！", 2);
    }
    else if (CheckEmail(value)) {
        $.ajax({
            type: "POST",
            url: userControllerUrl + '/CheckEmailAjax/',
            data: { 'email': value },
            success: function(data) {
                if (data.toLowerCase() == 'false') {
                    boolRegEmail1 = true;
                    RegTips(currObjId, "", 1);
                }
                else {
                    boolRegEmail1 = false;
                    RegTips(currObjId, "该邮箱地址已存在！", 2);
                }
            },
            error: function(xmlHttpRequest, error) {
                HideLoading();
                AlertTips("系统提示：", "对不起，系统故障，我们将尽快处理！", 2);
            }
        });
    }
    else {
        boolRegEmail1 = false;
        RegTips(currObjId, "邮箱地址无效，请重新填写！", 2);
    }
}

//检查密码
function CheckRegPwd1() {
    var value = $.trim($('#txtRegPwd1').val());
    var len = strLen(value);
    var currObjId = "txtRegPwd1";
    lastRegPwd1 = value;
    if (len == 0) {
        boolRegPwd1 = false;
        RegTips(currObjId, "密码不能为空！", 2);
    }
    else if (len < 6 || len > 25) {
        boolRegPwd1 = false;
        RegTips(currObjId, len < 6 ? "对不起，您输入的密码小于6个字符！" : "对不起，您输入的密码超过 25 个字符！", 2);
    }
    else if (CheckPwd(value)) {
        if (lastRegPwd2 != lastRegPwd1) {
            boolRegPwd2 = false;
            RegTips("txtRegPwd2", "两次输入的密码不一致！", 2);
        }
        else {
            boolRegPwd2 = true;
            RegTips("txtRegPwd2", "", 1);
        }
        boolRegPwd1 = true;
        RegTips(currObjId, "", 1);
    }
    else {
        boolRegPwd1 = false;
        RegTips(currObjId, "密码只能包含字母、数字、“_”！", 2);
    }
}

//检查确认密码
function CheckRegPwd2() {
    var value = $.trim($('#txtRegPwd2').val());
    var len = strLen(value);
    var currObjId = "txtRegPwd2";
    lastRegPwd2 = value;
    if (len == 0) {
        boolRegPwd2 = false;
        RegTips(currObjId, "确认密码不能为空！", 2);
    }
    else if (lastRegPwd2 != lastRegPwd1) {
        boolRegPwd2 = false;
        RegTips(currObjId, "两次输入的密码不一致！", 2);
    }
    else {
        boolRegPwd2 = true;
        RegTips(currObjId, "", 1);
    }
}

//提示信息
function RegTips(currObjId, tipsInfo, mark) {
    var $currIuput = $('#' + currObjId);
    var $currIcon = $currIuput.next();
    if (currObjId == "txtRegPwd1")
        $currIcon = $currIcon.next().next().next();
    var $currRegTips = $currIuput.parent().next();
    if (mark == 0) {
        $currIcon.hide();
        $currRegTips.html(tipsInfo).removeClass().addClass('logininfotext2');
    }
    else if (mark == 1) {
        $currIcon.removeClass().addClass('byicon').show();
        if (currObjId == "txtRegName")
            $currRegTips.html('您在我会啊使用的唯一称呼，可作登录名使用。<br />可由两位以上汉字，或4位以上字符、数字、下划线组成<br />最多10个英文或5个中文');
        else if (currObjId == "txtRegEmail1")
            $currRegTips.html('用此邮箱接收确认邮件才能完成注册，并且可做登录名使用。请谨慎填写！');
        else if (currObjId == "txtRegPwd1")
            $currRegTips.html('密码为6-16位，高强度的密码由字符(区分大小写)、数字、符号构成');
        else if (currObjId == "txtRegPwd2")
            $currRegTips.html('请再次输入登录密码');
    }
    else {
        $currIcon.removeClass().addClass('mistakeicon').show();
        $currRegTips.html(tipsInfo).removeClass().addClass('logininfotext2_2');
    }
}


/************判断密码安全度****************/
//CharMode函数  
//测试某个字符是属于哪一类.  
function CharMode(iN) {
    if (iN >= 48 && iN <= 57) //数字  
        return 1;
    if (iN >= 65 && iN <= 90) //大写字母  
        return 2;
    if (iN >= 97 && iN <= 122) //小写  
        return 4;
    else
        return 8; //特殊字符  
}

//bitTotal函数  
//计算出当前密码当中一共有多少种模式  
function bitTotal(num) {
    modes = 0;
    for (i = 0; i < 4; i++) {
        if (num & 1) modes++;
        num >>>= 1;
    }
    return modes;
}

//checkStrong函数  
//返回密码的强度级别
function checkStrong(sPW) {
    if (sPW.length <= 4)
        return 0; //密码太短  
    Modes = 0;
    for (i = 0; i < sPW.length; i++) {
        //测试每一个字符的类别并统计一共有多少种模式.  
        Modes |= CharMode(sPW.charCodeAt(i));
    }
    return bitTotal(Modes);
}

//CheckPwdSafty函数  
//当用户放开键盘或密码输入框失去焦点时,检测密码安全度
function CheckPwdSafty() {
    var pwd = $.trim($(this).val());
    var lowClass = 'levelborder';
    var middleClass = 'levelborder';
    var highClass = 'levelborder';
    if (pwd.length > 0) {
        S_level = checkStrong(pwd);
        switch (S_level) {
            case 0:
                lowClass = 'levelborder';
                middleClass = 'levelborder';
                highClass = 'levelborder';
                break;
            case 1: //低
                lowClass = 'levelborder_1';
                middleClass = 'levelborder';
                highClass = 'levelborder';
                break;
            case 2: //中
                lowClass = 'levelborder';
                middleClass = 'levelborder_1';
                highClass = 'levelborder';
                break;
            default: //高
                lowClass = 'levelborder';
                middleClass = 'levelborder';
                highClass = 'levelborder_1';
        }
    }
    /************End判断密码安全度****************/
    $('#lowPwd').removeClass().addClass(lowClass);
    $('#middlePwd').removeClass().addClass(middleClass);
    $('#highPwd').removeClass().addClass(highClass);
}

function GetEmailServer(email){
    var emailExt = email.substring(email.lastIndexOf("@") + 1).toLowerCase();
    switch(emailExt){
        case '163.com':
            return ['163','http://mail.163.com'];
        case 'sina.com':
            return ['新浪','http://mail.sina.com/'];
        case 'sogou.com':
            return ['搜狗','http://mail.sogou.com/'];
        case 'sohu.com':
            return ['搜狐','http://mail.sohu.com/'];
        case '21cn.com':
            return ['21CN','http://mail.21cn.com/'];
        case 'hotmail.com':
            return ['Hotmail','http://mail.live.com'];
        case '126.com':
            return ['126','http://mail.21cn.com/'];
        case 'yeah.net':
            return ['网易免费','http://www.yeah.net/'];
        case '188.net':
            return ['网易VIP财富','http://www.188.com/'];
        case 'vip.163.com':
            return ['网易VIP','http://vip.163.com/'];
        case 'qq.com':
            return ['QQ','http://mail.qq.com/'];
        case 'tom.com':
            return ['TOM','http://mail.tom.com/'];
        case '139.com':
            return ['139','http://mail.139.com/'];
        case 'foxmail.com':
            return ['Foxmail','http://www.foxmail.com'];
        case '189.cn':
            return ['189','http://webmail8.189.cn/'];
        case 'yahoo.com.cn':
        case 'yahoo.cn':
        case 'yahoo.com':
            return ['雅虎','http://mail.cn.yahoo.com/'];
        case 'gmail.com':
            return ['Gmail','http://www.gmail.com'];
        case 'china.com':
            return ['中华','http://mail.china.com/'];
        default:
            return ['',''];
    }
}
