/*
 * Idapted Register Validation Code ver 0.72 Lite with remote validation
 *
 * Copyright (c) 2008 Idapted Ltd.
 *
 * Release Date: 2008-10-24 
 *
 * Last Update by buzz 2009.2.3 11:20

 */


// jQuery 1.2.6 included



function init()
{
  set_error_message();
}

function gup(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";

  else
    return results[1];
}

function set_error_message()
{
   var v = gup('error');
   if (v != "")
   {
     document.getElementById('errMsgDescription').firstChild.nodeValue = ERROR_MSG_GENERAL; 

     document.getElementById('registerErrorMsgBox').style.visibility = 'visible';
   }
}

var ERROR_MSG_INVALID_PHONE_NUMBER = "电话号码必须为11位长度的数字，不能包含字母或符号";
var ERROR_MSG_INVALID_EMAIL = "抱歉，您输入的电子邮件地址无效";

var ERROR_MSG_EMAIL_HAS_BEEN_USED = "抱歉，您输入的电子邮件地址已被注册";
var ERROR_MSG_INVALID_USERNAME = "无效的用户名：用户名必须为4-20个字符的字母，数字及下划线";
var ERROR_MSG_USERNAME_HAS_BEEN_USED = "抱歉，您输入的用户名已被使用";
var ERROR_MSG_EMAIL_EMPTY = "请输入您的电子邮件地址";

var ERROR_MSG_USERNAME_EMPTY = "请选择一个用户名";
var ERROR_MSG_INVALID_GIVENNAME = "请输入您的中文姓名";
var ERROR_MSG_PASSWORD_NOT_EQUAL = "请输入相同的密码";
var ERROR_MSG_PASSWORD_EMPTY = "请输入密码,支持大小写,字母,数字及下划线。";
var ERROR_MSG_TERMS_OF_SERVICE = "请勾选EQ法律声明" 



function validateEmail(elementValue)
{
  var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
  return emailPattern.test(elementValue);
}

function validateUsername(elementValue)

{
  var usernamePattern = /^[a-zA-Z0-9_]{4,20}$/;
  return usernamePattern.test(elementValue);
}

function checkEmail(inputNode)
{
  if (inputNode.value.replace(/ /g, '') == '')
  {

    return;
  }
  if (validateEmail(inputNode.value))
  {
    //alert("Use Ajax to check email.");
    validateEmailRemote(inputNode);
  }
  else
  {
    //alert("oops, invalid email.");

    if (document.getElementById('validMailIcon').style.visibility != 'hidden')
    {
      document.getElementById('validMailIcon').style.visibility = 'hidden';
    }
	showValidationMsg(document.getElementById('validationMsgBoxForEmail'), ERROR_MSG_INVALID_EMAIL);


  }
}

function checkPassword()
{

  if (document.getElementById('student_password').value == '' &&
      document.getElementById('student_password_confirmation').value == '' )

  {
    //alert(ERROR_MSG_PASSWORD_EMPTY);
    showValidationMsg(document.getElementById('validationMsgBoxForPassword'), ERROR_MSG_PASSWORD_EMPTY);
	document.getElementById('validPasswordIcon').style.visibility = 'hidden';

    return;
  }
  if (document.getElementById('student_password').value != document.getElementById('student_password_confirmation').value)
  {
    //alert(ERROR_MSG_PASSWORD_NOT_EQUAL);
    showValidationMsg(document.getElementById('validationMsgBoxForPassword'), ERROR_MSG_PASSWORD_NOT_EQUAL);

	document.getElementById('validPasswordIcon').style.visibility = 'hidden';
    return;
  }
  else
  {
    document.getElementById('validPasswordIcon').style.visibility = 'visible';

	if (document.getElementById('validationMsgBoxForPassword').style.visibility != 'hidden')
        {
          hideValidationMsg(document.getElementById('validationMsgBoxForPassword'));
        }

	
  }

}

function checkUsername(inputNode)
{
  if (inputNode.value.replace(/ /g, '') == '')
  {
    return;
  }
  if (validateUsername(inputNode.value))
  {
    validateUsernameRemote(inputNode);

  }
  else
  {
    if (document.getElementById('validUsernameIcon').style.visibility != 'hidden')
    {
      document.getElementById('validUsernameIcon').style.visibility = 'hidden';

    }
    showValidationMsg(document.getElementById('validationMsgBoxForUsername'), ERROR_MSG_INVALID_USERNAME);

  }
}


function showValidationMsg(msgNode, msg)
{
  //alert("entering showValidationMsg()");

  msgNode.firstChild.nodeValue = msg;
  msgNode.style.visibility = 'visible';
}

function hideValidationMsg(msgNode)
{
  msgNode.style.visibility = 'hidden';
}

function validateEmailRemote(inputNode)

{
    
  var validateURL = "http://www.eqenglish.com/students/remotes/validation_unique";
  var validateParams = "mail=" + inputNode.value;

  //alert("validateURL=" + validateURL);
  $.ajax({
    type: "GET",
    url: validateURL,
    data: validateParams,
    success: function(msg){
      //alert("Email: msg=" + msg);

      if (msg == 'INVALID')
      {
        if (document.getElementById('validMailIcon').style.visibility != 'hidden')
        {
          document.getElementById('validMailIcon').style.visibility = 'hidden';

        }
        showValidationMsg(document.getElementById('validationMsgBoxForEmail'), ERROR_MSG_EMAIL_HAS_BEEN_USED);
      }
      else
      {
        var mailMsgBox = document.getElementById('validationMsgBoxForEmail');

        if (mailMsgBox.style.visibility != 'hidden')
        {
          hideValidationMsg(mailMsgBox);
        }
        document.getElementById('validMailIcon').style.visibility = 'visible';

      }
    }
  });
  
}

