if(!jsonrpc){
    var jsonrpc = new JSONRpcClient("/cc/JSON-RPC");
}
var langAmount = 0;

var loginMv = null;

function resetPassword() {
    var info = {
        "zh-cn": {
            userName: "用戶名",
            regMail: "註冊郵箱",
            ok: "確認",
            headTips:"登錄提示"
        },
        "en": {
            userName: "Username:&nbsp;",
            regMail: "Registered Email:&nbsp;",
            ok: "OK",
            headTips:"Log In Now"
        }
    };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    var mdCt = document.createElement("div");
    mdCt.style.width="280px";
	var opt={
		bgGif:'help.gif',
		ns:'rpLogin',
		ct:mdCt,
		btns:[
			{
				name:infoObj.getInfo("ok"),
				type:"button",
				click:function(opt){
			        var userName = document.getElementById("nameInput").value;
   				 	var email = document.getElementById("emailInput").value;
				 	resetPasswordConfirm(userName, email, opt);
				}
			},
			{
				name:infoObj.getInfo("cancel"),
				type:"button",
				click:function(opt){
					Imba.modal.close(Imba.modal,opt);
				}
			}
		]
	};
	Imba.modal.uiTp(
	infoObj.getInfo("headTips"),
	 ["<table class='index-txt'>",
	 "<tr><td align='right'>" + infoObj.getInfo("userName") + ":</td><td><input class='iptLgn' type='text' id='nameInput'/></td></tr>",
	 "<tr><td align='right'>" + infoObj.getInfo("regMail") + ":</td><td><input class='iptLgn' type='text' id='emailInput'/></td></tr>",
	 "</table>"].join(""),
	opt);    
}

function resetPasswordConfirm(name, email, mvOpt) {
    var info = {
        "zh-cn": {
            resetSuccess: "請到您的註冊郵箱接收郵件，確認重置口令！",
            resetFailed: "用戶名或註冊郵箱有誤，請核對！"
        },
        "en": {
            resetSuccess: "Please check your registered email box to confirm password reset.",
            resetFailed: "Incorrect Member ID or email address! Please try again."
        }
    };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    var ps = {userName:name, email:email, method:"C"};
    var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
    var responseData = jsonrpc.BH.handle([req]);
    if(responseData[0].result) {
        alert(infoObj.getInfo("resetSuccess"));
        Imba.modal.close(Imba.modal,mvOpt);
    } else {
        alert(infoObj.getInfo("resetFailed"));
    }
}

function login(userId, pwd, loginCallback) {
    var ps = {userId:userId, password:pwd, method:"L"};
    var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
    jsonrpc.BH.handle(function(responseData, e){
        if(e != null) {
            alert(e.message);
        } else {
            var userInfo = {
                    userId:responseData[0].items.map.userId,
                    status:responseData[0].items.map.status,
                    loginName:responseData[0].items.map.loginName,
                    userName:responseData[0].items.map.userName,
                    surname:responseData[0].items.map.surname,
                    lastName:responseData[0].items.map.lastName,
                    userGroup:responseData[0].items.map.userGroup,
                    email:responseData[0].items.map.email,
                    handlerKey:responseData[0].items.map.handlerKey,
                    regDate:responseData[0].items.map.regDate,
                    langId:responseData[0].items.map.langId,
                    lastAccTime:responseData[0].items.map.lastAccTime,
                    flag:responseData[0].items.map.flag
            };
            if(userInfo.flag == 0)
                setUserInfo(userInfo);
            loginCallback(userInfo);
        }
    }, [req]);
}

function logout(logoutCallBack) {
    var userInfo = getUserInfo(false);
    if(userInfo != null) {
        var ps = {userId:userInfo.userId, handlerKey:userInfo.handlerKey, method:"O"};
        var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
        jsonrpc.BH.handle(function(responseData, e) {
            delUserInfo();
            logoutCallBack(e);
        }, [req]);
    }
}

function setUserInfo(userInfo) {
    if (userInfo.flag == 0) {
        setCookie("userId", userInfo.userId);
        setCookie("status", userInfo.status);
        if(userInfo.loginName != null && userInfo.loginName != "")
            setCookie("loginName", userInfo.loginName);
        if(userInfo.userName != null && userInfo.userName != "")
            setCookie("userName", userInfo.userName);
        if(userInfo.surname != null && userInfo.surname != "")
            setCookie("surname", userInfo.surname);
        if(userInfo.lastName != null && userInfo.lastName != "")
            setCookie("lastName", userInfo.lastName);
        setCookie("userGroup", userInfo.userGroup);
        setCookie("email", userInfo.email);
        setCookie("handlerKey", userInfo.handlerKey);
        setCookie("regDate", userInfo.regDate);
        setCookie("lastAccTime", userInfo.lastAccTime);
        setCookie("langId", userInfo.langId);
    }
}

function delUserInfo() {
    delCookie("userId");
    delCookie("status");
    delCookie("loginName");
    delCookie("userName");
    delCookie("surname");
    delCookie("lastName");
    delCookie("userGroup");
    delCookie("email");
    delCookie("handlerKey");
    delCookie("regDate");
    delCookie("lastAccTime");
    delCookie("langId");//c4w9.18
}

