//表單檢查
//三個為一組: "欄位名", "錯誤訊息", "格式"

//一般檔案
//"欄位名", "副檔名1|副檔名2|副檔名3...|錯誤訊息", "格式"

//指定檔名
//"欄位名", "檔案名稱.副檔名|錯誤訊息", "格式"
function chkform(){
	var msg = "", args = chkform.arguments;
	var formName = args[0];
	for(i=1;i<args.length;i+=3){
		for(j=0;j<document.forms[formName].length;j++) {
			if(document.forms[formName].elements[j].name == args[i]){
				var temp = j;
				val = document.forms[formName].elements[j].value;
			}
		}
		//字串
		if(args[i+2] == "isStr") msg = isStr(val,args[i+1],msg);
		if(args[i+2] == "orStr") msg = orStr(val,args[i+1],msg);
		//文字區塊
		if(args[i+2] == "isText") msg = isText(val,args[i+1],msg);
		if(args[i+2] == "orText") msg = orText(val,args[i+1],msg);
		//E-Mail
		if(args[i+2] == "isMail") msg = isMail(val,args[i+1],msg);
		if(args[i+2] == "orMail") msg = orMail(val,args[i+1],msg);
		//數字
		if(args[i+2] == "isNum") msg = isNum(val,args[i+1],msg);
		if(args[i+2] == "orNum") msg = orNum(val,args[i+1],msg);
		//密碼
		if(args[i+2] == "ckPass"){
			str = args[i].split("|");
			for(j=0;j<document.forms[formName].length;j++) {
				if(document.forms[formName].elements[j].name == str[0]) pass0 = document.forms[formName].elements[j].value;
				if(document.forms[formName].elements[j].name == str[1]) pass1 = document.forms[formName].elements[j].value;
			}
			msg = ckPass(pass0,pass1,args[i+1],msg);
		}
		//檔案
		if(args[i+2] == "isFile"){
			str = args[i+1].split("|");
			msg = isFile(val,str,str[str.length-1],msg);
		}
		if(args[i+2] == "orFile"){
			str = args[i+1].split("|");
			msg = orFile(val,str,str[str.length-1],msg);
		}
		//指定檔案名稱
		if(args[i+2] == "isAFile"){
			str = args[i+1].split("|");
			msg = isAFile(val,str[0],str[1],msg);
		}
		if(args[i+2] == "orAFile"){
			str = args[i+1].split("|");
			msg = orAFile(val,str[0],str[1],msg);
		}
	}
	if(msg){
		alert(msg);
		return false;
	}else return true;
}

//去除前後空白
function trim(strvalue){
	ptntrim = /(^\s*)|(\s*$)/g;
	return strvalue.replace(ptntrim,""); 
}

//字串檢查( 必填欄位 )
function isStr(strvalue,filed,msg){
	if(!trim(strvalue) || /\s{2}/.test(strvalue) || /[%\\\'\"]/.test(strvalue) || /mime/i.test(strvalue)) msg = msg?msg +filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//字串檢查( 非必填欄位 )
function orStr(strvalue,filed,msg){
	if(trim(strvalue).length > 0) if(/\s{2}/.test(strvalue) || /[%\\\'\"]/.test(strvalue) || /mime/i.test(strvalue)) msg = msg?msg +filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//文字區塊( 必填欄位 )
function isText(strvalue,filed,msg){
	if(!trim(strvalue) || /[%\\\'\"]/.test(strvalue) || /mime/i.test(strvalue)) msg = msg?msg +filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//文字區塊( 非必填欄位 )
function orText(strvalue,filed,msg){
	if(trim(strvalue).length > 0) if(/[%\\\'\"]/.test(strvalue) || /mime/i.test(strvalue)) msg = msg?msg +filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//Mail 檢查( 必填欄位 )
function isMail(strvalue,filed,msg){
	if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.\w+$/.test(strvalue))) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//Mail 檢查( 非必填欄位 )
function orMail(strvalue,filed,msg){
	if(strvalue.length > 0) if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.\w+$/.test(strvalue))) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//數字檢查( 必填欄位 )
function isNum(strvalue,filed,msg){
	if(!/^[0-9#\-]+$/.test(strvalue)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//數字檢查( 非必填欄位 )
function orNum(strvalue,filed,msg){
	if(strvalue.length > 0) if(!/^[0-9#\-]+$/.test(strvalue)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//密碼檢查
function ckPass(passwd,ckpass,filed,msg){
	if(!passwd || (passwd != ckpass)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//檔案檢查( 須上傳 )
function isFile(strvalue,type,filed,msg){
	if(!FILEBASE(strvalue,type)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//檔案檢查( 可上傳 )
function orFile(strvalue,type,filed,msg){
	if(strvalue && !FILEBASE(strvalue,type)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//指定檔案檢查( 須上傳 )
function isAFile(strvalue,fname,filed,msg){
	if(!FILENAME(strvalue,fname)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//指定檔案檢查( 可上傳 )
function orAFile(strvalue,fname,filed,msg){
	if(strvalue && !FILENAME(strvalue,fname)) msg = msg?msg + filed +" error !\n\r":filed +" error !\n\r";
	return msg;
}

//檔名資料比對
function FILENAME(obj,fname){
	myfilename = obj.toLowerCase();
	if(myfilename.indexOf(fname) > -1) return true;
	else return false;
}

//副檔名資料比對
function FILEBASE(obj,type){
	myfilename = obj.toLowerCase();
	Ts = type;
	for(k = 0 ; k < Ts.length-1 ; k++){
		if(myfilename.indexOf(Ts[k]) > -1)	return true;
	}
	return false;
}

