function TELboundary ( uid ) {
	for ( idx = 0 ; idx < uid.length ; idx++ ) {
		if ( !( ( uid.charAt( idx ) >= '0' && uid.charAt( idx ) <= '9' ) || ( uid.charAt( idx ) == '-' || uid.charAt( idx ) == '#' ) ) )
			uid = uid.replace( uid.charAt( idx ), '' );
	}
	return uid
}

function IDboundary ( uid ) {
    if ( !( ( uid.charAt( 0 ) >= 'a' && uid.charAt( 0 ) <= 'z') ||( uid.charAt( 0 ) >= 'A' && uid.charAt( 0 ) <= 'Z' ) ) ) {
		uid = uid.replace( uid.charAt( 0 ), '' );
	}
	for ( idx = 0 ; idx < uid.length ; idx++ ) {
		if ( ( idx > 1 ) && !( uid.charAt( idx ) >= '0' && uid.charAt( idx ) <= '9' ) ) {
			uid = uid.replace( uid.charAt( idx ), '' );
		}
		if ( !( ( uid.charAt( idx ) >= 'a' && uid.charAt( idx ) <= 'z' ) || ( uid.charAt( idx ) >= '0' && uid.charAt( idx ) <= '9' ) || ( uid.charAt(idx)>= 'A' && uid.charAt(idx) <= 'Z' ) ) )
			uid = uid.replace( uid.charAt( idx ), '' );
	}
	uid = uid.toUpperCase();
	return uid
}

function EMAILboundary(uid){
	for( idx = 0 ; idx < uid.length ; idx++ ){
		if( !( ( uid.charAt(idx)>= 'a' && uid.charAt(idx) <= 'z' ) || ( uid.charAt(idx)>= '0' && uid.charAt(idx) <= '9' ) || ( uid.charAt(idx)>= 'A' && uid.charAt(idx) <= 'Z' ) || ( uid.charAt(idx)== '.' || uid.charAt(idx) == '@'  || uid.charAt(idx) == '_' || uid.charAt(idx) == '-') ) ){
			uid = uid.replace(uid.charAt(idx), '');
		}
	}
	return uid
}

function BIRTHDAYboundary ( uid ) {
	for ( idx = 0 ; idx < uid.length ; idx++ ) {
		if ( !( ( uid.charAt( idx ) >= '0' && uid.charAt( idx ) <= '9' ) ) )
			uid = uid.replace( uid.charAt( idx ), '' );
	}
	return uid
}

function checkTEL ( input ) {
	return true;
}

