﻿//限制只能輸入中文數字英文
function NumEn(ssn) {
var re=/^[0-9A-Z]+$/i;
return(re.test(ssn));
}

function En(ssn) {
var re=/^[A-Z]+$/i;
return(re.test(ssn));
}

function Num(ssn) {
var re=/^[0-9]+$/i;
return(re.test(ssn));
}

function emailCheck (emailStr) {
	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */
	var emailPat=/^(.+)@(.+)$/;
	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ]    '*/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]'";

	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]";

	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";

	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	/* The following string represents an atom (basically a series of
	non-special characters.) */
	var atom=validChars + '+';

	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";

	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	/*  Finally, let's start trying to figure out if the supplied address is valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) {
		/* Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address. */
		//alert("對不起! 您的電子信箱格式可能有問題. 請檢查 @ 跟 . 的位置好嗎?");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

    // See if "user" is valid 
    if (user.match(userPat)==null) {
        //alert("對不起! 您的輸入的電子信箱使用者部分可能有問題. 請再檢查一次好嗎?");
        return false;
    }

    /* if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. */
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        // this is an IP address
	    for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	            //alert("對不起! 您輸入IP位置可能有問題. 請再檢查一次好嗎?");
		        return false;
	        }
        }
        return true;
    } else {
        // this is NOT an IP address
        if ((emailStr.indexOf(".com")<5)&&(emailStr.indexOf(".org")<5)&&(emailStr.indexOf(".gov")<5)&&(emailStr.indexOf(".net")<5) &&(emailStr.indexOf(".mil")<5)&&(emailStr.indexOf(".edu")<5)&&(emailStr.indexOf(".co")<5)){
            //alert("對不起! 您的輸入的電子信箱應該有以下的結尾: .co, .com, .edu, .net, .org, .gov or .mil)");
            return false;
        } 
    }

    // Domain is symbolic name
    var domainArray=domain.match(domainPat);
    if (domainArray==null) {
	    //alert("對不起! 您的輸入的電子信箱ISP部分可能有問題. 請再檢查一次好嗎?");
        return false;
    }

    /* domain name seems valid, but now make sure that it ends in a three-letter word (like com, edu, gov)
    or a two-letter word,  representing country (uk, nl), and that there's a hostname preceding the domain or country. */

    /* Now we need to break up the domain to get a count of how many atoms it consists of. */
    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
        // the address must end in a two letter or three letter word.
        //alert("對不起! 您的輸入的電子信箱結尾部分可能有問題. 請再檢查一次好嗎?");
        return false;
    }

    // Make sure there's a host name preceding the domain.
    if (len<2) {
        //alert("對不起! 您的輸入的電子信箱結尾部分可能有問題. 請再檢查一次好嗎?");
        return false;
    }

    // If we've gotten this far, everything's valid!
    return true;
}

function checkID(idStr){
  // 依照字母的編號排列，存入陣列備用。
  var letters = new Array('A', 'B', 'C', 'D',
      'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
      'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
      'X', 'Y', 'W', 'Z', 'I', 'O');
  // 儲存各個乘數
  var multiply = new Array(1, 9, 8, 7, 6, 5,
                           4, 3, 2, 1);
  var nums = new Array(2);
  var firstChar;
  var firstNum;
  var lastNum;
  var total = 0;
  // 撰寫「正規表達式」。第一個字為英文字母，
  // 第二個字為1或2，後面跟著8個數字，不分大小寫。
  var regExpID=/^[a-z](1|2)\d{8}$/i;
  // 使用「正規表達式」檢驗格式
  if (idStr.search(regExpID)==-1) {
    // 基本格式錯誤
   return false;
  } else {
	// 取出第一個字元和最後一個數字。
	firstChar = idStr.charAt(0).toUpperCase();
	lastNum = idStr.charAt(9);
  }
  // 找出第一個字母對應的數字，並轉換成兩位數數字。
  for (var i=0; i<26; i++) {
	if (firstChar == letters[i]) {
	  firstNum = i + 10;
	  nums[0] = Math.floor(firstNum / 10);
	  nums[1] = firstNum - (nums[0] * 10);
	  break;
	}
  }
  // 執行加總計算
  for(var i=0; i<multiply.length; i++){
    if (i<2) {
      total += nums[i] * multiply[i];
    } else {
      total += parseInt(idStr.charAt(i-1)) *
               multiply[i];
    }
  }
  // 和最後一個數字比對
  if ((10 - (total % 10))!= lastNum && (10 - (total % 10))!= 10) {
	return false;
  }
  return true;
}

