// JavaScript Document
//-----------------------------------------------
function IsAlpha(sChar)
{
	//This function returns true if the character passed is a letter of our alphabet
	if(sChar.length != 1)
	{
		return false;
	}
	var sChar1, sChar2;
	sChar1 = sChar.toLowerCase();
	sChar2 = sChar.toUpperCase();
	if (sChar1 == sChar2)
	{
		return false;
	}
	else
	{
		return true;
	}
}
function IsNumer(sChar)
{
	//This function returns true if the character passed is a single digit number
	if(sChar.length != 1)
	{
		return false;
	}
	sNumbers = '0123456789';	
	for(i=0; i<10; i++)
	{
		if(sNumbers.substr(i,1) == sChar)
		{
			return true;
		}
	}		
	return false;	
}	

function numFormat(elem, lead, sep)
{
	if (elem.value == '') 
	{
		elem.value = format('0', lead, sep);
		return true;
	}	
	var value = parseInt(cleanNumber(elem.value), 10);
	if (lead == '') 
	{
		if (0 > value)
		{
			alert('You have exceeded the range for the interior size.\nPlease check your information and try again.');
			value = 0;
		}		
		if (value > 9999999999999) 
		{
			alert('You have exceeded the range for the interior size.\nPlease check your information and try again.');
			value = 9999999999999;
		}
	}
	if (isNaN(value)) 
	{
		alert('You have entered an incorrect character on this field. \nPlease check your information and try again.');
		elem.value = format('0', lead, sep);
		elem.focus();
		return false;
	}
	elem.value = format(value, lead, sep);
	return true;
}

function format(value, lead, sep)
{
	var strValue = new String(value);
	var len = strValue.length;
	var n;
	var strRet = '';
	var ctChar = 3 - (len%3);
	if (ctChar == 3) ctChar =0;
	for (n=0; len > n; n++) {
		if (ctChar == 3) {
			strRet += sep;
			ctChar = 0;
		}
		ctChar++;
		strRet += strValue.substring(n,n+1)		
	}
	if (lead == '%') 
	{
		return strRet + lead;
	}
	else 
	{
		return lead + strRet;
	}
}

function replace(szBuf, szFind, szReplace, lStart)
{
	var lFind = 0;
	if (!lStart) lStart = 0;
	
	while (lFind != -1) {
		lFind = szBuf.indexOf(szFind, lStart);

		if (lFind != -1) {
			szBuf = szBuf.substring(0,lFind) + szReplace + szBuf.substring(lFind + szFind.length);
			lStart = lFind + szReplace.length;
		}
	}
	return szBuf;
}

function cleanNumber(strNum)
{
	if (!strNum) return strNum;
	strNum = replace(strNum, '$', '', 0);
	strNum = replace(strNum, ',', '', 0);
	strNum = replace(strNum, '%', '', 0);	
	return strNum;
}


function onIntChange(pElem)
{
	var v = cleanNumber(pElem.value);
	var bInvalid = false;
	
	if (isNaN(Number(v)))
	{
		bInvalid = true;
	}	
	numFormat(pElem, '', '');
	return(true);
}

function isDate (year, month, day)
	{
		if(parseInt(year)<1900 || parseInt(year)>2007)
			return false;
		month--;
		var objTempDate = new Date(year,month,day);
		return	( 
						( objTempDate.getFullYear() == year  ) &&
						( objTempDate.getMonth()    == month ) &&
						( objTempDate.getDate()     == day)  
					)  ? true : false;
	}
	//fn

function CkIDcard(ID){
				var Sum = 0;
				var Mod = 0;
				var Pointter = 0;
				if(ID.length != 13){
						return false;
				}else{
						for(var i=0;i<13;i++){
								if(!((ID.charCodeAt(i)>=48) && (ID.charCodeAt(i)<=57))){
										return 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)){
														return true;
												}else{
														return false;
												}
										}
								}
						}
				}
		}

//fn IDcard

