function Thai_Input(input){ 
	var inputStr=input.value;
	if(window.RegExp && inputStr){ 		
		var regExp1 = /^[ก-๛]{1,}$/
		if(!regExp1.test(inputStr)) {			
			return false;
		}
		return true;
	}
}

function EnlishNO(input){ 
	var inputStr=input.value;
	if(window.RegExp && inputStr){ 
		//var regExp1 = /^[a-zA-Z0-9]{4,12}$/
		var regExp1 = /^\w{4,12}$/
		if(!regExp1.test(inputStr)) {
			/*
			alert("กรุณากรอก Password ใหม่อีกครั้ง.\n\nPassword ต้องเป็นอักษรภาษอังกฤษ a-z, A-Z, 0-9 เท่านั้นค่ะ");
			input.value=input.defaultValue;
			input.focus();
			*/
			return false;
		}
		return true;
	}
}

function isThaichar(str){
	 var orgi_text="ๅภถุึคตจขชๆไำพะัีรนยบลฃฟหกดเ้่าสวงผปแอิืทมใฝ๑๒๓๔ู฿๕๖๗๘๙๐ฎฑธํ๊ณฯญฐฅฤฆฏโฌ็๋ษศซฉฮฺ์ฒฬฦ";
	 var str_length=str.length;
	 var isThai=true;
	 var Char_At="";
	 for(i=0;i<str_length;i++){
	  Char_At=str.charAt(i);
	  if(orgi_text.indexOf(Char_At)==-1){
	   isThai=false;
	  }   
	 }
	 return isThai; // ถ้าเป็น true แสดงว่าเป็นภาษาไทยทั้งหมด
}

function EnlishNO_not_underscroll(input){ 
	var inputStr=input.value;
	if(window.RegExp && inputStr){ 
		var regExp1 = /^[a-zA-Z0-9]{4,12}$/
		//var regExp1 = /^\w{4,12}$/
		if(!regExp1.test(inputStr)) {
			/*
			alert("กรุณากรอก Password ใหม่อีกครั้ง.\n\nPassword ต้องเป็นอักษรภาษอังกฤษ a-z, A-Z, 0-9 เท่านั้นค่ะ");
			input.value=input.defaultValue;
			input.focus();
			*/
			return false;
		}
		return true;
	}
}

function isEmail(input){	
	if(window.RegExp && input){ 
		//console.debug(input);
		var regstr1 = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)" 
		var regstr2 = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$" 
		var regExp1 = new RegExp(regstr1) 
		var regExp2 = new RegExp(regstr2) 
		var regExp3 = /[^a-zA-Z0-9\-_.@]/ 
		if(!(!regExp1.test(input) && regExp2.test(input) && !regExp3.test(input)) || !(input.indexOf("@")>=0)) {
			//console.debug('false');
			return false;
		}else{
			//console.debug('true');
			return true;
		}
	}
}

function isID(input){ 
	var inputStr=input.value 	
	if (inputStr == "") {
		alert("กรุณากรอก หมายเลขบัตรประจำตัวประชาชนด้วยค่ะ");
			input.value=input.defaultValue;
			input.focus();
			return false;
	}
	else if(window.RegExp && inputStr){ 
		var regExp1 = /^\d{13}$/
		if(!regExp1.test(inputStr)) {
			alert("กรุณาตรวจสอบ หมายเลขบัตรประจำตัวประชาชนค่ะ\n\n หมายเลขบัตรประชาชนเป็นตัวเลข 13 หลัก");
			input.value=input.defaultValue;
			input.focus();			
			return false;			
		}
		return true;
	}	
}

function isZIP(input){	
	var inputStr=input.value
	if(window.RegExp && inputStr){ 
		var regExp1 = /^\d{5}$/
		if(!regExp1.test(inputStr)) {			
			return false;			
		}
		return true;
	}		
}
function isCheckID(input){ 	
	if(window.RegExp && input){ 
		var regExp1 = /^\d{13}$/
		if(!regExp1.test(input)){			
			return false;			
		}
		return true;
	}	
}
function isTelNO(input){ 
	var inputStr=input.value 	
	if (inputStr != "") {
		if(window.RegExp && inputStr){ 
			var regExp1 = /^\d{10}$/
			if(!regExp1.test(inputStr)) {
				alert("กรุณาตรวจสอบ หมายเลขโทรศัพท์ค่ะ\n\n ตัวเลข 10 หลัก");				
				input.focus();			
				return false;			
			}
			return true;
		}
	}
	else {
		return true;
	}
}

