/*--------------------------------------------------------------------------------------------------
	FileName: validate.js
	Description: フォームチェックして問題なければ送信・二重送信防止
	Usage:
	<input type="button" value="送信内容の確認 &raquo;" class="submitBtn" name="submitBtn" id="submitBtn" onClick="validate()">
	<div id="loading"></div>
	Last Update: 2006.10.28
	To Do: エラー時の指示処理/checkboxの必須処理
	Copyright: kaji_at_skyscape.jp
--------------------------------------------------------------------------------------------------

書式設定
formItem["アイテム名"] = new Array ("説明","必須パラメータ","書式パラメータ");
	■必須パラメータ
		N:省略可
		E:記入必須(input,textarea)
		S:選択必須(select)
		R:選択必須(radio)
	■書式パラメータ(省略可)
		M:メール書式
		N:数字のみ
		H:数字・ハイフン
		E:英字のみ
--------------------------------------------------------------------------------------------------*/

var formName = "f1"; // フォームの名前

var formItem = new Array();
formItem["name"]       = new Array ("名前","E");
formItem["zip"]        = new Array ("郵便番号","H");
formItem["tel"]        = new Array ("電話番号","E","H");
formItem["fax"]        = new Array ("FAX番号","N","H");
formItem["email"]      = new Array ("E-Mail","E","M");
formItem["email_conf"] = new Array ("E-Mail（確認用）","E","M");


function validate() {
	alertMes = "";
	i = "";
	for (i in formItem) {
		checkFormat();
	}
	
	if (!output()) return;
	submitForm();
	return;
}


function checkFormat() {
	switch (formItem[i][1]) { 
		case "N" : 
			break;
		case "E" :
			if (!document[formName][i].value) {
				alertMes += formItem[i][0] +"が空欄です。\n";
				return;
			}
			break;
		case "S" :
			n = document[formName][i].options.selectedIndex;
			if (!document[formName][i].options[n].value) {
				alertMes += formItem[i][0] +"を選択してください。\n";
				return;
			}
			break;
		case "R" :
			var option = -1;
			for (r=0; r < document[formName][i].length; r++) {
				if (document[formName][i][r].checked) {
					option = r;
				}
			}
			if (option == -1) {
				alertMes += formItem[i][0] +"を選んでください。\n" ;
				return;
			}
			break;
	} 

	switch (formItem[i][2]) {
		case "E" :
			if(document[formName][i].value.match(/[^a-zA-Z]+/)) {
				alertMes += formItem[i][0] +"には、半角英字以外の「"+ document[formName][i].value.match(/[^a-zA-Z]+/g) +"」が含まれています。\n" ;
				return;
			}
			break;
		case "N" :
			if(document[formName][i].value.match(/[^0-9]+/)) {
				alertMes += formItem[i][0] +"には、半角数字以外の「"+ document[formName][i].value.match(/[^0-9]+/g) +"」が含まれています。\n" ;
				return;
			}
			break;
		case "H" :
			if(document[formName][i].value.match(/[^0-9\-]+/)) {
				alertMes += formItem[i][0] +"には、半角数字・ハイフン以外の「"+ document[formName][i].value.match(/[^0-9\-]+/g) +"」が含まれています。\n" ;
				return;
			}
			break;
		case "M" :
			if(document[formName][i].value.match(/[,:;"<>\(\)\[\]\\]+|[^\x21-\x7E]+/)) {
				alertMes += formItem[i][0] +"には、使用できない文字の「"+ document[formName][i].value.match(/[,:;"<>\(\)\[\]\\]+|[^\x21-\x7E]+/g) +"」が含まれています。\n" ;
				return;
			}
			if(!document[formName][i].value.match(/^[^@]+@[^@]+\..+$/)) {
				alertMes += formItem[i][0] +"が正しい書式ではありません。\n" ;
				return;
			}
			break;
	}
}


function output() {
	if (alertMes) { 
		alert(alertMes);
		return false;
	} else {
		return true;
	}
}


function submitForm() {
	submitForm = disabledBtn;
	if (document.all) {
		document[formName].submitBtn.disabled = true;
		document.all.loading.innerHTML = "<img src='/_common/img/loading.gif' width='15' height='15'>　処理中です…";
		document[formName].submit();
	} else if (document.getElementById) {
		document.getElementById("submitBtn").disabled = true;
		document.getElementById("loading").innerHTML = "<img src='/_common/img/loading.gif' width='15' height='15'>　処理中です…";
		document.getElementById(formName).submit();
	}
}


function disabledBtn() {
	alert("現在処理中です。\nしばらくお待ち下さい。");
}

// EOF
