/*
问题:
1、注册的接口不完善 没有非窗体注册的函数
*/

Namespace.register("U.U.R"); //用户注册的命名空间

//        用户名    密码  确认密码 验证码 后面2个都没有用
//用于判断用户是否已经在输入框中输入了正确的值。
U.U.R.TBA = [false, false, false, false, false, true];


//#region 用户注册信息判断


//#region 用户注册使用区域


//注册入口
U.U.R.PopRegister = function () {
    var _parent = $("#UD_SYC"); //登录注册框
    _parent.Center(); //登录注册框居中
    var _child = _parent.Child(); //获取登录注册找回密码的div
    _child[1].style.display = "block"; //显示注册框 
    _child[2].style.display = "none";  //隐藏注册
    _child[3].style.display = "none"; //隐藏登录
    $("div", _child[0])[2].innerHTML = "快速注册";
    //头部设置内容
    var _head = $(_child[0]).childg()[1];
    $(_head).addAttrArray({
        innerHTML: "已经有账号? <span onclick='U.U.L.Login();'>现在登录</div>",
        title: "",
        "className": "UD_SYCOSPO"
    });

    U.UI.Form({ title: "", max: false, min: false, id: "UD_SYC_Pop", content: _parent[0], style: { width: "360px", "height": "505px" }, hst: { style: { padding: "0"}} });

    if (!$("#UD_SYCOCDZ&img")[0]) { //注册验证码区域

        $$("img", { //生成验证码
            "alt": "看不清?点击重获验证码",
            "src": "http://main.1473.cn/Uses.ashx?functionname=UseStudioManage.GraphicVerificationCode&n=" + Math.random(),
            "onclick": [
                    [U.U.R.GVCI, ["this"]]
                ]
        }, $("#UD_SYCOCDZ")[0]);
    }

    var _input = $("input", _child[1])[0];
    _input.focus();
}

//单击注册按钮后,首先判断是否已经阅读了云端协议,然后检查是否用户输入的信息是否全部合法。
U.U.R.SDLZC = function (button) {
    var _inputs = $("#UD_SYCOO").find("input");
    //是否已经阅读了云端协议。
    if (_inputs[3].checked) {
        if (U.U.R.ZCPDSZ(_inputs, $("#UD_SYC")[0])) {
            button.innerText = "注册中...";
        } else { U.Alert("请正确的填写信息"); };
    } //登录
    else {
        U.Alert("请阅读云端协议");
    } //必须阅读协议
}

//注册判断设置
U.U.R.ZCPDSZ = function (inputs, loading) {
    var i, _UTF = true;
    //判断是否全部通过检测。包含账号,密码,验证码等
    var _checked = U.U.R.TBA.indexOf(false);
    if (_checked == -1) {
        U.U.R.UR(inputs[0].value, inputs[1].value, "", loading);
        inputs.addAttrArray({ "value": "" });
        for (i = 0; i < 3; i++) { inputs[i].onblur(); }
    } //允许注册
    //判断是否通过了验证码
    else if (_checked == 4) {
        //验证码错误和正确切换字体样式。
        var _font = [{ "textAlign": "center", "marginRight": "0px" }, { "textAlign": "right", "marginRight": "15px", "color": "red"}];
        U.U.R.CAC(inputs[2], _font, U.M.apply(this, [[U.U.R.ZCPDSZ, [inputs, loading]]]));
    } //邮箱验证  
    else { _UTF = !_UTF; }
    return _UTF;
}

//用户注册Ajax函数。
/**
//外面用户可以直接调用U.U.R.Register(username,password),调用之前必须设置全局变量US.SystemId,测试用户U.U.R.Register=0.开发者账号需要进入授权系统进行授权
返回值:
*/
U.U.R.Register = U.U.R.UR = function (username, password, email, loading) {
    var i, _address = US.NLInfo.LogAddr || "";
    U.U.R.TBA = [false, false, false, false, false, true];
    U.A.Request(US.Auth, ["UserRegister", username, password, email, _address, US.SystemId, ""], U.U.R.AsynUR, [loading, _address]); //注册的同时执行登录 
}



//用户注册异步
//
U.U.R.AsynUR = function (r, outsite) {
    var _URE = r.value;
    if (_URE == "notregister") {
        U.Alert("已经存在该账号!");
    }
    else if (_URE == "false") {
        U.Alert("系统繁忙,请稍后。");
    } //注册失败
    else {
        //注册成功直接登录
        U.U.L.AsynUlL(r, outsite);
        //第一次进入系统弹出个人设置
        U.U.DKGEZL();
        //写入用户来源信息,根据链接统计是哪一个推广人员推广的。
        U.U.GZ.TGR();
        return r;
    } //登录
}

//注册回调
U.U.R.AsynSDLZC = function (UDOD, USE) {
    UDOD.innerText = "立即注册";
}

//#endregion


