/* ----- カレンダーの描画、Cell色の変更、scroll -----*/

var setCalendar = {
	before_elm : null,
	
	set : function(){
		var cal_div = Get.getElement("calendar");
		var cal_td  = cal_div.getElementsByTagName("TD");
		var res_div = Get.getElement("reservation");
		var res_td  = res_div.getElementsByTagName("TD");
		var not_blank = new Array();
		var res_line  = new Array();
		var idx = 0;
		
		for(var i = 0; i < cal_td.length; i++){
			if(cal_td.item(i).id){
				not_blank[idx] = cal_td.item(i);
				idx++;
			}
		}
		this.cell_color(not_blank);
		this.scroll(not_blank);
		
		if((res_td.length / 4) == not_blank.length){
			for(var i = 0; i < not_blank.length; i++){
				res_line[i] = new Array(4);
			}
			for(var i = 0; i < not_blank.length; i++){
				for(var j = 0; j < 4; j++){
					res_line[i][j] = res_td.item(i * 4 + j);
				}
			}
			this.target_color(not_blank, res_line);
		}
	},
	
	cell_color : function(not_blank){
		var today = null;
		var sunday = new Array();
		var saturday = new Array();
		var weekday = new Array();
		var j = 0, k = 0, l = 0;
		
		for(var i = 0; i < not_blank.length; i++){
			if(not_blank[i].className == "js_cell js_today"){
				today = not_blank[i];
			}else if(not_blank[i].className == "js_cell js_sunday"){
				sunday[j] = not_blank[i];
				j++;
			}else if(not_blank[i].className == "js_cell js_saturday"){
				saturday[k] = not_blank[i];
				k++;
			}else if(not_blank[i].className == "js_cell js_weekday"){
				weekday[l] = not_blank[i];
				l++;
			}
		}
		
		Dom.addListener(today, "mouseover", name(today, "js_cell js_today2"));
		Dom.addListener(today, "mouseout",  name(today, "js_cell js_today" ));
		
		for(var i = 0; i < sunday.length; i++){
			Dom.addListener(sunday[i], "mouseover", name(sunday[i], "js_cell js_sunday2"));
			Dom.addListener(sunday[i], "mouseout" , name(sunday[i], "js_cell js_sunday" ));
		}
		for(var i = 0; i < saturday.length; i++){
			Dom.addListener(saturday[i], "mouseover", name(saturday[i], "js_cell js_saturday2"));
			Dom.addListener(saturday[i], "mouseout" , name(saturday[i], "js_cell js_saturday" ));
		}
		for(var i = 0; i < weekday.length; i++){
			Dom.addListener(weekday[i], "mouseover", name(weekday[i], "js_cell js_weekday2"));
			Dom.addListener(weekday[i], "mouseout" , name(weekday[i], "js_cell js_weekday" ));
		}
		
		function name(elm, class_name){
			return function(){ elm.className = class_name; };
		}
	},
	
	target_color : function(not_blank, res_line){
		for(var i = 0; i < not_blank.length; i++){
			Dom.addListener(not_blank[i], "click", color_change(res_line[i]));
		}
		
		function color_change(elm){
			return function(){
				if(setCalendar.before_elm){
					for(var i = 0; i < 4; i++){
						setCalendar.before_elm[i].className = "js_contents";
					}
				}
				for(var i = 0; i < 4; i++){
					elm[i].className = "js_contents2";
				}
				setCalendar.before_elm = elm;
			};
		}
	},
	
	scroll : function(not_blank){
		for(var i = 0; i < not_blank.length; i++){
			Dom.addListener(not_blank[i], "click", scroll(i));
		}
		
		function scroll(no){
			return function(){
				Scroll.leap("details" + (no + 1));
			};
		}
	}
}

var toCalendar = {
	set : function(){
		var elm = Get.getElement("to_cal");
		
		Dom.addListener(elm, "click", function(){ Scroll.leap("cal"); });
		Dom.addListener(elm, "mouseover", function(){ Set.setFgColor("to_cal", "#ff6600"); });
		Dom.addListener(elm, "mouseout", function(){ Set.setFgColor("to_cal", "#990000"); });
	}
}

Dom.addListener(window, "load", function(){
	var name = document.title;
	var h_title = Get.getElement("title");
	var div_calendar = Get.getElement("calendar");
	var div_reservation = Get.getElement("reservation");
	
	var calendar = new Calendar();
	if(name == "Next Month Reservation : Makkouru Homepage"){
		calendar.next();
	}
	
	var title = new Title(h_title, calendar);
	
	var calendar_table = new CalendarTable(calendar);
	var calendar_view = new CalendarView(div_calendar, calendar_table);
	
	var reservation_table = new ReservationTable(calendar);
	var reservation_view = new ReservationView(div_reservation, reservation_table);
	
	setCalendar.set();
	toCalendar.set();
});