<!-- #Include File="../Include/Skin.asp" -->
<!-- #Include File="../Include/Inc_md5.asp" -->
<!-- #Include File="../Include/Inc_sendmail.asp" -->
<%
'=======================================================
' 欢迎使用《阿赛大型门户网站系统V3.0》，简称“AsaiMHV3”
' 技术支持、商业版咨询、官方唯一指定联系QQ“4941172”
' 官方网站：http://77ya.com      程序负责人：阿赛
'=======================================================

iframe=true
Index_Url="register"
tit_fir="注册新用户"
dim val_url
val_url=Cls.web_urls
select case action
case "resend"
	tit="重新发送注册验证邮件"
case "reg_val"
	tit="注册用户邮件验证"
case "main"
	tit="填写注册用户资料"
case "val"
	tit="填写用册资料验证"
case "chk"
	tit="注册新用户结果"
case else
	tit="服务条款和声明"
end select
call DoWebHead(0,0)

if login_username<>"" then
	call format_redirect("Index.asp")
End If
'----------------------------中间 开始----------------------------
If int(format_mid_num(0))=1 Then
	select case action
	case "resend"
		call register_resend()
	case "reg_val"
		call register_reg_val()
	case "main"
		call register_main()
	case "val"
		call register_val()
	case "chk"
		call register_chk()
	case else
		call register_read()
	end select
Else
	Call Web_Error("reg_stop")
End If
'----------------------------中间 结束----------------------------
call DoWebEnd()

'//* 注册说明 *//
sub register_read()
    Cls.ReadPage "help_register"
	Cls.HtmlRcod "tit",tit
	Cls.HtmlRcod "waittime",int(Format_Mid_Num(32))
	Cls.OutPage
End Sub

sub register_resend()
	dim username,password,email,found_err,u_id,u_tmp,val_var,sbody,sendmail,stit,temp1,passwd,sTmp
	if Cls.chk() then
		username=trim(request.form("username"))
		password=trim(request.form("password"))
		email=Cls.Code_Var(request.form("email"))
		found_err=""
		if ChkName(username)=false then
			found_err=found_err&"+您输入的 <font class=red>用户名称</font> 为空或不符合相关规则！<br />"
		End If
		if ChkPassWord(password)=false then
			found_err=found_err&"+您输入的 <font class=red>登陆密码</font> 为空或不符合相关规则！<br />"
		End If
		if Cls.Is_Email(email,50)=false then
			found_err=found_err&"+您输入的 <font class=red>邮件地址</font> 为空或不符合邮件规则！<br />"
		End If
		if Not Cls.CodeIsTrue() then
			found_err=found_err&"+您输入的 <font class=red2>验 证 码</font> 为空或者有错误存在！<br />"
		End If
		if found_err<>"" then
			Cls.ReadPage "common"
			Cls.HtmlRcod "msg",Found_Error(Found_Err,460)
			Cls.HtmlRcod "tit",tit
			Cls.OutPage
			exit sub
		End If
		sql="select top 1 "
		passwd=password
		password=AsaiMHMd5(password,"short")
		sql="select top 1 id,tmp from AsaiMHuserdata where username='"&username&"' and password='"&password&"' "
		set rs=Cls.exec(sql,1)
		if rs.eof then
			rs.close
			found_err=found_err&"+您输入的 <font class=red>用户验证信息</font> 有错误或已验证！<br />"
			Cls.ReadPage "common"
			Cls.HtmlRcod "msg",Found_Error(Found_Err,460)
			Cls.HtmlRcod "tit",tit
			Cls.OutPage
			exit sub
		End If
		u_id=rs(0)
		u_tmp=rs(1)
		rs.close
		val_var=AsaiMHMd5(Cls.rand_num(10),"long")
		if Cls.Is_Null(u_tmp)<>"" and len(val_var)<>len(u_tmp) then
			found_err=found_err&"+您输入的 <font class=red>用户信息</font> 为非注册原因被设为未审核状态！<br />"&u_tmp
			Cls.ReadPage "common"
			Cls.HtmlRcod "msg",Found_Error(Found_Err,460)
			Cls.HtmlRcod "tit",tit
			Cls.OutPage
			exit sub
		End If
		sql="update AsaiMHuserdata set tmp='"&val_var&"' where id="&u_id
		call Cls.exec(sql,0)
		stit=tit
		sbody="您于 "&Cls.time_type("",2)&" 提交重新发送注册验证邮件！" & _
		vbcrlf&"" & _
		vbcrlf&"用户名称："& username & _
		vbcrlf&"登陆密码："& passwd & _
		vbcrlf& _
		vbcrlf&"请尽快访问以下地址以验证您的注册信息："& _
		vbcrlf& _
		vbcrlf& val_url &"Register.asp?action=reg_val&val_var="&val_var& _
		vbcrlf& _
		vbcrlf&"请在验证后登陆本站用户中心修改您的相关注册信息！"& _
		vbcrlf& _
		vbcrlf&"用户登陆页面：" & _
		vbcrlf& val_url &"Login.asp"
		temp1="<table border=0 align=center><tr><td>恭喜！<font class=blue><b>"&username&"</b></font>，您已成功提交重新发送注册验证邮件。<br /><br />您现在的状态为：<font class=red>未审核</font><br /><br />请尽快查收您的邮箱（"&email&"）并进行<a href='Register.asp?action=reg_val'>注册验证</a>身份！<br /><br />"
		sendmail=send_mail(username,email,stit,sbody)
		if sendmail then
			temp1=temp1&"<font class=red>注册验证邮件已成功发送至邮箱（"&email&"）中！</font>"
		else
			temp1=temp1&"<font class=red2>系统配置不正常，注册邮件没有能正确发送！</font></td></tr></table>"
		End If
		Cls.ReadPage "common"
		Cls.HtmlRcod "msg",temp1
		Cls.HtmlRcod "tit",tit
		Cls.OutPage
		exit sub
	End If
	Cls.ReadPage"register_resend"
	Cls.HtmlRcod "GetCode",Cls.GetCode()
	Cls.HtmlRcod "action",action
	Cls.HtmlRcod "tit",tit
	Cls.OutPage
End Sub

sub register_reg_val()
	dim val_var,id,username,password,found_err,sTmp
	val_var=Cls.Code_Var(request.querystring("val_var"))
	if len(val_var)<>32 or ChkName(val_var) then
%>
<table border=0>
<tr><td><font class=red>您输入的验证码有错误或已过期！</font></td></tr>
</table>
<%
		exit sub
	End If
	if Cls.chk() then
		username=trim(request.form("username"))
		password=trim(request.form("password"))
		found_err=""
		if ChkName(username)=false then
			found_err=found_err&"+您输入的 <font class=red>用户名称</font> 为空或不符合相关规则！<br />"
		End If
		if ChkPassWord(password)=false then
			found_err=found_err&"+您输入的 <font class=red>登陆密码</font> 为空或不符合相关规则！<br />"
		End If
		if Not Cls.CodeIsTrue() then
			found_err=found_err&"+您输入的 <font class=red>验 证 码</font> 为空或有错误！<br />"
		End If
		if found_err="" then
			password=AsaiMHMd5(password,"short")
			sql="select top 1 id from AsaiMHuserdata where username='"&username&"' and password='"&password&"' and tmp='"&val_var&"' and hidden=0"
			set rs=Cls.exec(sql,1)
			if rs.eof then
				found_err=found_err&"+您输入的 <font class=red>用户验证信息</font> 有错误或已验证！<br />"
			else
				id=rs("id")
			End If
			rs.close
		End If
		if found_err<>"" then
			Cls.ReadPage "common"
			Cls.HtmlRcod "msg",Found_Error(Found_Err,460)
			Cls.HtmlRcod "tit",tit
			Cls.OutPage
			exit sub
		End If
		call Cls.exec("update AsaiMHuserdata set tmp='',hidden=1 where id="&id,0)
		call cookies_load()
		call Cls.cookies_set("login_username",username)
		call Cls.cookies_set("login_password",AsaiMHEncrypt(password))
		Cls.ReadPage "common"
		Cls.HtmlRcod "msg",vbcrlf&"<table border=0 align=center><tr><td><font class=blue><b>"&username&"</b></font>，您已通过注册信息验证！<br /><br /><flon class=red>从现在起您正式成为我们的注册用户。</font><br /><br />请进入 <a href='Index.asp'>用户中心</a> 修改您的其它相关信息。</td></tr></table>"
		Cls.HtmlRcod "tit",tit
		Cls.OutPage
		exit sub
	End If
	Cls.ReadPage"register_val"
	Cls.HtmlRcod "GetCode",Cls.GetCode()
	Cls.HtmlRcod "action",action
	Cls.HtmlRcod "val_var",val_var
	Cls.HtmlRcod "tit",tit
	Cls.OutPage
