//入力が必須のフィールドのclassプロパティに与える値
var Indiy = "Indiy";

var error_num=0;

function field_checker(){
	//classNameがIndiyのフィールドに対してchangeイベントが発生したら、関数【re_input】を呼ぶ
	$$("."+Indiy).invoke("observe", 'change', re_input);
	
	//classNameがemailのフィールドに対して、changeイベントが発生したら、関数【email_ck】を呼ぶ
	$$(".email").invoke("observe", 'change', email_ck);
	
	//classNameがnumberのフィールドに対して、changeイベントが発生したら、関数【number_ck】を呼ぶ
	$$(".number").invoke("observe", 'change', number_ck);

	//classNameがtelのフィールドに対して、changeイベントが発生したら、関数【tel_ck】を呼ぶ
	$$(".tel").invoke("observe", 'change', tel_ck);
	
	//classNameがmail_confirmのフィールドに対して、changeイベントが発生したら、関数【mail_confirm】を呼ぶ
	$$(".mail_confirm").invoke("observe", 'change', mail_confirm);
}

// メールアドレスの確認用フォームチェック。最初に記入したメールアドレスと違えばその旨警告。
function mail_confirm(ev){
	var tag = ev.element();
	if(tag.value!=$F("mail_ad")){
		alert("最初に記入したものと違います");
		tag.setStyle("background-color:pink;");//ピンク色で間違いを示す
	}else{
		tag.setStyle("background-color:#fff;");//白色で問題がないことを示す
	}
}

//電話番号の形式をチェックし、問題があれば、その場でアラート
function tel_ck(ev){

	var tag = ev.element();
	if(!tag.value.match( /^\d+-\d+-\d+$/g)){
		alert("電話番号の形式が間違っています。ハイフン区切りで指定してください。");//アラート
		tag.value = "123-4567-8910";//フィールド値の例を示す
		tag.setStyle("background-color:pink;");//ピンク色で間違いを示す
	}else{
		tag.setStyle("background-color:#fff;");//白色で問題がないことを示す
	}
}

//数値の形式をチェックし、問題があれば、その場でアラート
function number_ck(ev){
	var tag = ev.element();
	if(!tag.value.match( /^\d+$/g)){
		alert("数字以外が入力されています。");//アラート
		tag.value = "";//フィールド値を削除する
		tag.setStyle("background-color:pink;");//ピンク色で間違いを示す
	}else{
		tag.setStyle("background-color:#fff;");//白色で問題がないことを示す
	}
}

//メールアドレスの形式をチェックし、問題があれば、その場でアラート
function email_ck(ev){
	var tag = ev.element();
	if(!tag.value.match( /^[A-Za-z0-9\.]+[\w-\.]+@[\w\.-]+\.\w{2,}$/g)){
		alert("メールアドレスの形式が違います");
		tag.setStyle("background-color:pink;");//ピンク色で間違いを示す
	}else{
		tag.setStyle("background-color:#fff;");//白色で問題がないことを示す
	}
}

// 必須項目のフィールドにchangeイベントが発生したら呼ばれる関数
function re_input(ev){
	var tag = ev.element(); // tagを特定する
	if(tag.className == Indiy && tag.value){// tagのclassName属性がIndiyのみで、かつtagに値があれば
		tag.setStyle('background-color: #fff'); // 背景を白に変える
	}
}

function error(comment,form_id){

	var all_fields   = $(form_id).getElements(); //formのidが●●の全フィールドを取得する。戻り値は配列
	var input_fields = $(form_id).getInputs();  //formのidが●●のinputフィールドを取得する。戻り値は配列

	//statementクラスが存在すればイカを処理
	// ※　statementクラスとは、必須項目などが未記入のさいにcreateされるエレメントのこと。アラート表示。
	if($$(".statement").length>=1){
		//すべてのstatementクラスのついたタグを削除する
		$$(".statement").each(
			function(tag){
				tag.remove();
			}
		)
	}

	//全フィールドに対して、関数を実行する
	all_fields.each(function(tag){
		//tag.tagName; //INPUT,SELECT等を返す
		//tag.name; //フィールドのnameプロパティ
		//tag.value; //フィールドのvalueプロパティ
		//tag.id; //フィールドのidプロパティ
		//tag.className; //フィールドのclassプロパティ
		//tag.type: //フィールドのtypeプロパティ

		//classプロパティがIndiy(必須要素に付けるclass)のフィールドが空白であれば
		if(tag.className.match(/Indiy/) && tag.type != "checkbox" && tag.value == ""){
			tag.setStyle("background-color:#ffcccc");
			var statement = new Element("div", {className:"statement"}).update("[" + tag.name + "]は必須項目です");
			statement.setStyle('color: red');
			statement.setStyle('font-size: 0.75em');
			statement.setStyle('padding: 3px');
			$(tag.form.id).insert({before: statement});
			$$('.statement')[0].scrollTo();
			error_num += 1;
		}
		
		if(tag.className.match(/Indiy/) && tag.type == "checkbox" && !tag.checked){
			tag.setStyle("background-color:#ffcccc");
			var statement = new Element("div", {className:"statement"}).update("[" + tag.name + "]は必須項目です");
			statement.setStyle('color: red');
			statement.setStyle('font-size: 0.75em');
			statement.setStyle('padding: 3px');
			$(tag.form.id).insert({before: statement});
			$$('.statement')[0].scrollTo();
			error_num += 1;
		}		
	});

	if(error_num != 0){
		error_num = 0;
		return false;
	}else{

		var judge_response = confirm(comment);
		
		if(judge_response){
			return true;
		}else{
			return false;
		}
		
	}
	
}