function validateUsernameRemote(inputNode)
{
    
  var validateURL = "http://www.eqenglish.com/students/remotes/validation_unique";

  var validateParams = "login=" + inputNode.value;
  $.ajax({
    type: "GET",
    url: validateURL,
    data: validateParams,
    success: function(msg){
      //alert("username: msg=" + msg);

      if (msg == 'INVALID')
      {
        if (document.getElementById('validUsernameIcon').style.visibility != 'hidden')
        {
          document.getElementById('validUsernameIcon').style.visibility = 'hidden';

        }
        showValidationMsg(document.getElementById('validationMsgBoxForUsername'), ERROR_MSG_USERNAME_HAS_BEEN_USED);
      }
      else
      {
        var usernameMsgBox = document.getElementById('validationMsgBoxForUsername');

        if (usernameMsgBox.style.visibility != 'hidden')
        {
          hideValidationMsg(usernameMsgBox);
        }
        document.getElementById('validUsernameIcon').style.visibility = 'visible';

      }
    }
  });
  
}

function checkGivenName() {
  var givenName = document.getElementById('student_givenName').value;
  var reg = /^[u4E00-u9FA5]/;
  if (givenName.replace(/ /g, '') == '')

  { return;
  }
  if ( reg.test(givenName) )
  { if (document.getElementById('validGivenNameIcon').style.visibility != 'hidden')
    {
      document.getElementById('validGivenNameIcon').style.visibility = 'hidden';

    }
	showValidationMsg(document.getElementById('validationMsgBoxForGivenName'), ERROR_MSG_INVALID_GIVENNAME);
  }
 else {
     document.getElementById('validGivenNameIcon').style.visibility = 'visible';

	 hideValidationMsg(document.getElementById('validationMsgBoxForGivenName'));
 }
}


function checkMobile()
{ 
    var phoneNode = document.getElementById('student_mobile').value;
	if ( phoneNode.length != '11' )

	{
		if (document.getElementById('validMobileIcon').style.visibility != 'hidden')
        	{
          	document.getElementById('validMobileIcon').style.visibility = 'hidden';
	     	}

		showValidationMsg(document.getElementById('validationMsgBoxForMobile'), ERROR_MSG_INVALID_PHONE_NUMBER);
	}
	else 
	{
	document.getElementById('validMobileIcon').style.visibility = 'visible';

	
        if (document.getElementById('validationMsgBoxForMobile').style.visibility != 'hidden')
        {
          hideValidationMsg(document.getElementById('validationMsgBoxForMobile'));

        }
	}
	
}


function showErrorMsgInfoBox(msg)
{
  var errTexts = document.getElementById('errMsgDescription');
  var errMsgBox = document.getElementById('registerErrorMsgBox');

  errTexts.firstChild.nodeValue = msg; 
  errMsgBox.style.visibility = 'visible';
}

function onClickSubmit(formNode)
{
  
  // validate email
  if (document.getElementById('student_mail').value.replace(/ /g, '') == '')

  {
    showValidationMsg(document.getElementById('validationMsgBoxForEmail'), ERROR_MSG_EMAIL_EMPTY);
    return;
  }
  if (!validateEmail(document.getElementById('student_mail').value))
  {

    showValidationMsg(document.getElementById('validationMsgBoxForEmail'), ERROR_MSG_INVALID_EMAIL);
    return;

  }

    // validate password
  if (document.getElementById('student_password').value == '' &&

      document.getElementById('student_password_confirmation').value == '' )
  {
    showValidationMsg(document.getElementById('validationMsgBoxForPassword'), ERROR_MSG_PASSWORD_EMPTY);
    return;

  }
  if (document.getElementById('student_password').value != document.getElementById('student_password_confirmation').value)
  {
    showValidationMsg(document.getElementById('validationMsgBoxForPassword'), ERROR_MSG_PASSWORD_NOT_EQUAL);

    return;
  }

  // validate username
  if (document.getElementById('student_login').value.replace(/ /g, '') == '')
  {
    showValidationMsg(document.getElementById('validationMsgBoxForUsername'), ERROR_MSG_USERNAME_EMPTY);

    return;
  }
  if (!validateUsername(document.getElementById('student_login').value))
  {
    showValidationMsg(document.getElementById('validationMsgBoxForUserName'), ERROR_MSG_INVALID_USERNAME);

    return;
  }

// validate chinesename
  var givenName = document.getElementById('student_givenName').value;
  var reg = /^[u4E00-u9FA5]/;
  if ((givenName.replace(/ /g, '') == '') || (reg.test(givenName)))

  { showValidationMsg(document.getElementById('validationMsgBoxForGivenName'), ERROR_MSG_INVALID_GIVENNAME);
  return;
  }
  
  

  // validate phonenumber
  var phoneNode = document.getElementById('student_mobile').value;

  if ((phoneNode.length != '11') || (phoneNode == '') )
  {
  	showValidationMsg(document.getElementById('validationMsgBoxForMobile'), ERROR_MSG_INVALID_PHONE_NUMBER);
	return;
  }


// check Terms of Service
  if (!document.getElementById('term_statement').checked)
  {
    //alert(ERROR_MSG_TERMS_OF_SERVICE);
    showValidationMsg(document.getElementById('validationMsgBoxForTerms'), ERROR_MSG_TERMS_OF_SERVICE);

    return;
  }


   
  formNode.submit();

}