End Sub

sub register_chk()
  dim username,nname,password,password2,passwd,qq,msn,url,email,phone,address,found_err,reg_val,val_var,sbody,sendmail,stit,temp1
  dim send_u,accept_u,topic,word,types,isread,red_3
  username=trim(request.form("username"))
  nname=trim(request.form("nname"))
  password=trim(request.form("password"))
  password2=trim(request.form("password2"))
  passwd=trim(request.form("passwd"))
  email=Cls.Code_Var(request.form("email"))
  qq=cls.code_var(request.form("qq")) 
  msn=cls.code_var(request.form("msn")) 
  url=cls.code_var(request.form("url"))
  phone=cls.code_var(request.form("phone")) 
  address=cls.code_var(request.form("address"))
  found_err=""
  if ChkName(username)=false then
    found_err=found_err&"+您输入的 <font class=red>用户名称</font> 为空或不符合相关规则！<br />"
  else
    if health_name(username)=false then
      found_err=found_err&"+您输入的 <font class=red>用户名称</font> 含有<font class=red>本系统禁用字符</font>！<br />"
    End If
  End If
  if ChkPassWord(password)=false then
    found_err=found_err&"+您输入的 <font class=red>登陆密码</font> 为空或不符合相关规则！<br />"
  else
    if password<>password2 then
      found_err=found_err&"+您输入的 <font class=red>登陆密码</font> 和 <font class=red>确认密码</font> 不一致！<br />"
    End If
  End If
  if Cls.Str_Length(password)<int(Format_Mid_Num(26)) then
    found_err=found_err&"+您输入的 <font class=red>登陆密码</font> 长度小于"&Format_Mid_Num(26)&"位！<br />"
  End If
  if Cls.Str_Length(username)>int(Format_Mid_Num(28)) then
    found_err=found_err&"+您输入的 <font class=red>用户名称</font> 长度大于"&Format_Mid_Num(28)&"字节！<br />"
  End If
  if Cls.Str_Length(username)<int(Format_Mid_Num(29)) then
    found_err=found_err&"+您输入的 <font class=red>用户名称</font> 长度小于"&Format_Mid_Num(29)&"字节！<br />"
  End If  
  if ChkName(passwd)=false then
    found_err=found_err&"+您输入的 <font class=red>安 全 码</font> 为空或不符合相关规则！<br />"
  End If
  if Cls.Is_Email(email,50)=false then
    found_err=found_err&"+您输入的 <font class=red>邮件地址</font> 为空或不符合邮件规则！<br />"
  End If
  if Not Cls.CodeIsTrue() then
    found_err=found_err&"+您输入的 <font class=red2>验 证 码</font> 为空或有错误，请勿非法提交！<br />"
  End If
  if qq<>"" and not isnull(qq) then
    if not(isnumeric(qq)) or len(qq)>15 then
      found_err=found_err&"+您输入的 <font class=red>OICQ</font> 不是数字或长度超过15位！<br />"
    end if
  end if
  if found_err="" then
    password=AsaiMHMd5(password,"short")
    sql="select top 1 id from AsaiMHuserdata where username='"&username&"'"
    set rs=Cls.exec(sql,1)
    if not rs.eof then
      found_err=found_err&"+您输入的 <font class=red>用户名称（<font class=blue><b>"&username&"</b></font>）</font> 已被注册！<br />"
    End If
    rs.close
    if int(format_mid_num(2))=1 and found_err="" then
      sql="select top 1 email from AsaiMHuserdata where email='"&email&"'"
      set rs=Cls.exec(sql,1)
      if not rs.eof then
        found_err=found_err&"+您输入的 <font class=red>邮件地址（<font class=blue><b>"&email&"</b></font>）</font> 已被使用！<br />"
      End If
      rs.close
    End If
  End If
  if found_err<>"" then
    found_err=found_err&"+请查阅有关 <a href='../Common/Help.asp?action=register' target=_blank class=red>用户注册注意事项</a> 并重新填写。"
	Cls.ReadPage "register_end"
	Cls.HtmlRcod "reg_msg",Found_Error(Found_Err,460)
	Cls.HtmlRcod "tit",tit
	Cls.OutPage
    exit sub
  End If
  reg_val=format_mid_num(1)
  val_var=""
  sql="select * from AsaiMHuserdata where id is null"
  call Cls.exec("",-1)
  rs.open sql,conn,1,3
  rs.addnew
  rs("username")=username
  'rs("nname")=""&web_dim(1)&"注册用户"
  rs("nname")=nname
  rs("password")=password
  rs("passwd")=AsaiMHMd5(passwd,"short")
  rs("email")=email
  if trim(request.form("sex"))="girl" then
    rs("sex")=false
  else
    rs("sex")=true
  End If
  rs("birthday")=rnd_birthday()
  rs("whe")=""
  rs("face")="{$web_dir}Images/Face/0.gif"
  rs("face_w")=Format_Mid_Num(20)
  rs("face_h")=Format_Mid_Num(21)
  rs("qq")=qq
  rs("msn")=msn
  rs("url")=url
  rs("phone")=phone
  rs("address")=address
  rs("onlinetime")=0
  rs("tim")=Cls.now_time
  'rs("power")=format_power2(1,1)
  rs("power")=format_powers(0)
  rs("remark")=""
  if int(reg_val)=1 then
    val_var=AsaiMHMd5(Cls.rand_num(10),"long")
    rs("hidden")=false
    rs("tmp")=val_var
  else
    rs("hidden")=true
    rs("tmp")=""
  End If
  rs("bbs_counter")=0
  rs("counter")=0
  rs("integral")=Format_Mid_Num(30)
  rs("emoney")=Format_Mid_Num(31)
  rs("strength")=Format_Mid_Num(33)
  rs("expression")=Format_Mid_Num(34)
  rs("ok_counter")=0
  rs("ok_helpnum")=0
  rs("ok_reply")=0
  rs("login_num")=0
  rs("last_tim")=Cls.now_time
  rs("last_ip")=Cls.ip_sys(0)
  if int(format_mid_num(3))=1 then
    rs("u_ip")=Cls.ip_sys(0)
  else
    rs("u_ip")=""
  End If
  rs("m_level")=0
  rs("login_msg")=1
  rs("Medal")=""
  rs("estate")=false
  rs("islock")=false
  rs("ispb")=false
  rs("isopen")=true
  rs.update
  rs.close
  call Cls.exec("update AsaiMHconfigs set new_username='"&username&"',num_reg=num_reg+1 where id=1",0)
  Call Cls.Cache_Del("Web_Info")
  '-----------------------注册短信通知开始------------------------
  
  '  '"&web_dim(1)&"管理组', 更正为 '"&web_dim(3)&"',
  
