jQuery.noConflict();
var j$ = jQuery;
window.ERROR = '';
//------------------------------
//	結果関数が未定義のAjax関数
//------------------------------
function AjaxEmptyComplete(action,filename,param){
	var msec = (new Date()).getTime();
	var a = new Ajax.Request(filename, {
		method: action,
		parameters: param,
		onSuccess:showSuccess,
		onComplete: showResponse	//この関数を使用する度に定義する
	});
}
//------------------------
//	リセットするための関数
//------------------------
function Reset(){
	var param = "reset=1";
	var txt = $("form1").getElementsByTagName("input");
	for(i=0;i<=txt.length -1;i++){
 		if(txt[i].type == "text"){txt[i].value = "";}
		if(txt[i].type == "checkbox"){txt[i].checked  = false;}
	}
	var textarea = $("form1").getElementsByTagName("textarea");
	if(textarea){textarea[0].value = "";}
	showSuccess = function(originalRequest){
		
	};
	showResponse = function(originalRequest){
	};
	AjaxEmptyComplete('get','../lib.php',param);
	
}
//----------------------------------
//	単にフォームをPOSTするための関数
//----------------------------------
function OnlySubmit(){
	$("form1").submit();
}
//----------------------------------
//	入力補助
// form/index.php
//----------------------------------
//j$(function(){
//	//----------------------------------------------
//	//DOM中にid=month,id=day,id=wday 要素があった場合に動く
//	//----------------------------------------------
//	if($("month")&&$("day")&&$("wday")){
//		//--------------------
//		// 	曜日の自動入力 (ボツ）
//		//--------------------
//		/*
//		j$('#day').blur(function(){
//			if($("month").value.length > 0&&$("day").value.length > 0){
//				var m = $("month").value;
//				var d = $("day").value;
//				//if(m.match(/[^0-9]/g) && d.match(/[^0-9]/g)){
//				if(parseInt(m, 10)==m && parseInt(d, 10)==d){
//					WeekArray = new Array( "日","月","火","水","木","金","土" );
//					Dt = new Date( 2009 ,m - 1 ,d );
//					Wday = Dt.getDay();
//					$("wday").value = WeekArray[Wday];
//				}
//			}
//		});*/
//		var D = new DayCheck();
//		j$('#month').blur(function(){
//			ERROR = '';
//			D.SetInputYear();
//			if(ERROR.length > 0){return;}
//			
//			D.GetWday();
//			D.DAYtoWDAY();
//			D.SundayCheck();
//		});
//		j$('#day').blur(function(){
//			ERROR = '';
//			D.SetInputYear();
//			if(ERROR.length > 0){return;}
//			
//			D.GetWday();
//			D.DAYtoWDAY();
//			D.SundayCheck();
//		});
//		j$('#wday').blur(function(){
//			ERROR = '';
//			D.SetInputYear();
//			if(ERROR.length > 0){return;}
//			
//			D.GetWday();
//			D.DAYtoWDAY();
//			D.SundayCheck();
//		});
//
//		j$('#form_submit').click(function(){
//			D.OnlySubmit();
//		});
//
//	}
//
//});


// 上の関数だとOperaで動かなかったので修正
window.onload=function(){
	//----------------------------------------------
	//DOM中にid=month,id=day,id=wday 要素があった場合に動く
	//----------------------------------------------
	if($("month") && $("day") && $("wday")){
		var D = new DayCheck();
		$("month").onblur = function() {
			ERROR = '';
			D.SetInputYear();
			if(ERROR.length > 0){return;}
			
			D.GetWday();
			D.DAYtoWDAY();
			D.DayOffCheck();
		}
		$("day").onblur = function() {
			ERROR = '';
			D.SetInputYear();
			if(ERROR.length > 0){return;}
			
			D.GetWday();
			D.DAYtoWDAY();
			D.DayOffCheck();
		}
		$("wday").onblur = function() {
			ERROR = '';
			D.SetInputYear();
			if(ERROR.length > 0){return;}
			
			D.GetWday();
			D.DAYtoWDAY();
			D.DayOffCheck();
		}

		$("form_submit").onclick = function() {
			D.OnlySubmit();
		}
	}
}

