
/*
 *--------------- 用戶端表單通用驗證CheckForm(oForm) -----------------
 * 功能:通用驗證所有的表單元素.
 * 使用:
 *    <form name="form1" onsubmit="return CheckForm(this)">
 *    <input type="text" name="id" check="^S+$" warning="id不能為空,且不能含有空格">
 *    <input type="submit">
 *    </form>
 * 注意:寫正則運算式時一定要小心.不要讓"有心人"有空子鑽.
 * 已實現功能:
 * 對text,password,hidden,file,textarea,select,radio,checkbox進行合法性驗證
 * 待實現功能:把正則表式寫成個庫.
 *--------------- 用戶端表單通用驗證CheckForm(oForm) -----------------
 */
//主函數
function CheckForm(oForm)
{
    var els = oForm.elements;
    //遍曆所有表元素
    for(var i=0;i<els.length;i++)
    {
        //是否需要驗證
        if(els[i].check)
        {
            //取得驗證的正則字串
            var sReg = els[i].check;
            //取得表單的值,用通用取值函數
            var sVal = GetValue(els[i]);
            //字串->正則運算式,不區分大小寫
            var reg = new RegExp(sReg,"i");
            if(!reg.test(sVal))
            {
                //驗證不通過,彈出提示warning
                alert(els[i].warning);
                //該表單元素取得焦點,用通用返回函數
                GoBack(els[i]) 
                return false;
            }
        }
    }
}

//通用取值函數分三類進行取值
//文本輸入框,直接取值el.value
//單多選,遍曆所有選項取得被選中的個數返回結果"00"表示選中兩個
//單多下拉功能表,遍曆所有選項取得被選中的個數返回結果"0"表示選中一個
function GetValue(el)
{
    //取得表單元素的類型
    var sType = el.type;
    switch(sType)
    {
        case "text":
        case "hidden":
        case "password":
        case "file":
        case "textarea": return el.value;
        case "checkbox":
        case "radio": return GetValueChoose(el);
        case "select-one":
        case "select-multiple": return GetValueSel(el);
    }
    //取得radio,checkbox的選中數,用"0"來表示選中的個數,我們寫正則的時候就可以通過0{1,}來表示選中個數
    function GetValueChoose(el)
    {
        var sValue = "";
        //取得第一個元素的name,搜索這個元素組
        var tmpels = document.getElementsByName(el.name);
        for(var i=0;i<tmpels.length;i++)
        {
            if(tmpels[i].checked)
            {
                sValue += "0";
            }
        }
        return sValue;
    }
    //取得select的選中數,用"0"來表示選中的個數,我們寫正則的時候就可以通過0{1,}來表示選中個數
    function GetValueSel(el)
    {
        var sValue = "";
        for(var i=0;i<el.options.length;i++)
        {
            //單選下拉清單提示選項設置為value=""
            if(el.options[i].selected && el.options[i].value!="")
            {
                sValue += "0";
            }
        }
        return sValue;
    }
}

//通用返回函數,驗證沒通過返回的效果.分三類進行取值
//文本輸入框,游標定位在文本輸入框的末尾
//單多選,第一選項取得焦點
//單多下拉菜單,取得焦點
function GoBack(el)
{
    //取得表單元素的類型
    var sType = el.type;
    switch(sType)
    {
        case "text":
        case "hidden":
        case "password":
        case "file":
        case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
        case "checkbox":
        case "radio": var els = document.getElementsByName(el.name);els[0].focus();
        case "select-one":
        case "select-multiple":el.focus();
    }
}



function Trim(str){    
 return str.replace(/(^\s*)|(\s*$)/g,"");
}


