// Validatorクラス
function Validator() {
	this.checkElements = new Array();
	this.executeValidate = executeValidateOfValidator;
	this.addTextboxNullCheck = addTextboxNullCheckOfValidator;
	this.addCheckboxNullCheck = addCheckboxNullCheckOfValidator;
	this.addAnyCheckboxNullCheck = addAnyCheckboxNullCheckOfValidator;
}

// addCheckboxNullCheck関数
// 同じname属性のチェックボックスに対し、必須チェックのルールを追加する。
// ラジオボタンにも使用可能。
//
// 引数 elementName チェックしたいチェックボックスのname属性
// 引数 message ひとつもチェックされていなかった場合のメッセージ
function addCheckboxNullCheckOfValidator(elementName , message){
	this.checkElements.push(new Array(elementName , message , 'checkbox_null' ));
}

// addAnyCheckboxNullCheck関数
// 複数種類のname属性のチェックボックスに対し、必須チェックのルールを追加する。
// ラジオボタンにも使用可能。
//
// 引数 elementNames チェックしたいチェックボックスのname属性配列
// 引数 message ひとつもチェックされていなかった場合のメッセージ
function addAnyCheckboxNullCheckOfValidator(elementNames , message){
	this.checkElements.push(new Array(elementNames , message , 'any_checkbox_null' ));
}

// addTextboxNullCheck関数
// テキストボックスに対し、必須入力のルールを追加する。
//
// 引数 elementId チェックしたいテキストボックスのid属性
// 引数 message 未入力だった場合のメッセージ
function addTextboxNullCheckOfValidator(elementId , message){
	this.checkElements.push(new Array(elementId , message , 'textbox_null' ));
}

// executeValidate関数
//　チェックを実行し、エラーがあった場合はアラートを表示する。
// 返り値 boolean チェック結果
function executeValidateOfValidator(){
	var message = '';
	var all_flag = true;
	
	var elements;
	var ar;
	for(i = 0; i < this.checkElements.length; i++){
		if(this.checkElements[i][2] == 'checkbox_null'){
			// チェックボックス・ラジオボタンチェック
			elements = document.getElementsByName(this.checkElements[i][0]);
	
			ar = $A(elements);
			var flag = false;
			ar.each( function(obj) {
				flag = flag || obj.checked;
			});
			if(!flag){
				if(!all_flag){
					message += "\n";
				}
				message += this.checkElements[i][1];
				all_flag = false;
			}
		}else if(this.checkElements[i][2] == 'any_checkbox_null'){
			// 複数種類のチェックボックスチェック
			var flag = false;
			var arCheck;
			
			for(j = 0; j < this.checkElements[i][0].length; j++){
				elements = document.getElementsByName(this.checkElements[i][0][j]);
		
				ar = $A(elements);
				ar.each( function(obj) {
					flag = flag || obj.checked;
				});
			};
			
			if(!flag){
				if(!all_flag){
					message += "\n";
				}
				message += this.checkElements[i][1];
				all_flag = false;
			}
		}else if(this.checkElements[i][2] == 'textbox_null'){
			// テキストボックスチェック
			if($F(this.checkElements[i][0]).replace(/^\s+|\s+$/g, '') == ''){
				if(!all_flag){
					message += "\n";
				}
				message += this.checkElements[i][1];
				all_flag = false;
			}
		}
	}
	
	// 出力処理
	if(!all_flag){
		alert(message);
	}
	return all_flag;
}

