// JavaScript Document

/*  <meta http-equiv="Content-Type" content="text/html; charset=windows-874"> */

 /* FUNCTION 1 : dateMaskValue
  * =================================
  *  
  *  parameter :
  *	
  *	1.dateIDvalue คือ id ของ Field บน page
  * แปลงวันที่ที่ปีเกิน 2399 ให้ ลบลง 543
  */

  function dateMaskValue(dateIDvalue){
	minusYEAR=543;
	maxYEAR=2399;
		if(document.getElementById(dateIDvalue)!=null){
			   dateTemp=document.getElementById(dateIDvalue).value;
			   
			   dateTempDate=new Array(3);
			  for(i=0,j=0;i<dateTemp.length&&j<3;i++){
				
						if(dateTemp.charAt(i)!="/")
						{
						  if(dateTempDate[j]==null) dateTempDate[j]="";
							dateTempDate[j]+=dateTemp.charAt(i);
						}else{				    
							j++;
						}
			  }
			  if(isNaN(dateTempDate[2])==false){
					dateTempDate[2]=parseInt(dateTempDate[2]);
					if(dateTempDate[2]>maxYEAR)
					{
						dateTempDate[2]-=minusYEAR;
					}
					
			  }
			 dateTemp= dateTempDate[0]+"/"+dateTempDate[1]+"/"+dateTempDate[2];
			 document.getElementById(dateIDvalue).value=dateTemp;
		   }
   }

   
 /* FUNCTION 1 : editMask
  * =================================
  *  
  *  parameter :
  *	
  *	1.targetID คือ id ของ Field บน page
  *	2.format รูปแบบแสดงผล เช่น
  *			XXXX 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวใหญ่เท่านั้น
  *			xxxx	 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวเล็กเท่านั้น
  *			ZZZZ	 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวใหญและตัวเล็กเท่านั้น
  *			TTTT 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาไทยเท่านั้น
  *			0000		= รูปแบบ แทนตัวเลข 4 หลัก
  *			XX-0000-X000 = AA-5544-X123 เป็นต้น
  *	     สามารถย่อจำนวนหลักของ Format Edit Mask ได้ดังนี้ จากตัวอย่ารงด้านบน
  *			X^4^ 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวใหญ่เท่านั้น
  *			x^4^ 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวเล็กเท่านั้น
  *			Z^4^	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาอังกฤษตัวใหญและตัวเล็กเท่านั้น
  *			T^4^ 	= รูปแบบ แทนตัวอักษร 4 หลัก เฉพาะภาษาไทยเท่านั้น
  *			0^4^	= รูปแบบ แทนตัวเลข 4 หลัก
  *			0~.0^2^ = รูปแบบ แทนตัวเลข ที่มีทศนิยม 2 ตำแหน่ง  (เครื่องหมาย ~ แทนการไม่จำกัดจำนวนหลักของข้อมูล)
  *			X^2^-0^4^-X0^3^ = AA-5544-X123 เป็นต้น
  *	     สามารถย่อจำนวนหลักของ Format Edit Mask ได้
  *	3.alertMsg คือ คำเตือนตอนข้อมูลไม่ถูกต้อง
  * ================================= 
  */
  
   /*
  *  FUNCTION 2 : editMaskDateTime
  * =================================
  *  
  *  parameter :
  *	
  *	1.targetID คือ id ของ Field บน page
  *	2.formatDate รูปแบบแสดงผล เช่น
  *			DD	= วันที่ 2 หลัก
  *			MM	= เดือน 2 หลัก
  *			YYYY	= ปี 4 หลัก
  *			HH	= ชั่วโมง 2 หลัก
  *			II		= นาทีี่ 2 หลัก
  *			SS	= วินาที 2 หลัก
  *	3.alertMsg คือ คำเตือนตอนข้อมูลไม่ถูกต้อง
  * ================================= 
  */
  
  function  fillCurrencyFormat( rvalue)
 {
    p=rvalue.indexOf(".");
    maxLength=p>0?p:rvalue.length;
    minLength=(rvalue.charAt(0)=='-')?1:0;
    prefix=(rvalue.charAt(0)=='-')?"-":"";
    suffix= p>0? rvalue.substring(p):"";   
    temp="";
     for( i=maxLength-1,j=0;i>=minLength;i--)
     {
        temp=rvalue.charAt(i)+temp;
        if(rvalue.charAt(i)!='-')
        {
            j++;
        }
        if(j==3&&i-1>=minLength)
        {
           temp=","+temp;
           j=0;
        }
     }
     
     temp=prefix+temp+suffix;
     
     return temp;
 }
 
  function editMaskCurrencyCheckMinusFlag(targetID,format,alertMsg)
  {
   
    tempValueOut=document.getElementById(targetID).value;
    
    if(document.getElementById('Form:minusFlag')!=null)
      if(document.getElementById('Form:minusFlag').value=="true"){
         tempValueOut="-"+tempValueOut;
      }
    
    tempValueOut=fillCurrencyFormat(tempValueOut);    
        
		document.getElementById(targetID).value=tempValueOut;
  }
  
  function editMaskCurrency(targetID,format,alertMsg)
  {
    
    //alert(document.getElementById('Form:minusFlag').value);
    editMask(targetID,format,alertMsg);
    
    tempValueOut=document.getElementById(targetID).value;
    
    tempValueOut=fillCurrencyFormat(tempValueOut);    
        
		document.getElementById(targetID).value=tempValueOut;
  }
  
  function editMask(targetID,format,alertMsg)
  {
  	
    tempValueDefault=document.getElementById(targetID).defaultValue;
		tempValue=document.getElementById(targetID).value;
		 
     if(tempValue.length>0){
      temp="";
      for(z=0;z<tempValue.length;z++)
       if(tempValue.charAt(z)!='-')
           temp+=tempValue.charAt(z);           
      tempValue=  temp; 
      temp="";
      for(z=0;z<tempValue.length;z++)
       if(tempValue.charAt(z)!=',')
           temp+=tempValue.charAt(z);           
      tempValue=  temp; 
      temp="";
      for(z=0;z<tempValue.length;z++)
       if(!(tempValue.charAt(z)=='0'&&z+1<tempValue.length&&tempValue.charAt(z)!='0'))
           temp+=tempValue.charAt(z);           
      tempValue=  temp; 
    }
    
		tempValueOut="";
	 	tempValueSize=document.getElementById(targetID).maxLength;
		instanceUnlimit='~';
		instanceFixLength='^';
		instanceDigit='0';
		instanceCharBig='X';
		instanceCharSmall='x';
		instanceChar='Z';
		instanceCharThai='T';
		validFormat=false;
		
		fixSameFormat=false;
		fixSameLengthFormat="";
		fixSameFormatTemp="";
		formatTemp="";
		for(i=0;i<format.length;i++){
		  fixSameFormatTemp=format.charAt(i); 
		  formatTemp+=format.charAt(i);
					 //alert(formatTemp);
		  if(format.charAt(i+1)==instanceFixLength&&fixSameFormat==false){
		     for(j=i+2;j<format.length&&fixSameFormat==false;j++){
			      if(format.charAt(j)==instanceFixLength){
				    i=j;
					fixSameFormat=true;
				  }else{
				    fixSameLengthFormat+=format.charAt(j);
					//alert(fixSameLengthFormat);
				  }
			 }
			 fixSameFormat=false;
		  }
		  
		  if(isNaN(fixSameLengthFormat)==false){
				  fixSameLengthFormat=parseInt(fixSameLengthFormat);
				  for(k=1;k<fixSameLengthFormat;k++){
					 formatTemp+=fixSameFormatTemp;
					 //alert(formatTemp);
				  }
				  fixSameLengthFormat="";
				  fixSameFormatTemp="";
			}  
		}
		
		format=formatTemp;
		//alert(format);
		
	if((event.keyCode==8||
			event.keyCode==46||
			event.keyCode==37||
			event.keyCode==39)==false){  //กรณีต้องการลบ 8 = backspace  ,46 = delete ,  37 = allow left ,39= allow right
		for(i=0,j=0;i<tempValue.length;i++){
			 if(j<format.length&&j<tempValueSize){
			 
			   validFormat=true;
			   //alert(event.keyCode);
			   //alert(format.charAt(j)+" "+tempValue.charAt(i)+" "+isNaN(tempValue.charAt(i)));
			   if(j+2<format.length){
			   // alert(format.charAt(j)+" "+tempValue.charAt(i));
			    	 if(format.charAt(j)==instanceUnlimit){
							 if(tempValue.charAt(i)!=format.charAt(j+1).toUpperCase()){
							   formatTempAppend="";
								 for(o=0;o<j;o++){
									formatTempAppend+=format.charAt(o);
								 }	
								formatTempAppend+=format.charAt(j-1);
								 for(o=j;o<format.length;o++){
									formatTempAppend+=format.charAt(o);
								 }	
								format= formatTempAppend;
								
							}else{
								j+=1;
							}
					 }
				 }
				 //alert(format);
				 if(format.charAt(j).toUpperCase()==instanceDigit){
					if(isNaN(tempValue.charAt(i))==false){
					  tempValueOut+=tempValue.charAt(i);
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else if(format.charAt(j)==instanceCharBig&&(tempValue.charCodeAt(j)>=3585&&tempValue.charCodeAt(j)<=3680)==false){
					if(isNaN(tempValue.charAt(i))==true){
					  tempValueOut+=tempValue.charAt(i).toUpperCase();
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else if(format.charAt(j)==instanceCharSmall&&(tempValue.charCodeAt(j)>=3585&&tempValue.charCodeAt(j)<=3680)==false){
					if(isNaN(tempValue.charAt(i))==true){
					  tempValueOut+=tempValue.charAt(i).toLowerCase();
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else if(format.charAt(j)==instanceChar&&(tempValue.charCodeAt(j)>=3585&&tempValue.charCodeAt(j)<=3680)==false){
					if(isNaN(tempValue.charAt(i))==true){
					  tempValueOut+=tempValue.charAt(i);
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else if(format.charAt(j)==instanceCharThai&&(tempValue.charCodeAt(j)>=65&&tempValue.charCodeAt(j)<=90)==false&&(tempValue.charCodeAt(j)>=97&&tempValue.charCodeAt(j)<=122)==false){					
          if(isNaN(tempValue.charAt(i))==true){
					  tempValueOut+=tempValue.charAt(i);
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else  if(format.charAt(j)==tempValue.charAt(i)){
				  	tempValueOut+=tempValue.charAt(i);
					validFormat=true;
					
				 }else {
					validFormat=false;
				 }
				 
				  if(validFormat==false){
				   if(alertMsg.length>0)
				 	alert(alertMsg);
					i=tempValue.length;
				  }	else {
				 
				   ++j;
				 	 if((format.charAt(j).toUpperCase()==instanceChar||
					 	  format.charAt(j).toUpperCase()==instanceCharThai||	
					 	  format.charAt(j).toUpperCase()==instanceCharBig||	
					 	  format.charAt(j).toUpperCase()==instanceCharSmall||	
					 	  format.charAt(j)==instanceDigit||
						  format.charAt(j)==tempValue.charAt(i))==false){
						  
						  if(format.charAt(j)!=instanceUnlimit){
								tempValueOut+=format.charAt(j);
								
								++j;++i
						}		
				   	} 
				 }	
			}
		}
		
    
    tempValue=tempValueOut;
    
    if(tempValue.length>0){      
      temp="";
      for(z=0,y=0;z<tempValue.length;z++){         
       if(y==1||tempValue.charAt(z)!='0'){
           temp+=tempValue.charAt(z);     
           y=1;
       }
       if(tempValue.charAt(z)=='0'&&z+1<tempValue.length&&tempValue.charAt(z+1)!='0'&&y==0)
           y=1;
     }
      tempValue=  temp; 
    }
    
    tempValueOut=tempValue;
    
		document.getElementById(targetID).value=tempValueOut;
		
	}	
}
 
 
  function editMaskDateTime(targetID,formatDate,alertMsg)
  {
  		tempValueDefault=document.getElementById(targetID).defaultValue;
		tempValue=document.getElementById(targetID).value;
		tempValueOut="";
	 	tempValueSize=document.getElementById(targetID).maxLength;
		instanceDigit='0';
		instanceChar='X';
		format="";
		temp="";
		validFormat=false;
		
		maxValue = new Array(6);
		dateValue = new Array(6);
		formatValue = new Array(6);
		
	for(i=0,j=0;i<=formatDate.length;i++){
	   	if(formatDate.charAt(i)=="D"||
			formatDate.charAt(i)=="M"||
			formatDate.charAt(i)=="Y"||
			formatDate.charAt(i)=="H"||
			formatDate.charAt(i)=="I"||
			formatDate.charAt(i)=="S"){
	   			format+="0";
				
	   	}else{
		    if(formatDate.charAt(i-1)=="D"){
			   maxValue[j]=31;
			   formatValue[j]="DD";
			}else if(formatDate.charAt(i-1)=="M"){
			   maxValue[j]=12;
			   formatValue[j]="MM";
			}else if(formatDate.charAt(i-1)=="Y"){
			   maxValue[j]=9999;
			   formatValue[j]="YYYY";
			}else if(formatDate.charAt(i-1)=="H"){
			   maxValue[j]=23;
			   formatValue[j]="HH";
			}else if(formatDate.charAt(i-1)=="I"){
			   maxValue[j]=60;
			   formatValue[j]="II";
			}else if(formatDate.charAt(i-1)=="S"){
			   maxValue[j]=60;
			   formatValue[j]="SS";
			}
			if(i<formatDate.length)
	    		format+=formatDate.charAt(i);
				++j;
		}
	}	
	
		//alert(format);
		//alert(maxValue);
		
	if((event.keyCode==8||
			event.keyCode==46||
			event.keyCode==37||
			event.keyCode==39)==false){  //กรณีต้องการลบ 8 = backspace  ,46 = delete , 37 = <- ,39= ->
			k=0;
		for(i=0,j=0;i<tempValue.length;i++){
			 if(j<format.length&&j<tempValueSize){
			 
			   validFormat=true;
			   
			  
			   //alert(format.charAt(j)+" "+tempValue.charAt(i)+" "+isNaN(tempValue.charAt(i)));
			   
		  		 if(format.charAt(j).toUpperCase()==instanceDigit){
					if(isNaN(tempValue.charAt(i))==false){
					  temp+=tempValue.charAt(i);
					  
						if(dateValue[k]==null) dateValue[k]="";  
					 	 	dateValue[k]+=tempValue.charAt(i);
							//alert(dateValue[k]);
					  validFormat=true;
					}else{
					  validFormat=false;
					}
				 }else  if(format.charAt(j)==tempValue.charAt(i)){
				  	tempValueOut+=tempValue.charAt(i);
					validFormat=true;
				 }else {
					validFormat=false;
				 }
				 
				  if(validFormat==false){
				   if(alertMsg.length>0)
				 	alert(alertMsg);
					i=tempValue.length;
				  }	else {
				 
				   ++j;
				 	
					
					if((j==format.length||format.charAt(j)==instanceDigit)==false){
						//alert(dateValue[k]+" "+maxValue[k]+" "+temp.length);
						if(dateValue[k]=="") dateValue[k]=0; 
						if(dateValue[k].length>1&&dateValue[k].charAt(0)=="0")   dateValue[k]=dateValue[k].substr(1,dateValue[k].length);
					 	 	dateValue[k]=parseInt(dateValue[k]);
						//alert(dateValue[k]+" "+maxValue[k]+" "+temp.length);	
						validValue=false;
							
						if(formatValue[k]=="DD"||formatValue[k]=="MM"){
							if(temp.length==1){
							  	validValue=true;
							}
						}else  if(formatValue[k]=="HH"||formatValue[k]=="II"||formatValue[k]=="SS"){	
							if(dateValue[k]<=maxValue[k])
								validValue=true;
						}		
							
							
					    if((dateValue[k]<=maxValue[k]&&dateValue[k]>0)||validValue==true){	  
					 		tempValueOut+=temp;							
							temp="";
							validFormat=true;
						}else{
						    if(alertMsg.length>0)
							alert(alertMsg);
							validFormat=false;
							i=tempValue.length;
						}	  
						
					    ++k;
												
				   	} 
					
					 if(validFormat==true){
						 if((format.charAt(j)==instanceDigit||
						  format.charAt(j)==tempValue.charAt(i))==false){
					 		tempValueOut+=format.charAt(j);
							++j;++i;
				   		} 
					}	
				 }	
			}
		}
		
		/* ตรวจสอบรอบสุดท้าย */
		
						if(dateValue[k]=="") dateValue[k]=0;  
					 	 	dateValue[k]=parseInt(dateValue[k]);
							
						validValue=false;
							
						if(formatValue[k]=="DD"||formatValue[k]=="MM"){
							if(temp.length==1){
							  	validValue=true;
							}
						}else  if(formatValue[k]=="HH"||formatValue[k]=="II"||formatValue[k]=="SS"){	
							if(dateValue[k]<=maxValue[k])
								validValue=true;
						}		
							//alert(dateValue[k]+" "+maxValue[k]+" "+formatValue[k]);
							
					    if((dateValue[k]<=maxValue[k]&&dateValue[k]>0)||validValue==true){	  
					 		tempValueOut+=temp;
							temp="";
							validFormat=true;
							//alert(dateValue[k]+" "+maxValue[k]+" "+temp.length);
						}else{
						    if(alertMsg.length>0)
							alert(alertMsg);
							validFormat=false;
						}	 
						temp="";
						
						// ตรวจสอบความถูกต้องของวันที่
						if( tempValueOut.length >= 10 ){
							var tempconvert = new Date( );
							var date = tempValueOut.substring(0,2)
							var month = tempValueOut.substring(3,5)
							var year = tempValueOut.substring(6,tempValueOut.length)
							//alert (date+" "+month+" "+year);
							tempconvert.setYear( year );
							tempconvert.setDate( date );
							tempconvert.setMonth( (month)-1 );
							//alert(tempconvert.toString());
							if( (month) == tempconvert.getMonth()){
								alert( "วันที่ไม่ถูกต้อง !" );
								document.getElementById(targetID).value="";
							}else{document.getElementById(targetID).value=tempValueOut;}
						}else{ document.getElementById(targetID).value=tempValueOut; }

		
		//document.getElementById(targetID).value=tempValueOut;
	}	
	
  }

/*------------------------------ Art Prazit Jitmanozot - UppercaseMask ------------------------------*/
function upperCaseMask( obj ){
	obj.value = obj.value.toUpperCase();
}
/*------------------------------------------ End - UppercaseMask ----------------------------------------*/

/*------------------------------ Art Prazit Jitmanozot - LowercaseMask ------------------------------*/
function LowerCaseMask( obj ){
	obj.value = obj.value.toUpperCase();
}
/*------------------------------------------ End - LowercaseMask ----------------------------------------*/


   /*
  
  <form name="form1" method="post" action="">
  <p>&nbsp;    </p>
  <table border="0" align="center" cellpadding="2" cellspacing="2">
     <tr>
      <td>Thai Character:</td>
      <td><input name="thaicharacter" type="text" id="thaicharacter" onKeyUp="editMask('thaicharacter','T^4^','')" ></td>
    </tr>
    <tr>
      <td>Digit:</td>
      <td><input name="digit" type="text" id="digit" onKeyUp="editMask('digit','0^4^','')" ></td>
    </tr>
	<tr>
      <td>Float :</td>
      <td><input name="float" type="text" id="digit" onKeyUp="editMask('float','0~.0^4^','')" ></td>
    </tr>
    <tr>
      <td>Engish character Upper :</td>
      <td><input name="Engish character Upper" type="text" id="characterBig"  onKeyUp="editMask('characterBig','X^4^','')" ></td>
    </tr>
    <tr>
      <td>Engish character Lower :</td>
      <td><input name="Engish character Lower" type="text" id="characterSmall"  onKeyUp="editMask('characterSmall','x^4^','')" ></td>
    </tr>
    <tr>
      <td>Engish character Ignore Case :</td>
      <td><input name="Engish character Ignore Case" type="text" id="character"  onKeyUp="editMask('character','Z^4^','')" ></td>
    </tr>
    <tr>
      <td>Date :</td>
      <td><input name="date" type="text" id="date"  onKeyUp="editMaskDateTime('date','DD/MM/YYYY','')" ></td>
    </tr>
    <tr>
      <td>DateTime :</td>
      <td><input name="datetime" type="text" id="datetime"  onKeyUp="editMaskDateTime('datetime','DD/MM/YYYY HH:II:SS','')" ></td>
    </tr>
    <tr>
      <td>CustomMask :</td>
      <td><input name="customMask" type="text" id="customMask"  onKeyUp="editMask('customMask','X^2^-0^4^-X0^3^','กรุณาข้อมูลให้ถูกต้อง XX-0000-XX00')" ></td>
    </tr>
  </table>
  <p>&nbsp;    </p>
</form>

  */ 
  
  
  

var  scHeight = screen.availHeight / 2;
var  scWidth = screen.availWidth / 2;


function getCenterWindow(w,h,resize,toolbar,status)
{
     return   "height="+h+",top="+(scHeight -h/2)+",width="+w+",left="+(scWidth -w/2)+",scrollbars=1,resizable="+resize+",toolbar="+toolbar;
}

