  	function CheckProductID(str)
  	{
	  	var ret = true;
	  	var ascii;
		
		for (var i = 0; i < str.length; i++)
		{
			ascii = str.charCodeAt(i);
			
			// ascii 48-57="0-9", 65-70="A-f", 97-102="a-f"
			if ((ascii < 48 || ascii > 57) && (ascii < 65 || ascii > 70) && (ascii < 97 || ascii > 102))
			{ 	
				ret = false;
				break;
			}
		}
		return ret;
	}
	
	//---------------------------------------------------------------------------------------------------------------
	// CheckEmail : String must have ascii is 48-57="0-9", 65-90="A-Z", 97-122="a-z", 64="@", 45="-", 95="_", 46="."  	
	//---------------------------------------------------------------------------------------------------------------
	function CheckEmail(str)
	{
		var ret = true;
	  	var ascii;
		
		if (str.indexOf("@",1) == -1) return false;
		if (str.indexOf(".",1) == -1) return false;
		if (str.indexOf("@") == (str.length - 1) || str.indexOf(".") == (str.length -1)) return false;
		
		for (var i = 0; i < str.length; i++)
		{
			ascii = str.charCodeAt(i);
			
			// ascii 48-57="0-9", 65-90="A-Z", 97-122="a-z", 64="@", 45="-", 95="_", 46="."
			if ((ascii < 48 || ascii > 57) && (ascii < 65 || ascii > 90) && (ascii < 97 || ascii > 122) &&
			 ascii != 45 && ascii != 46 && ascii != 64 && ascii != 95)
			{ 					
				ret = false;			
				break;
			}
		}
		return ret;	
	}
	
	//---------------------------------------------------------------------------------------------------------------
	// CheckPassword : String must have ascii is 48-57="0-9", 65-90="A-Z", 97-122="a-z", 
	// 35=#, 37=%, 40=(, 41=), 45=-,  
	// 64=@, 91=[, 93=], 95=_	
	// [a-z], [A-Z], [0-9], [ @#%_-()[] ] 	
	//---------------------------------------------------------------------------------------------------------------
	function CheckPassword(str)
	{
		var ret = true;
	  	var ascii;	
		
		for (var i = 0; i < str.length; i++)
		{
			ascii = str.charCodeAt(i);	
			
			if ((ascii < 48 || ascii > 57) && (ascii < 65 || ascii > 90) && (ascii < 97 || ascii > 122) &&
			   ascii != 35 && ascii != 37 && ascii != 40 && ascii != 41 && ascii != 45 && ascii != 64 && 
			   ascii != 91 && ascii != 93 && ascii != 95)
				{ 					
					ret = false;					
					break;
				}
		}
		return ret;	
	}
  	
  	//---------------------------------------------------------------------------------
	// IsEnglishString : String must have ascii is 48-57="0-9", 65-90="A-Z", 97-122="a-z"  	
	//---------------------------------------------------------------------------------
	function IsEnglishString(str)
	{
		var ret = true;		
		var ascii;
		
		for (var i = 0; i < str.length; i++)
		{
			ascii = str.charCodeAt(i);
			
			// ascii 48-57="0-9", 65-90="A-Z", 97-122="a-z"
			if ((ascii < 48 || ascii > 57) && (ascii < 65 || ascii > 90) && (ascii < 97 || ascii > 122))
			{ 	
				ret = false;
				break;
			}
		}
		return ret;	
	}
	
	//---------------------------------------------------------------------------------
	// IsEnglishString : String must have ascii is 48-57="0-9", 65-90="A-Z", 97-122="a-z"  	
	//---------------------------------------------------------------------------------
	function CheckStringName(str)
	{
		var ret = true;		
		var ascii;
		
		/*var tests = "_";
		alert(tests + "," + tests.charCodeAt(0));
		tests = "-";
		alert(tests + "," + tests.charCodeAt(0));
		tests = " ";
		alert(tests + "," + tests.charCodeAt(0));*/
		
		for (var i = 0; i < str.length; i++)
		{	
			ascii = str.charCodeAt(i);
			
			// ascii 48-57="0-9", 65-90="A-Z", 97-122="a-z", 32=" ", 45="-", 46="."
			if ((ascii < 48 || ascii > 57) && (ascii < 65 || ascii > 90) && (ascii < 97 || ascii > 122) 
			&& ascii != 32 && ascii != 45 && ascii != 95 && ascii != 46)
			{ 	
				ret = false;
				break;
			}
		}
		return ret;	
	}
	
	//-----------------------------------------------------------------------------
	// IsNumber : string must have ascii is 48-57="0-9"
	//-----------------------------------------------------------------------------
	function IsNumber(str)
	{
		var ret = true;		
		var ascii;
		
		for (var i = 0; i < str.length; i++)
		{
			ascii = str.charCodeAt(i);
			
			// ascii 48-57="0-9"
			if (ascii < 48 || ascii > 57)
			{ 	
				ret = false;
				break;
			}
		}
		return ret;		
	}
	
	//-----------------------------------------------------------------------
	// CheckLengthString : String length is < 8
	//-----------------------------------------------------------------------
	function CheckLengthString(str)
	{
		if (str.length <= 8) return true;
		else return false;		
	}
	
	function IsHourFormat(data)
	{	
		if (data >= 0 && data < 24) return true;
		else return false;		
	}
	
	function IsMinuteSecondFormat(data)
	{
		if (data >= 0 && data < 60) return true;
		else return false;		
	}
	
	//Check Browser*******************************************************************
	
	function browserIsIE()
	{	
		//Netscape	
		if (navigator.appName == "Microsoft Internet Explorer")		
			var isIE = true;		
		else 
			var isIE = false;					
				
		return isIE;
	}
	
	function browserIsIE5()
	{	
		if (browserIsIE)		
			if (navigator.appVersion.indexOf("MSIE 5") != -1) return true;	
				
		return false; 
	}
	
	//set cursor********************************************************************
	function setCursorWait()
	{	
		for (var i=0;i < document.all.length; i++)  document.all(i).style.cursor = 'wait';
	}
	
	function setCursorArrow()
	{	
		for (var i=0;i < document.all.length; i++)  document.all(i).style.cursor = 'default';		
	}
	
	//key****************************************************************************
	//-------------------------------------------------------------------
	//CheckKeyPressNumber : Check character when press key is number.
	//-------------------------------------------------------------------
	function CheckKeyPressNumber(evt)
	{	
		var mEvent = (isIE)? event : evt;
		var key = (isIE)? mEvent.keyCode : mEvent.which;
		
		//backspace => 8
		//NumLock number 0-9 => 48-57
		//0-9 => 48-57		
		//Enter => 13
		//Insert => 45
		//Del => 0
		//Tab => 0
		//arrow => 0
		if (!((key >=48 && key <=57) || (key == 8) || (key == 13)))
		{
			if (isIE)
				mEvent.returnValue = false;		
			else
				mEvent.preventDefault();	
		}		
	}		
		
    // string funciton*****************************************************************
    //-------------------------------------------------------------------
	// LTrim : Returns a string without leading spaces.
	//-------------------------------------------------------------------
	function LTrim(str)
	{	
		var whitespace = new String(" \t\n\r");
	    var s = new String(str);
	    
	    if (whitespace.indexOf(s.charAt(0)) != -1) 
	    {	     
	      var j=0, i = s.length;
	    
	      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
	         j++;
	         	   
	      s = s.substring(j, i);
		}		
		return s;
	}	

	//------------------------------------------------------------------------
	// RTrim(string) : Returns a copy of a string without trailing spaces.
	//------------------------------------------------------------------------
	function RTrim(str)
	{
		var whitespace = new String(" \t\n\r");
   		var s = new String(str);

		if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
		{
		 		
		  	var i = s.length - 1;       // Get length of string
		  			
		    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
		        i--;		
		    
		    s = s.substring(0, i+1);
		}		
		return s;
	}	

	//-----------------------------------------------------------------------------
	// Trim(string) : Returns a copy of a string without leading or trailing spaces
	//-----------------------------------------------------------------------------
	function Trim(str)	
	{  	
	   return RTrim(LTrim(str));
	}	
	
	//Image button *******************************************************************
	// function image out and over
	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}
	
	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}
	
	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	
	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}
	
	function resizeMe(objname)
	{ 
				
		obj = document.getElementById(objname);	
		
		docHeight = obj.document.body.scrollHeight;
		
		alert(obj.name + ": " + docHeight);
 		obj.style.height = docHeight + 'px';
 	} 	
 	
 	/*function resizeMe()
	{ 				
		var obj = document.getElementById('fme_left_top');
		var obj_bottom = document.getElementById('fme_left_bottom');	
		var docHeight = obj.document.body.scrollHeight;
		var docHeight_bottom = obj_bottom.document.body.scrollHeight;
		
		alert(obj.name + ": " + docHeight);
		alert(obj_bottom.name + ": " + docHeight_bottom);
 		obj.style.height = docHeight + 'px';
 		obj_bottom.style.height = docHeight_bottom + 'px';
 	} */
 	 	 	
 	function setHeightFmeLeftTop()
	{			
		window.parent.document.getElementById('fme_left_top').style.height = document.body.scrollHeight;
	}
	
	function setHeightFmeLeftBottom()
	{		
		window.parent.document.getElementById('fme_left_bottom').style.height = document.body.scrollHeight;
	}
	
	function setHeightFmeRightTop()
	{		
		window.parent.document.getElementById('fme_right_top').style.height = document.body.scrollHeight;
	}
	
	function setHeightFrame(obj, docHeight)
	{	
		window.parent.document.getElementById(obj).style.height = docHeight;
	}
	
	//encode, decode data*********************************************************
	function fncEncodeValue(data)
	{
		var chr = newdata = "";					
						
		for (var i=0; i<data.length; i++) 
		{   
			chrCode = data.charCodeAt(i) + 3;
			chr = "000000" + chrCode;		
			newdata += chr.substr(chr.length - 6,6);			
			
			if (i == 0)	newdata ^= 143815;				
		}
		return newdata;		
	}
	
	function fncDecodeValue(data)
	{	
		var str = "";	
		var chr;
			
		for (var i=0; i<data.length; i+=6)
		{	
			chr = data.substr(i,6);			
			if (i == 0)	chr ^= 143815; 						
			chr = chr - 3;						
			str += String.fromCharCode(chr);        
		}
		return str;
	}