//Check CheckBox
function chk_CheckBox(objChk, Descr){
	var flgChk = false;
	if(typeof(objChk) != "undefined"){
		if(isNaN(objChk.length) == true){
			if(objChk.checked == true) flgChk = true;
		}
		else{
			for(inx=0; inx<objChk.length; inx++){
				if(objChk(inx).checked == true) flgChk = true;
			}
		}
	}
	if(flgChk == false){
		return Descr + "　必須選取!!<br>";
	}
	else{
		return"";
	}
}

//不能為0
function chk_NumZero(obj, Descr){
	var blnZero;
	blnZero=1;
	for(idx=0; idx<obj.length; idx++){
		if(obj.charAt(idx) != '0' ) return"";
	}
	
	if(blnZero=1){
		return(Descr + "　不能為0!!<br>");
	}
}

//1:不能有數字以外的字元
//2:不能有數字及．以外的字元
function chk_Num(obj,nMethod,Descr){
	for(idx=0; idx<obj.length; idx++){
		if(nMethod == 1 ){
			if(!((obj.charAt(idx) >= '0' && obj.charAt(idx) <= '9'))){
				return(Descr + "　不能有數字以外的字元!!<br>");
			}
		}
		
		else if(nMethod == 2 ){
			if(!((obj.charAt(idx) >= '0' && obj.charAt(idx) <= '9') || obj.charAt(idx) == '.')){
				return(Descr + "　不能有數字及．以外的字元!!<br>");
			}
		}
    }
    return"";
}

//Check Telphone Number
function chk_TelNum(num, Descr){
	var error = false;
    for( idx = 0 ; idx < num.length ; idx++ ){
        if( !( ( num.charAt(idx) >= '0' && num.charAt(idx) <= '9' ) || ( num.charAt(idx) == '-' )  || ( num.charAt(idx) == '#' ) || ( num.charAt(idx) == '(' ) || ( num.charAt(idx) == ')' )) ){
            error = true;
            break;
        }
    }
    if( error == true ){
		return Descr + "　只能是數字及'-','#','(',')'符號!!<br>";
	}
    return"";
}

//Check E-Mail
function chk_Email(email ,Descr){
	var len = email.length;
	var ck =0;
	if(len==0) return"";
	for(var fun_i=0;fun_i<len;fun_i++){  
		var c = email.charAt(fun_i);
		if(!((c>="A"&&c<="Z")||(c>="a"&&c<="z")||(c>="0"&&c<="9")||(c=="-")||(c=="_")||(c==".")||(c=="@"))){
			return Descr + "　只能是數字,英文字母及'-','_'等符號!!<br>";
		}
	}
	
	if((email.indexOf("@")==-1)||(email.indexOf("@")==0)||(email.indexOf("@")==(len-1))){
		return Descr + "　不合法!!<br>";
	}
	
	if((email.indexOf("@")!=-1)&&(email.substring(email.indexOf("@")+1,len).indexOf("@")!=-1)){
		return Descr + "　不合法!!<br>";
	}
	
	if((email.indexOf(".")==-1)||(email.indexOf(".")==0)||(email.lastIndexOf(".")==(len-1))){
		return Descr + "　不完全!!<br>";
	}
	
	return"";
}

function chk_MultEmail(email ,Descr){
	var len = email.length;
	var ck =0;
	if(len==0) return"";
	for(var fun_i=0;fun_i<len;fun_i++){  
		var c = email.charAt(fun_i);
		if(!((c>="A"&&c<="Z")||(c>="a"&&c<="z")||(c>="0"&&c<="9")||(c=="-")||(c=="_")||(c==".")||(c=="@")||(c==";"))){
			return Descr + "　只能是數字,英文字母及'-','_',';'等符號!!<br>";
		}
	}
	
	var EmailArr = new Array(email.split(";").length);
	EmailArr = email.split(";");
	
	for(i=0; i<EmailArr.length; i++){
		if(EmailArr[i].length > 0){
			if((EmailArr[i].indexOf("@")==-1)||(EmailArr[i].indexOf("@")==0)||(EmailArr[i].indexOf("@")==(len-1))){
				return Descr + "　不合法!!<br>";
			}
			
			if((EmailArr[i].indexOf("@")!=-1)&&(EmailArr[i].substring(EmailArr[i].indexOf("@")+1,len).indexOf("@")!=-1)){
				return Descr + "　不合法!!<br>";
			}
			
			if((EmailArr[i].indexOf(".")==-1)||(EmailArr[i].indexOf(".")==0)||(EmailArr[i].lastIndexOf(".")==(len-1))){
				return Descr + "　不完全!!<br>";
			}
		}
		else{
			return Descr + "　不合法!!<br>";
		}
	}
	
	return"";
}
	