dim usermail
 if int(format_mid_num(3))=1 then
   usermail="[br]您此次注册IP为[color=#0000FF][b]"&Cls.ip_sys(0)&"[/b][/color]，系统将默认此IP。请您牢记并以后以此IP访问本站。[br][color=#FF0000][b]如需要修改下次登陆时IP或有任何疑问请及时联系系统管理员。[/b][/color]"
 else
   usermail="[br]如有任何疑问请及时联系系统管理员。"
 End If
call Cls.exec("insert into AsaiMHusermail(accept_u,send_u,topic,word,tim,types,isread) values('"&username&"','"&web_dim(1)&"管理组','"&web_dim(1)&"欢迎您的到来！','"&web_dim(1)&"全体管理人员欢迎您的到来。[br]"&usermail&"[br]感谢您注册本系统，让我们一起来建设这个网上家园！','"&Cls.now_time&"',1,0)",0)




'-----------------------注册短信通知结束------------------------
  temp1="恭喜！<font class=blue><b>"&username&"</b></font>，您已成功注册成为本站用户。<br /><br />"
  sbody="您于 "&Cls.time_type("",2)&" 正式注册成为本站用户！" & _
	vbcrlf&"" & _
	vbcrlf&"用户名称："& username & _
	vbcrlf&"登陆密码："& password2 & _
	vbcrlf&"安 全 码："& passwd
  stit="用户注册成功信息"
  if int(reg_val)=1 then
    stit="用户注册验证信息"
    sbody=sbody&vbcrlf&vbcrlf&"请尽快访问以下地址以验证您的注册信息："& _
	  vbcrlf& _
	  vbcrlf& val_url &"Register.asp?action=reg_val&val_var="&val_var& _
	  vbcrlf& _
	  vbcrlf&"并请在验证后登陆本站用户中心修改您的相关注册信息！"
    temp1=temp1&"您现在的状态为：<font class=red>未审核</font><br /><br />请尽快查收您的邮箱（"&email&"）并进行<a href='Register.asp?action=reg_val'>注册验证</a>身份！<br /><br />"
  else
    sbody=sbody&vbcrlf&"感谢您的注册，请尽快登陆本站并更新您的个人信息。"
    call cookies_load()
    call Cls.cookies_set("login_username",username)
    call Cls.cookies_set("login_password",AsaiMHEncrypt(password))
    temp1=temp1&"请尽快修改您的个人资料，<br />现在进入 <a href='login.asp' class=blue>用户中心</a> 修改资料。<br />"
  End If
  sbody=sbody&vbcrlf&vbcrlf&"用户登陆页面：" & _
	vbcrlf& val_url &"login.asp"
  if int(reg_val)<>2 then
  sendmail=send_mail(username,email,stit,sbody)
   if sendmail then
    temp1=temp1&"<font class=red>注册邮件已成功发送至邮箱（"&email&"）中！</font>"
   else
    temp1=temp1&"<font class=red2>系统配置不正常，注册邮件没有能正确发送！</font>"
   End If
  End If
  	Cls.ReadPage "register_end"
	Cls.HtmlRcod "reg_msg",found_suc(temp1,460)
	Cls.HtmlRcod "tit",tit
	Cls.OutPage
End Sub

sub register_val()
  dim usernames,email,msg_email,reg_true
  reg_true=false
  usernames=trim(request.form("username"))
  email=trim(request.form("email"))
  if ChkName(usernames)=false or Cls.Is_Email(email,50)=false then
    Response.write Cls.js_put("alert(""您输入的 用户名称 和 E-mail 为空或不符合相关规则！"");parent.document.reg_frm.val_button.disabled=false;",1)
    exit sub
  End If
  if health_name(usernames)=false then
    Response.write Cls.js_put("alert(""您输入的 用户名称 含有本系统禁用字符！"");parent.document.reg_frm.username.focus();parent.document.reg_frm.val_button.disabled=false;",1)
    exit sub
  End If
  sql="select top 1 id from AsaiMHuserdata where username='"&usernames&"'"
  set rs=Cls.exec(sql,1)
  if not rs.eof then
    rs.close
    Response.write Cls.js_put("alert(""对不起！\n\n您输入的用户名称（"&usernames&"）已被注册！\n\n请择其它的用户名称…"");parent.document.reg_frm.username.focus();parent.document.reg_frm.val_button.disabled=false;",1)
    exit sub
  End If
  rs.close
  if int(format_mid_num(2))=1 then
    msg_email="和E-mail（"&email&"）"
    sql="select top 1 id from AsaiMHuserdata where email='"&email&"'"
    set rs=Cls.exec(sql,1)
    if not rs.eof then
      rs.close
      Response.write Cls.js_put("alert(""对不起！\n\n您输入的E-mail（"&email&"）已被使用！\n\n请使用其它E-mail…"");parent.document.reg_frm.email.focus();parent.document.reg_frm.val_button.disabled=false;",1)
      exit sub
    End If
    rs.close
  End If
  Response.write Cls.js_put("alert(""恭喜！\n\n您输入的用户名称（"&usernames&"）"&msg_email&"可以注册！"");parent.document.reg_frm.val_button.disabled=false;",1)
End Sub

sub register_main()
dim sTmp,reg_val
	reg_val=format_mid_num(1)
	If int(reg_val) = 1 then
		sTmp = " <b>{$redx} 本站开启邮件审核功能</b>"
	else
		sTmp = ""
	End If
	Cls.ReadPage "Register_Main"
	Cls.HtmlRcod "GetCode",Cls.GetCode()
	Cls.HtmlRcod "Getreg_val",sTmp
	Cls.HtmlRcod "tit",tit
	Cls.OutPage
%>