function check_register(frmObj)
{
	var str_err = "";
	var obj_err = "";
	
	var text = frmObj.s_email;
	filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;	
	text = frmObj.s_email;
	if(!filter.test(text.value)) 
	{
		str_err += "\n - Email";
		if(!obj_err)
			obj_err = text;
	}

	text = frmObj.s_pwd1;
	if(!filter.test(text.value)) 
	{
		str_err += "\n - Password";
		if(!obj_err)
			obj_err = text;
	}

	if(text.value!=frmObj.s_pwd2.value) 
	{
		str_err += "\n - ยืนยัน Password";
		if(!obj_err)
			obj_err =frmObj.s_pwd2;
	}

  text  = frmObj.s_idcard;
	if(!CkIDcard(text.value))
		{
			str_err += "\n - ระบุหมายเลขบัตรประจำตัวประชาชนไม่ถูกต้อง ";
			if(!obj_err)
				obj_err = text;
		}


	if(!isDate ((frmObj.YY.value), frmObj.MM.value, frmObj.DD.value))
		{
			str_err += "\n - วันเดือนปีออกบัตรไม่ถูกต้อง";

			if(!obj_err)
				obj_err = frmObj.YY;
		}


	if(str_err.length>0)
	{
		alert("โปรดตรวจสอบหรือระบุข้อมูลของท่าน ดังนี้"+str_err);
		if(obj_err)
			obj_err.focus();
		return false;
	}


   if(!confirm("ตรวจสอบข้อมูลเรียบร้อย"))
	    	{
						return false;
    		 }
	
	return true;

}
//fn chk_register

function check_userpass() {
e_k=event.keyCode
if ((e_k < 13) || (e_k >13 && e_k < 45) || (e_k > 45 && e_k < 48) || (e_k > 57 && e_k < 65) || (e_k > 90 && e_k < 95) || (e_k > 95 && e_k < 97) || (e_k > 122)) {
event.returnValue = false;
alert("ต้องเป็นตัวอักษรภาษาอังกฤษ (a-z, A-Z), ตัวเลข (0-9), เครื่องหมาย \"-\", เครื่องหมาย \"_\" เท่านั้น  \nและห้ามมีการเว้นวรรคเด็ดขาด กรุณาตรวจสอบข้อมูลของท่านอีกครั้ง... \n(Must be at letters(a-z, A-Z), number (0-9), \"-\" sign, \"_\" sign, but no space \nPlease enter your information again...)");
}
}

function noCTRL(e)
{
var code = (document.all) ? event.keyCode:e.which;
var ctrl = (document.all) ? event.ctrlKey:e.modifiers & Event.CONTROL_MASK; 
var msg = "Sorry, this functionality is disabled.";
if (document.all)
{
if (ctrl && code==86) //CTRL+V
{
alert(msg);
window.event.returnValue = false;
}
else if (ctrl && code==67) //CTRL+C (Copy)
{
alert(msg);
window.event.returnValue = false;
}
}
else {
if (ctrl==2) //CTRL key
{
alert(msg);
return false;
}
}
} 

//-------------- Right click
//var message="Sorry, that function is disabled."// \nThis Page Copyrighted and\nImages and Text protected!\nALL RIGHTS RESERVED"; 

// Don't edit below! 
/*
function click(e) { 
if (document.all) { 
if (event.button == 2) { 
alert(message); 
return false; 
} 
} 
if (document.layers) { 
if (e.which == 3) { 
alert(message); 
return false; 
} 
} 
} 
if (document.layers) { 
document.captureEvents(Event.mousedown); 
} 
document.onmousedown=click; 
// --> */




function check_email() {
e_k=event.keyCode
if ((e_k > 160)) {
event.returnValue = false;
alert("ต้องเป็นตัวอักษรภาษาอังกฤษเท่านั้น และห้ามมีการเว้นวรรคเด็ดขาด \nกรุณาตรวจสอบข้อมูลของท่านอีกครั้ง...\n(Must be at English characters Please enter your information again...)");
}
}

function check_onlyEn() {
e_k=event.keyCode
if ((e_k > 160)) {
event.returnValue = false;
alert("ต้องเป็นตัวอักษรภาษาอังกฤษเท่านั้น  \nกรุณาตรวจสอบข้อมูลของท่านอีกครั้ง...\n(Must be at English characters Please enter your information again...)");
}
}

