// JavaScript Document
function ge(i){
	  if(!document.getElementById)return false;
	  if(typeof i==="string"){
	   	   if(document.getElementById && document.getElementById(i)) {
	   	   	   // W3C DOM
	           return document.getElementById(i);
         }
         else if (document.all && document.all(i)) {
         	   // MSIE 4 DOM
	           return document.all(i);
         }
         else if (document.layers && document.layers[i]) {
         	   // NN 4 DOM.. note: this won't find nested layers
	           return document.layers[i];
         } 
         else {
	           return false;
         }
	  }
	  else{return i;}
}

function trim(str) {
	return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}

function warning(container, warn_str, classname){
   var img='';
   if(classname=='error'){ img = "<img src='http://www.webshare.cc/images/check_error.gif'>"; }
   else if(classname=='correct'){ img = "<img src='http://www.webshare.cc/images/check_right.gif'>"; }
   warn_str=' '+img+' '+warn_str;
   container.innerHTML=warn_str;
}

function checkpassword1(obj){
	var password_tooshort = '密碼小於6個字符，請重新輸入。';
	var password2_incorrect = '確認密碼不正確，請重新輸入。';
	var password1 = obj.value;
	var pwlen = password1.length;
	var warning_str ='';
	var cp1 = ge('checkpassword1');
	var password2 = ge('password2').value;
	var cp2 = ge('checkpassword2');
	if(password2 == password1){
		warning(cp2, '' , 'correct');
		ge("password2").className="rightInput";
	}
    if(password2.length > 0 && password1!=password2){
		warning_str = password2_incorrect;
		warning(cp2, warning_str , 'error');
		ge("password2").className="wrongInput";
    }
	if(pwlen < 6){
		warning_str = password_tooshort;
		obj.className="rightInput";
		warning(cp1, warning_str , 'error');
		return warning_str;
	}
	else { obj.className="rightInput"; warning(cp1, '' , ''); return 'succeed';}
}

function checkpassword2(obj){
	var password_incorrect = '確認密碼不正確，請重新輸入。';
	var password2 = obj.value;
	var password1 = ge('password1').value;
	var cp2 = ge('checkpassword2');
	if(password2 != password1){
		warning_str = password_incorrect;
		warning(cp2, warning_str , 'error');
		obj.className="wrongInput";
		return warning_str;
	}
	else {obj.className="rightInput"; warning(cp2, '' , 'correct'); return 'succeed';}
}

function check_signup_submit(){
	if(trim(ge('signup_email').value)==''){
		alert("對不起，您未填寫電郵地址欄位。");
		return false;
	}
	else if(trim(ge('signup_username').value)==''){
		alert("對不起，您未填寫用戶名稱欄位。");
		return false;
	}
	else if(ge('password1').value==''){
		alert("對不起，您未填寫密碼欄位。");
		return false;
	}
	else if(ge('password2').value==''){
		alert("對不起，您未填寫確認密碼欄位。");
		return false;
	}
	else if(trim(ge('signup_country').value)==''){
		alert("對不起，您未填寫國家/地區欄位。");
		return false;
	}
	else if(ge('signupForm').birthday_year.value == '0' || ge('signupForm').birthday_month.value == '0' || ge('signupForm').birthday_day.value == '0'){
		alert("對不起，您未選擇你的出生日期。");
		return false;
	}
	else if(trim(ge('verificationResponse').value)==''){
		alert("對不起，您未輸入確認圖片文字。");
		return false;
	}
	else if(ge('terms').checked!=true){
		alert("對不起，您必須同意使用條款和私隱權政策，才能建立帳戶。");
		return false;
	}

	if(!(checkpassword1(ge('password1'))=='succeed' && checkpassword2(ge('password2'))=='succeed')){
		alert("對不起，您所填寫的資料仍有誤，請確認後再申請。");
		return false;
	}
}

var useActiveX=(typeof ActiveXObject != "undefined"); 
var useDom=(document.implementation && document.implementation.createDocument);  
var useXmlHttp=(typeof XMLHttpRequest != "undefined");  
var ARR_XMLHTTP_VERS = ["Microsoft.XMLHTTP", "MSXML.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"];
var ARR_DOM_VERS = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"]; 
var XMLHTTP_VER;

function createXMLHTTPRequest(){
	 if (useXmlHttp){ 
         return new XMLHttpRequest();
   } 
   else if (useActiveX) {    
         if (!XMLHTTP_VER) {
              for (var i=0; i < ARR_XMLHTTP_VERS.length; i++){
                  try {
                      new ActiveXObject(ARR_XMLHTTP_VERS[i]);
                      XMLHTTP_VER = ARR_XMLHTTP_VERS[i]; 
                      break;
                  } catch (oError) {}
              }
         }
         if (XMLHTTP_VER) {
             return new ActiveXObject(XMLHTTP_VER);
         } 
         else {
             throw new Error("無法建立XMLHttpRequest對象！");
         }
    } 
    else {
         throw new Error("您的瀏覽器不支持XMLHttpRequest對象！");
    }
}

function ajaxUpdater(tarObj,sMethod,URL,parameters){
    var oXmlHttp = createXMLHTTPRequest();  	   
    oXmlHttp.open(sMethod, URL+parameters, true);
    oXmlHttp.onreadystatechange = function () {
        if (oXmlHttp.readyState == 4) {
             if (oXmlHttp.status == 200) {
                  if(ge(tarObj)){
                       ge(tarObj).innerHTML = oXmlHttp.responseText;
                  }
                  else{
                       return false;	
                  }          
             } 
             else {
                  throw new Error("有一個錯誤產生！");
             }
         }    
    }           
    oXmlHttp.send(null); 
}

