// verify registration and member information change forms
function getSelectedOptionValue(fieldSelect){
	var value = "";
	for(i=0;i < fieldSelect.options.length;i++)
		if(fieldSelect.options[i].selected) { value = fieldSelect.options[i].value; break; }
	return value;
}
function getCheckedRadioValue(fieldRadio){
	var value = "";
	for(i=0; i < fieldRadio.length; i++)
		if(fieldRadio[i].checked) {value = fieldRadio[i].value; break;}
	return value;
}
function getMatchedStringBase(pattern_str, str) {
	var regExp = new RegExp(pattern_str, 'gi');
	var matchArray = regExp.exec(str);
	if(matchArray == null) return null;
	return matchArray[0];
}
function getMatchedString(patterns, str){
	if(typeof patterns == 'object' && patterns.constructor == Array) {
		for(i =0; i < patterns.length;i++) {
			var matched = getMatchedStringBase(patterns[i], str);
			if( matched != null) return matched;
		}
	}
	return getMatchedStringBase(patterns, str);
}
function checkPatternMatch(patterns, strToCheck, matchFlag){
	var matched = getMatchedString(patterns, strToCheck);
	if(matchFlag == true && matched != null) return true;
	if( matchFlag == false && matched == null) return true;
	return false;
}
function checkRequired(str){
	if(str == null || str.length == 0) return false;
	return true;
}
function checkMinLength(minlength, str){
	if(str.length < minlength) return false;
	return true;
}
function checkMaxLength(maxlength, str){
	if(str.length > maxlength) return false;
	return true;
}
function checkEquals(str1, str2){
	return str1 == str2;
}

function isErrorPWChar(sBuf){

	for ( var i=0; i<sBuf.length; i++ ) {
		if(sBuf.charCodeAt(i)<33 || sBuf.charCodeAt(i)>126){
			return true;
		}
	}
	return false;
}
function checkEmailStr(emailStr) {
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   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)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}
function checkSexStr(sex){
	if( sex == "M" || sex == "F") return true;
	return false;
}
function isValidDate(day, month, year) {
   if (month < 1 || month > 12) {
        return false;
    }
    if (day < 1 || day > 31) {
        return false;
    }
    if ((month == 4 || month == 6 || month == 9 || month == 11) &&
        (day == 31)) {
        return false;
    }
    if (month == 2) {
        var leap = (year % 4 == 0 &&
           (year % 100 != 0 || year % 400 == 0));
        if (day>29 || (day == 29 && !leap)) {
            return false;
        }
    }
    return true;
}

function goAlert(msg, field, output) {
	try {
		if ( typeof(output) != 'undefined' ) {
			document.getElementById(output).innerHTML = '<p style="padding:3px 0; font-size:9px"><img src="http://images.ijjimax.com/v2/common/ico_rc.gif" width="5" height="5" alt="" /> <strong>' + msg + '</strong></p>';
		} else alert(msg);
		field.focus();
	} catch(e){}
}

function goAlertFbc(msg, field, output) {
	try {
		if ( typeof(output) != 'undefined' ) {
			document.getElementById(output).innerHTML = msg;
		} else alert(msg);
		field.focus();
	} catch(e){}
}

function checkMemberidFbc(field, output){
	var memberid = field.value;
	var msg = null;
	if( !checkRequired(memberid) )
		msg = "Please enter a valid User ID.";
	else if( !checkMinLength(validator.MEMBERID_MINLENGTH, memberid))
		msg = "User ID must be at least " + validator.MEMBERID_MINLENGTH + " characters long.";
	else if( !checkMaxLength(validator.MEMBERID_MAXLENGTH, memberid))
		msg = "User ID cannot exceed " + validator.MEMBERID_MAXLENGTH + " characters in length.";
	else if( !checkPatternMatch(validator.MEMBERID_VALID_ID_EXP, memberid, true))
		msg = "Your User ID entry contains characters that are not allowed.  \nUserID may consist of alphanumeric characters (a-z and 0-9) and underscores (_).";
	else if( !checkPatternMatch(validator.MEMBERID_ADMIN_ID_EXP, memberid, false))
		msg = "You have entered an invalid User ID.\nUser ID cannot contain words like admin, manager, operator, etc.\nPlease enter a different User ID.";
	else if( !checkPatternMatch(validator.MEMBERID_FORBIDDEN_ID_EXP, memberid, false))
		msg = "You have entered an invalid User ID.\nUser ID cannot contain sexual and/or abusive language. \nPlease enter a different User ID.";

	if( msg!=null) {
		goAlertFbc(msg, field, output);
		return false;
	}
	return true;
}

