﻿// JScript 檔

//String.prototype.trim=function(){
//	return this.replace(/^\s+/, '').replace(/\s+$/, '');
//}

//**************************************************//
// Function Name: Trim                              //
// Description: 去除字串前後空白                    //
// Parameter:                                       //
//    strValue: 要去除前後空白的字串                //
//**************************************************//
function Trim(strValue){
	strValue=strValue.replace(/^\s+/, '');
	strValue=strValue.replace(/\s+$/, '');
	return strValue
}

//**************************************************//
// Function Name: FullTrim                          //
// Description: 去除字串內所有空白                  //
// Parameter:                                       //
//    strValue: 要去除所有空白的字串                //
//**************************************************//
function FullTrim(strValue){
	for(i=0;i<strValue.length;i++){strValue=strValue.replace(/ /i,"");}
	return strValue;
}

//**************************************************//
// Function Name: IsValidInput                      //
// Description: 驗證輸入欄位是否有填                //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidInput(objItem, strName){
	objItem.value=Trim(objItem.value);
	if(objItem.value.length==0){
		alert('請輸入『'+strName+'』！');
		objItem.focus();
		return false;
	}
	return true;
}

//**************************************************//
// Function Name: IsValidLen                        //
// Description: 驗證輸入欄位長度是否正確            //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//    intMin: 長度最小值                            //
//    intMax: 長度最大值                            //
//**************************************************//
function IsValidLen(objItem, strName, intMin, intMax){
	objItem.value=Trim(objItem.value);
	if(objItem.value.length>0){
	    if(objItem.value.length<intMin && intMin>0){
	        alert('『'+strName+'』最少需填'+intMin+'個字！');
	        objItem.focus();
	        return false;
	    }
	    if(objItem.value.length>intMax && intMax>0){
	        alert('『'+strName+'』不可超過'+intMax+'個字！');
	        objItem.focus();
	        return false;
	    }
	}
	return true;
}

//**************************************************//
// Function Name: IsValidChar                       //
// Description: 驗證輸入欄位是否輸入中英文          //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidChar(objItem, strName){
    objItem.value=Trim(objItem.value);
    if(objItem.value.length>0){
        var re=/\W/;
        if(re.test(objItem.value)){
            alert('『'+strName+'』只允許輸入英文字母及數字！'); 
            objItem.focus();
            return false;
        }
    }
    return true;
}

//**************************************************//
// Function Name: IsValidChinese                    //
// Description: 驗證輸入欄位是否只輸入中文          //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidChinese(objItem, strName){
    objItem.value=Trim(objItem.value);
    if(objItem.value.length>0){
        var re=/[^\u4E00-\u9FA5]/;
        if(re.test(objItem.value)){
            alert('『'+strName+'』只允許輸入中文字！'); 
            objItem.focus();
            return false;
        }
    }
    return true;
}

//**************************************************//
// Function Name: IsValidSelected                   //
// Description: 驗證下拉選項欄位是否有選            //
// Parameter:                                       //
//    objItem: 下拉選項物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidSelected(objItem, strName){
	if(objItem.options[objItem.selectedIndex].value.length==0){
		alert('請選擇『'+strName+'』！');
		objItem.focus();
		return false;
	}
	return true;
}

//**************************************************//
// Function Name: IsValidChecked                    //
// Description: 驗證勾選欄位是否有選                //
// Parameter:                                       //
//    objItem: 勾選欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidChecked(objItem, strName){
	var bnlValid=false;
	if(objItem.length){
		for(var i=0; i<objItem.length; i++){
			if(objItem[i].checked){
				bnlValid=true;
				break;
			}
		}
	}else{
		if(objItem.checked){
			bnlValid=true;
		}
	}
	if(!bnlValid){
		alert('請選擇『'+strName+'』！');
		if(objItem.length){
			objItem[0].focus();
		}else{
			objItem.focus();
		}
		return false;
	}
	return true;
}

//**************************************************//
// Function Name: IsValidNumeric                    //
// Description: 驗證輸入欄位是否輸入數值            //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidNumeric(objItem, strName){
	objItem.value=Trim(objItem.value);
	if(objItem.value.length>0){
		if(isNaN(objItem.value)){
			alert('『'+strName+'』請輸入數值！');
			objItem.focus();
			return false;
		}
	}
	return true;
}

//**************************************************//
// Function Name: IsValidComp                       //
// Description:                                     //
// Parameter:                                       //
//    objItemA: 輸入欄位A物件                       //
//    objItemB: 輸入欄位B物件                       //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidComp(objItemA, objItemB, strName){
    objItemA.value=Trim(objItemA.value);
    objItemB.value=Trim(objItemB.value);
    if(parseInt(objItemA.value)>parseInt(objItemB.value)){
        alert('『'+strName+'』起始值不可大於迄值！');
        objItemA.focus();
        return false;
    }
    return true;
}