function check_number() {
e_k=event.keyCode
//if (((e_k < 48) || (e_k > 57)) && e_k != 46 ) {
if (e_k != 13 && (e_k < 48) || (e_k > 57)) {
event.returnValue = false;
alert("ต้องเป็นตัวเลขเท่านั้น กรุณาตรวจสอบข้อมูลของท่านอีกครั้ง...\n(Must be at Number Please enter your information again...)");
}
}

function checkdelete(xurl){
	if(confirm("Are you sure you want to delete this item?")){
		window.open(xurl,'popup','menubar=0,scrollbars=0,width=1,height=1,left=5000,top=5000');
		return false;
	}
		else{return false}
}// fn

var MsgConfirmLogout = "Are you sure you want to logout?";
function jsFn_ConfirmLogout(){		return confirm(MsgConfirmLogout);		}//fn

//-----------------------------------------------
var MsgAlertForSearch = "Please input data for search.";
function jsFn_AlertForSearch(){	alert(MsgAlertForSearch);		}//fn

//-----------------------------------------------

var MsgConfirmInsert = "Are you sure you want to save?";
var MsgConfirmUpdate = "Are you sure you want to save change?";
var MsgConfirmDelete = "Are you sure you want to delete?";
var MsgConfirmClose = "Are you sure you want to close window?";
var MsgConfirmReset = "Are you sure you want to reset form?";

function jsFn_ConfirmInsert(){		return confirm(MsgConfirmInsert);		}//fn
function jsFn_ConfirmUpdate(){		return confirm(MsgConfirmUpdate);	}//fn
function jsFn_ConfirmDelete(){		return confirm(MsgConfirmDelete);		}//fn
function jsFn_ConfirmClose(){		return confirm(MsgConfirmClose);		}//fn
function jsFn_ConfirmReset(){		return confirm(MsgConfirmReset);		}//fn
//-----------------------------------------------

var MsgDuplicateForInsert = "คุณไม่สามารถบันทึก รายการที่มีอยู่แล้วได้";
var MsgDuplicateForUpdate = "คุณไม่สามารถบันทึกการเปลี่ยนแปลง รายการที่มีอยู่แล้วได้";
var MsgDataInUseForDelete = "คุณไม่สามารถลบ รายการที่มีการนำไปใช้งานแล้ว";
var MsgWrongCondition = "คุณกรอกข้อมูล";

function jsFn_ChkErrorForAlert(errType, message, message2){
	var msgAlert = message?message:"";
	var msgAlertCondition = message2?message2:"";
	switch(errType.toLowerCase()){
		case "duplicateforinsert" : //DuplicateForInsert 			
			alert(MsgDuplicateForInsert);			break;
		case "duplicateforinsertnew" : //DuplicateForInsertNew
			alert(MsgDuplicateForInsertNew);			break;
		case "duplicateforupdate" : //DuplicateForUpdate
			alert(MsgDuplicateForUpdate);		break;
		case "datainusefordelete" : //DataInUseForDelete
			alert(MsgDataInUseForDelete);		break;
	}//switch
}//fn
//-----------------------------------------------

var msgAlert_IsValidDate = "รูปแบบของวันที่เป็น dd/MM/yyyy (ex. 02/10/2004)";
var msgAlert_IsValidTime = "รูปแบบของเวลาเป็น hh:mm (ex. 12:50)";
var msgAlert_IsValidUnitTime = "รูปแบบของเวลาเป็น hh:mm:ss (ex. 12:50:56)";
var msgKeyIn = "กรุณากรอกข้อมูล";
var msgChoose = "กรุณาเลือก";

var gIsThaiYear=false;