function getUserInfo(isGuide, successCallBack) {
    if(getCookie("userId") != null && getCookie("userId") != "") {
        return {
            userId:getCookie("userId"),
            status:getCookie("status"),
            loginName:getCookie("loginName"),
            userName:getCookie("userName"),
            surname:getCookie("surname"),
            lastName:getCookie("lastName"),
            userGroup:getCookie("userGroup"),
            email:getCookie("email"),
            handlerKey:getCookie("handlerKey"),
            regDate:getCookie("regDate"),
            lastAccTime:getCookie("lastAccTime"),
            langId:getCookie("langId")};
    } else if(isGuide) {
        showModalLogin(successCallBack);
    } else {
        return null;
    }
}

function showModalLogin(successCallBack) {
    if(document.getElementById("login_bjdiv") == null) {
        var info = {
            "zh-cn": {
            	pwd_reset:'口令重置',
                login: "登錄",
                pwdWrong: "口令錯誤！",
                noName: "用戶名不存在！",
                notActivationInfo:"用戶未激活！",
                userLimitedInfo: "用戶被禁止！",
                userNameInfo: "用戶名：",
                passwordInfo: "口令：",
                headTips:"登錄提示"
            },
            "en": {
            	pwd_reset:'Reset password',
                login: "Sign In",
                pwdWrong: "Sorry, the passowrd you entered was incorrect",
                noName: "The user is invalid",//"The email address you entered was not found",
                notActivationInfo:"Your account was not activated",
                userLimitedInfo: "The user is banned",
                userNameInfo: "Member ID:&nbsp;",
                passwordInfo: "Password:&nbsp;",
                headTips:"Log In Now"
            }
        };
        var infoObj = new dpmInfo();
        infoObj.addInfo(info);
        var lmdCt = document.createElement("div");
        lmdCt.style.width="320px";
		var opt={
			bgGif:'help.gif',
			ns:'swlLogin',
			ct:lmdCt,
			btns:[
				{
					name:infoObj.getInfo("login"),
					type:"button",
					click:function(opt){
			            login(document.getElementById("login_userName").value, document.getElementById("login_password").value, function(userInfo){
			                if(userInfo.flag == 0) {
			                    if(successCallBack != null)
			                        successCallBack(userInfo);
			                        Imba.modal.close(Imba.modal,opt);
			                } else if(userInfo.flag == 1) {
			                    //alert(infoObj.getInfo("pwdWrong"));
			                	document.getElementById("login_info_td").innerHTML=infoObj.getInfo("pwdWrong")
			                	+"&nbsp;&nbsp;<input type=\"button\" onclick=\"resetPassword();return false;\" value=\""
			                	+infoObj.getInfo("pwd_reset")+"\">";
			                } else if(userInfo.flag == 2) {
			                    //alert(infoObj.getInfo("noName"));
			                	document.getElementById("login_info_td").innerHTML=infoObj.getInfo("noName");
			                } else if(userInfo.flag == 3) {
			                    //alert(infoObj.getInfo("notActivationInfo"));
			                	document.getElementById("login_info_td").innerHTML=infoObj.getInfo("notActivationInfo");
			                } else if(userInfo.flag == 4) {
			                    //alert(infoObj.getInfo("userLimitedInfo"));
			                	document.getElementById("login_info_td").innerHTML=infoObj.getInfo("userLimitedInfo");
			                }
			            });
					}
				},
				{
					name:infoObj.getInfo("register"),
					type:"button",
					click:function(opt){
						if(infoObj.lang=='en')
						  window.open("/files/member/register/register_en.html","_blank");//c4w0919
						else
						  window.open("/files/member/register/register.html","_blank");
					}
				},
				{
					name:infoObj.getInfo("cancel"),
					type:"button",
					click:function(opt){
						Imba.modal.close(Imba.modal,opt);
					}
				}
			]
		};
		Imba.modal.uiTp(
		infoObj.getInfo("headTips"),
		[
			"<table class='index-txt' width='100%'>",
			"<tr><td align='right'>"+infoObj.getInfo("userNameInfo")+"</td><td><input class='iptLgn' id='login_userName' type='text' id='login_userName' style='width:180px;'/></td></tr>",
			"<tr><td align='right'>"+infoObj.getInfo("passwordInfo")+"</td><td><input class='iptLgn' id='login_password' type='password' id='login_password' style='width:180px;'/></td></tr>",
			"<tr><td align='center' colspan=2 id='login_info_td' style=\"color:red;\"></td>",
			"</table>"
		].join(""),
		opt);
    }
}

