function $()
{
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++)
	{
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}


function checkform(f)
{
	var o,i,re;
	for (i=0; i<f.elements.length; i++) {
		o = f.elements[i];
		if (!ishide(o)) {
			if (false==checkelement(o)) {
				return false;
			}
		}
	}
}

function ishide(o)
{
	if (o.style.display=="none") {
		return true;
	} else if (o.parentElement) {
		return ishide(o.parentElement);
	} else {
		return false;
	}
}

function checkelement(o)
{
	var fname = o.name;
	if (o.fname) {
		fname=o.fname;
	}
	if (o.req) {
		switch (o.type) {
			case "text":
			case "textarea":
				if  (o.value=="") {
					alert(fname+" 需要輸入值");
					o.focus();
					return false;
				}
				break;
			case "radio":
				var rads=document.getElementsByName(o.name);
				var selectCount=0;
				for(var j=0;j<rads.length;j++) {
					if (rads[j].checked) selectCount++;
				}
				if (selectCount==0) {
					alert(fname+" 必須選擇");
					return false;
				}
				break;
			default:
				alert("req for name="+fname+" type="+o.type);

		}
	}
	if (o.minlength && (o.value.length < o.minlength)) {
		alert(fname+" 至少要輸入 "+o.minlength+" 個字");
		o.focus();
		return false;
	}
	if (o.check) {
		switch (o.check) {
			case "date":
				if (!o.value.match(/^\d+\-\d+\-\d+$/)) {
					alert(fname+" 不符合日期格式");
					o.focus();
					return false;
				}
				break;
			case "int":
				if (o.value.match(/[^0-9]/)) {
					alert(fname+" 僅能輸入數字");
					o.focus();
					return false;
				}
				break;
			case "email":
				if (!o.value.match(/^(\w+)@([\w\-\.]+\.[A-Za-z]{2,4})/)) {
					alert(fname+" Email 格式錯誤");
					o.focus();
					return false;
				}
				break;
			case "pid":
				if (!is_pid(o.value)) {
					alert(fname+" 身份證字號錯誤");
					o.focus();
					return false;
				}
				break;
			default:
				var re = new RegExp(o.check);
				if (!o.value.match(re)) {
					alert(fname+" 不符合輸入格式 ["+o.check+"]");
					o.focus();
					return false;
				}
		}
	}
}


var pid_local=new Array(34);
pid_local[10]='A';
pid_local[11]='B';
pid_local[12]='C';
pid_local[13]='D';
pid_local[14]='E';
pid_local[15]='F';
pid_local[16]='G';
pid_local[17]='H';
pid_local[18]='J';
pid_local[19]='K';
pid_local[20]='L';
pid_local[21]='M';
pid_local[22]='N';
pid_local[23]='P';
pid_local[24]='Q';
pid_local[25]='R';
pid_local[26]='S';
pid_local[27]='T';
pid_local[28]='U';
pid_local[29]='V';
pid_local[32]='W';
pid_local[30]='X';
pid_local[31]='Y';
pid_local[33]='Z';

function is_pid(id){
	id=id.toUpperCase()
	if(id.length!=10){
		return false;
	}
	if(firstlettererr(id)){
		return false;
	}
	if(numerr(id)){
		return false;
	}
	if(checkerr(id)){
		return false;
	}
	return true;
}
function firstlettererr(id){
	var fl=id.substring(0,1)
	var haserr=1
	for(i=10;i<=33;i++){
		if(pid_local[i]!=fl)
			continue
		else{
			haserr=0
			break
		}
	}
	if(haserr==1)
		return 1
	else
		return 0
}
function numerr(id){
	var haserr=0
	for(i=1;i<=9;i++){
		if(parseInt(id.substring(i,i+1))>0 || id.substring(i,i+1)=='0')
			continue
		else{
			haserr=1
			break}
		}
	if(haserr==1)
		return 1
	else
		return 0
}
function checkerr(id){
	var se=new Array(10)
	var we=0
	var checkcode=0
	for(i=10;i<=33;i++){
		if(pid_local[i]==id.substring(0,1)){
			se[0]=parseInt((i+'0').substring(0,1))
			se[1]=parseInt((i+'0').substring(1,2))
			break
		}
	}
	for(i=1;i<=9;i++){
		se[i+1]=parseInt(id.substring(i,i+1))
	}
	for(i=0;i<=10;i++){
		if(i==0)
			we=we+se[i]
		else
			we=we+(se[i]*(10-i))
	}
	checkcode=((10-mod(we,10))+'0').substring(0,1)
	if(checkcode!=id.substring(9,10))
		return 1
	else
		return 0

}
function mod(a,b){
	var r
	r=Math.round(a/b)
	if((b*r)>a)
	r-=1
	return (a-(b*r))
}
