﻿/// <reference path="jquery-vsdoc.js" />

$.ajaxSetup({
    type: "POST",
    contentType: "application/json",
    dataType: 'json'
});

function showWarning(id) {
    var msg = "";
    if (id == "name") {
        msg = "请输入您姓名，名字字符数位2-32个";
    }
    else if (id == "email") {
        msg = "请输入您的Email地址";
    }
    else if (id == "username") {
        msg = "用户名字符数在2-32位之间，建议使用email";
    }
    else if (id == "password") {
        $("#repassword").val("");
        $("#info_repassword").attr("class", "defaultmsg");
        $("#info_repassword").html("请输入用户登陆的安全密码");
        msg = "请输入用户登陆的安全密码";
    }
    else if (id == "repassword") {
        msg = "请再次输入用户登陆的安全密码";
    }
    else if (id == "validate") {
        msg = "请输入左边图片上的验证码，看不清图片，请点击图片以刷新图片";
    }
    else if (id == "agree") {
        msg = "需同意服务协议才能享受我们为您提供的服务";
    }
    $("#info_" + id).attr("class", "warningmsg");
    $("#info_" + id).html(msg);
}


function showSuccess(id) {
    var msg = "输入完整";
    $("#info_" + id).attr("class", "successmsg");
    $("#info_" + id).html(msg);
}

function showFailed(id, msg) {
    $("#info_" + id).attr("class", "failedmsg");
    $("#info_" + id).html(msg);
}

function check(id, ajax) {
    var isajax = false;
    isajax = ajax;
    if (id == "name") {
        return checkName();
    }
    else if (id == "email") {
        return checkEmail(isajax);
    }
    else if (id == "username") {
        return checkUsername(isajax);
    }
    else if (id == "password") {
        return checkPassword();
    }
    else if (id == "repassword") {
        return checkRePassword();
    }
    else if (id == "validate") {
        return checkValidate();
    }
    else if (id == "agree") {
        return checkAgree();
    }
    return true;
}


function checkUsername(ajax) {
    var str = $.trim($("#username").val());
    var flag = true;
    if (str.length == 0) {
        showFailed("username", "用户名不能为空，请输入！");
        return false;
    }
    if (str.length < 2 || str.length > 32) {
        showFailed("username", "用户名字符数要在2-32之间！");
        return false;
    }
    var re = /^([_0-9a-zA-Z\u4e00-\u9fa5]*)$/;
    if (str.search(re) == -1 && !isEmail(str)) {
        showFailed("username", "用户名只能是字母,数字，中文，下划线（_），或整体是Email！");
        return false;
    }
    if (ajax == true) {
        $.ajax({
            url: "WebService/WebServiec_Register.asmx/CheckUserName",
            async: false,
            data: "{username:'" + str + "'}",
            success: function(result) {
                if (result.d == false) {
                    showFailed("username", "该用户名已被使用，请重新填写其他用户名！");
                    flag = false;
                }
                if (result.d == true) {
                    showSuccess("username");
                    flag = true;
                }
            }
        });
    }
    return flag;
}

function checkPassword() {
    var str = $("#password").val();
    if (str.length == 0) {
        showFailed("password", "密码不能为空，请输入！");
        return false;
    }
    if (str.length < 6 || str.length > 32) {
        showFailed("password", "密码字符数要在6-32之间！");
        return false;
    }
    var re = /^([_0-9a-zA-Z]*)$/;
    if (str.search(re) == -1 && !isEmail(str)) {
        showFailed("password", "密码字符只能是字母,数字，下划线，Email，前后不能使用空格！");
        return false;
    }
    showSuccess("password");
    return true;
}

function checkRePassword() {
    var str = $("#password").val();
    var restr = $("#repassword").val();
    if (restr.length == 0) {
        showFailed("repassword", "请输入确认密码！");
        return false;
    }
    else if (str == restr) {
        showSuccess("repassword");
        return true
    }
    else {
        showFailed("repassword", "确认密码不正确！");
        return false;
    }
    return true;
}