function userBaseInfoInit() {
    var userInfo = getUserInfo(false);
    var i18nInfo = {
        "zh-cn": {
            i18n_uin_loginName: "用戶名：",
            i18n_uin_group: "組別：",
            i18n_uin_regTime: "註冊時間：",
            i18n_uin_lastAccTime: "上次訪問："
            ,i18n_explan0:"修改您的基本註冊資訊"
        },
        "en": {
            i18n_uin_loginName: "Username:&nbsp;",
            i18n_uin_group: "Group:&nbsp;",
            i18n_uin_regTime: "Join Date:&nbsp;",
            i18n_uin_lastAccTime: "Last Visit:&nbsp;"
            ,i18n_explan0:"You can modify your registration information here."
        }
    };
    var i18n = new dpm_i18n();
    i18n.newTextObj(i18nInfo);
    i18n.fillText();
    document.getElementById("nameB").innerHTML = userInfo.loginName;
    document.getElementById("groupB").innerHTML = userInfo.userGroup;
    document.getElementById("regTimeB").innerHTML = userInfo.regDate;
    document.getElementById("lastAccTimeB").innerHTML = userInfo.lastAccTime;
    
}

function userBaseInfoRefresh() {
//  更改口令。
    var info = {
            "zh-cn": {
                noOldPwd: "請輸入舊口令！",
                noNewPwd: "新口令不能為空！",
                noNewPwdCon: "請確認新口令！",
                newPwdNotMatch: "新口令不匹配！",
                changeBaseInfoSuccess: "基本資訊修改成功！",
                changeBaseInfoFailed: "基本資訊修改失敗！",
                invalidePwd: "新口令無效！口令可包含大寫、小寫英文字母，數字，長度為 6 至 16 位",
                newMailSendSuccess: "新的激活郵件已發出！",
                newMailSendFailed: "激活郵件發送失敗！"
            },
            "en": {
                noOldPwd: "Please enter your present password to continue",
                noNewPwd: "Please enter your new password",
                noNewPwdCon: "Confirm New Password",
                newPwdNotMatch: "The two passwords that you entered do not match",
                changeBaseInfoSuccess: "Your baseInfo has been changed",
                changeBaseInfoFailed: "Your baseInfo has not been changed",
                invalidePwd: "Invalide password",
                newMailSendSuccess: "New activation email has been sent!",
                newMailSendFailed: "Sorry, you failed to send the activation email."
            }
    };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    var i18nInfo = {
        "zh-cn": {
            i18n_uin_changePwd: "修改口令",
            i18n_uin_oldPwd: "舊口令：",
            i18n_uin_newPwd: "新口令：",
            i18n_uin_newPwdConfirm: "新口令確認：",
            i18n_uin_des: "自我介紹：",
            i18n_uin_baseInfo: "基本資訊",
            i18n_uin_email: "郵件地址：",
            i18n_uin_changeInfoBt: "更改資訊",
            i18n_uin_isWantNews: "訂閱免費的故宮博物院電子報",
            i18n_uin_userName: "真實姓名：",
            i18n_uin_reActivation: "重新發送激活郵件：",
            i18n_uin_reActivationBt: "發送",
            i18n_uin_baseInfo_box: "基本資訊"
        },
        "en": {
            i18n_uin_changePwd: "Change Password",
            i18n_uin_oldPwd: "Current Password:&nbsp;",
            i18n_uin_newPwd: "New Password:&nbsp;",
            i18n_uin_newPwdConfirm: "Confirm New Password:&nbsp;",
            i18n_uin_des: "Self-introduction:&nbsp;",
            i18n_uin_baseInfo: "Modify My Email Address",
            i18n_uin_email: "Email:&nbsp;",
            i18n_uin_changeInfoBt: "Save",
            i18n_uin_isWantNews: "Receive Free E-newsletter from DPM.org.cn",
            i18n_uin_userName: "Name:&nbsp;",
            i18n_uin_reActivation: "Sent the activation email again:&nbsp;",
            i18n_uin_reActivationBt: "Send",
            i18n_uin_baseInfo_box: "Modify My Registration Information"
        }
    };
    var i18n = new dpm_i18n();
    i18n.newTextObj(i18nInfo);
    i18n.fillText();
    
    document.getElementById("uin_isChangePwd").onclick = function() {
        if(this.checked) {
            document.getElementById("uin_pwdTb").style.display = "";
        } else {
            document.getElementById("uin_pwdTb").style.display = "none";
        }
    };
    
    document.getElementById("i18n_uin_changeInfoBt").onclick = function() {
        var userInfo = getUserInfo(false);
        var ps = {userId:userInfo.userId, isChangePwd:document.getElementById("uin_isChangePwd").checked,
              email:document.getElementById("uin_email").value,
              userName: document.getElementById("uin_userName").value,
              description:document.getElementById("uin_desInput").value,
              issubscribenews:document.getElementById("uin_isWantNews").checked?1:0, handlerKey:userInfo.handlerKey, method:"W"};
        if (ps.isChangePwd) {
            var pwd = document.getElementById("uin_newPwd").value;
            var pwdCon = document.getElementById("uin_conPwd").value;
            var oldPwd = document.getElementById("uin_oldPwd").value;
            if (oldPwd == null || oldPwd == "") {
                Imba.modal.alert("", infoObj.getInfo("noOldPwd"));
                return;
            }
            if (pwd == null || pwd == "") {
                Imba.modal.alert("", infoObj.getInfo("noNewPwd"));
                return;
            }
            if (pwdCon == null || pwdCon == "") {
                Imba.modal.alert("", infoObj.getInfo("noNewPwdCon"));
                return;
            }
            if (pwdCon != pwd) {
                Imba.modal.alert("", infoObj.getInfo("newPwdNotMatch"));
                return;
            }
            var pwdPat = /(^[a-zA-Z0-9]{6,16})$/;
            if(!pwdPat.test(pwd)) {
                Imba.modal.alert("", infoObj.getInfo("invalidePwd"));
                return;
            }
            ps.oldPwd = oldPwd;
            ps.password = pwd;
        }
        var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
        jsonrpc.BH.handle(function(responseData, e){
            if(e == null) {
                if(responseData[0].result) {
                    Imba.modal.alert("", infoObj.getInfo("changeBaseInfoSuccess"));
                    setCookie("userName", document.getElementById("uin_userName").value);
                } else {
                    Imba.modal.alert("", infoObj.getInfo("changeBaseInfoFailed"));
                }
            } else {
                Imba.modal.alert("", e.message);
            }
            document.getElementById("uin_oldPwd").value = "";
            document.getElementById("uin_newPwd").value = "";
            document.getElementById("uin_conPwd").value = "";
        }, [req]);
    };

    var userInfo = getUserInfo(false);
    if(userInfo.status == 0) {
        document.getElementById("reSendTr").style.display = "";
        document.getElementById("i18n_uin_reActivationBt").onclick = function() {
            var ps = {userId:userInfo.userId, handlerKey:userInfo.handlerKey, method:"E"};
            var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
            jsonrpc.BH.handle(function(responseData, e){
                if(e == null) {
                    if(responseData[0].result) {
                        Imba.modal.alert("", infoObj.getInfo("newMailSendSuccess"));
                    } else {
                        Imba.modal.alert("", infoObj.getInfo("newMailSendFailed"));
                    }
                } else {
                    Imba.modal.alert("", e.message);
                }
            }, [req]);
        };
    }
//    載入基本資訊。
    var hql = "from dao.hb.CeUser A where A.id=" + userInfo.userId;
    var desReq = {
        "map" : {
            "psMap" : {
                "map" : {
                    "start" :0,
                    "rownum" :1,
                    "hql" :hql,
                    "cns" : [ "dao.hb.CeUser" ],
                    "pss" : [ ["email", "description", "issubscribenews"] ],
                    "method" :"G"
                },
                "javaClass" :"java.util.HashMap"
            },
            "SN" :null
        },
        "javaClass" :"java.util.HashMap"
    };
    jsonrpc.BH.handle(function(responseData){
        userInfo = getUserInfo(false);
        if(responseData[0][1].items.map["email"] != null)
            document.getElementById("uin_email").value = responseData[0][1].items.map["email"];
        document.getElementById("uin_isWantNews").checked = (responseData[0][1].items.map["issubscribenews"] == 1);
        if(userInfo.langId == "zh-cn" || userInfo.langId == "tc") {
            document.getElementById("uin_userNameTr").style.display = "";
            document.getElementById("uin_desTr").style.display = "";
            if(responseData[0][1].items.map["description"] != null)
                document.getElementById("uin_desInput").value = responseData[0][1].items.map["description"];
            if(userInfo.userName != null)
                document.getElementById("uin_userName").value = userInfo.userName;
        }
    }, [desReq]);

}