function isSelected(input, str) {
	if (input.value==0) {
		alert("กรุณาเลือก " + str);
		input.focus();
		return false;
	}
	else {
		return true;
	}
}
function doSubmit() {
	var result=true;
	
	var userid=eval(document.register_frm.username);
	var password=eval(document.register_frm.password);
	var firstname=eval(document.register_frm.firstname);
	var lastname=eval(document.register_frm.lastname);
	var nickname=eval(document.register_frm.nickname);
	var sex=eval(document.register_frm.sex);
	var id=document.register_frm.id;
	var date=eval(document.register_frm.date);
	var month=eval(document.register_frm.month);
	var year=eval(document.register_frm.year);
	var province=eval(document.register_frm.province);
	var zipcode=document.register_frm.zipcode;
	var email=eval(document.register_frm.email);
	var email_confirm=eval(document.register_frm.email_confirm);
	var tel=document.register_frm.tel;
	var mobile=document.register_frm.mobile;
	var occupation=eval(document.register_frm.occupation);
	var code=eval(document.register_frm.code);
	var eng = /^[a-zA-Z0-9]/; 
	var beginnumber = /^([0-9])/;

	//check userid
	if (result) {
		if (userid.value==""){
			alert("กรุณาตรวจสอบ UserID ให้ครบค่ะ");
			userid.focus();
			result=false;
		}else if (userid.value.length<4 || userid.value.length>12){
			alert("UserID ต้องมีความยาว 4 - 12 ตัวอักษร");
			userid.focus();
			result=false;
		}else if (!eng.test(userid.value)) {
			alert("UserID ต้องเป็นตัวอักษรภาษาอังกฤษ a-z , A-Z , 0-9 , _ เท่านั้น");
			userid.focus();
			result=false;
		}else if (beginnumber.test(userid.value)) {
			alert("UserID ต้องห้ามใช้ 0-9 นำหน้า");
			userid.focus();
			result=false;
		}
	}

	//check password
	if (result) {
		if (password.value==""){
			alert("กรุณากรอก Password ให้ครบค่ะ");
			password.focus();
			result=false;
		}
		else if (password.value.length<4 || password.value.length>12){
			alert("password ต้องมีความยาว 4 - 12 ตัวอักษร");
			password.focus();
			result=false;
		}
		else if (!EnlishNO(password)) {
			alert("Password และ Password Confirm ต้องเป็นตัวอักษรภาษาอังกฤษ a-z , A-Z , 0-9 , _ เท่านั้น");
			password.focus();
			result=false;
		}
	}

	//check firstname
	if (result) {
		if (!(Thai_Input(firstname))){
			alert("กรุณาตรวจสอบ ชื่อจริง ค่ะ\n\n ชื่อจริงต้องเป็นตัวอักษรภาษาไทยเท่านั้น");
			firstname.focus();
			result = false;
		}
		else {
			result = true;
		}
	}

	//check lastname
	if (result) {
		if (!(Thai_Input(lastname))){
			alert("กรุณาตรวจสอบ นามสกุล ค่ะ\n\n นามสกุลต้องเป็นตัวอักษรภาษาไทยเท่านั้น");
			lastname.focus();
			result = false;
		}
		else {
			result = true;
		}
	}

//check nickname
	if (result) {
		if (!(Thai_Input(nickname))){
			alert("กรุณาตรวจสอบ ชื่อเล่น ค่ะ\n\n ชื่อเล่นต้องเป็นตัวอักษรภาษาไทยเท่านั้น");
			nickname.focus();
			result = false;
		}
		else {
			result = true;
		}
	}

	//check sex
	if (result) {
		if (sex[0].checked == false && sex[1].checked == false) {
			alert("กรุณาเลือกเพศค่ะ");
			sex[0].focus();
			result = false;
		}
		else {
			result = true;
		}
	}

	//check date
	if (result) {
		result = (isSelected(date, "วันเกิด"));
	}

	//check month
	if (result) {
		result = (isSelected(month, "เดือนเกิด"));
	}

	//check year
	if (result) {
		result = (isSelected(year, "ปีเกิด"));
	}

	//check เลขบัตรประจำตัวประชาชน
	if (result) {
		result = (isID(id));
	}

	//check province
	if (result) {

		if(!isSelected(province, "จังหวัด")){
			alert("กรุณากรอก จังหวัด ด้วยค่ะ");
			result=false;
		}
	}

	//check รหัสไปรษณีย์
	if (result) {

		if(!isZIP(zipcode)){
			alert("กรุณากรอก รหัสไปรษณีย์ ด้วยค่ะ");
			result=false;
		}
	}

	//check เบอร์โทรศัพท์
	if (result) {
		if(!isTelNO(tel)){
			alert("กรุณากรอก เบอร์โทรศัพท์ ด้วยค่ะ");
			result=false;
		}
	}

	//check เบอร์มือถือ
	if (result) {
		
		if(!isTelNO(mobile)){
			alert("กรุณากรอก เบอร์มือถือ ด้วยค่ะ");
			result=false;
		}
	}

	//check occupation
	if (result) {
		
		if(!isSelected(occupation, "อาชีพ")){
			alert("กรุณากรอก อาชีพ ด้วยค่ะ");
			result=false;
		}
		
	}

	//check อีแมว
    //result=true;
	if (result) {		
		if (email.value=="") {
			alert("กรุณากรอก email ให้ครบค่ะ");
			email.focus();
			result=false;
		}else if (!isEmail(email.value)) {
			alert("กรุณาตรวจสอบ email ค่ะ");
			email.focus();
			result=false;
		}else{
			if(email.value!=email_confirm.value){
				alert("กรุณาตรวจสอบ email ให้ตรงกันด้วยค่ะ");
				result=false;
			}
		}
	}

	//check code
	if (result) {
		if (code.value=="") {
			alert("กรุณากรอก code ด้วยค่ะ");
			email.focus();
			result=false;
		}		
	}
	return result;

}