<link rel="stylesheet" href="<%=Cls.Web_Dir%>Images/reg/style.css" type="text/css" />
<form name=val_name_frm action='?action=val' method=post target=hiddenframe>
<input type=hidden name=username value=''>
<input type=hidden name=email value=''>
</form>
<script language="javascript">
<!--
//AsaiMH 注册检测
var msg	;
var li_ok='/Skin/AsaiMH/Reg/li_ok.gif';
var li_err='/Skin/AsaiMH/Reg/li_err.gif'
var bname_m=false;
function init_reg(){
	msg=new Array(
	"请输入<%=Format_Mid_Num(29)%>-<%=Format_Mid_Num(28)%>位字符，中文、英文、数字的组合。",
	"备用。",
	"请输入<%=Format_Mid_Num(26)%>位以上字符，不允许空格。",
	"请重复输入上面的密码。",
	"请输入安全码，加强登录安全性时候使用。",
	"备用。",
	"请输入您真实的电子邮箱地址。"
	)
	document.getElementById("d_uname").innerHTML=msg[0];
	document.getElementById("d_upwd1").innerHTML=msg[2];
	document.getElementById("d_upwd2").innerHTML=msg[3];
	document.getElementById("d_upwd3").innerHTML=msg[4];
	document.getElementById("d_email").innerHTML=msg[6];
}
init_reg();
function on_input(objname){
	var strtxt;
	var obj=document.getElementById(objname);
	obj.className="d_on";
	//alert(objname);
	switch (objname){
		case "d_uname":
			strtxt=msg[0];
			break;
		case "d_upwd1":
			strtxt=msg[2];
			break;
		case "d_upwd2":
			strtxt=msg[3];
			break;
		case "d_upwd3":
			strtxt=msg[4];
			break;		
		case "d_email":
			strtxt=msg[6];
			break;		
	}
	obj.innerHTML=strtxt;
}
function showadv(){
if (document.reg_frm.advshow.checked == true) {
	 adv.style.display = "";
	 advance.innerText="关闭高级用户设置选项";
}else{
	adv.style.display = "none";
	advance.innerText="显示高级用户设置选项";
}
}
function out_uname(){
	var obj=document.getElementById("d_uname");
	var str=sl(document.getElementById("username").value);
	var chk=true;
	//alert(str);
	if (str<<%=Format_Mid_Num(29)%> || str><%=Format_Mid_Num(28)%>){chk=false;}
	if (chk){
		obj.className="d_ok";
		obj.innerHTML='用户名已经输入。';
		document.getElementById("d_uname_img").src=li_ok;
	}else{
		obj.className="d_err";
		obj.innerHTML=msg[0];
		document.getElementById("d_uname_img").src=li_err;
	}
	return chk;
}
function out_upwd1(){
	var obj=document.getElementById("d_upwd1");
	var str=document.getElementById("password").value;
	var chk=true;
	if (str=='' || str.length<<%=Format_Mid_Num(26)%> || str.length>20){chk=false;}
	if (chk){
		obj.className="d_ok";
		obj.innerHTML='密码已经输入。';
		document.getElementById("d_upwd1_img").src=li_ok;
	}else{
		obj.className="d_err";
		obj.innerHTML=msg[2];
		document.getElementById("d_upwd1_img").src=li_err;
	}
	return chk;
}
function out_upwd2(){
	var obj=document.getElementById("d_upwd2");
	var str=document.getElementById("password2").value;
	var chk=true;
	if (str!=document.getElementById("password").value||str==''){chk=false;}
	if (chk){
		obj.className="d_ok";
		obj.innerHTML='重复密码输入正确。';
		document.getElementById("d_upwd2_img").src=li_ok;
	}else{
		obj.className="d_err";
		obj.innerHTML=msg[3];
		document.getElementById("d_upwd2_img").src=li_err;
	}
	return chk;
}
function out_upwd3(){
	var obj=document.getElementById("d_upwd3");
	var str=sl(document.getElementById("passwd").value);
	var chk=true;
	//alert(str);
	if (str<<%=Format_Mid_Num(26)%> || str>20){chk=false;}
	if (chk){
		obj.className="d_ok";
		obj.innerHTML='安全码已经输入。';
		document.getElementById("d_upwd3_img").src=li_ok;
	}else{
		obj.className="d_err";
		obj.innerHTML=msg[4];
		document.getElementById("d_upwd3_img").src=li_err;
	}
	return chk;
}
function out_email(){
	var obj=document.getElementById("d_email");
	var str=document.getElementById("email").value;
	var chk=true;
	if (str==''|| !str.match(/^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig)){chk=false}
	if (chk){
		obj.className="d_ok";
		obj.innerHTML='电子邮箱地址已经输入。';
		document.getElementById("d_email_img").src=li_ok;
	}else{
		obj.className="d_err";
		obj.innerHTML=msg[6];
		document.getElementById("d_email_img").src=li_err;
	}
	return chk;
}
function sl(st){
	sl1=st.length;
	strLen=0;
	for(i=0;i<sl1;i++){
		if(st.charCodeAt(i)>255) strLen+=2;
	 else strLen++;
	}
	return strLen;
}
//检测用户名
function val_name()
{
  var username=document.reg_frm.username.value;
  var email=document.reg_frm.email.value;
  if (username=="" || email=="")
  {
    alert("请先填写您要注册的 用户名称 和 E-mail ！");
    if (username=="")
    { document.reg_frm.username.focus(); }
    else
    { document.reg_frm.email.focus(); }
    return false;
  }
  else
  {
    document.reg_frm.val_button.disabled=true;
    document.val_name_frm.username.value=username;
    document.val_name_frm.email.value=email;
    document.val_name_frm.submit();
  }
}
//表单检测
function chk_reg(){
	var chk=true
	if (!out_uname()){chk=false}
	if (!out_upwd1()){chk=false}
	if (!out_upwd2()){chk=false}
	if (!out_upwd3()){chk=false}
	if (!out_email()){chk=false}
	if(chk){
    return true;
	}
	return false;
}
-->
</script>
<script type="text/javascript">
function GEId(id){return document.getElementById(id);}
function DispPwdStrength(iN,sHL){
	if(iN>3){ iN=3;}
	for(var i=1;i<4;i++){
		var sHCR="ob_pws0";
		if(i<=iN){ sHCR=sHL;}
		if(iN>0){
		GEId("idSM"+i).className=sHCR;
		}
		//GEId("idSMT"+i).className="ob_pwfont2";
		if (iN>0){
			if (i<=iN){
			GEId("idSMT"+i).style.display=((i==iN)?"inline":"none");
			}
		}
		else{
		GEId("idSMT"+i).style.display=((i==iN)?"none":"inline");
		}
	}
}

//密码强度