function ajaxRequest(sMethod,URL,parameters,func){
    var oXmlHttp = createXMLHTTPRequest();    	   
	if (sMethod=="POST") 
    { 
	  oXmlHttp.open(sMethod, URL+"?"+parameters, true);
      oXmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
    } 
	else {
	  oXmlHttp.open(sMethod, URL+parameters, true);
	}
    oXmlHttp.onreadystatechange = function() {
         if (oXmlHttp.readyState == 4) {
              if (oXmlHttp.status == 200) {
                    return func(oXmlHttp);     
              } 
              else {
                    throw new Error("有一個錯誤產生！");
              }
         }    
    }           
    oXmlHttp.send(null);   
} 

function formToRequestString(form_obj)
{
var query_string='';
var and='';
//alert(form_obj.length);
for (i=0;i<form_obj.length ;i++ )
{
e=form_obj[i];
if (e.name!='')
{
if (e.type=='select-one')
{
element_value=e.options[e.selectedIndex].value;
}
else if (e.type=='checkbox' || e.type=='radio')
{
if (e.checked==false)
{
break; 
}
element_value=e.value;
}
else
{
element_value=e.value;
}
query_string+=and+e.name+'='+element_value.replace(/\&/g,"%26");
and="&"
}
}
return query_string;
}


function checkusername(obj){
   var profile_username_toolong = '用戶名超過 15 個字符，請重新輸入。';
   var profile_username_tooshort = '用戶名小於3個字符, 請重新輸入。';
   var profile_username_illegal = '用戶名包含不正確字符，請重新輸入。';
   var register_check_found = '用戶名已存在，請重新輸入。';
   var succeed = '';
   var null_username = '請填寫用戶名。';
   var warning_str = '';
   var username = trim(obj.value);
   var cu = ge('checkusername');
   if(username==''){
	   warning_str = null_username;
	   obj.className="wrongInput";
	   warning(cu, warning_str , 'error');
	   return warning_str;
   }
   var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
   if(unlen < 3 || unlen > 15) {
	  warning_str = (unlen < 3 ? profile_username_tooshort : profile_username_toolong);
	  obj.className="wrongInput";
	  warning(cu, warning_str , 'error');
	  return warning_str;
   }
   var xmlHttp = createXMLHTTPRequest();
   xmlHttp.open("GET", "signup_ajax.php?action=checkusername&username="+(is_ie && document.charset == 'utf-8' ? encodeURIComponent(username) : username), true);
   xmlHttp.onreadystatechange=function() {
    if (xmlHttp.readyState==4&&xmlHttp.status==200) {
       var rspText=xmlHttp.responseText;
	   rspText = rspText.replace(" ","");
	   if(rspText == 'profile_username_illegal') {
		   warning_str = profile_username_illegal;
		   obj.className="wrongInput";
		   warning(cu, warning_str , 'error');
		   return warning_str;
	   }
	   if(rspText == 'register_check_found') {
		   warning_str = register_check_found;
		   warning(cu, warning_str , 'error');
		   obj.className="wrongInput";
		   return warning_str;
	   }
       if(rspText == "succeed"){
		   warning_str = succeed;
		   warning(cu, warning_str , 'correct');
		   obj.className="rightInput";
		   return 'succeed';
	   }
	}
   }
   xmlHttp.send(null);
}

function checkemail(obj){
   var profile_email_illegal = 'Email 地址無效，請重新填寫。';
   var profile_email_invalid = '您只能使用以  結尾的信箱，請重新填寫。';
   var profile_email_censor = '請不要使用以  結尾的信箱，請重新填寫。';
   var email_check_found = '此電郵已存在，請重新填寫。';
   var email_banned = '此電郵已被系統封鎖，不能使用。';
   var succeed = '';
   var null_email = '請填寫電郵地址。';
   var warning_str = '';
   var email = trim(obj.value);
   var ce = ge('checkemail');
   var accessemail = '';
   var censoremail = '';
   var accessexp = accessemail != '' ? /()$/i : null;
   var censorexp = censoremail != '' ? /()$/i : null;
   
   if(email==''){
	   warning_str = null_email;
	   warning(ce, warning_str , 'error');
	   obj.className="wrongInput";
	   return warning_str;
   }
   illegalemail = !(/^[\-\.\w]+@[\.\-\w]+(\.\w+)+$/.test(email));
   invalidemail = accessemail != '' ? !accessexp.test(email) : censoremail != '' && censorexp.test(email);
   if(illegalemail || invalidemail) {
	 warning_str = illegalemail ? profile_email_illegal : (accessemail != '' ? profile_email_invalid : profile_email_censor);
	 warning(ce, warning_str , 'error');
	 obj.className="wrongInput";
	 return warning_str;
   }
   var xmlHttp = createXMLHTTPRequest();
   xmlHttp.open("GET", "signup_ajax.php?action=checkemail&email="+email, true);
   xmlHttp.onreadystatechange=function() {
    if (xmlHttp.readyState==4&&xmlHttp.status==200) {
       var rspText=xmlHttp.responseText;
	   rspText = rspText.replace(" ","");
	   if(rspText == 'email_banned') {
		   warning_str = email_banned;
		   warning(ce, warning_str , 'error');
		   obj.className="wrongInput";
		   return warning_str;
	   }
	   if(rspText == 'email_check_found') {
		   warning_str = email_check_found;
		   warning(ce, warning_str , 'error');
		   obj.className="wrongInput";
		   return warning_str;
	   }
       if(rspText == "succeed"){
		   warning_str = succeed;
		   warning(ce, warning_str , 'correct');
		   obj.className="rightInput";
		   return 'succeed';
	   }
	}
   }
   xmlHttp.send(null);
}