function finishAjax(id, response) {
  $('#usernameLoading').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
} //finishAjax

function passwordChanged() {
	var strength = document.getElementById('strength');
	var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
	var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
	var enoughRegex = new RegExp("(?=.{6,}).*", "g");
	var pwd = document.getElementById("password");
	if (pwd.value.length==0) {
		strength.innerHTML = 'Type Password';
	} else if (false == enoughRegex.test(pwd.value)) {
		strength.innerHTML = 'More Characters';
	} else if (strongRegex.test(pwd.value)) {
		strength.innerHTML = '<span style="color:green">Strong!</span>';
	} else if (mediumRegex.test(pwd.value)) {
		strength.innerHTML = '<span style="color:orange">Medium!</span>';
	} else {
		strength.innerHTML = '<span style="color:red">Weak!</span>';
	}
}

function testPassword(passwd){
	var intScore   = 0
	var strVerdict = "weak"
	var strLog     = ""
		
	// PASSWORD LENGTH length 4 or less
	if (passwd.length<4){
			intScore = (intScore+3)
			strLog   = strLog + "3 points for length (" + passwd.length + ")\n"
	// length between 5 and 7
	}else if (passwd.length>3 && passwd.length<6){
			intScore = (intScore+6)
			strLog   = strLog + "6 points for length (" + passwd.length + ")\n"
	// length between 8 and 15
	}else if (passwd.length>7 && passwd.length<11){
			intScore = (intScore+12)
			strLog   = strLog + "12 points for length (" + passwd.length + ")\n"
	// length 16 or more
	}else if (passwd.length>10){
			intScore = (intScore+18)
			strLog   = strLog + "18 point for length (" + passwd.length + ")\n"
	}
		
	// LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
	// [verified] at least one lower case letter
	if (passwd.match(/[a-z]/)){
			intScore = (intScore+1)
			strLog   = strLog + "1 point for at least one lower case char\n"
	}
	// [verified] at least one upper case letter	
	if (passwd.match(/[A-Z]/)){
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one upper case char\n"
	}
		
		// NUMBERS // [verified] at least one number
	if (passwd.match(/\d+/)){
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one number\n"
	}
	// [verified] at least three numbers	
	if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/)){
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least three numbers\n"
	}
		
		
	// SPECIAL CHAR
	// [verified] at least one special character
	if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)){
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one special char\n"
	}
		
	// [verified] at least two special characters
	if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least two special chars\n"
	}
	
		
	// COMBOS
	// [verified] both upper and lower case
	if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for upper and lower letters\n"
	}
	// [verified] both letters and numbers
	if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)){
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters and numbers\n"
	}
 
	// [verified] letters, numbers, and special characters
	if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)){
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
	}
	
	if(intScore == 0){
		   strength.innerHTML = '<span style="color:red">Type Password</span>';
	}else if(intScore > 0 && intScore < 16){
		   strength.innerHTML = '<span style="color:red">Weak!</span>';
	}else if (intScore > 15 && intScore < 25){
		   strength.innerHTML = '<span style="color:red">Weak!</span>';
	}else if (intScore > 24 && intScore < 35){
		   strength.innerHTML = '<span style="color:orange">Medium!</span>';
	}else if (intScore > 34 && intScore < 45){
		   strength.innerHTML = '<span style="color:green">Strong!</span>';
	}else{
			strength.innerHTML = '<span style="color:green">Stronger!</span>';
	}
		
}