function userRealInfoRefresh() {
    var info = {
            "zh-cn": {
                changeRealSuccess: "真實資訊修改成功！",
                changeRealFailed: "真實資訊修改失敗！",
                birthInvalid: "出生日期不符合格式",
                phoneNum: "聯繫電話必須為數字！"
            },
            "en": {
                changeRealSuccess: "You have changed your profile.",
                changeRealFailed: "Sorry, you failed to change your profile.",
                birthInvalid: "Invalid Year of Birth",
                phoneNum: "Phone must be a Number!"
            }
        };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    var i18nInfo = {
            "zh-cn": {
                i18n_rin_male: "男",
                i18n_rin_female: "女",
                i18n_rin_realInfo: "真實資訊",
                i18n_rin_gender: "性別：",
                i18n_rin_nty: "國籍：",
                i18n_rin_folk: "民族：",
                i18n_rin_res: "現居住地（城市）：",
                i18n_rin_birthday: "出生日期：",
                i18n_rin_eduBack: "學歷：",
                i18n_rin_tel: "聯繫電話：",
                i18n_uin_changeRealInfoBt: "更改資訊"
                ,i18n_explan1:"填寫您的真實資訊，以方便我們有活動時及時準確地通知到您"
            },
            "en": {
                i18n_rin_male: "Male",
                i18n_rin_female: "Female",
                i18n_rin_realInfo: "Modify My Profile:&nbsp;",
                i18n_rin_gender: "Gender:&nbsp;",
                i18n_rin_nty: "Nationality:&nbsp;",
                i18n_rin_folk: "Folk:&nbsp;",
                i18n_rin_res: "Residence:&nbsp;",
                i18n_rin_birthday: "Year of Birth:&nbsp;",
                i18n_rin_eduBack: "Educational Background:&nbsp;",
                i18n_rin_tel: "Phone:&nbsp;",
                i18n_uin_changeRealInfoBt: "Save"
                ,i18n_explan1:"Provide or modify your identifiable information here so that we can inform you of the museum activities in a timely manner."
            }
        };
    var i18n = new dpm_i18n();
    i18n.newTextObj(i18nInfo);
    i18n.fillText();

    var userInfo = getUserInfo(false);
    var hql = "from dao.hb.CeUser A where A.id=" + userInfo.userId;
    var rinReq = {
        "map" : {
            "psMap" : {
                "map" : {
                    "start" :0,
                    "rownum" :1,
                    "hql" :hql,
                    "cns" : [ "dao.hb.CeUser" ],
                    "pss" : [ ["gender", "nationality", "folk", "countryresidence", "birthday", "education", "phone"] ],
                    "method" :"G"
                },
                "javaClass" :"java.util.HashMap"
            },
            "SN" :null
        },
        "javaClass" :"java.util.HashMap"
    };
    jsonrpc.BH.handle(function(responseData){
        var userInfo = getUserInfo(false);
        if (responseData[0][1].items.map["birthday"] != null) {
            var date = new Date();
            date.setTime(responseData[0][1].items.map["birthday"].time);
            if(userInfo.langId == "en") {
                document.getElementById("rin_birthday").value = date.getFullYear();
            }
            else {
                document.getElementById("rin_birthday").value = date.getFullYear()
                    + "-" + (date.getMonth() + 1) + "-" + date.getDate();
            }
        }
        if(responseData[0][1].items.map["phone"] != null)
            document.getElementById("rin_tel").value = responseData[0][1].items.map["phone"];
        if(responseData[0][1].items.map["gender"] == 1)
            document.getElementById("rin_gender_male").checked = true;
        else
            document.getElementById("rin_gender_female").checked = true;
        
//      國籍基表
        var natSelect = document.getElementById("rin_nty");
        natSelect.options[0] = new Option("", "");
        var nationArray = null;
        if(userInfo.langId == "zh-cn" || userInfo.langId == "tc")
            nationArray = BT_NATION;
        else
            nationArray = BT_NATION_UK;
        for(var i=0; i<nationArray.length; i++) {
            natSelect.options[i + 1] = new Option(nationArray[i], nationArray[i]);
            if(responseData[0][1].items.map["nationality"] == nationArray[i])
                natSelect.options[i + 1].selected = true;
        }
        
        if (userInfo.langId == "zh-cn" || userInfo.langId == "tc") {
            document.getElementById("rin_hideTr").style.display = "";
            document.getElementById("rin_phoneTr").style.display = "";
//          民族基表
            var folkSelect = document.getElementById("rin_folkTd");
            var folkArray = BT_FOLK;
            var selectStr = "<select id='rin_folk' style='width:140;' class='index-txt'><option></option>";
            for(var i=0; i<folkArray.length; i++) {
                if(responseData[0][1].items.map["folk"] == folkArray[i])
                    selectStr += "<option value='" + folkArray[i] + "' selected>" + folkArray[i] + "</option>";
                else
                    selectStr += "<option value='" + folkArray[i] + "'>" + folkArray[i] + "</option>";
            }
            selectStr += "</select>";
            folkSelect.innerHTML = selectStr;
            
            //        學歷基表
            var eduSelect = document.getElementById("rin_eduBack");
            eduSelect.options[0] = new Option("", "");
            var eduArray = null;
            if (userInfo.langId == "en")
                eduArray = BT_EDUCATION_UK;
            else
                eduArray = BT_EDUCATION;
            for ( var i = 0; i < eduArray.length; i++) {
                eduSelect.options[i + 1] = new Option(eduArray[i], eduArray[i]);
                if (responseData[0][1].items.map["education"] == eduArray[i])
                    eduSelect.options[i + 1].selected = true;
            }
        }
        
//        居住地基表
        var resSelect = document.getElementById("rin_res");
        resSelect.options[0] = new Option("", "");
        var resArray = null;
        if(userInfo.langId == "zh-cn" || userInfo.langId == "tc")
            resArray = BT_RESIDENCE;
        else
            resArray = BT_RESIDENCE_UK;
        for(var i=0; i<resArray.length; i++) {
            resSelect.options[i + 1] = new Option(resArray[i], resArray[i]);
            if(responseData[0][1].items.map["countryresidence"] == resArray[i])
                resSelect.options[i + 1].selected = true;
        }

        document.getElementById("i18n_uin_changeRealInfoBt").onclick = function() {
            var userInfo = getUserInfo(false);
            var phonePat = /^[0-9]*$/;
            if(!phonePat.test(document.getElementById("rin_tel").value)) {
                Imba.modal.alert("", infoObj.getInfo("phoneNum"));
                return;
            }
            var ps = {userId:userInfo.userId, gender:document.getElementById("rin_gender_male").checked?1:0, 
                    nation: document.getElementById("rin_nty").value,
                    folk: document.getElementById("rin_folk").value,
                    res: document.getElementById("rin_res").value,
                    eduBack: document.getElementById("rin_eduBack").value,
                    phone: document.getElementById("rin_tel").value,
                    handlerKey:userInfo.handlerKey, method:"N"};
            if(document.getElementById("rin_birthday").value != "") {
                var pattern = /^((((((0[48])|([13579][26])|([2468][048]))00)|([0-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9][0-9])|([1-9][0-9][0-9][0-9]))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8]))))))$/i;
                if(userInfo.langId == "en") {
                    pattern = /(^[0-9]{4})$/;
                    if(!pattern.test(document.getElementById("rin_birthday").value)) {
                        Imba.modal.alert("", infoObj.getInfo("birthInvalid"));
                        return;
                    }
                    ps.birthday = document.getElementById("rin_birthday").value + "-01-01";
                }
                else {
                    if(!pattern.test(document.getElementById("rin_birthday").value)) {
                        Imba.modal.alert("", infoObj.getInfo("birthInvalid"));
                        return;
                    }
                    ps.birthday = document.getElementById("rin_birthday").value;
                }
            }

            var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": "MemberHandle"}, "javaClass": "java.util.HashMap"};
            jsonrpc.BH.handle(function(responseData, ex){
                if(ex == null)
                    Imba.modal.alert("", infoObj.getInfo("changeRealSuccess"));
                else
                    Imba.modal.alert("", ex.message);
            }, [req]);
        }
        
    }, [rinReq]);
}