function EvalPwdStrength(sP){
	if(ClientSideStrongPassword(sP,gSimilarityMap,gDictionary)){
		DispPwdStrength(3,'ob_pws3');
	}else if(ClientSideMediumPassword(sP,gSimilarityMap,gDictionary)){
		DispPwdStrength(2,'ob_pws2');
	}else if(ClientSideWeakPassword(sP,gSimilarityMap,gDictionary)){
		DispPwdStrength(1,'ob_pws1');
	}else{
		DispPwdStrength(0,'ob_pws0');
	}
}
var kNoCanonicalCounterpart = 0;
var kCapitalLetter = 0;
var kSmallLetter = 1;
var kDigit = 2;
var kPunctuation = 3;
var kAlpha =  4;
var kCanonicalizeLettersOnly = true;
var kCananicalizeEverything = false;
var gDebugOutput = null;
var kDebugTraceLevelNone = 0;
var kDebugTraceLevelSuperDetail = 120;
var kDebugTraceLevelRealDetail = 100;
var kDebugTraceLevelAll = 80;
var kDebugTraceLevelMost = 60;
var kDebugTraceLevelFew = 40;
var kDebugTraceLevelRare = 20;
var gDebugTraceLevel = kDebugTraceLevelNone;
function DebugPrint()
{
var string = "";
if (gDebugTraceLevel && gDebugOutput &&
DebugPrint.arguments && (DebugPrint.arguments.length > 1) && (DebugPrint.arguments[0] <= gDebugTraceLevel))
{
for(var index = 1; index < DebugPrint.arguments.length; index++)
{
string += DebugPrint.arguments[index] + " ";
}
string += "<br \>\n";
gDebugOutput(string);
}
}
function CSimilarityMap()
{
this.m_elements = "";
this.m_canonicalCounterparts = "";
}
function SimilarityMap_Add(element, canonicalCounterpart)
{
this.m_elements += element;
this.m_canonicalCounterparts += canonicalCounterpart;
}
function SimilarityMap_Lookup(element)
{
var canonicalCounterpart = kNoCanonicalCounterpart;
var index = this.m_elements.indexOf(element);
if (index >= 0)
{
canonicalCounterpart = this.m_canonicalCounterparts.charAt(index);
}
else
{
}
return canonicalCounterpart;
}
function SimilarityMap_GetCount()
{
return this.m_elements.length;
}
CSimilarityMap.prototype.Add = SimilarityMap_Add;
CSimilarityMap.prototype.Lookup = SimilarityMap_Lookup;
CSimilarityMap.prototype.GetCount = SimilarityMap_GetCount;
function CDictionaryEntry(length, wordList)
{
this.m_length = length;
this.m_wordList = wordList;
}
function DictionaryEntry_Lookup(strWord)
{
var fFound = false;
if (strWord.length == this.m_length)
{
var nFirst = 0;
var nLast = this.m_wordList.length - 1;
while( nFirst <= nLast )
{
var nCurrent = Math.floor((nFirst + nLast)/2);
if( strWord == this.m_wordList[nCurrent])
{
fFound = true;
break;
}
else if ( strWord > this.m_wordList[nCurrent])
{
nLast = nCurrent - 1;
}
else
{
nFirst = nCurrent + 1;
}
}
}
return fFound;
}
CDictionaryEntry.prototype.Lookup = DictionaryEntry_Lookup;
function CDictionary()
{
this.m_entries = new Array()
}
function Dictionary_Lookup(strWord)
{
for (var index = 0; index < this.m_entries.length; index++)
{
if (this.m_entries[index].Lookup(strWord))
{
return true;
}
}
}
function Dictionary_Add(length, wordList)
{
var iL=this.m_entries.length;
var cD=new CDictionaryEntry(length, wordList)
this.m_entries[iL]=cD;
}
CDictionary.prototype.Lookup = Dictionary_Lookup;
CDictionary.prototype.Add = Dictionary_Add;
var gSimilarityMap = new CSimilarityMap();
var gDictionary = new CDictionary();
function CharacterSetChecks(type, fResult)
{
this.type = type;
this.fResult = fResult;
}
function isctype(character, type, nDebugLevel)
{
var fResult = false;
switch(type)
{
case kCapitalLetter:
if((character >= 'A') && (character <= 'Z'))
{
fResult = true;
}
break;
case kSmallLetter:
if ((character >= 'a') && (character <= 'z'))
{
fResult = true;
}
break;
case kDigit:
if ((character >= '0') && (character <= '9'))
{
fResult = true;
}
break;
case kPunctuation:
if ("!@#$%^&*()_+-='\";:[{]}\|.>,</?`~".indexOf(character) >= 0)
{
fResult = true;
}
break;
case kAlpha:
if (isctype(character, kCapitalLetter) || isctype(character, kSmallLetter))
{
fResult = true;
}
break;
default:
break;
}
return fResult;
}
function CanonicalizeWord(strWord, similarityMap, fLettersOnly)
{
var canonicalCounterpart = kNoCanonicalCounterpart;
var strCanonicalizedWord = "";
var nStringLength = 0;
if ((strWord != null) && (strWord.length > 0))
{
strCanonicalizedWord = strWord;
strCanonicalizedWord = strCanonicalizedWord.toLowerCase();
if (similarityMap.GetCount() > 0)
{
nStringLength = strCanonicalizedWord.length;
for(var index = 0; index < nStringLength; index++)
{
if (fLettersOnly && !isctype(strCanonicalizedWord.charAt(index), kSmallLetter, kDebugTraceLevelSuperDetail))
{
continue;
}
canonicalCounterpart = similarityMap.Lookup(strCanonicalizedWord.charAt(index));
if (canonicalCounterpart != kNoCanonicalCounterpart)
{
strCanonicalizedWord = strCanonicalizedWord.substring(0, index) + canonicalCounterpart +
strCanonicalizedWord.substring(index + 1, nStringLength);
}
}
}
}
return strCanonicalizedWord;
}
function IsLongEnough(strWord, nAtLeastThisLong)
{
if ((strWord == null) || isNaN(nAtLeastThisLong))
{
return false;
}
else if (strWord.length < nAtLeastThisLong)
{
return false;
}
return true;
}
function SpansEnoughCharacterSets(strWord, nAtLeastThisMany)
{
var nCharSets = 0;
var characterSetChecks = new Array(
new CharacterSetChecks(kCapitalLetter, false),
new CharacterSetChecks(kSmallLetter, false),
new CharacterSetChecks(kDigit, false),
new CharacterSetChecks(kPunctuation, false)
);
if ((strWord == null) || isNaN(nAtLeastThisMany))
{
return false;
}
for(var index = 0; index < strWord.length; index++)
{
for(var nCharSet = 0; nCharSet < characterSetChecks.length;nCharSet++)
{
if (!characterSetChecks[nCharSet].fResult && isctype(strWord.charAt(index), characterSetChecks[nCharSet].type, kDebugTraceLevelAll))
{
characterSetChecks[nCharSet].fResult = true;
break;
}
}
}
for(var nCharSet = 0; nCharSet < characterSetChecks.length;nCharSet++)
{
if (characterSetChecks[nCharSet].fResult)
{
nCharSets++;
}
}
if (nCharSets < nAtLeastThisMany)
{
return false;
}
return true;
}
function FoundInDictionary(strWord, similarityMap, dictionary)
{
var strCanonicalizedWord = "";
if((strWord == null) || (similarityMap == null) || (dictionary == null))
{
return true;
}
strCanonicalizedWord = CanonicalizeWord(strWord, similarityMap, kCanonicalizeLettersOnly);
if (dictionary.Lookup(strCanonicalizedWord))
{
return true;
}
return false;
}
function IsCloseVariationOfAWordInDictionary(strWord, threshold, similarityMap, dictionary)
{
var strCanonicalizedWord = "";
var nMinimumMeaningfulMatchLength = 0;
if((strWord == null) || isNaN(threshold) || (similarityMap == null) || (dictionary == null))
{
return true;
}
strCanonicalizedWord = CanonicalizeWord(strWord, similarityMap, kCananicalizeEverything);
nMinimumMeaningfulMatchLength = Math.floor((threshold) * strCanonicalizedWord.length);
for (var nSubStringLength = strCanonicalizedWord.length; nSubStringLength >= nMinimumMeaningfulMatchLength; nSubStringLength--)
{
for(var nSubStringStart = 0; (nSubStringStart + nMinimumMeaningfulMatchLength) < strCanonicalizedWord.length; nSubStringStart++)
{
var strSubWord = strCanonicalizedWord.substr(nSubStringStart, nSubStringLength);
if (dictionary.Lookup(strSubWord))
{
return true;
}
}
}
return false;
}
function Init()
{
gSimilarityMap.Add('3', 'e');
gSimilarityMap.Add('x', 'k');
gSimilarityMap.Add('5', 's');
gSimilarityMap.Add('$', 's');
gSimilarityMap.Add('6', 'g');
gSimilarityMap.Add('7', 't');
gSimilarityMap.Add('8', 'b');
gSimilarityMap.Add('|', 'l');
gSimilarityMap.Add('9', 'g');
gSimilarityMap.Add('+', 't');
gSimilarityMap.Add('@', 'a');
gSimilarityMap.Add('0', 'o');
gSimilarityMap.Add('1', 'l');
gSimilarityMap.Add('2', 'z');
gSimilarityMap.Add('!', 'i');
gDictionary.Add(3,
"oat|not|ken|keg|ham|hal|gas|cpu|cit|bop|bah".split("|"));
gDictionary.Add(4,
"zeus|ymca|yang|yaco|work|word|wool|will|viva|vito|vita|visa|vent|vain|uucp|util|utah|unix|trek|town|torn|tina|time|tier|tied|tidy|tide|thud|test|tess|tech|tara|tape|tapa|taos|tami|tall|tale|spit|sole|sold|soil|soft|sofa|soap|slav|slat|slap|slam|shit|sean|saud|sash|sara|sand|sail|said|sago|sage|saga|safe|ruth|russ|rusk|rush|ruse|runt|rung|rune|rove|rose|root|rick|rich|rice|reap|ream|rata|rare|ramp|prod|pork|pete|penn|penh|pend|pass|pang|pane|pale|orca|open|olin|olga|oldy|olav|olaf|okra|okay|ohio|oath|numb|null|nude|note|nosy|nose|nita|next|news|ness|nasa|mike|mets|mess|math|mash|mary|mars|mark|mara|mail|maid|mack|lyre|lyra|lyon|lynx|lynn|lucy|love|lose|lori|lois|lock|lisp|lisa|leah|lass|lash|lara|lank|lane|lana|kink|keri|kemp|kelp|keep|keen|kate|karl|june|judy|judo|judd|jody|jill|jean|jane|isis|iowa|inna|holm|help|hast|half|hale|hack|gust|gush|guru|gosh|gory|golf|glee|gina|germ|gatt|gash|gary|game|fred|fowl|ford|flea|flax|flaw|finn|fink|film|fill|file|erin|emit|elmo|easy|done|disk|disc|diet|dial|dawn|dave|data|dana|damn|dame|crab|cozy|coke|city|cite|chem|chat|cats|burl|bred|bill|bilk|bile|bike|beth|beta|benz|beau|bath|bass|bart|bank|bake|bait|bail|aria|anne|anna|andy|alex|abcd".split("|"));
gDictionary.Add(5,
"yacht|xerox|wilma|willy|wendy|wendi|water|warez|vitro|vital|vitae|vista|visor|vicky|venus|venom|value|ultra|u.s.a|tubas|tress|tramp|trait|tracy|traci|toxic|tiger|tidal|thumb|texas|test2|test1|terse|terry|tardy|tappa|tapis|tapir|taper|tanya|tansy|tammy|tamie|taint|sybil|suzie|susie|susan|super|steph|stacy|staci|spark|sonya|sonia|solar|soggy|sofia|smile|slave|slate|slash|slant|slang|simon|shiva|shell|shark|sharc|shack|scrim|screw|scott|scorn|score|scoot|scoop|scold|scoff|saxon|saucy|satan|sasha|sarah|sandy|sable|rural|rupee|runty|runny|runic|runge|rules|ruben|royal|route|rouse|roses|rolex|robyn|robot|robin|ridge|rhode|revel|renee|ranch|rally|radio|quark|quake|quail|power|polly|polis|polio|pluto|plane|pizza|photo|phone|peter|perry|penna|penis|paula|patty|parse|paris|parch|paper|panic|panel|olive|olden|okapi|oasis|oaken|nurse|notre|notch|nancy|nagel|mouse|moose|mogul|modem|merry|megan|mckee|mckay|mcgee|mccoy|marty|marni|mario|maria|marcy|marci|maint|maine|magog|magic|lyric|lyons|lynne|lynch|louis|lorry|loris|lorin|loren|linda|light|lewis|leroy|laura|later|lasso|laser|larry|ladle|kinky|keyes|kerry|kerri|kelly|keith|kazoo|kayla|kathy|karie|karen|julie|julia|joyce|jenny|jenni|japan|janie|janet|james|irene|inane|impel|idaho|horus|horse|honey|honda|holly|hello|heidi|hasty|haste|hamal|halve|haley|hague|hager|hagen|hades|guest|guess|gucci|group|grahm|gouge|gorse|gorky|glean|gleam|glaze|ghoul|ghost|gauss|gauge|gaudy|gator|gases|games|freer|fovea|float|fiona|finny|filly|field|erika|erica|enter|enemy|empty|emily|email|elmer|ellis|ellen|eight|eerie|edwin|edges|eatme|earth|eager|dulce|donor|donna|diane|diana|delay|defoe|david|danny|daisy|cuzco|cubit|cozen|coypu|coyly|cowry|condo|class|cindy|cigar|chess|cathy|carry|carol|carla|caret|caren|candy|candi|burma|burly|burke|brian|breed|borax|booze|booty|bloom|blood|bitch|bilge|bilbo|betty|beryl|becky|beach|bathe|batch|basic|bantu|banks|banjo|baird|baggy|azure|arrow|array|april|anita|angie|amber|amaze|alpha|alisa|alike|align|alice|alias|album|alamo|aires|admin|adept|adele|addle|addis|added|acura|abyss|abcde|1701d|123go|!@#$%".split("|"));
gDictionary.Add(6,
"yankee|yamaha|yakima|y7u8i9|xyzxyz|wombat|wizard|wilson|willie|weenie|warren|visual|virgin|viking|venous|venice|venial|vasant|vagina|ursula|urchin|uranus|uphill|umpire|u.s.a.|tuttle|trisha|trails|tracie|toyota|tomato|toggle|tidbit|thorny|thomas|terror|tennis|taylor|target|tardis|tappet|taoist|tannin|tanner|tanker|tamara|system|surfer|summer|subway|stacie|stacey|spring|sondra|solemn|soleil|solder|solace|soiree|soften|soffit|sodium|sodden|snoopy|snatch|smooch|smiles|slavic|slater|single|singer|simple|sherri|sharon|sharks|sesame|sensor|secret|second|season|search|scroll|scribe|scotty|scooby|schulz|school|scheme|saturn|sandra|sandal|saliva|saigon|sahara|safety|safari|sadism|saddle|sacral|russel|runyon|runway|runoff|runner|ronald|romano|rodent|ripple|riddle|ridden|reveal|return|remote|recess|recent|realty|really|reagan|raster|rascal|random|radish|radial|racoon|racket|racial|rachel|rabbit|qwerty|qawsed|puppet|puneet|public|prince|presto|praise|poster|polite|polish|policy|police|plover|pierre|phrase|photon|philip|persia|peoria|penmen|penman|pencil|peanut|parrot|parent|pardon|papers|pander|pamela|pallet|palace|oxford|outlaw|osiris|orwell|oregon|oracle|olivia|oliver|olefin|office|notion|notify|notice|notate|notary|noreen|nobody|nicole|newton|nevada|mutant|mozart|morley|monica|moguls|minsky|mickey|merlin|memory|mellon|meagan|mcneil|mcleod|mclean|mckeon|mchugh|mcgraw|mcgill|mccann|mccall|mccabe|mayfly|maxine|master|massif|maseru|marvin|markus|malcom|mailer|maiden|magpie|magnum|magnet|maggot|lorenz|lisbon|limpid|leslie|leland|latest|latera|latent|lascar|larkin|langur|landis|landau|lambda|kristy|kristi|krista|knight|kitten|kinney|kerrie|kernel|kermit|kennan|kelvin|kelsey|kelley|keller|keenan|katina|karina|kansas|juggle|judith|jsbach|joshua|joseph|johnny|joanne|joanna|jixian|jimmie|jimbob|jester|jeanne|jasmin|janice|jaguar|jackie|island|invest|instar|ingrid|ingres|impute|holmes|holman|hockey|hidden|hawaii|hasten|harvey|harold|hamlin|hamlet|halite|halide|haggle|haggis|hadron|hadley|hacker|gustav|gusset|gurkha|gurgle|guntis|guitar|graham|gospel|gorton|gorham|gorges|golfer|glassy|ginger|gibson|ghetto|german|george|gauche|gasify|gambol|gamble|gambit|friend|freest|fourth|format|flower|flaxen|flaunt|flakes|finley|finite|fillip|fillet|filler|filled|fermat|fender|fatten|fatima|fathom|father|evelyn|euclid|estate|enzyme|engine|employ|emboss|elanor|elaine|eileen|eighty|eighth|effect|efface|eeyore|eerily|edwina|easier|durkin|durkee|during|durham|duress|duncan|donner|donkey|donate|donald|domino|disney|dieter|device|denise|deluge|delete|debbie|deaden|ddurer|dapper|daniel|dancer|damask|dakota|daemon|cuvier|cuddly|cuddle|cuckoo|cretin|create|cozier|coyote|cowpox|cooper|cookie|connie|coneck|condom|coffee|citrus|citron|citric|circus|charon|change|censor|cement|celtic|cecily|cayuga|catnip|catkin|cation|castle|carson|carrot|carrie|carole|carmen|caress|cantor|burley|burlap|buried|burial|brenda|bremen|breezy|breeze|breech|brandy|brandi|border|borden|borate|bloody|bishop|bilbao|bikini|bigred|betsie|berman|berlin|bedbug|became|beavis|beaver|beauty|beater|batman|bathos|barony|barber|baobab|bantus|banter|bantam|banish|bangui|bangor|bangle|bandit|banana|bakery|bailey|bahama|bagley|badass|aztecs|azsxdc|athena|asylum|arthur|arrest|arrear|arrack|arlene|anvils|answer|angela|andrea|anchor|analog|amazon|amanda|alison|alight|alicia|albino|albert|albeit|albany|alaska|adrian|adelia|adduce|addict|addend|accrue|access|abcdef|abcabc|abc123|a1b2c3|a12345|@#$%^&|7y8u9i|1qw23e|1q2w3e|1p2o3i|1a2b3c|123abc|10sne1|0p9o8i|!@#$%^".split("|"));
gDictionary.Add(7,
"yolanda|wyoming|winston|william|whitney|whiting|whatnot|vitriol|vitrify|vitiate|vitamin|visitor|village|vertigo|vermont|venturi|venture|ventral|venison|valerie|utility|upgrade|unknown|unicorn|unhappy|trivial|torrent|tinfoil|tiffany|tidings|thunder|thistle|theresa|test123|terrify|teleost|tarbell|taproot|tapping|tapioca|tantrum|tantric|tanning|takeoff|swearer|suzanne|susanne|support|success|student|squires|sossina|soldier|sojourn|soignee|sodding|smother|slavish|slavery|slander|shuttle|shivers|shirley|sheldon|shannon|service|seattle|scooter|scissor|science|scholar|scamper|satisfy|sarcasm|salerno|sailing|saguaro|saginaw|sagging|saffron|sabrina|russell|rupture|running|runneth|rosebud|receipt|rebecca|realtor|raleigh|rainbow|quarrel|quality|qualify|pumpkin|protect|program|profile|profess|profane|private|prelude|porsche|politic|playboy|phoenix|persona|persian|perseus|perseid|perplex|penguin|pendant|parapet|panoply|panning|panicle|panicky|pangaea|pandora|palette|pacific|olivier|olduvai|oldster|okinawa|oakwood|nyquist|nursery|numeric|number1|nullify|nucleus|nuclear|notused|nothing|newyork|network|neptune|montana|minimum|michele|michael|merriam|mercury|melissa|mcnulty|mcnally|mcmahon|mckenna|mcguire|mcgrath|mcgowan|mcelroy|mcclure|mcclain|mccarty|mcbride|mcadams|mbabane|mayoral|maurice|marimba|manhole|manager|mammoth|malcolm|malaria|mailbox|magnify|magneto|losable|lorinda|loretta|lorelei|lockout|lioness|limpkin|library|lazarus|lathrop|lateran|lateral|kristin|kristie|kristen|kinsman|kingdom|kennedy|kendall|kellogg|keelson|katrina|jupiter|judaism|judaica|jessica|janeiro|inspire|inspect|insofar|ingress|indiana|include|impetus|imperil|holmium|holmdel|herbert|heather|headmen|headman|harmony|handily|hamburg|halifax|halibut|halfway|haggard|hafnium|hadrian|gustave|gunther|gunshot|gryphon|gosling|goshawk|gorilla|gleason|glacier|ghostly|germane|georgia|geology|gaseous|gascony|gardner|gabriel|freeway|fourier|flowers|florida|fishers|finnish|finland|ferrari|felicia|feather|fatigue|fairway|express|expound|emulate|empress|empower|emitted|emerald|embrace|embower|ellwood|ellison|egghead|durward|durrell|drought|donning|donahue|digital|develop|desiree|default|deborah|damming|cynthia|cyanate|cutworm|cutting|cuddles|cubicle|crystal|coxcomb|cowslip|cowpony|cowpoke|console|conquer|connect|comrade|Compton|collins|cluster|claudia|classic|citroen|citrate|citizen|citadel|cistern|christy|chester|charles|charity|celtics|celsius|catlike|cathode|carroll|carrion|careful|carbine|carbide|caraway|caravan|camille|burmese|burgess|bridget|breccia|bradley|bopping|blondie|bilayer|beverly|bernard|bermuda|berlitz|berlioz|beowulf|beloved|because|beatnik|beatles|beatify|bassoon|bartman|baroque|barbara|baptism|banshee|banquet|bannock|banning|bananas|bainite|bailiff|bahrein|bagpipe|baghdad|bagging|bacchus|asshole|arrange|arraign|arragon|arizona|ariadne|annette|animals|anatomy|anatole|amatory|amateur|amadeus|allison|alimony|aliases|algebra|albumin|alberto|alberta|albania|alameda|aladdin|alabama|airport|airpark|airfoil|airflow|airfare|airdrop|adenoma|adenine|address|addison|accrual|acclaim|academy|abcdefg|!@#$%^&".split("|"));
gDictionary.Add(8,
"yosemite|y7u8i9o0|wormwood|woodwind|whistler|whatever|warcraft|vitreous|virginia|veronica|venomous|trombone|transfer|tortoise|tientsin|tideland|ticklish|thailand|testtest|tertiary|terrific|terminal|telegram|tarragon|tapeworm|tapestry|tanzania|tantalus|tantalum|sysadmin|symmetry|sunshine|strangle|startrek|springer|sparrows|somebody|solecism|soldiery|softwood|software|softball|socrates|slatting|slapping|slapdash|slamming|simpsons|serenity|security|schwartz|sanctity|sanctify|samantha|salesman|sailfish|sailboat|sagittal|sagacity|sabotage|rushmore|rosemary|rochelle|robotics|reverend|regional|raindrop|rachelle|qwertyui|qwerasdf|qawsedrf|q1w2e3r4|protozoa|prodding|princess|precious|politics|politico|plymouth|pershing|penitent|penelope|pendulum|patricia|password|passport|paranoia|panorama|panicked|pandemic|pandanus|pakistan|painless|operator|olivetti|oleander|oklahoma|notocord|notebook|notarize|nebraska|napoleon|missouri|michigan|michelle|mesmeric|mercedes|mcmullen|mcmillan|mcknight|mckinney|mckinley|mckesson|mckenzie|mcintyre|mcintosh|mcgregor|mcgovern|mcginnis|mcfadden|mcdowell|mcdonald|mcdaniel|mcconnel|mccauley|mccarthy|mccallum|mayapple|masonite|maryland|marjoram|marinate|marietta|maneuver|mandamus|maledict|maladapt|magnuson|magnolia|magnetic|lyrebird|lymphoma|lorraine|lionking|linoleum|limitate|limerick|laterite|landmass|landmark|landlord|landlady|landhold|landfill|kristine|kirkland|kingston|kimberly|khartoum|keystone|kentucky|keeshond|kathrine|kathleen|jubilant|joystick|jennifer|jacobsen|irishman|interpol|internet|insulate|instinct|instable|insomnia|insolent|insolate|inactive|imperial|iloveyou|illinois|hydrogen|hutchins|homework|hologram|holocene|hibernia|hiawatha|heinlein|hebrides|headlong|headline|headland|hastings|hamilton|halftone|halfback|hagstrom|gunsling|gunpoint|gumption|gorgeous|glaucous|glaucoma|glassine|ginnegan|ghoulish|gertrude|geometry|geometer|garfield|gamesman|gamecock|fungible|function|frighten|freetown|foxglove|fourteen|foursome|forsythe|football|flaxseed|flautist|flatworm|flatware|fidelity|exposure|eternity|enthrone|enthrall|enthalpy|entendre|entangle|engineer|emulsion|emulsify|emporium|employer|employee|employed|emmanuel|elliptic|elephant|einstein|eighteen|duration|donnelly|dominion|dlmhurst|delegate|delaware|december|deadwood|deadlock|deadline|deadhead|danielle|cyanamid|cucumber|cristina|criminal|creosote|creation|cowpunch|couscous|conquest|comrades|Computer|Comprise|Compress|colorado|clusters|citation|charming|cerulean|cenozoic|cemetery|cellular|catskill|cationic|catholic|cathodic|catheter|cascades|carriage|caroline|carolina|carefree|cardinal|burgundy|burglary|bumbling|broadway|breeches|bordello|bordeaux|bilinear|bilabial|bernardo|berliner|berkeley|bedazzle|beaumont|beatrice|beatific|bathrobe|baronial|baritone|bankrupt|banister|bakelite|azsxdcfv|asdfqwer|arkansas|appraise|apposite|anything|angerine|ancestry|ancestor|anatomic|anathema|ambiance|alphabet|albright|albrecht|alberich|albacore|alastair|alacrity|airspace|airplane|airfield|airedale|aircraft|airbrush|airborne|aerobics|adrianna|adelaide|additive|addition|addendum|accouter|academic|academia|abcdefgh|abcd1234|a1b2c3d4|7y8u9i0o|7890yuio|1234qwer|0p9o8i7u|0987poiu|!@#$%^&*".split("|"));
gDictionary.Add(9,
"zimmerman|worldwide|wisconsin|wholesale|vitriolic|ventricle|ventilate|valentine|tidewater|testament|territory|tennessee|telephone|telepathy|teleology|telemetry|telemeter|telegraph|tarantula|tarantara|tangerine|supported|superuser|stuttgart|stratford|stephanie|solemnity|softcover|slaughter|slapstick|signature|sheffield|sarcastic|sanctuary|sagebrush|sagacious|runnymede|rochester|receptive|reception|racketeer|professor|princeton|pondering|politburo|policemen|policeman|persimmon|persevere|persecute|percolate|peninsula|penetrate|pendulous|paralytic|panoramic|panicking|panhandle|oligopoly|oligocene|oligarchy|olfactory|oldenburg|nutrition|nurturant|notorious|notoriety|minnesota|microsoft|mcpherson|mcfarland|mcdougall|mcdonnell|mcdermott|mccracken|mccormick|mcconnell|mccluskey|mcclellan|marijuana|malicious|magnitude|magnetron|magnetite|macintosh|lynchburg|louisiana|lissajous|limousine|limnology|landscape|landowner|kinshasha|kingsbury|kibbutzim|kennecott|jamestown|ironstone|invisible|invention|intuitive|intervene|intersect|inspector|insomniac|insolvent|insoluble|impetuous|imperious|imperfect|holocaust|hollywood|hollyhock|headphone|headlight|headdress|headcount|headboard|happening|hamburger|halverson|gustafson|gunpowder|glasswort|glassware|ghostlike|geometric|gaucherie|freewheel|freethink|freestone|foresight|foolproof|extension|expositor|establish|entertain|employing|emittance|ellsworth|elizabeth|eightieth|eightfold|eiderdown|dusenbury|dusenberg|donaldson|dominique|discovery|desperate|delegable|delectate|deCompose|deCompile|damnation|cutthroat|crabapple|cornelius|conqueror|connubial|commrades|citizenry|christine|christina|chemistry|cellulose|celluloid|catherine|carryover|burlesque|bloodshot|bloodshed|bloodroot|bloodline|bloodbath|bilingual|bilateral|bijective|bijection|bernadine|berkshire|beethoven|beatitude|bakhtiari|asymptote|asymmetry|apprehend|appraisal|apportion|ancestral|anatomist|alexander|albatross|alabaster|alabamian|adenosine|abcabcabc".split("|"));
gDictionary.Add(10,
"washington|volkswagen|topography|tessellate|temptation|telephonic|telepathic|telemetric|telegraphy|tantamount|superstage|slanderous|salamander|qwertyuiop|polynomial|politician|phrasemake|photometry|photolytic|photolysis|photogenic|phosphorus|phosphoric|persiflage|persephone|perquisite|peninsular|penicillin|penetrable|panjandrum|oligoclase|oligarchic|oldsmobile|nottingham|noticeable|noteworthy|mcnaughton|mclaughlin|mccullough|mcallister|malconduct|maidenhair|limitation|lascivious|landowning|landlubber|landlocked|lamination|khrushchev|juggernaut|irrational|invariable|insouciant|insolvable|inComplete|impervious|impersonal|headmaster|glaswegian|geopolitic|geophysics|fourteenth|foursquare|expressive|expression|expository|exposition|enterprise|eightyfold|eighteenth|effaceable|donnybrook|delectable|decolonize|cuttlefish|cuttlebone|Compromise|Compressor|Comprehend|cellophane|carruthers|california|burlington|burgundian|borderline|borderland|bloodstone|bloodstain|bloodhound|bijouterie|biharmonic|bernardino|beaujolais|basketball|bankruptcy|bangladesh|atmosphere|asymptotic|asymmetric|appreciate|apposition|ambassador|amateurish|alimentary|additional|acComplish|1q2w3e4r5t".split("|"));
gDictionary.Add(11,
"yellowstone|venturesome|territorial|telekinesis|sagittarius|safekeeping|politicking|policewoman|photometric|photography|phosphorous|perseverant|persecutory|persecution|penitential|pandemonium|mississippi|marketplace|magnificent|irremovable|interrogate|institution|inspiration|inCompetent|impertinent|impersonate|impermeable|headquarter|hamiltonian|halfhearted|hagiography|geophysical|expressible|emptyhanded|eigenvector|deleterious|decollimate|decolletage|connecticut|Comptroller|Compressive|Compression|catholicism|bloodstream|bakersfield|arrangeable|appreciable|anastomotic|albuquerque".split("|"));
gDictionary.Add(12,
"williamsburg|testamentary|qwerasdfzxcv|q1w2e3r4t5y6|perseverance|pennsylvania|penitentiary|malformation|liquefaction|interstitial|inconclusive|inComputable|inCompletion|inCompatible|inComparable|imperishable|impenetrable|headquarters|geometrician|ellipsometry|deComposable|decommission|Compressible|burglarproof|bloodletting|bilharziasis|asynchronous|asymptomatic|ambidextrous|1q2w3e4r5t6y".split("|"));
gDictionary.Add(13,
"ventriloquist|ventriloquism|poliomyelitis|phosphorylate|oleomargarine|massachusetts|jitterbugging|interpolatory|inconceivable|imperturbable|impermissible|deComposition|Comprehensive|Comprehension".split("|"));
gDictionary.Add(14,
"slaughterhouse|irreproducible|inCompressible|Comprehensible|bremsstrahlung".split("|"));
gDictionary.Add(15,
"irreconciliable|instrumentation|inComprehension".split("|"));
gDictionary.Add(16,
"inComprehensible".split("|"));
}
function ClientSideStrongPassword()
{
return (IsLongEnough(ClientSideStrongPassword.arguments[0], "7") &&
SpansEnoughCharacterSets(ClientSideStrongPassword.arguments[0], "3") &&
(!(IsCloseVariationOfAWordInDictionary(ClientSideStrongPassword.arguments[0], "0.6",
ClientSideStrongPassword.arguments[1], ClientSideStrongPassword.arguments[2]))));
}
function ClientSideMediumPassword()
{
return (IsLongEnough(ClientSideMediumPassword.arguments[0], "7") &&
SpansEnoughCharacterSets(ClientSideMediumPassword.arguments[0], "2") &&
(!(FoundInDictionary(ClientSideMediumPassword.arguments[0], ClientSideMediumPassword.arguments[1],
ClientSideMediumPassword.arguments[2]))));
}
function ClientSideWeakPassword()
{
return (IsLongEnough(ClientSideWeakPassword.arguments[0], "<%=Format_Mid_Num(26)%>") ||
(!(IsLongEnough(ClientSideWeakPassword.arguments[0], "0"))));
}
</script>




<%
End Sub
function rnd_birthday()
  dim rtmp,ri,rm,ryear,rmonth,rday
  rtmp=Cls.rand_num(2)
  for ri=1 to 5
    if rtmp<=15 then exit for
    rtmp=rtmp\2
    ri=ri-1
  next
  ryear=1981+rtmp
  rtmp=Cls.rand_num(2)
  for ri=1 to 5
    if rtmp<=12 then exit for
    rtmp=rtmp\2
    ri=ri-1
  next
  if rtmp<1 then rtmp=1
  rmonth=rtmp
  rm=30
  if rmonth=2 then rm=28
  rtmp=Cls.rand_num(2)
  for ri=1 to 5
    if rtmp<=rm then exit for
    rtmp=rtmp\2
    ri=ri-1
  next
  if rtmp<1 then rtmp=1
  rday=rtmp
  rnd_birthday=ryear&"-"&rmonth&"-"&rday
End Function
%>
