/*
=======================================================================================================
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;
	}
}

//去除空白
function trimSpace(strValue){
	
	var instring= strValue;
	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;
 }