function volInfoRefresh() {
    langAmount = 0;
    var info = {
            "zh-cn": {
                lang: "語種：",
                speak: "説",
                read: "讀",
                write: "寫"
                
            },
            "en": {
                lang: "Language:",
                speak: "Speak",
                read: "Read",
                write: "Write"
            }
        };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    var i18nInfo = {
            "zh-cn": {
                i18n_vin_isVol: "希望成為故宮志願者",
                i18n_vin_stature: "身高：",
                i18n_vin_foreLang: "掌握外語情況：",
                i18n_vin_moreLang: "更多",
                i18n_vin_perRec: "個人簡歷（學習經歷與職業）：",
                i18n_vin_volExp: "是否有過志願者經歷，情況如何？",
                i18n_vin_serveTime: "擬服務時間：",
                i18n_vin_mon: "週一",
                i18n_vin_tue: "週二",
                i18n_vin_wed: "週三",
                i18n_vin_thu: "週四",
                i18n_vin_fri: "週五",
                i18n_vin_sat: "週六",
                i18n_vin_sun: "週日",
                i18n_vin_am: "上午",
                i18n_vin_pm: "下午",
                i18n_uin_changeVolInfoBt: "更改資訊",
                i18n_vin_surname: "姓：",
                i18n_vin_lastname: "名：",
                i18n_vin_phone: "聯繫電話：",
                i18n_vin_volInfo: "志願者資訊"
                ,i18n_explan2:"如果您想成為故宮的志願者，請填寫您的詳細資訊，招收志願者的時候我們將與您聯繫"
            },
            "en": {
                i18n_vin_isVol: "Want to be a volunteer of the Palace Museum",
                i18n_vin_stature: "Your Height:&nbsp;",
                i18n_vin_foreLang: "Language Abilities:&nbsp;",
                i18n_vin_moreLang: "more",
                i18n_vin_perRec: "Profession/Employment:&nbsp;",
                i18n_vin_volExp: "Why are you seeking a volunteer position with the Palace Museum?<br/> Have you ever been a volunteer before? If yes, please describe: ",
                i18n_vin_serveTime: "Availability:",
                i18n_vin_mon: "Monday",
                i18n_vin_tue: "Tuesday",
                i18n_vin_wed: "Wednesday",
                i18n_vin_thu: "Thursday",
                i18n_vin_fri: "Friday",
                i18n_vin_sat: "Saturday",
                i18n_vin_sun: "Sunday",
                i18n_vin_am: "AM",
                i18n_vin_pm: "PM",
                i18n_uin_changeVolInfoBt: "Save",
                i18n_vin_surname: "Surname:&nbsp;",
                i18n_vin_lastname: "Name:&nbsp;",
                i18n_vin_phone: "Phone:&nbsp;",
                i18n_vin_volInfo: "Modify My Volunteer Information"
                 ,i18n_explan2:"Provide or modify your volunteer information here. We will contact you based on this information in case of volunteer recruitment."
            }
        };
    var i18n = new dpm_i18n();
    i18n.newTextObj(i18nInfo);
    i18n.fillText();

    var userInfo = getUserInfo(false);
//    載入志願者資訊。
    var hql = "from dao.hb.CeUser A where A.id=" + userInfo.userId;
    var vinReq = {
        "map" : {
            "psMap" : {
                "map" : {
                    "start" :0,
                    "rownum" :1,
                    "hql" :hql,
                    "cns" : [ "dao.hb.CeUser" ],
                    "pss" : [ ["isvolunteer", "stature", "foreignlanguage", "resume", "experience", "servicetime", "surname", "lastname", "phone"] ],
                    "method" :"G"
                },
                "javaClass" :"java.util.HashMap"
            },
            "SN" :null
        },
        "javaClass" :"java.util.HashMap"
    };
    jsonrpc.BH.handle(function(responseData, ex){
        if(ex != null) {
            Imba.modal.alert("", ex.message);
            return;
        }
        document.getElementById("vin_isVol").checked = responseData[0][1].items.map["isvolunteer"] == 1;
        if(responseData[0][1].items.map["stature"] != null)
            document.getElementById("vin_stature").value = responseData[0][1].items.map["stature"];
        if (responseData[0][1].items.map["foreignlanguage"] != null) {
            var forLangStr = responseData[0][1].items.map["foreignlanguage"];
            var langArray = forLangStr.split("|");
            var langStr = "";
            for ( var i=0; i<langArray.length; i++) {
                if (langArray[i].indexOf("#") >= 0) {
                    langAmount++;
                    var skillArray = langArray[i].split("#");
                    langStr += infoObj.getInfo("lang")
                            + "<input type='text' style='width: 80px;' name='forLang' id='forLang"
                            + langAmount
                            + "' value='"
                            + skillArray[0]
                            + "' disabled='disabled'/>"
                            + "<input type='checkbox' name='lang_speak' id='lang_speak"
                            + langAmount
                            + "' disabled='disabled' "
                            + (skillArray[1] == "true" ? "checked='checked'"
                                    : "")
                            + "/>"
                            + infoObj.getInfo("speak")
                            + "<input type='checkbox' name='lang_read' id='lang_read"
                            + langAmount
                            + "' disabled='disabled' "
                            + (skillArray[2] == "true" ? "checked='checked'"
                                    : "")
                            + "/>"
                            + infoObj.getInfo("read")
                            + "<input type='checkbox' name='lang_write' id='lang_write"
                            + langAmount
                            + "' disabled='disabled' "
                            + (skillArray[3] == "true" ? "checked='checked'"
                                    : "") + "/>" + infoObj.getInfo("write")
                            + "<br/>";
                }
            }
            if(langAmount >= 6) {
                document.getElementById("moreLangLink").style.display = "none";
            }
            document.getElementById("forLangSpan").innerHTML = langStr;
        }
        if(responseData[0][1].items.map["resume"] != null)
            document.getElementById("vin_perRec").value = responseData[0][1].items.map["resume"];
        if(responseData[0][1].items.map["experience"] != null)
            document.getElementById("vin_volExp").value = responseData[0][1].items.map["experience"];
        if (responseData[0][1].items.map["servicetime"] != null) {
            var serveTimeArray = responseData[0][1].items.map["servicetime"]
                    .split("|");
            for (i = 0; i < serveTimeArray.length; i++) {
                document.getElementById(serveTimeArray[i]).checked = true;
            }
        }
        document.getElementById("vin_isVol").onclick = function() {
            if(this.checked)
                disalbeInput(false);
            else
                disalbeInput(true);
        }
        
        if(userInfo.langId == "zh-cn" || userInfo.langId == "tc") {
            
        } else {
            document.getElementById("surnameTr").style.display = "";
            document.getElementById("lastnameTr").style.display = "";
            document.getElementById("phoneTr").style.display = "";
            if(responseData[0][1].items.map["surname"] != null)
                document.getElementById("vin_surname").value = responseData[0][1].items.map["surname"];
            if(responseData[0][1].items.map["lastname"] != null)
                document.getElementById("vin_lastname").value = responseData[0][1].items.map["lastname"];
            if(responseData[0][1].items.map["phone"] != null)
                document.getElementById("vin_phone").value = responseData[0][1].items.map["phone"];
            
        }
        
        if(responseData[0][1].items.map["isvolunteer"] == 1)
            disalbeInput(false);
//        更新志願者資訊。
        document.getElementById("i18n_uin_changeVolInfoBt").onclick = function() {
            var info = {
                    "zh-cn": {
                        desChangeSuccess:"志願者資訊修改成功！",
                        statureNum: "身高必須為正整數！",
                        phoneNum: "聯繫電話必須為數字！"
                    },
                    "en": {
                        desChangeSuccess:"You have changed your volunteer information.",
                        statureNum: "Height Must be a Number!",
                        phoneNum: "Phone must be a Number!"
                    }
                };
                var infoObj = new dpmInfo();
                infoObj.addInfo(info);
            var userInfo = getUserInfo(false);
            var langResult = "";
            var staturePat = /^[0-9]*$/;
            if(!staturePat.test(document.getElementById("vin_stature").value)) {
                Imba.modal.alert("", infoObj.getInfo("statureNum"));
                return;
            }
            for(var j=1; j<=langAmount; j++) {
                if (document.getElementById("forLang" + j).value != "") {
                    langResult += document.getElementById("forLang" + j).value
                            + "#"
                            + document.getElementById("lang_speak" + j).checked
                            + "#"
                            + document.getElementById("lang_read" + j).checked
                            + "#"
                            + document.getElementById("lang_write" + j).checked;
                    if (j < langAmount)
                        langResult += "|";
                }
            }
            var serviceTimeResult = "";
            var timeArray = document.getElementsByName("serveTime");
            for(j=0; j<timeArray.length; j++) {
                if(timeArray[j].checked) {
                    serviceTimeResult += timeArray[j].value + "|";
                }
            }
            serviceTimeResult = serviceTimeResult.substring(0, serviceTimeResult.length - 1);
            var items = null;
            if(userInfo.langId == "en") {
                var phonePat = /^[0-9]*$/;
                if(!phonePat.test(document.getElementById("vin_phone").value)) {
                    Imba.modal.alert("", infoObj.getInfo("phoneNum"));
                    return;
                }
                items = {"map":{id:userInfo.userId, isvolunteer: document.getElementById("vin_isVol").checked?1:0,
                        surname: document.getElementById("vin_surname").value,
                        lastname: document.getElementById("vin_lastname").value,
                        phone: document.getElementById("vin_phone").value,
                        stature: document.getElementById("vin_stature").value, foreignlanguage: langResult,
                        resume: document.getElementById("vin_perRec").value, experience: document.getElementById("vin_volExp").value,
                        servicetime: serviceTimeResult}, "javaClass": "java.util.HashMap"};
            } else {
                items = {"map":{id:userInfo.userId, isvolunteer: document.getElementById("vin_isVol").checked?1:0,
                        stature: document.getElementById("vin_stature").value, foreignlanguage: langResult,
                        resume: document.getElementById("vin_perRec").value, experience: document.getElementById("vin_volExp").value,
                        servicetime: serviceTimeResult}, "javaClass": "java.util.HashMap"};
            }
            var obj = {action: "U", cns:["dao.hb.CeUser"], items:items, "javaClass":"net.bat.prototype.Obj"};
            var ps = null;
            if(userInfo.langId == "en") {
                ps = {cns:["dao.hb.CeUser"], pss:[["surname", "lastname", "phone", "isvolunteer", "stature", "foreignlanguage", "resume", "experience", "servicetime"]],
                        objs:[obj], handlerKey:userInfo.handlerKey, userId:userInfo.userId, method:"P"};
            } else {
                ps = {cns:["dao.hb.CeUser"], pss:[["isvolunteer", "stature", "foreignlanguage", "resume", "experience", "servicetime"]],
                    objs:[obj], handlerKey:userInfo.handlerKey, userId:userInfo.userId, method:"P"};
            }
            var req = {"map": {"psMap": {map: ps, "javaClass": "java.util.HashMap"}, "SN": null}, "javaClass": "java.util.HashMap"};
            jsonrpc.BH.handle(function(responseData, ex){
                if(ex == null) {
                    Imba.modal.alert("", infoObj.getInfo("desChangeSuccess"));
                } else {
                    Imba.modal.alert("", ex.message);
                }
            }, [req]);
        };
        
    }, [vinReq]);
    
}