//Return False เมื่อไม่มีค่า หรือไม่เท่ากับ Default ในกรณีที่เป็น Select 
//Return True เมื่อมีค่า
function jsFn_ChkField(obj, type, message, v1, v2){
	if(obj==null)	return false;
	var returnV=false;
	var msgAlert = message?message:"";
	switch(type.toLowerCase()){
		case "text" : //text, textarea, password, hidden
			//Option Param v1=Min ,v2=Max
			returnV = jsFn_ChkTEXT(obj, msgAlert, v1, v2);			break;
		case "money" :
			//Option Param v1=Min ,v2=Max
			returnV = jsFn_ChkMONEY(obj, msgAlert, v1, v2);	break;
		case "number" :
			//Option Param v1=Min ,v2=Max
			returnV = jsFn_ChkNUMBER(obj, msgAlert, v1, v2);	break;
		case "select" :
			//v1 is ค่าที่เป็น Default ของ select เช่น {กรุณาเลือก...}	
			//จะ return false ถ้า selected.value=v1
			returnV = jsFn_ChkSELECT(obj, msgAlert, v1);		break;
		case "checkbox" :
			returnV = jsFn_ChkCHECKBOX(obj, msgAlert);   	break;
		case "radio" :
			returnV = jsFn_ChkRADIO(obj, msgAlert);				break;
		case "email" :
			returnV = jsFn_ChkEMAIL(obj, msgAlert);					break;
		case "emails" :
			returnV = jsFn_ChkEMAILS(obj, msgAlert);				break;
		case "date" ://Format (dd/mm/yyyy)
			returnV = jsFn_ChkDATE(obj, msgAlert);					break;
		case "dateselect" ://Format (dd/mm/yyyy)
			returnV = jsFn_ChkDATE_Select(obj, msgAlert);		break;
		case "time" ://Time Format (hh:mm)
			returnV = jsFn_ChkTIME(obj, msgAlert);					break;
		case "unittime" ://Unit of Time (จำนวนชั่วโมง:จำนวนนาที:จำนวนวินาที)
			returnV = jsFn_ChkUnitTIME(obj, msgAlert);				break;
		case "file" : 
			returnV = jsFn_ChkTEXT(obj, msgAlert);					break;
		case "regexp" : 
			//v1=ValidationExpression สำหรับใช้ที่ RegExp
			returnV = jsFn_ChkRegExp(obj, msgAlert, v1);			break;
	}//switch
	return returnV;
}//fn
//-----------------------------------------------
//-----------------------------------------------

function jsFn_ChkRegExp(obj, msgAlert, vExpression){
	if(!jsFn_IsContainSomething(obj)){		
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgAlert);
		try{obj.focus();}catch(er){}	return false;	
	}//if
	if(vExpression!=null){
		if(!jsFn_RegularExpressionValidatorEvaluateIsValid(obj.value, vExpression)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgAlert);
			try{obj.focus();}catch(er){}	return false;				
		}//if
	}//if
	return true;
}//fn

function jsFn_ChkTEXT(obj, msgAlert, vMin, vMax){
	if(!jsFn_IsContainSomething(obj)){		
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ");
		try{obj.focus();}catch(er){}	return false;	
	}//if	
	if(vMin!=null && vMax!=null){
		if(!jsFn_IsInRange(obj.value.length, parseInt(vMin), parseInt(vMax))){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ระหว่าง "+vMin+" ถึง "+vMax +" ตัวอักษร");
			try{obj.focus();}catch(er){}	return false;				
		}//if
	}//if
	return true;
}//fn

function jsFn_ChkMONEY(obj, msgAlert, vMin, vMax){
	if(!jsFn_IsMoney(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ให้ถูกต้อง");
		try{obj.focus();}catch(er){}	return false;	
	}//if
	if(vMin!=null && vMax!=null ){		
		if(!jsFn_IsInRange(obj.value, vMin, vMax)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ระหว่าง "+vMin+" และ "+vMax);
			try{obj.focus();}catch(er){}	return false;				
		}//if
	}//if
	return true;
}//fn

function jsFn_ChkNUMBER(obj, msgAlert, vMin, vMax){
	if(!jsFn_IsNumber(obj)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" เป็นตัวเลขเท่านั้น");
		try{obj.focus();}catch(er){}	return false;	
	}//if
	if(vMin!=null && vMax!=null ){		
		if(!jsFn_IsInRange(obj.value, vMin, vMax)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ระหว่าง "+vMin+" และ "+vMax);
			try{obj.focus();}catch(er){}	return false;				
		}//if
	}//if
	return true;
}//fn

function jsFn_ChkSELECT(obj, msgAlert, v1){
	if(!jsFn_IsSelected(obj, v1)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgChoose+" \""+msgAlert+"\" ");
		try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;		
}//fn