/*
判断用户名 这里包括登录所有的用户名的审核 是否通过等。此函数在cookie登录中不会调用。
参数一:
参数二:UDE为数组,
参数三:
返回值:
*/
U.U.R.CheckUsername = function (UDOD, UDE, UFT) {
    var _UN = UDOD.value;
    var _UDTD = $("i", $(UDOD).Parent());
    U.U.R.TBA[0] = false;
    UDE = UDE || [{}, {}];
    //_$(UDE).Add({ "display": "block" }); 
    U.Ut.AddArr(UDE, { "display": "block" });
    UDE[1].color = "red";
    if (UDOD.value == "") {
        UDE[0].color = "";
        U.U.R.UET(UDOD, [UDE[0], "用户账号"]);
    } //输入为空不做变化
    else if (!U.MS.UserName.test(_UN)) {
        U.U.R.UET(UDOD, [UDE[1], "2-10汉字或4-20字符"]);
    } //注册的用户不符合要求
    else if (!UFT) {
        U.U.R.UET(UDOD, [UDE[1], "等待认证,请稍后..."]);
        U.A.Request(US.Auth, ["CheckUserName", _UN], U.U.R.IRUN, ["", UDOD]);
        return true;
    } //用户注册 需要判断用户是否有重复的用户名
    return false;
}

//判断用户名是否存在
U.U.R.IRUN = function (r) {
    var context = r.context,
    _UDOD = context[1];
    r = r.value;
    if (r == "True") {
        U.U.R.UET(_UDOD, [{}, "已被注册!"]);
    } //无法注册
    else {
        U.U.R.UET(_UDOD, [{ "display": "none"}]);
        U.U.R.TBA[0] = true;
    } //成功注册
}

//判断密码
U.U.R.IRP = function (UDOD, UDE, UFT) {
    var _UTF = false;
    _UP = UDOD.value,
    _UDTD = $("i", $(UDOD).Parent());
    UDE = UDE || [{}, {}];
    U.Ut.AddObj(UDE, { "display": "block" });
    if (_UP == "") {
        UDE[0].color = "";
        U.U.R.UET(UDOD, [UDE[0], typeof UFT == "string" ? UFT : "6-20位字符或数字"]);
    } //无输入
    else if (!U.MS.PassWord.test(_UP)) {
        UDE[1].color = "red";
        U.U.R.UET(UDOD, [UDE[1], "6-20位字符或数字"]);
    } //特殊符号
    else {
        if (!UFT) {
            U.U.R.PasswordStrength(UDOD);
            _UDTD.addAttrArray({ "style": UDE[1] });
        }
        _UTF = !_UTF;
    } //密码正确输入
    (!UFT) && (U.U.R.TBA[1] = _UTF);
    return _UTF;
}

//确认密码,以前函数,暂时没有用
U.U.R.RCFP = function (UDOD, UDTD, UDE, UFT) {
    var _UTF = false;
    _UP = UDOD.value,
    _UDTD = $("i", $(UDOD).Parent());
    UDE = UDE || [{}, {}];
    U.Ut.AddObj(UDE, { "display": "block" });
    if (UDOD.value == "") {
        UDE[0].color = "";
        U.U.R.UET(UDOD, [UDE[0], "6-20位字符或数字"]);
    } //确认密码为空
    else if (UDOD.value != UDTD.value) {
        UDE[1].color = "red";
        U.U.R.UET(UDOD, [UDE[1], "密码不一致"]);
    } //密码不一致
    else { _UTF = true; };
    (!UFT) && (U.U.R.TBA[2] = _UTF);
    return _UTF; //密码正确
}

//获取验证码
U.U.R.GVCI = function (UDOD) {
    $(UDOD).parentg().find("img")[0].src = "http://main.1473.cn/Uses.ashx?mode=UseStudioManage.GraphicVerificationCode&n=" + Math.random();
}

//输入验证吗判断
U.U.R.SRYZM = function (UDOD) {
    var _UME = UDOD.value,
    _UDE = !_UME ? [{ "textAlign": "center", "marginRight": "0px", "color": "#000" }, "验证码"] : U.MS.Number.test(_UME) ? "" : [{ "textAlign": "right", "marginRight": "10px", "color": "red" }, "格式错误"];
    if (_UDE) { U.U.R.UET(UDOD, _UDE); }
    else if (!U.U.R.TBA[4]) {
        U.U.R.CAC(UDOD, [{ "textAlign": "right", "marginRight": "15px", "color": "#00aa99" }, { "textAlign": "right", "marginRight": "15px", "color": "red"}]);
    }
}