function checkEMAIL ( input ) {
	var strr;
	reEMAIL = /^([^\s][a-zA-Z0-9#_\.-]+)@([^\s][a-zA-Z0-9._\-]+)\.(ad|ae|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gov|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nato|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$/i;
	
	if ( !reEMAIL.test( input ) ) {
		return false;
	}
	
	reEMAIL.exec( input );
	if ( RegExp.$3 != "" && RegExp.$3 != "." && RegExp.$2 != "." ) {
		strr = RegExp.$1 + "@" + RegExp.$2 + "." + RegExp.$3;
	} else if ( RegExp.$2 != "" && RegExp.$2 != "." ) {
		strr = RegExp.$1 + "@" + RegExp.$2;
	} else {
		strr = RegExp.$1;
	}
	
	if ( strr != input ) {
		return false;
	}
	return true;
}

function checkBIRTHDAY ( input ) {
	reBirthday = /^\d{8}$/;
	if ( !reBirthday.test( input ) ) {
		return "生日有誤!!";
	} else {
		var today = new Date();
		var myYEAR = parseInt( input.substr( 0, 4 ), 10 );
		var myMONTH = parseInt( input.substr( 4, 2 ), 10 );
		var myDAY = parseInt( input.substr( 6, 2 ), 10 );
		
		if ( myYEAR < 1900 || myYEAR > today.getFullYear() ) {
			return "請輸入正確西元年份1900-"+today.getFullYear()+"!!";
		} else if ( myMONTH > 12 || myMONTH < 1 ) {
			return "請輸入正確月份01-12!!";
		} else if ( myDAY > 31 || myDAY < 1 ) {
			return "請輸入正確日期01-31!!";
		} else {
			return true;
		}
	}
}

function checkRankGroup ( GROUP, RANK ) {
	switch ( GROUP ) {
		case 1://六、七段
			if ( RANK == 1 || RANK == 2 ) {
				return true;
			}
			break;
		case 2://五段
			if ( RANK == 3 ) {
				return true;
			}
			break;
		case 3://四段
			if ( RANK == 4 ) {
				return true;
			}
			break;
		case 4://三段
			if ( RANK == 5 ) {
				return true;
			}
			break;
		case 5://二段
			if ( RANK == 6 ) {
				return true;
			}
			break;
		case 6://初段
			if ( RANK == 7 ) {
				return true;
			}
			break;
		case 7://甲(1-3級)
			if ( RANK >= 8 && RANK <= 10 ) {
				return true;
			}
			break;
		case 8://乙(4-6級)
			if ( RANK >= 11 && RANK <= 13 ) {
				return true;
			}
			break;
		case 9://丙(7-9級)
			if ( RANK >= 14 && RANK <= 16 ) {
				return true;
			}
			break;
		case 10://丁(10-15級)
			if ( RANK >= 17 && RANK <= 22 ) {
				return true;
			}
			break;
		case 11://初學(16級以下)
			if ( RANK == 23 ) {
				return true;
			}
			break;
		default :
			break;
	}
	
	return false;
}

function LastCheck () {
	var GROUPtmp = getById( 'registers_select_1' );//分組
	var GROUP = parseInt( GROUPtmp.value, 10 );
	if ( !GROUPtmp || GROUP == '0' ) {
		alert( '請選擇比賽組別!!!' );
		return false;
	}
	
	var RANKtmp = getById( 'registers_select_7' );//棋力
	var RANK = parseInt( RANKtmp.value, 10 );
	if ( !RANKtmp || RANK == '0' ) {
		alert( '請選擇棋力!!!' );
		return false;
	}
	
	if ( !checkRankGroup( GROUP, RANK ) ) {
		GROUPtmp.value = 0;
		RANKtmp.value = 0;
		alert( "棋力和組別不符!!!" );
		return false;
	}
	
	var SEXtmp = getById( 'registers_toggle_2' );//性別
	var SEX = parseInt( SEXtmp.value, 10 );
	if ( !SEXtmp || SEX == '0' ) {
		alert( '請選擇性別!!!' );
		return false;
	}
	
	var Day1L = getById( 'registers_select_4' );//第一天中餐
	if ( !Day1L || Day1L.value == '0' ) {
		alert( '請選擇第一天中餐!!!' );
		return false;
	}
	
	var Day1D = getById( 'registers_select_5' );//第一天晚餐
	if ( !Day1D || Day1D.value == '0' ) {
		alert( '請選擇第一天晚餐!!!' );
		return false;
	}
	
	var Day2L = getById( 'registers_select_6' );//第二天中餐
	if ( !Day2L || Day2L.value == '0' ) {
		alert( '請選擇第二天中餐!!!' );
		return false;
	}
	
	var STAY = getById( 'registers_select_3' );//住宿
	if ( !STAY || STAY.value == '0' ) {
		alert( '請選擇住宿方式!!!' );
		return false;
	}
	
	var NONE = getById( 'registers_select_2' );//缺
	
	var NAME = getById( 'registers_text_1' );//姓名
	if ( !NAME || NAME.value == '' ) {
		NAME.focus();
		alert( '請輸入姓名!!!' );
		return false;
	}
	
	var SCHOOL = getById( 'registers_text_2' );//學校
	if ( !SCHOOL || SCHOOL.value == ' ' || SCHOOL.value == '' ) {
		alert( '請選擇學校!!!' );
		return false;
	}
	
	var TELPHONE = getById( 'registers_text_3' );//電話
	if ( !TELPHONE || TELPHONE.value == '' ) {
		TELPHONE.focus();
		alert( '請輸入聯絡電話!!!' );
		return false;
	}
	
	if ( !checkTEL( TELPHONE.value ) ) {
		TELPHONE.focus();
		alert( "聯絡電話有誤!!!" );
		return false;
	}
	
	var ADDRESS = getById( 'registers_text_4' );//地址
	if ( !ADDRESS || ADDRESS.value == '' ) {
		alert( '請輸入地址!!!' );
		return false;
	}
	
	var CLASS = getById( 'registers_text_5' );//系級
	if ( !CLASS || CLASS.value == '' ) {
		alert( '請輸入系級!!!' );
		return false;
	}
	
	var ID = getById( 'registers_text_6' );//身分證字號
	if ( !ID || ID.value == '' ) {
		alert( '請輸入身分證字號!!!' );
		return false;
	} else {
		reID = /^[a-zA-Z]{1}[a-zA-Z0-9]{1}[0-9]{8}$/;
		if ( !reID.test( ID.value ) ) {
			ID.value = '';
			ID.focus();
			alert( "身分證字號有誤!!!" );
			return false;
		}
	}
	
	var EMAIL = getById( 'registers_text_7' );//電子郵件信箱
	if ( !EMAIL || EMAIL.value == '' ) {
		EMAIL.focus();
		alert( '請輸入電子郵件信箱!!!' );
		return false;
	}
	
	if ( !checkEMAIL( EMAIL.value ) || EMAIL.value == '' ) {
		EMAIL.focus();
		alert( "電子郵件信箱有誤!!!" );
		return false;
	}
	
	var SNO = getById( 'registers_text_8' );//學號
	if ( !SNO || SNO.value == '' ) {
		SNO.focus();
		alert( '請輸入學號!!!' );
		return false;
	}
	
	var BIRTHDAY = getById( 'registers_text_9' );//生日
	if ( !BIRTHDAY || BIRTHDAY.value == '0' ) {
		BIRTHDAY.focus();
		alert( '請輸入生日!!!' );
		return false;
	}
	
	var ReturnTMP = checkBIRTHDAY( BIRTHDAY.value );
	if ( ReturnTMP != true ) {
		BIRTHDAY.value = '';
		BIRTHDAY.focus();
		alert( ReturnTMP );
		return false;
	}
	
	alert('報名資料已送出！\r\n請至您填寫的電子郵件信箱收取報名確認信，並依信上指示完成報名！');
	//document.form1.submit();
	return true;
}

function getById( id ) {
	var elem = null;
	
	if ( document.getElementById ) {
		elem = document.getElementById( id );
	} else if ( document.all ) {
		elem = document.all[id];
	
		if ( !elem ) {
			elem = eval( 'document.all.' + id );
		}
	} else if ( document.layers ) {
		elem = getObjNN4( document, id );
	}
	
	if ( !elem ) {
		elem = document.getElementById( id );
	}                   
	
	return elem;
}