//Check Identity	
function chk_identity (id,Descr){
	if(Descr==""){
		Descr = "您";
	}
	
	if( id.length == 0 ){
		return"";
	}
	
	var m_id = id;
	if(m_id.length<10){
		return Descr + "的身分證字號不滿10個字!!<br>";
	}
	
	var c = m_id.charAt(0);
	if(c<"A" || c> "Z"){
		return Descr + "的身分證字號第一碼必須是大寫的英文字母 !<br>";
	}
	
	c = m_id.charAt(1);
	if(c!="1" && c!="2"){
		return Descr + "的身分證字號第二碼有問題!!<br>";
	}
	
	for(fun_i=1;fun_i<10;fun_i++){
		if(isNaN(parseFloat(m_id.charAt(fun_i)))){
			return Descr + "的身分證字號第二到十碼有問題 !<br>";
		}
	}
	
	var m_alph = new Array("A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","X","Y","W","Z","I","O");
	var m_num = new Array("10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35");
	var n=0;
	for(fun_i=0;fun_i<m_alph.length;fun_i++){
		if(m_id.charAt(0)==m_alph[fun_i]){
			n=fun_i;
		}
	}
	
	var m_tot1 = parseFloat(m_num[n].charAt(0)) + (parseFloat(m_num[n].charAt(1)) * 9);
	var m_tot2 = 0;
	for(fun_i=1;fun_i<m_id.length-1;fun_i++){
		m_tot2 = m_tot2 + parseFloat(m_id.charAt(fun_i))*(9-fun_i);
	}
	
	var m_tot3 = parseFloat(m_id.charAt(9));
	var m_tot4 = m_tot1 + m_tot2 + m_tot3;
	if((m_tot4 % 10)!=0){
		return Descr + "的身分證字號有問題!!<br>";
	}
	return"";
}

//Check Date
function chk_Date(DateStr, Descr){
	if(DateStr.length > 10) return(Descr + "　格式錯誤，超過10位數!!<br>");
	if(DateStr.length < 8) return(Descr + "　格式錯誤，少於8位數!!<br>");


	var DateArr = new Array(DateStr.split("/").length);
	DateArr = DateStr.split("/");
 
	if(DateArr.length != 3) return(Descr + "　格式錯誤,須為yyyy/mm/dd!!<br>");
	else{
	    for(idx=0; idx<DateStr.length; idx++){
    	    if(!((DateStr.charAt(idx) >= '0' && DateStr.charAt(idx) <= '9' ) || ( DateStr.charAt(idx) == '/'))) {
    	        return(Descr + "　不能有 數字 及 / 以外的字元!!<br>");
    	    }
    	}
		
		if(DateArr[0].length != 4) return(Descr + "　年須為四位數!!<br>");
		if(DateArr[1].length > 2 || DateArr[1].length < 1) return(Descr + "　月份格式錯誤(須為二位數)!!<br>");
		if(DateArr[2].length > 2 || DateArr[2].length < 1) return(Descr + "　天數格式錯誤(須為二位數)!!<br>");
		if(DateArr[1] > 12) return(Descr + "　月不可大於12!!<br>");
		if(Number(DateArr[1]) < 1) return(Descr + "　月不可小於1!!<br>");
		if(Number(DateArr[2]) < 1) return(Descr + "　" + DateArr[1] + "月 天數不正確!!<br>");		
		if(DateArr[1] == 2){
			if((DateArr[0] % 4 != 0) && (DateArr[2] > 28))return(Descr + "　" + DateArr[0] + "年2月不可大於28天!!<br>");
			else if(DateArr[2] > 29) return(Descr + "　" + DateArr[0] + "年2月不可大於29天!!<br>");
		}
		else{
			if((DateArr[1] == 1) || (DateArr[1] == 3) || (DateArr[1] == 5) || (DateArr[1] == 7) || (DateArr[1] == 8) || (DateArr[1] == 10) || (DateArr[1] == 12)){
				if(DateArr[2] > 31) return(Descr + "　" + DateArr[1] + "月不可大於31天!!<br>");
			}
			else if(DateArr[2] > 30) return(Descr + "　" + DateArr[1] + "月不可大於30天!!<br>");
		}
	}	

	return"";
}

