/*
 * JavaScript for bbs/upload (http://confetto.s31.xrea.com/)
 *
 * $Id: bbs.js,v 1.3 2007/05/06 14:00:54 confetto Exp $
 * $Name: release-1-7 $
 */

/*
 * フォームの内容を検証する
 *	form     => 検証するFORM要素のノード
 *	required => 入力必須項目の名前を配列で
 */
function validateForm(form, required) {
	var labels = getLabalTexts(form);

	for (var i = 0; i < required.length; i++)
		if (form.elements[required[i]].value == "" && labels[required[i]]) {
			alert(labels[required[i]] + "を入力してください。");
			form.elements[required[i]].focus();
			return false;
		}

	/* 投稿フォームでは本文か画像は入力必須につき */
	if (
		form.elements.action.value == "post" &&
		form.elements.body.value   == ""     &&
		form.elements.file.value   == ""     &&
		labels['body'] && labels['file']
	) {
		alert(labels["body"] + "か" + labels["file"] + "を入力してください。");
		form.elements.body.focus();
		return false;
	}

	return true;
}

/**
 * フォームの入力コントロール毎のラベルを取得する
 * 明示的なラベル付けのみに対応。
 */
function getLabalTexts(form) {
	var labelTexts = [];
	if (form.getElementsByTagName) {
		var labelElements = form.getElementsByTagName('label');
		
		for (var j = 0; j < form.elements.length; j++) {
			for (var i = 0; i < labelElements.length; i++) {
				if (
					labelElements[i].getAttribute('for') ==
						form.elements[j].getAttribute('id')
				) {
					labelTexts[form.elements[i].name] =
						labelElements[i].firstChild.nodeValue;
				}
			}
		}
	}
	return labelTexts;
}