function DayCheck(){
	this.weekday = null;
	this.input_year = null;
	this.input_date = null;	// 入力年月日
	this.date_today = new Date();	// 今日の日付

	this.today_month = this.date_today.getMonth() + 1;
	
	//------------------------------------------
	// 年末年始関連の日付の定義（年末に決定するはずなので、決まったらここと、script/lib.phpに定義する。）
	//------------------------------------------
	// レッスン最終日の定義
	this.end_date_array = new Array(12,26);	// 配列(月,日)
	this.end_date_str = "12月26日";	// 文字列
	// 年始（その年のレッスン初日）の定義
	this.start_date_array = new Array(1,8);	// 配列(月,日)
	this.start_date_str = "1月8日";	// 文字列
}
DayCheck.prototype = {

	// 年のテキストボックスがないので、プログラム側で解釈して適当な年をセットする。
	SetInputYear : function(){
		ERROR = "";
		
		// デフォルトで今年と解釈する。
		this.input_year = this.date_today.getFullYear();

		// Dateオブジェクト作成
		var this_year_start_date = new Date(this.date_today.getFullYear(), this.start_date_array[0]-1, this.start_date_array[1]);	// 今年の[年始]
		var closing_day = new Date(this.date_today.getFullYear(), this.end_date_array[0]-1,  this.end_date_array[1]-2);	// 年内レッスン予約の締切日（レッスン最終日の2日前）
		var end_date = new Date(this.date_today.getFullYear(), this.end_date_array[0]-1,  this.end_date_array[1]);	// 今年のレッスン最終日
		var start_date = new Date(this.date_today.getFullYear()+1, this.start_date_array[0]-1, this.start_date_array[1]);	// 翌年の[年始]

		// 月日がともに入力されている場合
		if($("month").value.length > 0 && $("day").value.length > 0){

			// 今日が12月の場合
			if(this.today_month == 12){
				// 「1月」あるいは「2月」と入力された場合、翌年と解釈する。
				if($("month").value == 1 || $("month").value == 2){
					this.input_year = this.date_today.getFullYear() + 1;
				}
			}
			// 入力年月日の決定
			this.input_date = new Date(this.input_year, $("month").value-1, $("day").value);

			// 今日が12月の場合
			if(this.today_month == 12){
				//------------------------------------------
				// 年またぎチェック
				//------------------------------------------
				// ・今日が[締切日]より後である場合、翌年1～2月のレッスンの予約のみを受け付ける。
				if(this.date_today > closing_day && $("month").value > 2){
					ERROR = "今年の体験レッスンは予約を締切ました";
				}
				// ・12月が入力されているが、入力日付が[レッスン最終日]より後である場合、エラー。
				if($("month").value == 12 && this.input_date > end_date){
					ERROR = "今年の体験レッスンは" + this.end_date_str + "までです";
				}
				// ・1月が入力されているが、入力日付が[年始]より前である場合、エラー。
				if($("month").value == 1 && this.input_date < start_date){
					ERROR = "来年の体験レッスンは" + this.start_date_str + "からです";
				}
			// 今日が1月の場合
			}else if(this.today_month == 1){
				//------------------------------------------
				// 年またぎチェック
				//------------------------------------------
				// 日付が[年始]より前である場合、エラー。
				if(this.input_date < this_year_start_date){
					ERROR = "今年の体験レッスンは" + this.start_date_str + "からです";
				}
			}

		}
		$("error").innerHTML = ERROR;
	},
	GetWday : function(){
		$("error").innerHTML = "";
		if($("month").value.length > 0&&$("day").value.length > 0){
			var m = $("month").value;
			var d = $("day").value;
			if(parseInt(m, 10)==m && parseInt(d, 10)==d){
				WeekArray = new Array("日","月","火","水","木","金","土");
				Dt = new Date(this.input_year,m-1,d);
				Wday = Dt.getDay();
				this.weekday = WeekArray[Wday];
			}
		}
	},
	DAYtoWDAY : function(){
		if($("month").value.length >0&&$("day").value.length >0&&$("wday").value.length >0&&$("wday").value != this.weekday){
			ERROR = "日付と曜日があっていません";
			$("error").innerHTML = "日付と曜日があっていません";
			//alert("error 日付と曜日が");
		}
	},
	/*
	SundayCheck : function(){
		if(this.weekday == "日"){
			ERROR = "その日は定休日（日曜日）です";
			$("error").innerHTML = "その日は定休日（日曜日）です";
		//	alert("error 定休日");

		}
	},
	*/
	DayOffCheck : function(){
		var border_date = new Date(2010, 3-1, 1);	// 境目2010年3月1日

		// 1.	入力年月日が、2010年3月1日より前の場合
		if(this.input_date < border_date){
			//	入力された日付が日曜日である場合、エラーメッセージを表示する。
			if(this.weekday == "日"){
				ERROR = "その日は定休日（日曜日）です";
				$("error").innerHTML = "その日は定休日（日曜日）です";
			}

		// 2.	入力年月日が、2010年3月1日以降の場合
		}else if(this.input_date >= border_date){
			//	入力された日付が月曜日である、エラーメッセージを表示する。
			if(this.weekday == "月"){
				ERROR = "その日は定休日（月曜日）です";
				$("error").innerHTML = "その日は定休日（月曜日）です";
			}
		}
	},
	OnlySubmit : function(){
		if(ERROR.length > 0){alert("入力ミスの箇所があります");}else{$("form1").submit();}
		//alert(ERROR);
	}
	
}

