/*
=======================================================================================================
File Name     : String.js
Language     :JavaScript
Last Modify    :1999/8/3
CopyingRight:Ho Yi-Lin
Descrition		:
					 這個檔案是用來加強javascript  string object 的功能,可使用在Client  and  Server site
Functional:
		  檢查空白,身分證字號,整數,字母,日期,數字,去除空白,設定範圍,最小值,最大值,允許字元,不允許字元,允許長度
=======================================================================================================
*/

//addin method

	String.prototype.isEmpty=isEmpty;
	String.prototype.isIDNo=isIDNo;
	String.prototype.isInt=isInt;
	String.prototype.isAlpha=isAlpha;
	String.prototype.isDate=isDate;
	String.prototype.isNum=isNum;
	String.prototype.isIA=isIA;
	String.prototype.trimSpace=trimSpace;
	String.prototype.setRange=setRange;
	String.prototype.setMin=setMin;
	String.prototype.setMax=setMax;
	String.prototype.allowChar=allowChar;
	String.prototype.unallowChar=unallowChar;
	String.prototype.allowLength=allowLength;
	String.prototype.cutLast=cutLast;
	String.prototype.toCdate=toCdate;
	String.prototype.toDate=toDate;

//檢查是否空白
function isEmpty(){
	var instring=this.toString()
	return ( instring=="" || instring==null )?true:false;

}

//檢查身分證字號是否正確
function isIDNo(){

	var instring=this.toString()
	//比對字串
	var ref="ABCDEFGHJKLMNPQRSTUVWXYZIO"
	//取得第一個英文字母
	var FChar=instring.charAt(0).toUpperCase()
	var value=0
    //進行比對
	for(i=0;i<27;i++){if(ref.charAt(i)==FChar) break;}
   //轉換成字串
	FChar=i+10+"";
	instring=FChar.charAt(0)+FChar.charAt(1)+instring.substring(1,10);
	//演算法則
	for(i=0;i<11;i++){value+=((i==0||i==10)?parseInt(instring.charAt(i)):parseInt(instring.charAt(i))*(10-i));}

    return (value%10==0)?true:false;
}

//檢查是否為數字函數
function isInt(){
	
	var instring=this.toString()
	for(i=0;i<instring.length;i++){
			if(instring.charAt(i) < "0" || instring.charAt(i) > "9") return false; 
	}
    return true;
}
//檢查是否為英文字母函數或數字函數
function isIA(){

 	var instring=this.toString()
	for(i=0;i<instring.length;i++){
		var value=instring.charAt(i)
	    if((value < "A" || value >"Z")&&(value < "a"||value > "z")&&(value < "0" || value >"9")) return false;
	}
	return true;
}

//檢查是否為英文字母函數
function isAlpha(){

 	var instring=this.toString()
	for(i=0;i<instring.length;i++){
		var value=instring.charAt(i)
	    if(value < "A" || value >"Z"&&value < "a"||value > "z") return false;
	}
	return true;
}

//檢查日期是否正確
  function isDate(){
		
		var indate=this.toString()
		var dateArray	=indate.split("/");
		//因為JavaScript日期是0-11所以要減1
		indate=new Date(dateArray[0],dateArray[1]-1,dateArray[2]);
		return (indate.getMonth()==dateArray[1]-1)?true:false;
 
  }

 //檢查是否為數字

 function isNum(){

		var instring=this.toString()
		return (!isNaN(instring))?true:false

 }

//去除空白
function trimSpace(){
	
	var instring=this.toString()
	var value=""
	instring=instring.toString()

	for(var i=0;i<instring.length;i++){
		if(instring.charAt(i)!=" ")
			value=value+instring.charAt(i);
	}
	return value;
 }

 //檢查數字範圍
 function setRange(min,max){
 
	var instring=parseInt(this.toString());
	return (instring >= min && instring <= max)?true:false;
 }

 //檢查最大值
 function setMin(min){
 
	var instring=parseInt(this.toString());
	return (instring >= min)?true:false;
 }

 //檢查最小值
function setMax(max){
 
	var instring=parseInt(this.toString());
	return (instring >= max)?true:false;
 }

//允許的字元
function allowChar(incol){

	var instring=this.toString();
	var flag=0;

	for (i=0;i<instring.length;i++ ){
		for(j=0;j<incol.length;j++){
				if(instring.charAt(i)==incol.charAt(j)) break;
				if(j==incol.length-1) flag=1;
		}
		if(flag==1) return false;
	}
	return true;
}

//不允計字元
function unallowChar(incol){

	var instring=this.toString();

	for (i=0;i<instring.length;i++ ){
		for(j=0;j<incol.length;j++){
				if(instring.charAt(i)==incol.charAt(j)) return false;
			}
	}
	return true;
}

//允許字串長度
function allowLength(){

	var instring=this.toString();

	for (i=0;i<arguments.length;i++){
			if(instring.length==arguments[i]) return true;
	}
	return false;
}

//民國年轉西元年
function toDate(){
	var tempArray=this.split("/");
	tempArray[0]=parseInt(tempArray[0])+1911;
	return tempArray.join("/");
}

//西元年轉民國年
function toCdate(){
	var tempArray=this.split("/");
	tempArray[0]=parseInt(tempArray[0])-1911;
	return tempArray.join("/");
}

//去掉最後num個字元
function cutLast(num){
  return this.substring(0,this.length-num)
}