function check(thisform) {
	str = "";
	
	if (Trim(thisform.user_name.value) =='') {
		str += "我的名字未填寫!\n";
	}
	
	if (Trim(thisform.birthday.value) =='') {
		str += "我的生日未填寫!\n";
	}
	
	if (Trim(thisform.city.value) =='') {
		str += "我就讀縣市未填寫!\n";
	}
	
	if (Trim(thisform.school.value) =='') {
		str += "我就讀學校未填寫!\n";
	}
	
	
	// 年級
	var classselected = false
	for (i=1; i< thisform.user_class.length; i++){
		if (thisform.user_class[i].selected){
			classselected = true
		}
	}
	
	if (classselected == false) {
		str += "年級未填寫!\n";
	}
	
	
	// 性別
	var sexselected = false
	var radiolength = thisform.sex.length
		
	for (var i=0 ; i < radiolength ; i++) {
		if (thisform.sex[i].checked) {
    		sexselected = true
    	}
	}

	if (sexselected == false) {
		str += "我的性別未填寫!\n";
	}
	
	
	
	// 版本
	var versionselected = false
	var versionlength = thisform.version.length
		
	for (var i=0 ; i < versionlength ; i++) {
		if (thisform.version[i].checked) {
    		versionselected = true
    	}
	}

	if (versionselected == false) {
		str += "版本未填寫!\n";
	}
	
	
	// 爸媽出遠門 —小小行事曆
	var A1selected = false
	var A1length = thisform.A1.length
		
	for (var i=0 ; i < A1length ; i++) {
		if (thisform.A1[i].checked) {
    		A1selected = true
    	}
	}

	if (A1selected == false) {
		str += "「爸媽出遠門 —小小行事曆」未填寫!\n";
	}
	
	// 我想對你說 —好愛好愛你 
	var A2selected = false
	var A2length = thisform.A2.length
		
	for (var i=0 ; i < A2length ; i++) {
		if (thisform.A2[i].checked) {
    		A2selected = true
    	}
	}

	if (A2selected == false) {
		str += "「我想對你說 —好愛好愛你」未填寫!\n";
	}
	
	// 用心說感恩的話 —感恩卡製作
	var A3selected = false
	var A3length = thisform.A3.length
		
	for (var i=0 ; i < A3length ; i++) {
		if (thisform.A3[i].checked) {
    		A3selected = true
    	}
	}

	if (A3selected == false) {
		str += "「用心說感恩的話 —感恩卡製作」未填寫!\n";
	}
	
	// 族群文化大不同 
	var A4selected = false
	var A4length = thisform.A4.length
		
	for (var i=0 ; i < A4length ; i++) {
		if (thisform.A4[i].checked) {
    		A4selected = true
    	}
	}

	if (A4selected == false) {
		str += "「族群文化大不同」未填寫!\n";
	}
	
	
	// 獨特的藝術圖案 
	var A5selected = false
	var A5length = thisform.A5.length
		
	for (var i=0 ; i < A5length ; i++) {
		if (thisform.A5[i].checked) {
    		A5selected = true
    	}
	}

	if (A5selected == false) {
		str += "「獨特的藝術圖案」未填寫!\n";
	}
	
	
	// 罕見疾病知多少，伸出雙手關懷他
	var A6selected = false
	var A6length = thisform.A6.length
		
	for (var i=0 ; i < A6length ; i++) {
		if (thisform.A6[i].checked) {
    		A6selected = true
    	}
	}

	if (A6selected == false) {
		str += "「罕見疾病知多少，伸出雙手關懷他」未填寫!\n";
	}
	
	
	// 體驗不同的感覺 —活動人偶製作
	var A7selected = false
	var A7length = thisform.A7.length
		
	for (var i=0 ; i < A7length ; i++) {
		if (thisform.A7[i].checked) {
    		A7selected = true
    	}
	}

	if (A7selected == false) {
		str += "「體驗不同的感覺 —活動人偶製作」未填寫!\n";
	}
	
	
	// 體驗不同的感覺 —小小任務測驗
	var A8selected = false
	var A8length = thisform.A8.length
		
	for (var i=0 ; i < A8length ; i++) {
		if (thisform.A8[i].checked) {
    		A8selected = true
    	}
	}

	if (A8selected == false) {
		str += "「體驗不同的感覺 —小小任務測驗」未填寫!\n";
	}
	
	// 點滴關心 —我的儲蓄計畫
	var A9selected = false
	var A9length = thisform.A9.length
		
	for (var i=0 ; i < A9length ; i++) {
		if (thisform.A9[i].checked) {
    		A9selected = true
    	}
	}

	if (A9selected == false) {
		str += "「點滴關心 —我的儲蓄計畫」未填寫!\n";
	}
	
	
	// 分送愛心 —我的關懷行動
	var A10selected = false
	var A10length = thisform.A10.length
		
	for (var i=0 ; i < A10length ; i++) {
		if (thisform.A10[i].checked) {
    		A10selected = true
    	}
	}

	if (A10selected == false) {
		str += "「分送愛心 —我的關懷行動」未填寫!\n";
	}
	
	// 愛心存錢筒製作
	var A11selected = false
	var A11length = thisform.A11.length
		
	for (var i=0 ; i < A11length ; i++) {
		if (thisform.A11[i].checked) {
    		A11selected = true
    	}
	}

	if (A11selected == false) {
		str += "「愛心存錢筒製作」未填寫!\n";
	}
	
	
	// 收看公視「 2007 感恩傳愛假期」的影片
	var B1selected = false
	var B1length = thisform.B1.length
		
	for (var i=0 ; i < B1length ; i++) {
		if (thisform.B1[i].checked) {
    		B1selected = true
    	}
	}

	if (B1selected == false) {
		str += "「收看公視 2007 感恩傳愛假期的影片」未填寫!\n";
	}
	
	// 是否完成遊戲本
	var B2selected = false
	var B2length = thisform.B2.length
		
	for (var i=0 ; i < B2length ; i++) {
		if (thisform.B2[i].checked) {
    		B2selected = true
    	}
	}

	if (B2selected == false) {
		str += "「是否完成遊戲本」未填寫!\n";
	}
	
	
	// 家裡的大人需要陪我一起做嗎
	var B3selected = false
	var B3length = thisform.B3.length
		
	for (var i=0 ; i < B3length ; i++) {
		if (thisform.B3[i].checked) {
    		B3selected = true
    	}
	}

	if (B3selected == false) {
		str += "「家裡的大人需要陪我一起做嗎」未填寫!\n";
	}
	
	
	
	// 是否針對遊戲本做講解
	var C1selected = false
	var C1length = thisform.C1.length
		
	for (var i=0 ; i < C1length ; i++) {
		if (thisform.C1[i].checked) {
    		C1selected = true
    	}
	}

	if (C1selected == false) {
		str += "「是否針對遊戲本做講解」未填寫!\n";
	}
	
	
	// 是否參加公視「關懷，會溫暖你我的內心創意設計」比賽活動
	var C2selected = false
	var C2length = thisform.C2.length
		
	for (var i=0 ; i < C2length ; i++) {
		if (thisform.C2[i].checked) {
    		C2selected = true
    	}
	}

	if (C2selected == false) {
		str += "「是否參加公視關懷，會溫暖你我的內心創意設計比賽活動」未填寫!\n";
	}






	
	
	if (str!=''){
		alert(str);
		return false;
	}
	
	
}



  
  