function jsFn_ChkCHECKBOX(obj, msgAlert){
	if(!jsFn_IsChecked(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgChoose+" \""+msgAlert+"\" ");
		if(obj.length) try{obj[0].focus();}catch(er){}
		else try{obj.focus();}catch(er){}	
		return false;	
	}//if
	return true;	
}//fn

function jsFn_ChkRADIO(obj, msgAlert){
	if(!jsFn_IsChecked(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgChoose+" \""+msgAlert+"\" ");	
		if(obj.length) try{obj[0].focus();}catch(er){}
		else try{obj.focus();}catch(er){}	
		return false;	
	}//if
	return true;		
}//fn

function jsFn_ChkEMAIL(obj, msgAlert){
	if(!jsFn_IsContainSomething(obj)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"");
		try{obj.focus();}catch(er){}	return false;	
	}//if

	if(!jsFn_IsValidEmail(obj.value)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ให้ถูกต้อง");
		try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkEMAILS(obj, msgAlert){
	if(!jsFn_IsContainSomething(obj)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"");
		try{obj.focus();}catch(er){}	return false;	
	}//if

	if(obj.value.indexOf(",")==-1){
		return jsFn_ChkEMAIL(obj, msgAlert);
	}else{
		var objVals = obj.value.split(",");
		for(var i=0; i<objVals.length; i++){
			objVals[i] = jsFn_trim(objVals[i]);
			if(!jsFn_IsValidEmail(objVals[i])){
				if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" ให้ถูกต้อง");
				try{obj.focus();}catch(er){}	return false;	
			}//if
		}//for
		return true;
	}//if
}//fn