function chk_LenLessOne(obj,tmp_len,Descr){	//長度(<len)==>最少
	if(obj.length < tmp_len){
		return(Descr+"　長度錯誤(最少需輸入"+ tmp_len + "個字)!!<br>")
	}
	return"";
}

function chk_AlphaNum(obj,Descr){	//英文字母或數字
	var re = /[^A-Za-z0-9]{1,}/;
	if(re.test(obj)){
		return(Descr+"　格式錯誤(請輸入英文字母或數字)!!<br>");
	}
	return"";
}

function chk_LCaseNum(obj,Descr){	//小寫字母或數字
	var re = /[^a-z0-9]{1,}/;
	
	if(re.test(obj)){
		return(Descr+"　格式錯誤(請輸入小寫字母或數字)!!<br>");
	}
	return"";
}

function chk_CapitalNum(obj,Descr){	//大寫字母或數字
	var re = /[^A-Z0-9]{1,}/;
	if(re.test(obj)){
		return(Descr+"　格式錯誤(請輸入大寫字母或數字)!!<br>");
	}
	return"";
}

function chk_Code(obj,Descr){	//編號的驗證
	if(obj.replace(/^\s+|\s+$/g,'')==''){
		return(Descr+"　必須輸入資料!!<br>");
	}
	else{
		var re = /[^A-Za-z0-9-_]{1,}/;
		if(re.test(obj)){
			return(Descr+"　格式錯誤(數字,英文字母及'-','_'等符號)!!<br>");
		}
		return"";
	}
}

function cut_right(str, n){
	if (n <= 0)
		return "";
	else if (n > String(str).length)
		return str;
	else {
		var iLen = String(str).length;
		return String(str).substring(iLen, iLen - n);
    }
}

//檢查資料是否有值
function isEmpty(obj,Descr,nFunction,nRtnTxt) {
	var j_strReturnTxt = '';
	var obj = document.getElementsByName(obj);
	if(obj != null && obj.length > 0){		
		var j_strObjType = obj[0].type.toLowerCase();
		var blnEmpty = true;
	
		switch(j_strObjType){
			case "checkbox":
			case "radio":
				blnEmpty = true;
				for(fun_i=0;fun_i<obj.length;fun_i++){
					if(obj[fun_i].checked){
						blnEmpty = false;
						break;
					}
				}
				if(blnEmpty == true){
					if(j_strObjType == 'checkbox'){						
						j_strReturnTxt = nRtnTxt ? nRtnTxt : '請至少選擇一項';
					}
					else{
						j_strReturnTxt = nRtnTxt ? nRtnTxt : '必須選擇資料';
					}
					return Descr + '　' + j_strReturnTxt +'!!<br>'
				}
				break;
			default:	//text or select
				if(obj[0].value.replace(/^\s+|\s+$/g,'')==''){
					if(j_strObjType == "select-one"){
						j_strReturnTxt = nRtnTxt ? nRtnTxt : '必須選擇資料';
					}
					else{
						j_strReturnTxt = nRtnTxt ? nRtnTxt : '必須輸入資料';
					}
					return Descr + '　' + j_strReturnTxt +'!!<br>'
				}
				else{
					if(nFunction != ''){
						return eval(nFunction);
					}
				}
		}
	}
	return '';
}

function blnClick(obj,Descr) {
	var obj = document.getElementsByName(obj);
	if(obj != null && obj.length > 0){		
		blnEmpty = true;
		for(fun_i=0;fun_i<obj.length;fun_i++){
			if(obj[fun_i].checked){
				blnEmpty = false;
				break;
			}
		}
		if(blnEmpty == true){
			return '';
		}
		return Descr;
	}
}

function clearData(obj){
	var obj = document.getElementsByName(obj);
	if(obj != null && obj.length > 0){
		var j_strObjType = obj[0].type.toLowerCase();
		
		switch(j_strObjType){
			case "checkbox":
			case "radio":
				for(fun_i=0;fun_i<obj.length;fun_i++){
					obj[fun_i].checked = false;
				}
				break;
			default:	//text or select
				for(fun_i=0;fun_i<obj.length;fun_i++){
					obj[fun_i].value = '';
				}
				break;
		}
	}
}
/*----------------------------------
string.Blength() 傳回字串的byte長度
var str = "測試123"; 
alert("字元數:"+str.length); //5 
alert("byte數:"+str.Blength()); //7 
----------------------------------*/
String.prototype.Blength = function() {
    var arr = this.match(/[^\x00-\xff]/ig);
    return  arr == null ? this.length : this.length + arr.length;
}