function disalbeInput(dis) {
    document.getElementById("vin_surname").disabled = dis;
    document.getElementById("vin_lastname").disabled = dis;
    document.getElementById("vin_phone").disabled = dis;
    document.getElementById("vin_stature").disabled = dis;
    var langNameArray = document.getElementsByName("forLang");
    var speakArray = document.getElementsByName("lang_speak");
    var readArray = document.getElementsByName("lang_read");
    var writeArray = document.getElementsByName("lang_write");
    for(var j=0; j<langNameArray.length; j++) {
        langNameArray[j].disabled = dis;
        speakArray[j].disabled = dis;
        readArray[j].disabled = dis;
        writeArray[j].disabled = dis;
    }
    document.getElementById("vin_perRec").disabled = dis;
    document.getElementById("vin_volExp").disabled = dis;
    var serveTimeArray = document.getElementsByName("serveTime");
    j = 0;
    for(; j<serveTimeArray.length; j++)
        serveTimeArray[j].disabled = dis;
}

function moreLang() {
    var info = {
            "zh-cn": {
                lang: "語種：",
                speak: "説",
                read: "讀",
                write: "寫"
            },
            "en": {
                lang: "Language:",
                speak: "Speak",
                read: "Read",
                write: "Write"
            }
        };
    var infoObj = new dpmInfo();
    infoObj.addInfo(info);
    if (document.getElementById("vin_isVol").checked) {
        var langSpan = document.getElementById("forLangSpan");
        langAmount++;
        langSpan.innerHTML += infoObj.getInfo("lang") + "<input type='text' style='width: 80px;' name='forLang' id='forLang" + langAmount + "'/>" +
                "<input type='checkbox' name='lang_speak' id='lang_speak" + langAmount + "'/>" + infoObj.getInfo("speak") + 
                "<input type='checkbox' name='lang_read' id='lang_read" + langAmount + "'/>" + infoObj.getInfo("read") + 
                "<input type='checkbox' name='lang_write' id='lang_write" + langAmount + "'/>" + infoObj.getInfo("write") + "<br/>";
        if(langAmount >= 6) {
            document.getElementById("moreLangLink").style.display = "none";
        }
    }
}