function checkMemberid(field, output){
	var memberid = field.value;
	var msg = null;
	if( !checkRequired(memberid) )
		msg = "Please enter a valid User ID.";
	else if( !checkMinLength(validator.MEMBERID_MINLENGTH, memberid))
		msg = "User ID must be at least " + validator.MEMBERID_MINLENGTH + " characters long.";
	else if( !checkMaxLength(validator.MEMBERID_MAXLENGTH, memberid))
		msg = "User ID cannot exceed " + validator.MEMBERID_MAXLENGTH + " characters in length.";
	else if( !checkPatternMatch(validator.MEMBERID_VALID_ID_EXP, memberid, true))
		msg = "Your User ID entry contains characters that are not allowed.  \nUserID may consist of alphanumeric characters (a-z and 0-9) and underscores (_).";
	else if( !checkPatternMatch(validator.MEMBERID_ADMIN_ID_EXP, memberid, false))
		msg = "You have entered an invalid User ID.\nUser ID cannot contain words like admin, manager, operator, etc.\nPlease enter a different User ID.";
	else if( !checkPatternMatch(validator.MEMBERID_FORBIDDEN_ID_EXP, memberid, false))
		msg = "You have entered an invalid User ID.\nUser ID cannot contain sexual and/or abusive language. \nPlease enter a different User ID.";

	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkPassword(field1, field2, field3, output, hiddenObj){
	var password1 = field1.value;
	var password2 = field2.value;
	var memberid = field3.value;
	var msg = null;
	var bHidden = false;

	if( !checkRequired(password1) )
		msg = "Please enter a password.";
	else if( !checkMinLength(validator.PASSWORD_MINLENGTH, password1))
		msg = "Password length cannot be less than " + validator.PASSWORD_MINLENGTH + " characters.";
	else if( !checkMaxLength(validator.PASSWORD_MAXLENGTH, password1))
		msg = "Length of password cannot be longer than " + validator.PASSWORD_MAXLENGTH + ".";
	else if( !checkEquals(password1, password2) )
		msg = "Your password entries did not match. Please re-enter passwords and make sure they are identical.";
	else if (memberid != null && memberid != "" && password1.indexOf(memberid) >= 0)
		msg = "The password cannot be identical with your ID. Please re-enter password correctly.";
//	else if( !checkPatternMatch(validator.PASSWORD_SIMPLE_EXP, password1, false))
//		msg = "The password you entered is weak in security strength.\nWe recommend you enter a different password.";
	else if( !checkPatternMatch(validator.PASSWORD_MATCH_VALID, password1, true)){
		msg = "The password must require a minimum of two letters consisting of a number and/or a special character.";
		bHidden = true;
	}
	else if( isErrorPWChar(password1) ) {
		msg = "The password you’ve entered contains unusable characters.";		
	}
	
	if( bHidden && typeof(hiddenObj) != 'undefined' ) {
		document.getElementById(hiddenObj).style.display = "none";
	} else {
		document.getElementById(hiddenObj).style.display = "";
	}
	
	if( msg!=null) {
		goAlert(msg, field1, output);
		return false;
	}
	return true;
}

function checkName(field, output){
	var name = field.value;
	var msg = null;

	if( !checkRequired(name) )
		msg = "Please provide us with your name.";
	else if( !checkMaxLength(validator.NAME_MAXLENGTH, name))
		msg = "Length of name cannot be longer than " + validator.NAME_MAXLENGTH + ".";
	else {
		var invalidChars = getInvalidCp1252Chars(name);
		if( invalidChars != null ) msg ='Name cannot contain characters other than normal Latin alphabets and symbols!\n[' + invalidChars + '] ' + (invalidChars.length > 1? 'are':'is an') + ' invalid character' + (invalidChars.length > 1? 's.':'.');
	}
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkFullName(field1, field2, field3, output){
	var name = field1.value + " " + field2.value + " " + field3.value;
	var msg = null;

	if( !checkRequired(field1.value) || !checkRequired(field3.value))
		msg = "Please provide us with your name.";
	else if( !checkMaxLength(validator.NAME_MAXLENGTH, name))
		msg = "Length of name cannot be longer than " + validator.NAME_MAXLENGTH + ".";
	else {
		var invalidChars = getInvalidCp1252Chars(name);
		if( invalidChars != null ) msg ='Name cannot contain characters other than normal Latin alphabets and symbols!\n[' + invalidChars + '] ' + (invalidChars.length > 1? 'are':'is an') + ' invalid character' + (invalidChars.length > 1? 's.':'.');
	}
	if( msg!=null) {
		goAlert(msg, field1, output);
		return false;
	}
	return true;
}
function checkNickname(field, output){
	var nickname = field.value;
	var msg = null;

	if( !checkRequired(nickname) )
		msg = "Please enter your Nickname";
	else if( !checkMaxLength(validator.NICKNAME_MAXLENGTH, nickname))
		msg = "Length of nickname cannot be longer than " + validator.NICKNAME_MAXLENGTH + ".";
	else {
		var invalidChars = getInvalidCp1252Chars(nickname);
		if( invalidChars != null ) msg ='Nickname cannot contain characters other than normal Latin alphabets and symbols!\n[' + invalidChars + '] ' + (invalidChars.length > 1? 'are':'is an') + ' invalid character' + (invalidChars.length > 1? 's.':'.');
	}

	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkEmail(field, output){
	var email = field.value;
	var msg = null;

	if( !checkRequired(email) )
		msg = "Please provide a valid e-mail address.";
	else if( !checkMaxLength(validator.EMAIL_MAXLENGTH, email))
		msg = "E-mail length cannot be longer than " + validator.EMAIL_MAXLENGTH + " characters.";
	else if( !checkEmailStr(email))
		msg = "Invalid e-mail format. Please enter a valid e-mail address.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkEmail4Match(field, field1, field1host, output){
	var email = field.value;
	var emailother = field1.value + "@" + field1host.value;
	var msg = null;

	if( email != emailother)
		msg = "Your e-mail entries did not match. Please re-enter e-mail.";
	if( msg!=null) {
		goAlert(msg, field1, output);
		return false;
	}
	return true;
}
function checkSex(field, output){
	var sex = null;
	var msg = null;
	var sex = getCheckedRadioValue(field);

	if( !checkRequired(sex) )
		msg = "Please specify your gender.";
	else if( !checkSexStr(sex))
		msg = "You have specified an invalid gender.\nPlease specify a valid gender.";
	if( msg!=null) {
		goAlert(msg, field[0], output);
		return false;
	}
	return true;
}

function checkVerificationKey(field, output){
	var key = field.value;
	var msg = null;

	if( !checkRequired(key) )
		msg = "Please enter the verification code.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}

function checkOldPassword(field, output){
	var oldPassword = field.value;
	var msg = null;

	if( !checkRequired(oldPassword) )
		msg = "Please enter your old password.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkHintAnswer(field, output){
	var answer = field.value;
	var msg = null;

	if( !checkRequired(answer) )
		msg = "An answer for your security question is required.";
	else if( !checkMaxLength(validator.HINTANSWER_MAXLENGTH, answer))
		msg = "An answer for your security question cannot be longer than " + validator.HINTANSWER_MAXLENGTH + " characters.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkHintQuest(field, output){
	var value;
	var msg = null;

	for(i=0;i < field.options.length;i++)
		if(field.options[i].selected) { value = field.options[i].value; break; }

	if( !checkRequired(value) )
		msg = "Please select your security question.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkHintQuestDifferent(field1, field2, output){
	var value1 = field1.value, value2;
	var msg = null;

	for(i=0;i < field2.options.length;i++)
		if(field2.options[i].selected) { value2 = field2.options[i].value; break; }

	if( !checkRequired(value1) )
		msg = "Please select your security question.";
	else if(value1 == value2)
		msg = "Your security question was same. Please select again your security question.";
	if( msg!=null) {
		goAlert(msg, field2, output);
		return false;
	}
	return true;
}
function checkHowDidFind(field, output){
	var value;
	var msg = null;
	for(i=0;i < field.options.length;i++)
		if(field.options[i].selected) { value = field.options[i].value; break; }
	if( !checkRequired(value) )
		msg = "Please select an answer.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}
function checkBirthday(fieldDay, fieldMonth, fieldYear, output){
  var year = fieldYear.value;
  var month;
  var day;

  for(i=0;i < fieldMonth.options.length;i++)
    if(fieldMonth.options[i].selected) { month = fieldMonth.options[i].value; break; }
  for(i=0;i < fieldDay.options.length;i++)
    if(fieldDay.options[i].selected) { day = fieldDay.options[i].value; break; }

//   if( year == "" && month == "" && day == "") //empty
//   	return true;

  if(month == "") {
  	goAlert("You did not specify a valid Birth Month.", fieldMonth, output);
  	return false;
  }
  if(day == "") {
  	goAlert("You did not specify a day of the month for your birthday.  ", fieldDay, output);
  	return false;
  }

  if( !checkPatternMatch('^[0-9]{4}$', year, true)) {
  	goAlert('The year of your birthday must be specified in 4 digits.', fieldYear, output);
  	return false;
  }

  var bYear = parseInt(year);
  var bMonth = parseInt(month);
  var bDay = parseInt(day);

  var cDate = new Date();
  var cYear = cDate.getFullYear();
  var cMonth = cDate.getMonth() + 1;
  var cDay = cDate.getDay();

  if(!isValidDate(day, month, year)) {
  	goAlert('You did not specify a valid day of the month for your birthday.', fieldYear, output);
  	return false;
  }
  else if(bYear > cYear || (bYear == cYear && bMonth > cMonth) || (bYear==cYear && bMonth == cMonth && bDay > cDay)) {
  	goAlert('You cannot enter a future date for your birthday.', fieldYear, output);
  	return false;

  }
  else if( bYear < cYear - 150 || bYear < 1900) {
  	goAlert('The year of your birthday is invalid.  Please enter a valid year.', fieldYear, output);
  	return false;
  }

  return true;
}
function checkBirthday4Match(fieldDay, fieldMonth, fieldYear, fieldDay2, fieldMonth2, fieldYear2, output){
	if(fieldDay.value!=fieldDay2.value || fieldMonth.value!=fieldMonth2.value || fieldYear.value!=fieldYear2.value )
	{
		goAlert('Your birthday entries did not match. Please re-enter birthday.', fieldMonth2, output);
		return false;
	}
	return true;
}
function getAge(fieldYear) {
  var year = fieldYear.value;
  var bYear = parseInt(year);
  var cDate = new Date();
  var cYear = cDate.getFullYear();
  return (cYear - bYear);
}
function getWesternAge(cYear,cMonth,cDay,bYear,bMonth,bDay) {
  var age = cYear - bYear;
  if ( ( bMonth > cMonth ) || 
  		( bMonth == cMonth && bDay > cDay ) ) {
  	age--;	
  }
  return age;
}

function checkGuardianEmail(field, output){
	var email = field.value;
	var msg = null;

	if( !checkRequired(email) )
		msg = "Parent/Guardiani's e-mail address is required.";
	else if( !checkMaxLength(validator.EMAIL_MAXLENGTH, email))
		msg = "Parent/Guardiani's e-mail cannot be longer than " + validator.EMAIL_MAXLENGTH + ".";
	else if( !checkEmailStr(email))
		msg = "Parent/Guardiani's e-mail is invalid.";
	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}

function checkZipCode(field, output) {
	var zipCode = field.value;
	var msg = null;


	if( zipCode == "" || !checkPatternMatch('^[0-9]{5}$|^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$', zipCode, true))
		msg = "Invalid Zip Code. Please enter a valid Zip Code.";

	if( msg!=null) {
		goAlert(msg, field, output);
		return false;
	}
	return true;
}

function trimInputField(field){
	field.value = field.value.replace(/(^\s*)|(\s*$)/g, "");
}

