﻿DomLoaded.load(regsiter);
//初始化注册登录
function regsiter(){
    //初始化注册表单
    InitRegisterForm.call($fm("register"));
    //初始化登录表单
    InitLoginForm.call($fm("login"));
    //初始化查询表单
    InitFindForm.call($fm("account"));
	$("validateImg").onclick = refreshImg;
}
//初始化登录表单
function InitLoginForm(){
    InitFindAction.call(this["getaccount"]);
    this.onsubmit = RegisterSubmit;
    this.InputText = [this["account"],this["recordkey"]];
    this["account"].CssClass = "head ";
    this["account"].Return = ReturnLoginAccount;
    BatchDiffObjectEvent.call(this.InputText,["onchange", SetEachRegex]);
    BatchRunFun.call(this.InputText, SetRelate);
}
//初始化查询表单
function InitFindForm(){
    this.onsubmit = RegisterSubmit;
    this.InputText = [this["email"]];
    this["email"].CssClass = "head ";
    this["email"].Return = ReturnEMail;
    BatchDiffEvent.call(this["email"],["onchange", SetEachRegex]);
    SetRelate.call(this["email"]);
}
//初始化查询账号
function InitFindAction(){
	this.OpenStatus = "hidden";
	this.Relate = $("FindBox");
	this.onclick = DisplayFindBox;
}
//显示查询块
function DisplayFindBox(){
	if(this.OpenStatus == "hidden") this.OpenStatus = "visible";
	else this.OpenStatus = "hidden";
	this.Relate.style["visibility"] = this.OpenStatus;
}
//初始化注册表单
function InitRegisterForm(){
    this.onsubmit = RegisterSubmit;
    this.InputText = [this["mail"],this["account"],this["recordkey"],this["recordkey2"],this["validate"]];
    this["validate"].Return = returnValidate;
    BatchDiffObjectEvent.call(this.InputText,["onfocus", FocusInputText],["onblur", BlurInputText],["onchange", SetEachRegex]);
    BatchRunFun.call(this.InputText, SetRelate);
}
//添加对象关系
function SetRelate(){
    var obj = $a.call(this.parentNode.parentNode, "h3");
    if(arguments.length > 0)
        obj.innerHTML = arguments[0] + " \*";
    var oSpan = document.createElement("span");
    this.Relate = oSpan;
    this.IsCorrect = false;
    obj.appendChild(oSpan);
    this.setAttribute("autocomplete","off");
    if(this.value != "")
        this.value = "";
}
//聚焦输入框
function FocusInputText(){
    this.parentNode.parentNode.style.backgroundPosition  = "bottom";
}
//模糊输入框
function BlurInputText(){
    this.parentNode.parentNode.style.backgroundPosition  = "top";
}
//改变输入框内容
function ChangeInputText(){
    SetEachRegex.call(this);
}
//检测输入格式
function SetEachRegex(){
    if(CheckNull.call(this)){
        switch(this.name){
            case "mail":
            case "email":
                CheckMail.call(this);
                break;
            case "account":
                CheckAccount.call(this);
                break;
            case "recordkey":
                CheckRecordkey.call(this);
                break;
            case "recordkey2":
                CheckRecordkey2.call(this);
                break;
            case "validate":
                CheckToServer.call(this);
                break;
            case "answer":
                CheckAnswer.call(this);
                break;
            default:
                break;
        }
    } 
}


/***********************For check account start******************************/
function CheckAccount(){
    if(!CheckLength.call(this,5,25)){
        SetResultBG.call(this, "error","The Account length at least 5.");
    }else if(/[^\x00-\xff]/.test(this.value)){
        SetResultBG.call(this, "error","English only!");
    }else if(/\W+/.test(this.value)){
        SetResultBG.call(this, "error","The Account only support (a-zA-Z_0-9).");
    }else{
        CheckToServer.call(this);
    }
}
//检查回答问题
function CheckAnswer(){
    var postStr = "&checkemail=" + this.form["email"].value;
    CheckToServer.call(this, postStr);
}
//服务器端检查
function CheckToServer(){
    var URL = "/member/validate.xhtml";
    var postStr = "action="+ this.name + "&value=" + this.value;
    if(arguments.length > 0)
        postStr += arguments[0];
    var Total = new ajax.$x(URL,"POST",returnStatus,CheckError,postStr,this,false);
    SetResultBG.call(this, "loading","Validating, wait please...");
}
function ReturnEMail(ReturnValue){
    if(ReturnValue == "0"){
        SetResultBG.call(this, "error","Has not this mail!");
    }else{
        var Msg;
        this.readOnly = true;
        if(ReturnValue == "ok"){
            Msg = "Submit to get account!";
        }else{
            Msg = "Answer your security protect question.";
            InitAnswer.call(this,ReturnValue);
        }
        SetResultBG.call(this, "correct",Msg);
    }
}
//初始化密码保护
function InitAnswer(ReturnValue){
    this.form["answer"].parentNode.parentNode.style.display = "block";
    this.form.InputText.push(this.form["answer"]);
    this.form["answer"].Return = ReturnAnswer;
    BatchDiffEvent.call(this.form["answer"],["onchange", SetEachRegex],["onmouseover", OverInputText]);
    SetRelate.call(this.form["answer"],ReturnValue);
}
function ReturnAnswer(ReturnValue){
    if(ReturnValue > 0){
        this.readOnly = true;
        SetResultBG.call(this, "correct","Submit to get account!");
    }else{
        SetResultBG.call(this, "error","Your anwser is invalid!");
    }
}