//////////////////////////////////////////////////////////////////////////
var xmlHttp

function chkacc(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  } 
	if(str=="")
	{
		document.getElementById("Acctxt").innerHTML="<span style='color:#A2EE44'>請輸入6-12字的數字或英文。(英文預設值為大寫)</span>";
		document.getElementById("AccImage").innerHTML="";		
	}  
	else if(str.length > 12 || str.length < 6 || !NumEn(str))
	{
		document.getElementById("Acctxt").innerHTML="請輸入6-12字的數字或英文。";
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
	else
	{
		chkacc_ajax(str);
	}
}

function chkacc_ajax(str)
{ 
var url="check.asp";
url=url+"?q="+str;
url=url+"&kind=1";
xmlHttp.onreadystatechange=AcctxtChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function AcctxtChanged()
{
if (xmlHttp.readyState==4)
{ 
	switch (xmlHttp.responseText)
	{
	case "0":
		document.getElementById("Acctxt").innerHTML="";
		document.getElementById("AccImage").innerHTML="<span class='OK'>正確</span>";
		break;
	case "1":
		document.getElementById("Acctxt").innerHTML="遊戲帳號重覆。";
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";
		break;
	default:
		document.getElementById("Acctxt").innerHTML="系統錯誤代碼: " + xmlHttp.responseText;
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";
		break;
	}
}
}
//!!!!!!!!!!!!!!!!!!!!!!!!!//
function chkpw(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  } 
 
	if(str=="")
	{
		document.getElementById("Pwtxt").innerHTML="<span style='color:#A2EE44'>若您在密碼中使用英文，大小寫是有區別的。</span>";
		document.getElementById("PwImage").innerHTML="";		
	} 
	else if(str.length > 12 || str.length < 6 || !NumEn(str))
	{
		document.getElementById("Pwtxt").innerHTML="請輸入6-12字的數字或英文。";
		document.getElementById("PwImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
	else
	{
		document.getElementById("Pwtxt").innerHTML="";
		document.getElementById("PwImage").innerHTML="<span class='OK'>正確</span>";	
	}
	if(str != document.getElementById("rePassword").value && str!="")
	{
		document.getElementById("rePwtxt").innerHTML="您再次輸入的密碼有誤。";
		document.getElementById("rePwImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
}
//!!!!!!!!!!!!!!!!!!!!!!!!!//
function chkrepw(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  } 
  
	if(str == "")
	{
		document.getElementById("rePwtxt").innerHTML="<span style='color:#A2EE44'>再次確認您輸入的密碼。</span>";
		document.getElementById("rePwImage").innerHTML="";		
	}  
	else if(str != document.getElementById("Password").value)
	{
		document.getElementById("rePwtxt").innerHTML="請再次輸入您的密碼。";
		document.getElementById("rePwImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
	else
	{
		document.getElementById("rePwtxt").innerHTML="";
		document.getElementById("rePwImage").innerHTML="<span class='OK'>正確</span>";	
	}
}
//!!!!!!!!!!!!!!!!!!!!!!!!!//
function chkSNO(str)
{
var display
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  } 
	if(str=="")
	{
		document.getElementById("SNOtxt").innerHTML="<span style='color:#A2EE44'>回認GGC帳號憑據，一組身份證申請一次。</span>";
		document.getElementById("SNOImage").innerHTML="";
	}  
	else if (!En(str.charAt(0)))
	{
		document.getElementById("SNOtxt").innerHTML="身份證字號有誤，請再次確認。";
		document.getElementById("SNOImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
	if(str=="")
	{
		document.getElementById("SNOtxt").innerHTML="<span style='color:#A2EE44'>回認GGC帳號憑據，一組身份證申請一次。</span>";
		document.getElementById("SNOImage").innerHTML="";
	}	
	else if(str.length != 1)
	{
		for (i=1;i<str.length;i=i+1)
		{
			if (!Num(str.charAt(i)))
			{
					display = "false";
			}
		}
	}
	if(str=="")
	{
		document.getElementById("SNOtxt").innerHTML="<span style='color:#A2EE44'>回認GGC帳號憑據，一組身份證申請一次。</span>";
		document.getElementById("SNOImage").innerHTML="";
	}	
	else if(display == "false" || str.length!=10 || !checkID(str))
	{
		document.getElementById("SNOtxt").innerHTML="身份證字號有誤，請再次確認。";
		document.getElementById("SNOImage").innerHTML="<span class='NOTOK'>不正確</span>";
	}
	else
	{
		chkSNO_ajax(str);
	}	
}

function chkSNO_ajax(str)
{ 
var url="check.asp";
url=url+"?q="+str;
url=url+"&kind=2";
xmlHttp.onreadystatechange=SNOChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function SNOChanged()
{ 
if (xmlHttp.readyState==4)
{ 
	switch (xmlHttp.responseText)
	{
	case "0":
		document.getElementById("SNOtxt").innerHTML="";
		document.getElementById("SNOImage").innerHTML="<span class='OK'>正確</span>";	
		break;
	case "1":
		document.getElementById("SNOtxt").innerHTML="身份證字號重覆。";
		document.getElementById("SNOImage").innerHTML="<span class='NOTOK'>不正確</span>";
		break;
	default:
		document.getElementById("SNOtxt").innerHTML="系統錯誤代碼: " + xmlHttp.responseText;
		document.getElementById("SNOImage").innerHTML="<span class='NOTOK'>不正確</span>";
		break;
	}
}
}

//!!!!!!!!!!!!!!!!!!!!!!!!!//
function chkEmail(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  } 
	if(str=="")
	{
		document.getElementById("Emailtxt").innerHTML="<span style='color:#A2EE44'>忘記密碼的重要途徑。</span>";
		document.getElementById("EmailImage").innerHTML="";		
	}  
	else if(!emailCheck(str))
	{
		document.getElementById("Emailtxt").innerHTML="您的Email格式有誤。";
		document.getElementById("EmailImage").innerHTML="<span class='NOTOK'>不正確</span>";		
	}
	else
	{
		document.getElementById("Emailtxt").innerHTML="";
		document.getElementById("EmailImage").innerHTML="<span class='OK'>正確</span>";	
	}
}

//!!!!!!!!!!!!!!!!!!!!!!!!!//
function sendit()
{
var anschk;
var str;
anschk = '<span class="OK">正確</span>'
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的瀏覽器不支持AJAX！");
  return;
  }
  	if (String(document.getElementById("AccImage").innerHTML).indexOf(">正確<") == -1){
		alert("帳號資料輸入有誤！");
	}
	else if(String(document.getElementById("PwImage").innerHTML).indexOf(">正確<") == -1){
		alert("密碼資料輸入有誤！");
	}
	else if(String(document.getElementById("rePwImage").innerHTML).indexOf(">正確<") == -1){
		alert("確認密碼資料輸入有誤！");
	}
	else if(String(document.getElementById("SNOImage").innerHTML).indexOf(">正確<") == -1){
		alert("身份證字號資料輸入有誤！");
	}
	else if(String(document.getElementById("PwImage").innerHTML).indexOf(">正確<") == -1){
		alert("EmailImage！");
	}	
	else
	{
		str = document.getElementById("Account").value;
		str = str + "," + document.getElementById("Password").value;
		str = str + "," + document.getElementById("rePassword").value;
		str = str + "," + document.getElementById("SNO").value;
		str = str + "," + document.getElementById("Email").value;
		str = str + "," + document.getElementById("aid").value;  //2009/09/16 Add
		str = str + "," + document.getElementById("sid").value;  //2009/09/16 Add
		sendit_ajax(str);
	}
}

function sendit_ajax(str)
{ 
var url="check.asp";
url=url+"?q="+str;
url=url+"&kind=3";
xmlHttp.onreadystatechange=senditChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function senditChanged()
{ 
if (xmlHttp.readyState==4)
{ 
	switch (xmlHttp.responseText)
	{
	case "0":
	  //2009/09/16
	  if (document.getElementById("aid").value == 0 & document.getElementById("sid").value == 0) {
		  alert("您的帳號："+document.getElementById("Account").value.toUpperCase()+"\n你的密碼："+document.getElementById("Password").value+"\n身份證字號："+document.getElementById("SNO").value.toUpperCase()+"\n電子信箱："+document.getElementById("Email").value+"\n\n恭喜您已註冊成功，請妥善保存您的帳號與密碼。選擇伺服\n器後即可進入遊戲。此組快速註冊帳號需透過GGC帳號回認\n後，才可享有完整的會員服務。");
	  }
	  else {
	    alert("您的帳號："+document.getElementById("Account").value.toUpperCase()+"\n你的密碼："+document.getElementById("Password").value+"\n身份證字號："+document.getElementById("SNO").value.toUpperCase()+"\n電子信箱："+document.getElementById("Email").value+"\n\n恭喜您已註冊成功，請妥善保存您的帳號與密碼。選擇伺服\n器後即可進入遊戲。此組快速註冊帳號需透過GGC帳號回認\n後，才可享有完整的會員服務。" + "\n\n推薦成功！！！別忘了快來玩哦～～");
	  }
	  //alert("您的帳號："+document.getElementById("Account").value.toUpperCase()+"\n你的密碼："+document.getElementById("Password").value+"\n身份證字號："+document.getElementById("SNO").value.toUpperCase()+"\n電子信箱："+document.getElementById("Email").value+"\n\n恭喜您已註冊成功，請妥善保存您的帳號與密碼。選擇伺服\n器後即可進入遊戲。此組快速註冊帳號需透過GGC帳號回認\n後，才可享有完整的會員服務。");
	  //2009/09/16
		document.getElementById("Acctxt").innerHTML="<span style='color:#A2EE44'>請輸入6-12字的數字或英文。(英文預設值為大寫)</span>";
		document.getElementById("AccImage").innerHTML="";
		document.getElementById("Account").value="";
		document.getElementById("Pwtxt").innerHTML="<span style='color:#A2EE44'>若您在密碼中使用英文，大小寫是有區別的。</span>";
		document.getElementById("PwImage").innerHTML="";
		document.getElementById("Password").value="";
		document.getElementById("rePwtxt").innerHTML="<span style='color:#A2EE44'>再次確認您輸入的密碼。</sp";
		document.getElementById("rePwImage").innerHTML="";
		document.getElementById("rePassword").value="";
		document.getElementById("SNOtxt").innerHTML="<span style='color:#A2EE44'>回認GGC帳號憑據，一組身份證申請一次。</span>";
		document.getElementById("SNOImage").innerHTML="";
		document.getElementById("SNO").value="";
		document.getElementById("Emailtxt").innerHTML="<span style='color:#A2EE44'>忘記密碼的重要途徑。</span>";
		document.getElementById("EmailImage").innerHTML="";
		document.getElementById("Email").value="";
		break;
	case "1":
		document.getElementById("Acctxt").innerHTML="遊戲帳號重覆。";
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";	
		document.getElementById("Account").value="";
		alert("遊戲帳號重覆,請重新輸入");
		break;
	case "2":
		document.getElementById("Acctxt").innerHTML="遊戲序號重覆。";
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";
		document.getElementById("Account").value="";
		alert("遊戲序號重覆,請重新輸入");
		break;
	case "3":
		document.getElementById("SNOtxt").innerHTML="身份證字號重覆。";
		document.getElementById("SNOImage").innerHTML="<span class='NOTOK'>不正確</span>";
		document.getElementById("SNO").value="";
		alert("身份證字號重覆,請重新輸入");
		break;
	case "98":
		document.getElementById("Acctxt").innerHTML="";
		document.getElementById("AccImage").innerHTML="";
		document.getElementById("Account").value="";
		document.getElementById("Pwtxt").innerHTML="";
		document.getElementById("PwImage").innerHTML="";
		document.getElementById("Password").value="";
		document.getElementById("rePwtxt").innerHTML="";
		document.getElementById("rePwImage").innerHTML="";
		document.getElementById("rePassword").value="";
		document.getElementById("SNOtxt").innerHTML="";
		document.getElementById("SNOImage").innerHTML="";
		document.getElementById("SNO").value="";
		document.getElementById("Emailtxt").innerHTML="";
		document.getElementById("EmailImage").innerHTML="";
		document.getElementById("Email").value="";
		alert("遊戲資料庫有問題!");
		break;
	case "99":
		document.getElementById("Acctxt").innerHTML="";
		document.getElementById("AccImage").innerHTML="";
		document.getElementById("Account").value="";
		document.getElementById("Pwtxt").innerHTML="";
		document.getElementById("PwImage").innerHTML="";
		document.getElementById("Password").value="";
		document.getElementById("rePwtxt").innerHTML="";
		document.getElementById("rePwImage").innerHTML="";
		document.getElementById("rePassword").value="";			
		document.getElementById("SNOtxt").innerHTML="";
		document.getElementById("SNOImage").innerHTML="";
		document.getElementById("SNO").value="";
		document.getElementById("Emailtxt").innerHTML="";
		document.getElementById("EmailImage").innerHTML="";
		document.getElementById("Email").value="";
		alert("資料系統有問題!");
		break;
	default:
		document.getElementById("Acctxt").innerHTML="系統錯誤代碼: " + xmlHttp.responseText;
		document.getElementById("AccImage").innerHTML="<span class='NOTOK'>不正確</span>";	
		document.getElementById("Account").value="";
		alert("系統錯誤代碼: " + xmlHttp.responseText);
		break;
	}
}
}
/////////////////////////////////////////////////////////////////////////////////////////
function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}