function jsFn_ChkTIME(obj, msgAlert){
	if(!jsFn_IsValidTime(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"  ให้ถูกต้อง\n"+msgAlert_IsValidTime);
		obj.value="";	try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkUnitTIME(obj, msgAlert){
	if(!jsFn_IsValidUnitTime(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"  ให้ถูกต้อง\n"+msgAlert_IsValidUnitTime);
		obj.value="";	try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkDATE(obj, msgAlert){
	if(!jsFn_IsValidDate(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" \n"+msgAlert_IsValidDate);
		try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkDATE_Select(obj, msgAlert){
	if(!jsFn_IsValidDate(obj)){	
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgAlert+" is invalid, please try again");
		try{obj.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkStartFinishDate(objStartD, objFinishD, msgAlert){
	if(!jsFn_IsStartBeforeFinishDate(objStartD, objFinishD)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" \n"+msgAlert_IsValidDate);
		/*objStartD.value="";	objFinishD.value="";*/	try{objFinishD.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn

function jsFn_ChkStartFinishTime(objStartT, objFinishT, msgAlert){	
	if(!jsFn_IsStartBeforeFinishTime(objStartT, objFinishT)){
		if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\" \n"+msgAlert_IsValidTime);
		/*objStartT.value="";	objFinishT.value="";	*/	try{objFinishT.focus();}catch(er){}	return false;	
	}//if
	return true;
}//fn
//-----------------------------------------------

function jsFn_FormatTIME(obj, msgAlert){
	if(obj.value.length==4 || obj.value.length==5){
		jsFn_ChgFormatTime(obj);
		if(!jsFn_IsValidTime(obj)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"  ให้ถูกต้อง\n"+msgAlert_IsValidTime);
			obj.value="";	try{obj.focus();}catch(er){}	return false;	
		}//if
	}//if
	return true;
}//

function jsFn_FormatUnitTIME(obj, msgAlert){//จำนวนชั่วโมง:จำนวนนาที:จำนวนวินาที
	if(obj.value.length==6 || obj.value.length==7){
		var ov=obj.value;
		if(ov.length==6 || ov.length==7 ||ov.length==8){
			ov = ov.replace(/:/g,'');
			ov = ov.substring(0,2)+":"+ov.substring(2,4)+":"+ov.substring(4,6);
			obj.value=ov;
		}//if		
		
		if(!jsFn_IsValidUnitTime(obj)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"  ให้ถูกต้อง\n"+msgAlert_IsValidUnitTime);
			obj.value="";	try{obj.focus();}catch(er){}	return false;	
		}//if
	}//if
	return true;
}//

function jsFn_FormatDATE(obj, msgAlert){
	jsFn_ChgFormatDate(obj);
	if(obj.value.length==10){
		if(!jsFn_IsValidDate(obj)){
			if(msgAlert!=null && msgAlert.length >0 )	alert(msgKeyIn+" \""+msgAlert+"\"  ให้ถูกต้อง\n"+msgAlert_IsValidDate);
			obj.value="";	try{obj.focus();}catch(er){}	return false;	
		}//if
	}
	return true;
}//

//-----------------------------------------------
function jsFn_IsValidUnitTime(obj){
	if(!jsFn_IsContainSomething(obj))		return false;	
	var ov=obj.value;	
	if(ov.length==8){
		var timePat=/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/
		var ovArray=ov.match(timePat);
		if(ovArray!=null)
			return true;
		else
			return false;		
	}//if
}//fn

function jsFn_IsValidTime(obj){
	if(!jsFn_IsContainSomething(obj))		return false;	
	//hh  is an integer (0 thru 23)
	//mm is an integer (0 thru 59)
	var ov=obj.value;	
	if(ov.length==5){
		var timePat=/^(\d{1,2}):(\d{1,2})$/
		var ovArray=ov.match(timePat);
		if(ovArray!=null){
			if(ovArray[1]>23 || ovArray[2]>59)	return false;	else	return true;
		}else{
			return false;
		}//if	
	}//if
}//fn

// Check if obj contains a valid date of the form dd/mm/yyyy
function jsFn_IsValidDate(obj){
	if(!jsFn_IsContainSomething(obj))	return false;

	var indate=obj.value;
	var sdate = indate.split("/");
	var syear = Math.abs(sdate[2]);	
	if(syear-(gIsThaiYear?543:0) < 1900)	return false;
	var indateEN = (Math.abs(sdate[1]))+"/"+(Math.abs(sdate[0]))+"/"+(syear-(gIsThaiYear?543:0));
	var chkDate = new Date(Date.parse(indateEN));
	var cmpDate = (chkDate.getMonth()+1)+"/"+(chkDate.getDate())+"/"+(chkDate.getFullYear());	
	if(indateEN != cmpDate || cmpDate == "NaN/NaN/NaN")
		return false;
	else
		return true;	
}//fn

function jsFn_IsContainSomething(obj){
   if((obj.type == "text") || (obj.type == "textarea") || (obj.type == "password") || (obj.type == "hidden") || (obj.type == "file") ){
      if(obj.value=="")	return false;
	  obj.value = jsFn_trim(obj.value);
	  if(obj.value.length ==0)
		  return false;
	  else
		  return true;
   }//if	
}//fn

function jsFn_IsChecked(obj){
	if(obj.length){//have more one
		for(var i=0; i < obj.length ; i++){
			if(obj[i].checked)	return true;
		}//for
	}else{//have one
		if(obj.checked)	return true;
	}//if
	return false;
}//fn

function jsFn_IsSelected(obj, chkVal){
	with(obj){
		var length = options.length;				
		for(var i=0;i<length;i++){	
			if(options[i].selected){
				if(chkVal!=null){
					if(options[i].value!=chkVal)	return true;
				}else	return true;
			}//if
		}//for
	}//with
	return false;
}//fn

// Check for valid (ie containg "@", ".", 
// and more than 6 characters) email-address in Field
function jsFn_IsValidEmail(emailStr){
	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;
	}//if
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null) {
		return false;
	}//if
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
			}//if
		}//for
		return true;
	}//if
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		return false;
	}//if
	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
	if (len<2) {
	   return false;
	}//if
	return true;
}//fn

// Check if Field contains only letters
function jsFn_IsOnlyLetters(obj){
	var Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for (i=0; i < obj.value.length; i++){
		if(Letters.indexOf(obj.value.charAt(i).toUpperCase()) == -1){	return false;	}
   }//for
   return true;
}//fn

function jsFn_IsMoney(obj){
	if(!jsFn_IsContainSomething(obj))
		return false;

	obj.value = obj.value.replace(/,/g,'');
	if(!isFinite(obj.value) || isNaN(parseFloat(obj.value))){
		obj.value="";	try{obj.focus();}catch(er){}
		return false;
	}else{
		return true;
	}//if		
}//fn

function jsFn_IsNumber(obj){
	if(!jsFn_IsContainSomething(obj))
		return false;

	MyStr = new String();
	MyStr = obj.value;
	for(var i=0 ; i<MyStr.length; i++)	{
		if(isNaN(parseInt(MyStr.charAt(i))))		{
			//alert("กรุณาใส่ข้อมูลเฉพาะตัวเลขเท่านั้น");
			obj.value = "";
			if(i != 0){			
				for(var j=0; j<i; j++)
					obj.value += MyStr.charAt(j); 
			}//if
			return false;
		}//if
	}//for
	return true;
}//fn

// Check if Field contains only digits in range Min to Max
function jsFn_IsInRange(objVal, Min, Max){
    if(objVal < Min || Max < objVal)
		return false;
	else
	    return true;
}//fn

function jsFn_IsStartBeforeFinishDate(objStartD, objFinishD){
	var startDs = objStartD.value.split("/");
	var finishDs = objFinishD.value.split("/");

	if(Math.abs(startDs[2]) < Math.abs(finishDs[2])){	return true;
	}else{
		if(Math.abs(startDs[2]) > Math.abs(finishDs[2])){	return false;	
		}else{
			if(Math.abs(startDs[2]) == Math.abs(finishDs[2])){
				if(Math.abs(startDs[1]) < Math.abs(finishDs[1])){	return true;
				}else{
					if(Math.abs(startDs[1]) > Math.abs(finishDs[1])){	return false;
					}else{
						if(Math.abs(startDs[1]) == Math.abs(finishDs[1])){
							if(Math.abs(startDs[0]) <= Math.abs(finishDs[0]))	return true;
							else	return false;
						}
					}//if
				}//if
			}//if
		}//if
	}//if
	return true;
}//fn

function jsFn_IsStartBeforeFinishTime(objStartT, objFinishT){
	//time format is hh:mm
	var stv = objStartT.value.split(":");	
	var ftv = objFinishT.value.split(":");
	if(Math.abs(stv[0]) > Math.abs(ftv[0])){	return false;
	}else{
		if(Math.abs(stv[0]) == Math.abs(ftv[0]))
			if(Math.abs(stv[1]) > Math.abs(ftv[1]))
				return false;
	}//if
	return true;
}//fn

//-----------------------------------------------
function jsFn_ChgFormatDate(obj){
	var ov=obj.value;
	ov = ov.replace(/\//g,'');
	if(ov.length==8){
		ov = ov.substring(0,2)+"/"+ov.substring(2,4)+"/"+ov.substring(4,8);
		obj.value=ov;
	}//if
}//

function jsFn_ChgFormatTime(obj){
	var ov=obj.value;
	if(ov.length==4 || ov.length==5){
		ov = ov.replace(/:/g,'');
		ov = ov.substring(0,2)+":"+ov.substring(2,4);
		obj.value=ov;
	}//if
}//

function jsFn_trim(s){
	while (s.substring(0,1) == ' ') {//left trim
		s = s.substring(1,s.length);
	}//while
	while (s.substring(s.length-1,s.length) == ' ') {//right trim
		s = s.substring(0,s.length-1);
	}//while
	return s;
}//fn

function handleEnter(objField, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for(i = 0; i < objField.form.elements.length; i++)
			if (objField == objField.form.elements[i])
				break;
		i = (i + 1) % objField.form.elements.length;
		objField.form.elements[i].focus();
		return false;
	}else
		return true;
}//fn

//Return Value of Radio Object that checked
function jsFn_getRadioChecked(obj){
	if(obj.length){//have more one
		for(var i=0; i < obj.length ; i++){
			if(obj[i].checked)	return obj[i].value;
		}//for
	}else{//have one
		if(obj.checked)	return obj.value;
	}//if
	return "";
}//fn

//Return Value of Select Object that selected
function jsFn_getSelectSelected(obj){
	if(obj.length){//have more one
		for(var i=0; i < obj.length ; i++){
			if(obj[i].selected)	return obj[i].value;
		}//for
	}else{//have one
		if(obj.selected)	return obj.value;
	}//if
	return "";
}//fn

function jsFn_RegularExpressionValidatorEvaluateIsValid(ValueToValidate, ValidationExpression) {
    var value = ValueToValidate;        
    var rx = new RegExp(ValidationExpression);
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}