//**************************************************//
// Function Name: IsValidCardID                     //
// Description: 驗證輸入欄位是否輸入身分證字號      //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidCardID(objCardID, strName){
	myCardID=Trim(objCardID.value.toUpperCase());
	objCardID.value=myCardID;
	if(myCardID.length>0){
	    if(myCardID.length!=10 || myCardID.charAt(0)<"A" || myCardID.charAt(0)>"Z" || myCardID.charAt(1)<"1" || myCardID.charAt(1)>"2" || isNaN(myCardID.substr(1))){
		    alert('『'+strName+'』錯誤！');
		    objCardID.focus();
		    return false;
	    }
	    var chksum=0;
	    var alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	    var ch=alphabet.indexOf(myCardID.charAt(0))+65;
	    if(myCardID.charAt(0)>="A" && myCardID.charAt(0)<="H"){
		    chksum=Math.floor((ch-55)/10)+((ch-55)%10)*9;
	    }else if(myCardID.charAt(0)>="J" && myCardID.charAt(0)<="N"){
		    chksum=Math.floor((ch-56)/10)+((ch-56)%10)*9;
	    }else if(myCardID.charAt(0)>="P" && myCardID.charAt(0)<="V"){
		    chksum=Math.floor((ch-57)/10)+((ch-57)%10)*9;
	    }else switch(myCardID.charAt(0)){
		    case "X" : chksum=3; break;
		    case "Y" : chksum=12; break;
		    case "W" : chksum=21; break;
		    case "Z" : chksum=30; break;
		    case "I" : chksum=39; break;
		    case "O" : chksum=48; break;
	    }
	    var ArabicNumber="0123456789";
	    for(i=1;i<=8;i++){
		    chksum+=ArabicNumber.indexOf(myCardID.charAt(i))*(9-i);
	    }
	    chksum+=ArabicNumber.indexOf(myCardID.charAt(9));
	    if(chksum%10!=0){
		    alert('『'+strName+'』錯誤！');
		    objCardID.focus();
		    return false;
	    }
	}
	return true;
}

//**************************************************//
// Function Name: IsValidReg                        //
// Description: 驗證輸入欄位是否符合格式(正式驗證式)//
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//    strPartten: 格式                              //
//**************************************************//
function IsValidReg(objItem, strName, strPartten){
    objItem.value=Trim(objItem.value);
    if(objItem.value.length>0){
        var objReg=new RegExp(strPartten);
        if(!objReg.test(objItem.value)){
            alert('『'+strName+'』格式錯誤！');
            objItem.focus();
            return false;
        }
    }
    return true;
}

//**************************************************//
// Function Name: IsValidEmail                      //
// Description: 驗證輸入欄位是否輸入電子郵件信箱    //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidEmail(objItem, strName){
    objItem.value=Trim(objItem.value);
    if(objItem.value.length>0){
	//var strPartten='^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$';
        var strPartten='^[\\w-]+(\.[\\w-]+)*@[\\w-]+(\.[\\w-]+)+$';
        if(!IsValidReg(objItem, strName, strPartten)){
            return false;
        }
    }
    return true;
}

//**************************************************//
// Function Name: IsValidDate                       //
// Description: 驗證輸入欄位是否輸入日期格式        //
//              需符合1600~9999年的日期，含閏月判斷 //
// Parameter:                                       //
//    objItem: 輸入欄位物件                         //
//    strName: 欄位名稱                             //
//**************************************************//
function IsValidDate(objItem, strName){
	objItem.value=Trim(objItem.value);
	if(objItem.value.length>0){
	    var strPartten='^((((1[6-9]|[2-9]\\d){1}\\d{2})\/(((0?[13578]|1[02])\/31)|((0?[1,3-9]|1[0-2])\/(29|30))))|((((1[6-9]|[2-9]\\d){1}(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))\/0?2\/29)|(((1[6-9]|[2-9]\\d){1}\\d{2})\/((0?[1-9])|(1[0-2]))\/((0?[1-9])|(1\\d)|(2[0-8]))))$';
	    if(IsValidReg(objItem, strName, strPartten)){
	        var arrDate=objItem.value.split('/');
	        if(arrDate[1].length==1){
	            arrDate[1]='0'+arrDate[1];
	        }
	        if(arrDate[2].length==1){
	            arrDate[2]='0'+arrDate[2];
	        }
	        objItem.value=arrDate.join('/');
	    }else{
	        return false;
	    }
	}
	return true;
}

//**************************************************//
// Function Name: GetMonthDay                       //
// Description: 取得某年某月的天數                  //
// Parameter:                                       //
//    intY: 年份                                    //
//    intM: 月份                                    //
//**************************************************//
function GetMonthDay(intY, intM){
	if(intM==2){
		return (((intY%4==0) && (intY%100!=0)) || (intY%400==0))?29:28;
	}else{
		return (intM==4 || intM==6 || intM==9 || intM==11)?30:31;
	}
}

