var CheckClass = {

	check: function(elem,type,extra){
		var err_message = false;
		var rule =  this.checkrule;
		var display = this.display;
		rule.elem = elem;
		rule.value = elem.value;
		rule.extra = extra;
		rule.message = CheckClass.message.error;

		if(!type || type.match(/^!/)){
			err_message = rule.button();
		}
		var rule_mode = type.split(/\s+/);
		for(var i = 0, m; m = rule_mode[i]; i++) {
			m = m.replace(/([\d\-]+)?$/, '');
				err_message = rule[m](RegExp.$1);
			if(err_message){
				break;
			}
		}
		if(err_message){
			display.errorOpen(elem.name,err_message);
			this.count.cnt++;
		}else{
				display.errorClose(elem.name);
		}

	},
	submit: function(elem){
		var display = this.display;
		var reservation_flag = true;
		this.count.cnt = 0;
		var err_flag = false;
		display.allerrorClose(elem);
		for(var i = 0, e; e = elem[i]; i++) {
			if(e.onblur){
				e.onblur();
			}else if(e.onchange){
				e.onchange();
			}else if(e.onclick){
				if(e.type != 'button'){

					if(!CheckClass.checkrule.reservation_check(elem)){
						reservation_flag = false;
						this.count.cnt++;
					}
				}
			}
		}
		if(!reservation_flag){
					$('reservation_err').innerHTML = CheckClass.message.error.reservation;
		}

		if(this.count.cnt > 0){
			return false;
		}
		return true;
	}

};