//验证码javascript
U.U.R.CAC = function (input, UDE, cb) {
    var _UKE, _UM = input.value;
    //测试是否数字,如果不是,不用向后台发送请求
    var _UTF = U.MS.Number.test(_UM);
    U.Ut.AddObj(UDE, { "display": "block" });
    if (_UTF) {
        //向后端发验证码请求
        U.A.Request(US.Auth, ["ConfirmGraphicVerificationCode", _UM], U.U.R.AsynAC, ["", input, UDE, cb]); _UKE = [UDE[1], "验证中..."];
    } //判断验证码是否正确
    else if (!_UTF && !_UM) {
        _UKE = UDE[0]; _UKE = [UDE[1], "格式错误"];
    };
    //设置验证码样式
    U.U.R.UET(input, _UKE || [UDE[0], "验证码"]); //验证码
}

//验证码异步
U.U.R.AsynAC = function (r) {
    var _UTF = false,
    context = r.context,
    _UDOD = context[1],
    _UDE = context[2],
    _UCB = context[3],
    _UDPD = $(_UDOD).Parent(3);
    r = r.value;
    if (r == "True") {
        _UDE[0].display = "none";
        U.U.R.UET(_UDOD, [_UDE[0], "成功"]);
        _UTF = true;
    }
    else if (r == "False") {
        U.U.R.UET(_UDOD, [_UDE[1], "错误"]);
    } //验证码正确 
    else {
        _UDOD.value = "";
        _UDOD.blur();
        U.U.R.UET(_UDOD, [_UDE[0], "验证码"]);
        $("img", _UDPD)[0].src = "http://main.1473.cn/Uses.ashx?mode=UseStudioManage.GraphicVerificationCode&n=" + Math.random();
        _UDOD.focus(); U.Alert("验证码错误或者服务器繁忙");
    } //重新生成验证码
    U.U.R.TBA[4] = _UTF;
    if (_UCB && _UTF) { _UCB(_UDPD) }
    else { U.U.R.AsynSDLZC($("#UD_SYCOD")[0]); } //设置回调
}

//判断邮箱
U.U.R.RUE = function (UDOD) {
    var _UEM = UDOD.value;
    U.U.R.TBA[3] = false;
    if (_UEM == "") {
        $("i", UDOD.parentNode)[0].style.display = "block";
    }
    else if (!U.MS.Email.test(_UEM)) {
        U.U.R.UET(UDOD, [{}, "邮箱格式错误"]);
    } //验证码格式错误
    else {
        U.A.Request(US.Auth, ["CheckEmail", _UEM], U.U.R.AsynRUE, ["", UDOD]);
    }
}

//判断邮箱的异步
U.U.R.AsynRUE = function (r) {
    var context = r.context,
    _UDOD = context[1];
    r = r.value;
    if (r) {
        U.U.R.TBA[3] = true;
        U.U.R.UET(_UDOD, [{ "display": "none"}]);
    } //成功设置
    else {
        U.U.R.UET(_UDOD, [{}, "已经有人有过该邮箱"]);
    } //邮箱有人用
}

//判断手机是否正确
U.U.R.UPhone = function () {


}

U.U.R.AsynUPhone = function () {


}

//隐藏提示框
U.U.R.DTT = function (UDOD, UTF) {
    var _UDPD = $(UDOD).Parent(),
    _UDID = $("input", _UDPD)[0];
    if (_UDID.offsetWidth) {
        (UTF !== true) && (_UDID.focus());
        $("i", _UDPD)[0].style.display = "none";
    }
}

//显示提示框
U.U.R.BTT = function (UDOD) {
    // $(UDOD).parentg().find("i").addAttrArray({ "style": { "display": "block"} });
}

//设置样式
U.U.R.UET = function (input, arr) {
    //找input输入框的父亲元素
    var _parent = $(input).Parent();
    //指定的元素里面找孩子元素为i的元素
    var _el = $("i", _parent);
    arr[0].display = "block";
    _el.addAttrArray({ "style": arr[0] || {}, "innerHTML": arr[1] || "" }, 0)[0];
}


U.U.R.PasswordStrength = function (input) {
    var i = 0;
    var _UNR = "";
    var _UV = input.value;
    var _URE = [["弱", "#e64141"], ["中", "#0a8cd2"], ["强", "#4bb900"]];
    if (_UV.length > 10) {
        //_UNR += ">10位";
        i++;
    }
    //含数字
    if (_UV.match(/[0-9]/ig)) {
        //_UNR += ((i ? "," : "") + "只包含数字");
        i++;
    }
    //含字符
    if (_UV.match(/[a-z]/ig)) {
        //_UNR += ((i ? "," : "") + "只包含字符");
        i++;
    }
    i = i - 1 > -1 ? i - 1 : i;
    //找input输入框的父亲元素
    var _parent = $(input).Parent();
    //指定的元素里面找孩子元素为i的元素
    var _el = $("i", _parent);
    _el.addAttrArray({ "style": { "display": "block", "color": _URE[i][1] }, "innerHTML": _URE[i][0] }, 0); //设置密码样式

}

//注册最终判断是否允许注册
//U.U.R.RC = function () {
//    return U.U.R.TBA.indexOf(false);
//}

//#endregion