/**
 *	This script check form validity
 *	Example is at the bottom.
 */

/**
 *	Check text is not '' and not = nottext
 *	Also show alert message
 */
function checkText(obj, nottext, text) {
	var regExp = /^\s*$/;
	if (regExp.test(obj.value) || (obj.value == nottext)) {
		alert(text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}

function check22Text(obj1, obj2, nottext, text) {
	var regExp = /^\s*$/;
	if ((regExp.test(obj1.value) || (obj1.value == nottext)) && (regExp.test(obj2.value) || (obj2.value == nottext))) {
		alert(text);
		obj1.focus();
		return false;
	} else {
		return true;
	}
}

/**
 *	Check text is not in formatreg format, where formatreg is RegExp object
 *	Also show alert message
 */
function checkFormatText(obj, formatreg, text) {
	var regExp = formatreg;
	if (!regExp.test(obj.value)) {
		alert(text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}

/**
 *	Check whether email is valid or not
 *	Also show alert message
 */
function checkEmail(obj, text)
{
	var str = obj.value;
	var exclude = /[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check = /@[\w\-]+\./;
	var checkend = /\.[a-zA-Z]{2,3}$/;

	// Check email format
	if (!(!exclude.test(str) && check.test(str) && checkend.test(str))) {
		alert(text);
		obj.focus();
		return false;
	} 	else {
		return true;
	}
}

/**
 *	Check password in pw and cpw are valid?
 *	Also show alert message
 */
function check2Password(pw, cpw, text) {
	if (pw.value.length < 6) {
		alert('Password must be at least 6 characters');
		pw.focus();
		return false;
	}
	var regExp = /\s/;
	if (regExp.test(pw.value)) {
		alert('Password cannot contain space characters');
		pw.focus();
		return false;
	}
	if (checkText(pw, '', text)) {
		if (pw.value == cpw.value) {
			return true;
		} else {
			alert('Your confirm password is not match your password, please retype');
			cpw.focus();
			return false;
		}
	} else {
		pw.focus();
		return false;
	}
}

function checkDate(dd, mm, yy, text) {
	if (!(	checkText(dd, 'Date', 'Please select date') && 
			checkText(mm, 'Month', 'Please select month') && 
			checkText(yy, 'Year', 'Please select year'))) {
		return false;
	}
	return true;
}

/**
 *	Check if two textbox is not empty and match each other
 */
function check2Text(obj, obj2, nottext, text, notmatchtext) {
	var regExp = /^\s*$/;
	if (regExp.test(obj.value) || (obj.value == nottext)) {
		alert(text);
		obj.focus();
		return false;
	} else if (regExp.test(obj2.value) || (obj2.value == nottext)) {
		alert(text);
		obj2.focus();
		return false;
	} else if (obj.value != obj2.value) {
		alert(notmatchtext);
		obj2.focus();
		return false;
	} else {
		return true;
	}
}

/**
 *	Check if check boxes are checked some or not
 */
function checkBox(obj, text) {
	if ((obj.length == null) && (obj.checked)) {
		return true;
	}
	for (i = 0; i < obj.length; i++) {
		if (obj[i].checked == true) {
			return true;
		}
	}
	alert(text);
	if (obj.length == null) {
		obj.focus();
	} else {
		obj[0].focus();
	}
	return false;
}

function checkSelectBox(obj1, obj2, obj1Value, text) {
	for (i = 0; i < obj1.length; i++) {
		if ((obj1[i].value == obj1Value) && (obj2.value == '')) {
			alert(text);
			obj2.focus();
			return false;
		} else {
			return true;
		}
	}
}

/**
 *	Check number of character user enter in text field
 *	return false if #character greater than maxlimit then alert "text"
 */
function checkMaxTextLength(field, maxlimit, text) {
	if (field.value.length > maxlimit) {
		if (text != undefined) {
			alert(text);
		}
		return false;
	}
	return true;
}

/**
 *	Check number of character user enter in text field
 *	return false if #character less than minlimit then alert "text"
 */
function checkMinTextLength(field, minlimit, text) {
	if (field.value.length < minlimit) {
		if (text != undefined) {
			alert(text);
		}
		return false;
	}
	return true;
}

/**
 *	Check min/max number of character enter in text field
 *	return false if #character < minlimit or > maxlimit then alert "text"
 */
function checkTextLength(field, minlimit, maxlimit, text) {
	return checkMinTextLength(field, minlimit, text) && checkMaxTextLength(field, maxlimit, text);
}

/**
 *	Check text length and set new value to text if length exceed limit
 *	Also show alert message
 */
function limitTextLength(field, minlimit, maxlimit, text) {
	if ((minlimit > 0) && !(checkMinTextLength(field, minlimit, text))) {
		return false;
	}
	if ((maxlimit > 0) && !(checkMaxTextLength(field, maxlimit, text))) {
		field.value = field.value.substring(0, maxlimit - 1);
		return false;
	}
	return true;
}

/* Sub function */
function checkSelectBoxGroup(form, num, prefix, text) {
	var iCount = 0;
	for (i=1;i<=num;i++) {
		if(form[prefix+i].checked == true) {
			iCount++;
		}
	}
	
	if (iCount == 0) {
		alert(text);
		form[prefix+1].focus();
		return false;
	} else {
		return true;	
	}
}

function checkValueById(ID, oObj2, text) {
	var oObj1 = document.getElementById(ID);
	if ((oObj1.checked) && (oObj2.value == '')) {
		alert(text);
		oObj2.focus();
		return false;
	} else {
		return true;
	}
}

function checkRadioChecked(ID) {
	var oObj = document.getElementById(ID);
	if (oObj.checked) {
		return true;
	} else {
		return false;
	}
}

function checkNumber(obj, text) {
	if (obj.value.length < 8) {
		alert('سҡ͡ѾͶ繵Ţ 8 Ƿʹ¤'); 
		obj.focus(); 
		return (false); 
	}
	if(isNaN(obj.value)) { 
		alert(text); 
		obj.focus(); 
		return (false); 
	} else {
		return true;
	}
}

function checkSelectOther(id,obj_other, text) {
	oRD = document.getElementById(id);
	if (oRD.checked == true) {
		if (obj_other.value == '') {
			alert(text); 
			obj_other.focus(); 
			return (false); 
		} else {
			return true;
		}
	} else {
		return true;
	}
}

// password - between 6-8 chars, uppercase, lowercase, and numeral

function checkPassword (obj) {
	var error_text = "";
	var bError = false;
	if (obj.value == "") {
	   error_text = "سҡ͡ Password ׹ѹPassword.\n";
	   bError = true;
	} else {
		var illegalChars = /[\W_]/; // allow only letters and numbers
		
		if ((obj.value.length < 6) || (obj.value.length > 8)) {
		   	error_text = "Password 6-8 ѡ.\n";
			bError = true;
		} else if (illegalChars.test(obj.value)) {
		  	error_text = "Password ͧ繵ѡѧ˭ 繵Ţ  մҧ.\n";
			bError = true;
		} else if (!((obj.value.search(/(a-z)+/)) && (obj.value.search(/(A-Z)+/)) && (obj.value.search(/(0-9)+/)))) {
		   	error_text = "Password ͧ繵ѡѧ˭ 繵Ţ  մҧ.\n";
			bError = true;
		} else {
			bError = false;
		}
	}
	if (bError == true) {
		alert(error_text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}

function checkPassword2 (obj) {
	var error_text = "";
	var bError = false;
	if (obj.value == "") {
	   error_text = "سҡ͡ Password .\n";
	   bError = true;
	} else {
		var illegalChars = /[\W_]/; // allow only letters and numbers
		
		if (illegalChars.test(obj.value)) {
		  	error_text = "Password ͧ繵ѡѧ˭ 繵Ţ  մҧ.\n";
			bError = true;
		} else if (!((obj.value.search(/(a-z)+/)) && (obj.value.search(/(A-Z)+/)) && (obj.value.search(/(0-9)+/)))) {
		   	error_text = "Password ͧ繵ѡѧ˭ 繵Ţ  մҧ.\n";
			bError = true;
		} else {
			bError = false;
		}
	}
	if (bError == true) {
		alert(error_text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}

// username - 4-10 chars, uc, lc, and underscore only.

function checkUsername (obj) {
	var error_text = "";
	var bError = false;
	
	if (obj.value == "") {
		error_text = "سҡ͡ Username.\n";
		bError = true;
	} else {
		var illegalChars = /\W/; // allow letters, numbers, and underscores
		if ((obj.value.length < 4) || (obj.value.length > 10)) {
			error_text = "Username 4-10 ѡ.\n";
			bError = true;
		} else if (illegalChars.test(obj.value)) {
			error_text = "Username ͧ繵ѡѧ˭ 繵Ţ.\n";
			bError = true;
		} else {
			bError = false;
		}
	}
	
	if (bError == true) {
		alert(error_text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}       

function checkMobileNumber(obj, text) {	
	var bFail = 0;
	if (obj.value.length < 8) {
		bFail = 1;
	} else {
		if (isNaN(obj.value)) {
			newStr = obj.value.replace(/#|,| /gi, '');
			if (isNaN(newStr)) {
				bFail = 1;
			} else {
				bFail = 0;
			}
		} else {
			bFail = 0;
		}
	}
	
	if (bFail == 1) {
		alert(text);
		obj.focus();
		return false; 
	} else {
		return true;
	}
}

function validateFileExtension(obj) {
	if(!/(\.bmp|\.gif|\.jpg|\.jpeg)$/i.test(obj.value)) {
		return false;
	} else {
		return true;
	}
}

function validateFileExtension2(obj) {
	if(!/(\.doc|\.xls|\.ppt|\.pdf|\.txt|\.zip)$/i.test(obj.value)) {
		return false;
	} else {
		return true;
	}
}

function checkSelectUploadFiles(form) {
	if(!validateFileExtension(form.request_pic1) && 
		!validateFileExtension(form.request_pic2) && 
		!validateFileExtension(form.request_pic3) && 
		!validateFileExtension(form.request_pic4) && 
		!validateFileExtension(form.request_pic5)) {
		alert('سٻҾͧͧ¹ҧ 1 ٻ');
		return false;
	} else {
		return true;
	}
}

function allowKeyNumber() {
	if (event.keyCode < 45 || event.keyCode > 57) {
		event.returnValue = false;
		alert('͡繵Ţҹ!');
	} else {
		return true;	
	}
}

// Check key press for all browser
// Demo :  onkeypress="return CheckKeyPressIsNumeric(event.keyCode, event.which);"
function CheckNumericKeyInfo($char, $mozChar) { 
	if($mozChar != null) { // Look for a Mozilla-compatible browser 
		if(($mozChar >= 48 && $mozChar <= 57) || $mozChar == 0 || $char == 8 || $mozChar == 13) {
			$RetVal = true; 
		} else { 
			$RetVal = false; 
			alert('͡繵Ţҹ!');
		} 
	} else { // Must be an IE-compatible Browser 
		if(($char >= 48 && $char <= 57) || $char == 13) {
			$RetVal = true; 
		} else { 
			$RetVal = false; 
			alert('͡繵Ţҹ!');
		}
	}
	return $RetVal;
} 

// Check key press for all browser
function CheckKeyPressMobilePhone($char, $mozChar, obj) { 
	if($mozChar != null) { // Look for a Mozilla-compatible browser 
		if(($mozChar >= 48 && $mozChar <= 57) || $mozChar == 0 || $char == 8 || $mozChar == 13) {
			if (obj.value.length == 2 && obj.value.substr(0, 2) != '08') {
				$RetVal = false; 
				alert('ѾͶ͵ͧ鹵鹴 08 ҹ!');
			} else {
				$RetVal = true; 
			}
		} else { 
			$RetVal = false; 
			alert('͡繵Ţҹ!');
		} 
	} else { // Must be an IE-compatible Browser 
		if(($char >= 48 && $char <= 57) || $char == 13) {
			if (obj.value.length == 2 && obj.value.substr(0, 2) != '08') {
				$RetVal = false; 
				alert('ѾͶ͵ͧ鹵鹴 08 ҹ!');
			} else {
				$RetVal = true; 
			}
		} else { 
			$RetVal = false; 
			alert('͡繵Ţҹ!');
		}
	}
	return $RetVal;
}

function IsNumeric(obj, text) {
	var ValidChars = "0123456789.";
	var bFlag = true;
	var Char;
	if (obj.value == '') {
		bFlag = false;
	} else {
		for (i = 0; i < obj.value.length && bFlag == true; i++) { 
			Char = obj.value.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) {
				bFlag = false;
			}
		}
	}
	
	if (bFlag == false) {
		alert(text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}

function checkThaiIDCard(obj, text){
	var Sum = 0;
	var Mod = 0;
	var Pointter = 0;
	var bPass = true;
	var ID = obj.value;
	
	if(ID.length != 13){
		bPass = false;
	}else{
		for(var i=0;i<13;i++){
				if(!((ID.charCodeAt(i)>=48) && (ID.charCodeAt(i)<=57))){
					bPass = false;
				}else{
					if(i<12){
						Sum=parseInt(Sum + parseInt(ID.charAt(i) * parseInt(13 - i)));
					}else{
						Mod=parseInt(Sum % 11);
						if(Mod==0){
							Pointter=1;
						}else if(Mod==1){
							Pointter=0;
						}else{
							Pointter=parseInt(11 - Mod);
						}
						
						if(Pointter==ID.charAt(12)){
								bPass = true;
						}else{
								bPass = false;
						}
				}
			}
		}
	}
	
	if (!bPass) {
		alert(text);
		obj.focus();
		return false;
	} else {
		return true;
	}
}
		
/*	Sample source code for  validate from
function validateForm(form) {
	if (!(	checkText(form.name, '', 'سҡ͡´¤') &&
			checkText(form.lastname, '', 'سҡ͡ʡ´¤') &&
			checkText(form.ename, '', 'سҡ͡ѧɴ¤') &&
			checkText(form.elastname, '', 'سҡ͡ʡѧɴ¤') &&
			checkEmail(form.email, 'سҡ͡ email ١ͧ¤') &&
			checkPassword(form.password, form.cpassword, 'سҡ͡ʼҹ١ͧ¤') &&
			checkText(form.address, '', 'سҡ͡¤') &&
			checkDate(form.date, form.month, form.year, 'سҡ͡ѹԴ¤') &&
			checkText(form.job, 'س͡Ҫվ¤', 'س͡Ҫվ¤'))) {
		return false;
	} else {
		return true;
	}
}
*/