CheckClass.checkrule = {

	mail: function(){
			if(!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/))
				return this.message.mail;
	},
	mailmatch : function(){
			if(this.elem.form[this.extra].value.length > 0 && this.value != this.elem.form[this.extra].value)
				return this.message.mailmatch;
	},
	kana: function() {
	   for(var i = 0;i < this.value.length;i++) {
	      if(this.value.charAt(i) == ' ' || this.value.charAt(i) == '\u3000') continue;
	      if(this.value.charAt(i) < '\u30A1' || this.value.charAt(i) > '\u30F6')
		 return this.message.kana;
	   }
	},
	empty: function() {

		if(this.elem.type != 'select-one'){

			if(this.value.length < 1){
				return this.message.empty;
			}
		}else{
			if(this.value == 0){
				return this.message.button;
			}
		}
	},
	num: function(){
		var target = this.value.replace(/-/g,"");
		if(target.match(/\D/))
			return this.message.num;
	},
	button: function(){
		var flag = false;
		if(this.elem.type == 'radio' || this.elem.type == 'checkbox') {

			for(var i = 0; i < this.elem.form[this.elem.name].length; i++){
				var e = this.elem.form[this.elem.name][i];
				if(e.checked){
					if(e.name == 'exper'){
						var id_name = 'exper_day_tr' + i;
						$(id_name).show();
					}
					flag = true;

				}else{
					if(e.name == 'exper'){
						var id_name = 'exper_day_tr' + i;
						$(id_name).hide();
					}
				}
			}

			if(!flag){

				return this.message.button;
			}

		}
	},
	fax:function(){
	       if(this.value == 2){
			if(this.elem.form[this.extra].value.length == 0){
					return this.message.fax;
			}
	       }

	},
	exper:function(){
		var num = false;
		for(var i = 0; i < this.elem.form['exper'].length; i++){
			var e = this.elem.form['exper'][i];
			if(e.checked){
				num = e.value;
			}
		}
		if(num){
		 if(this.elem.form['exper_day'+num].value  == 0){
				 return this.message.button;
		 }
		}else{
				return this.message.button;
		}
	},
	subject:function(){
		var max_num = document.form1.max_cnt.value;
		var target = 'subject';
		var flag = false;
		for(var i = 0; i < max_num; i++){
				var e = document.form1[target + i];
				if(e.checked){
					flag = true;
					break;
				}
		}

		if(!flag){

			return this.message.button;
		}
	},
	ampm:function(){
		var flag = false;
		if(this.elem.type == 'radio') {
			for(var i = 0; i < this.elem.form[this.elem.name].length; i++){
				var e = this.elem.form[this.elem.name][i];
				if(e.checked){
					flag = true;
				}
			}
			if(!flag){
				return this.message.ampm;
			}
		}
	},
	r_attribute:function(){
		var r = this.elem.form['reservation'][this.extra];
		var flag_1 = false;
		var flag_2 = false;
		if(r.checked){
				switch(this.extra){
					case 0:
						if(this.elem.form['t_year'].value > 0 && this.elem.form['t_month'].value > 0 && this.elem.form['t_day'].value > 0){
							flag_1 = true;
						}

						//AM・PMチェック修正 2010.05.24
						//for(var i = 0; i < this.elem.form['ampm'].length; i++){
						//	var e = this.elem.form['ampm'][i];
						//	if(e.checked){
						//		flag_2 = true;
						//	}
						//}
						if (!! this.elem.form['ampm']) {
							for(var i = 0; i < this.elem.form['ampm'].length; i++){
								var e = this.elem.form['ampm'][i];
								if(e.checked){
									flag_2 = true;
								}
							}
						} else {
							flag_2 = true;
						}
						if(!flag_1 || !flag_2){
							return this.message.reservation0;
						}
					break;
					case 1:
						if(this.elem.form['h_year'].value > 0 && this.elem.form['h_month'].value > 0 && this.elem.form['h_day'].value > 0){
							flag_1 = true;
						}

						//AM・PMチェック修正 2010.05.24
						//for(var i = 0; i < this.elem.form['h_ampm'].length; i++){
						//	var e = this.elem.form['h_ampm'][i];
						//	if(e.checked){
						//		flag_2 = true;
						//	}
						//}
						if (!! this.elem.form['h_ampm']) {
							for(var i = 0; i < this.elem.form['h_ampm'].length; i++){
								var e = this.elem.form['h_ampm'][i];
								if(e.checked){
									flag_2 = true;
								}
							}
						} else {
							flag_2 = true;
						}
						if(!flag_1 || !flag_2){
							return this.message.reservation1;
						}
					break;
					case 2:
							for(var b = 0; b < this.elem.form['exper'].length; b++){
									var e = this.elem.form['exper'][b]
									var num = e.value;
									if(e.checked){

										if(this.elem.name == 'exper'){
												var id_name = 'exper_day_tr' + num;
												$(id_name).show();
										}
										var checked_num = e.value;
										flag_1 = true;
									}else{

										if(this.elem.name == 'exper'){
												var id_name = 'exper_day_tr' + num;
												$(id_name).hide();
										}
									}
							}
							if(flag_1){
		 						if(this.elem.form['exper_day'+checked_num].value > 0){
										flag_2 = true;
								}
							}

						if(!flag_1 || !flag_2){

							return this.message.reservation2;
						}

					break;
					case 3:
						if(this.elem.form['c_year'].value > 0 && this.elem.form['c_month'].value > 0 && this.elem.form['c_day'].value > 0){
							flag_1 = true;
						}
						if( this.elem.form['kengaku_time'].value > 0){
								flag_2 = true;
						}

						if(!flag_1 || !flag_2){
							return this.message.reservation3;
						}
					break;
				}
		}
	},
	reservation:function(){

			var e = this.elem.form[this.elem.name][this.extra];
			switch(this.extra){
					case 0:
						if($('school_ex').style.display != "none"){
							$('school_ex_err').innerHTML = "";
						}
						$('school_ex').toggle();
					break;
					case 1:
						if($('hogosya_ex').style.display != "none"){
							$('hogosya_ex_err').innerHTML = "";
						}
						$('hogosya_ex').toggle();
					break;
					case 2:
						if($('exper').style.display != "none"){
							$('exper_err').innerHTML = "";
						}
						$('exper').toggle();
					break;
					case 3:
						if($('kengaku').style.display != "none"){
							$('kengaku_err').innerHTML = "";
						}
						$('kengaku').toggle();
					break;
			}

			switch(e.value){
						case "1":
							document.form1['t_year'].value  = 0;
							document.form1['t_month'].value = 0;
							document.form1['t_day'].value = 0;
							for(var n = 0; n < this.elem.form['ampm'].length; n++){
									this.elem.form['ampm'][n].checked = false;
							}
							break;
						case "2":
							document.form1['h_year'].value  = 0;
							document.form1['h_month'].value = 0;
							document.form1['h_day'].value = 0;
							for(var a = 0; a < this.elem.form['ampm'].length; a++){
									this.elem.form['h_ampm'][a].checked = false;
							}
							break;
						case "3":
							var num = false;
							for(var b = 0; b < this.elem.form['exper'].length; b++){
									var e = this.elem.form['exper'][b]
									if(e.checked){
											e.checked = false;
											num = e.value;
									}
							}
							if(num){
									var name = 'exper_day' + num;
		 							this.elem.form['exper_day'+num].value  == 0;
							}
							break;
						case "4":
							this.elem.form['c_year'].value  = 0;
							this.elem.form['c_month'].value = 0;
							this.elem.form['c_day'].value = 0;
							this.elem.form['kengaku_time'].value  = 0;
							break;
			}

	},
	reservation_check:function(elem){
				var flag = false;
				for(var i = 0; i < elem['reservation'].length; i++){
						var e = elem['reservation'][i];
						if(e.checked){
							flag = true;
						}
				}
				if(!flag){

				}
				return flag;
	}
};
CheckClass.display = {

		errorOpen:function(name,error){
			if(name == 'year' || name == 'month' || name == 'day'){
					$('birth_err').innerHTML = CheckClass.message.error.age;
			}else if(name == 't_year' || name == 't_month' || name == 't_day' || name == 'ampm'){
					$('school_ex_err').innerHTML = error;
			}else if(name == 'h_year' || name == 'h_month' || name == 'h_day' || name == 'h_ampm'){
				$('hogosya_ex_err').innerHTML = error;
			}else if(name.match('exper')){
				$('exper_err').innerHTML = error;
			}else if(name == 'c_year' || name == 'c_month' || name == 'c_day' || name == 'kengaku_time'){
				$('kengaku_err').innerHTML = error;
			}else if(name.match('subject')){
				$('subject_err').innerHTML = CheckClass.message.error.button;
			}else{
				var id_name = name + "_err";
				$(id_name).innerHTML = error;
			}
		},
		errorClose:function(name){
			if(name == 'year' || name == 'month' || name == 'day'){
				if(document.form1['year'].value > 0 && document.form1['month'].value > 0 && document.form1['day'].value > 0){
					$('birth_err').innerHTML = "";
				}
			}else if(name == 't_year' || name == 't_month' || name == 't_day' || name == 'ampm'){
					$('school_ex_err').innerHTML = "";
					$('reservation_err').innerHTML = "";

			}else if(name == 'h_year' || name == 'h_month' || name == 'h_day' || name == 'h_ampm'){
					$('hogosya_ex_err').innerHTML = "";
					$('reservation_err').innerHTML = "";

			}else if(name.match('exper')){
					$('exper_err').innerHTML = "";
					$('reservation_err').innerHTML = "";

			}else if(name == 'c_year' || name == 'c_month' || name == 'c_day' || name == 'kengaku_time'){
					$('kengaku_err').innerHTML = "";
					$('reservation_err').innerHTML = "";
			}else if(name.match('subject')){
				$('subject_err').innerHTML = "";
			}else{
				var id_name = name + "_err";

				$(id_name).innerHTML = "";
			}
		},
		allerrorClose:function(elem){
			for(var i = 0, e; e = elem[i]; i++) {
				if(e.onblur || e.onchange || e.onclick){
					var id_name = e.name + "_err";
					if(e.name == 'year' || e.name == 'month' || e.name == 'day'){
						 $('birth_err').innerHTML = "";
					}else if(e.name == 't_year' || e.name == 't_month' || e.name == 't_day' || e.name == 'ampm'){
						 $('school_ex_err').innerHTML = "";
						 $('reservation_err').innerHTML = "";
					}else if(e.name == 'h_year' || e.name == 'h_month' || e.name == 'h_day' || e.name == 'h_ampm'){
						 $('hogosya_ex_err').innerHTML = "";
						 $('reservation_err').innerHTML = "";
					}else if(e.name.match('exper')){
						 $('exper_err').innerHTML = "";
						 $('reservation_err').innerHTML = "";
					}else if(e.name == 'c_year' || e.name == 'c_month' || e.name == 'c_day' || e.name == "kengaku_time"){
						 $('kengaku_err').innerHTML = "";
						 $('reservation_err').innerHTML = "";
					}else if(e.name.match('subject')){
						$('subject_err').innerHTML = "";
					}else if(e.type != 'button' && e.type != 'hidden'){
						 $(id_name).innerHTML = "";
					}
				}
			}
		}
}
CheckClass.message = {
		error:{
			mail: 'メールアドレスのフォーマット形式が正しくありません。',
			mailmatch:'PCメールアドレスと一致しません。',
			kana: '全角カタカナで入力して下さい。',
			empty: '入力して下さい。',
			num: '半角数字で入力して下さい。',
			button:'選択して下さい。',
			age:'<br />年月日を選択して下さい。',
			fax:'FAX番号を入力して下さい。',
			ampm:'<br />午前、午後どちらかを選択して下さい。',
			reservation:'<br />予約内容をどれか一つ選択して下さい。',
			reservation0:'<br />正しく指定して下さい。',
			reservation1:'<br />正しく指定して下さい。',
			reservation2:'<br />正しく指定して下さい。',
			reservation3:'<br />正しく指定して下さい。'

		}
}
CheckClass.count = {
	cnt:0
}