function checkEmail(ajax) {
    var str = $.trim($("#email").val());
    var flag = true;
    if (str.length == 0) {
        showFailed("email", "联系Email不能为空，如果没有邮箱请先注册  <a target='_blank' href='http://mail.163.com'>网易邮箱</a>");
        return false;
    }
    if (str.length > 128) {
        showFailed("email", "Email的字符数不能大于128！");
        return false;
    }
    if (!isEmail(str)) {
        showFailed("email", "Email格式不正确，请重新输入！");
        return false;
    }
    if (ajax == true) {
        $.ajax({
            url: "WebService/WebServiec_Register.asmx/CheckUserEmail",
            async: false,
            data: "{email:'" + str + "'}",
            success: function(result) {
                if (result.d == false) {
                    showFailed("email", "该Email已被使用，请重新填写其他Email，有问题请联系客服！");
                    flag = false;
                }
                if (result.d == true) {
                    showSuccess("email");
                    flag = true;
                }
            }
        });
    }
    return flag;
}

function checkName() {
    var str = $.trim($("#name").val());
    if (str.length == 0) {
        showFailed("name", "姓名不能为空，请输入您的姓名！");
        return false;
    }
    if (str.length < 2 || str.length > 32) {
        showFailed("name", "姓名字符数要大于2小于32！");
        return false;
    }
    showSuccess("name");
    return true;
}

function checkValidate() {
    var str = $("#validate").val();
    var flag = true;
    $.ajax({
        url: "WebService/WebServiec_Register.asmx/CheckValidate",
        data: "{validate:'" + str + "'}",
        async: false,
        success: function(result) {
            if (result.d != true) {
                showFailed("validate", "验证码输入不真确，请重新输入，点击图片可以重新获取验证码！");
                flag = false;
            }
            else {
                showSuccess("validate");
                flag = true;
            }
        }
    });
    return flag;
}

function checkAgree() {
    var isagree = $("#agree").attr("checked");
    if (isagree == true) {
        showSuccess("agree");
        return true;
    }
    else {
        showFailed("agree", "需同意服务协议才能享受我们为您提供的服务！");
        return false;
    }
}

function clickButton() {
    var sendflag = true;
    $("#btregister").text("注册用户……").attr("disabled", "disabled");
    $("div.inp :text,div.inp :password,#agree")
    .each(function(i, item) {
        if (check(item.id, true) == false)
            sendflag = false;
    });
    $("#btregister").text("注册用户").attr("disabled", "");
    if (sendflag == true) {
        sendRegister();
    }
}

//转换单引号
function quotes(str) {
    var s = "";
    if (str.length == 0) return "";
    for (var i = 0; i < str.length; i++) {
        switch (str.substr(i, 1)) {
            case "\'": s += "’"; break;
            case "\"": s += "“"; break;
            default: s += str.substr(i, 1); break;
        }
    }
    return s;
}

function sendRegister() {
    $.ajax({
        url: "WebService/WebServiec_Register.asmx/RegisterPer",
        data: "{ username: '" + quotes($('#username').val()) + "', password: '" + quotes($('#password').val()) + "', email: '" + quotes($('#email').val()) + "', name: '" + quotes($('#name').val()) + "' }",
        beforeSend: function() {
            $("#btregister").text("注册用户……").attr("disabled", "disabled");
        },
        success: function(result) {
            if (result.d.Flag == true) {
                window.location.href = "personal/personalinfo.aspx";
                $("#btregister").text("正在跳转……").attr("disabled", "disabled");
            }
            else {
                alert(result.d.Msg);
                $("#btregister").text("注册用户").attr("disabled", "");
            }
        },
        error: function() {
            alert("注册过程出现错误，请联系客服！");
        }

    });
}



$(function() {
    $("div.inp :text,div.inp :password").addClass("textbox");
    $("#validate").addClass("textvalidate");
    $("#imgvalidate").click(function() {
        $(this).attr("src", "Ashx/VerifyImage.ashx?id=" + Math.random());
        $("#validate").val("");
    });
    $("div.inp :text,div.inp :password,#agree")
        .focus(function() {
            showWarning(this.id);
        })
        .blur(function() {
            check(this.id, true);
        });
    $("#btregister").click(function() {
        clickButton();
    });
});