/*----檢查資料格式----*/
function chkBlock(ftype,obj,Descr){
	var j_strDescr = '';
	
	if(obj != null){
		switch(ftype){
			case 1:	//僅限數字0~9
				var re = /[^0-9]{1,}/;
				j_strDescr = '　格式錯誤(請輸入數字)';
				break;
			case 2:	//僅限數字0~9及小數點
				var re = /[^0-9.]{1,}/;
				j_strDescr = '　格式錯誤(請輸入數字或 \'.\' )';
				break;
			case 3:	//僅限小寫英文或數字
				var re = /[^a-z0-9]{1,}/;
				obj.value = obj.value.toLowerCase();
				j_strDescr = '　格式錯誤(請輸入小寫字母或數字)';					
				break;
			case 4:	//僅限大寫英文或數字
				var re = /[^A-Z0-9]{1,}/;
				obj.value = obj.value.toUpperCase();
				j_strDescr = '　格式錯誤(請輸入大寫字母或數字)';					
				break;
			case 5:	//僅限大寫英文或小寫英文或數字
				var re = /[^A-Za-z0-9]{1,}/;
				j_strDescr = '　格式錯誤(請輸入英文字母或數字)';					
				break;
			case 6:	//會員帳號
				var re = /[^a-z0-9_]{1,}/;
				obj.value = obj.value.toLowerCase();
				j_strDescr = '　格式錯誤(請輸入英文字母或數字或_)';					
				break;
			case 7:	//編號
				var re = /[^A-Za-z0-9-_]{1,}/;
				//obj.value = obj.value.toLowerCase();
				j_strDescr = '　格式錯誤(請輸入英文字母或數字或_)';					
				break;
			case 8:	//車牌
				var re = /[^A-Z0-9-]{1,}/;
				obj.value = obj.value.toUpperCase();
				j_strDescr = '　格式錯誤(請輸入英文字母或數字或-)';
				break;
			case 9:	//僅限大寫英文或小寫英文
				var re = /[^A-Za-z]{1,}/;
				obj.value = obj.value.toLowerCase();
				j_strDescr = '　格式錯誤(請輸入英文字母)';					
				break;
			default:
				break;
		}
		
		if(re.test(obj.value)){
			return(Descr+ j_strDescr + '!!<br>');
		}
	}
	
	return"";
}

function onKeyPressBlock(e,ftype){
	var key = window.event ? e.keyCode : e.which;
	
	if(key == 8 || key == 0){	//Backspace鍵,左右鍵
	
	}
	else{
		var keychar = String.fromCharCode(key);
		switch(ftype){
			case 1:	//僅限數字0~9
				reg = /\d/;				
				break;
			case 2:	//僅限小寫英文或數字
				if(window.event){	//For IE
					keychar = keychar.toLowerCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[a-z0-9]/;
				break;
			case 3:	//僅限大寫英文或數字
				if(window.event){	//For IE
					keychar = keychar.toUpperCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[A-Z0-9]/;
				break;
			case 4:	//僅限大寫英文或小寫英文或數字
				reg = /[A-Za-z0-9]/;
				break;
			case 5:	//for Email 使用
				if(window.event){	//For IE
					keychar = keychar.toLowerCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[A-Za-z0-9-_@.]/;
				break;
			case 6:	//僅限數字及小數點
				reg = /[0-9.]/;
				break;
			case 7:	//僅限小寫英文
				if(window.event){	//For IE
					keychar = keychar.toLowerCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[a-z]/;
				break;
			case 8:	//僅限大寫英文
				if(window.event){	//For IE
					keychar = keychar.toUpperCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[A-Z]/;
				break;
			case 9:	//for Tel 使用
				reg = /[0-9#()-]/;
				break;
			case 10:	//for CTel 使用
				reg = /[0-9-]/;
				break;
			case 11:	//僅限正負數字
				reg = /[0-9-]/;
				break;
			case 12:	//for Date 使用
				reg = /[0-9/]/;
				break;
			case 13:	//for 會員帳號使用
				if(window.event){	//For IE
					keychar = keychar.toLowerCase();
					event.keyCode = keychar.charCodeAt();
				}
				
				reg = /[a-z0-9_]/;
				break;
			case 14:	//for 編號 使用
				reg = /[A-Za-z0-9-_]/;
				break;
			case 15:	//for 車牌 使用
				if(window.event){	//For IE
					keychar = keychar.toUpperCase();
					event.keyCode = keychar.charCodeAt();
				}
			
				reg = /[A-Za-z0-9-]/;
				break;
			default:
				reg = /\d/;
				break;
		}
		
		return reg.test(keychar);
	}	
}