element_id_name = false;
function setElement(elem){
 child_id_name = elem + "_contents";
 person_id_name = elem;
}
function setMtformcontact(mode,param,elem,preview_url,complate_url){

	if(elem != ''){
		setElement(elem);
	}
	var query = "mode="+mode+"&param="+param+"&preview_url="+preview_url+"&complate_url="+complate_url;

	var url   = "mtform/mailform.php";
	var myAjax = new Ajax.Request(
		url, 
		{
			method: "post", 
			parameters: query,
			onLoading : function(){
				$('ajax-loaderImg').show();
				$(person_id_name).show();
			},
			onComplete: function(request) {

				$(child_id_name).innerHTML = request.responseText;
				$('ajax-loaderImg').hide();

			}
		}
	);
}

function setMtformpreview(mode,elem){

	if(elem != ''){
		setElement(elem);
	}
	var query = "mode="+mode;
	var url   = "mtform/mailform_preview.php";
	var myAjax = new Ajax.Request(
		url, 
		{
			method: "post", 
			parameters: query,
			onLoading : function(){
				$('ajax-loaderImg').show();
				$(person_id_name).show();
			},
			onComplete: function(request) {
				$(child_id_name).innerHTML = request.responseText;

				$('ajax-loaderImg').hide();

			}
		}
	);

}
function setMtformcomplate(mode,elem){

	if(elem != ''){
		setElement(elem);
	}
	var query = "mode="+mode;
	var url   = "mtform/mailform_complate.php";
	var myAjax = new Ajax.Request(
		url, 
		{
			method: "post", 
			parameters: query,
			onLoading : function(){
				//$('ajax-loaderImg').show();
				$(person_id_name).show();
			},
			onComplete: function(request) {
				$(child_id_name).innerHTML = request.responseText;
				//$('ajax-loaderImg').hide();

			}
		}
	);

}

function getPreviewPage(mode,preview_url,form){

	if(!CheckClass.submit(form)){
		return false;
	}

	var query = Form.serialize('form1');
	var url   = "mtform/mailform.php";
	query += "&mode=preview";
	var myAjax = new Ajax.Request(
		url, 
		{
			method: "post", 
			parameters: query,
			onLoading : function(){
				//$('ajax-loaderImg').show();

			},
			onComplete: function(request) {

				location.href  = preview_url;
			}
		}
	);
}

function getComplatePage(mode,complate_url){

	var url   = "mtform/mailform.php";
	var query = "mode=complate";

	var myAjax = new Ajax.Request(
		url, 
		{
			method: "post", 
			parameters: query,
			onLoading : function(){
				//$('ajax-loaderImg').show();
			},
			onComplete: function(request) {
				//alert(request.responseText);

				location.href  = complate_url;
			}
		}
	);

}




