/*

=======================================================================================================

File Name     : String.js

Language     :JavaScript

Last Modify    :1999/10/10

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;//去除最後n個字元,引數(n)

	String.prototype.toCdate=toCdate;//西元年轉民國年

	String.prototype.toDate=toDate;//民國年轉西元年

	String.prototype.frontFill=frontFill;//補滿某種符號





//檢查是否空白

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=new String();

	//去頭

	for(var i=0;i<instring.length;i++){

		if(instring.charAt(i)!=" "){

			value=instring.substring(i);

			break;

		}

	}

	//去尾

	while(value.charAt(value.length-1)==" "){

		value=value.cutLast(1)

	}

	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)

}



//補滿某種符號

function frontFill(symbol,digit){

	if(this.length <= digit){

		var temp=new String();

		for(i=this.length;i<digit;i++){

			temp+=symbol

		}

		return temp+this;

	}

}