var bas_holiday;
var inc_holiday;
var exc_holiday;

//
// 画像の先読み
//
jQuery.preloadImages = function()
{
	for(var i = 0; i<arguments.length; i++)
	{
		jQuery("<img>").attr("src", arguments[i]);
	}
};
jQuery.preloadImages("/images/btn_nxt.gif", "/images/btn_nxt_off.gif", "/images/btn_prv.gif", "/images/btn_prv_off.gif", "/images/mark_holiday.gif");

//
// ページ読み込み時
//
jQuery(document).ready(function(){
	var values;
	var val;
	var i;

	bas_holiday = new Array();
	inc_holiday = new Array();
	exc_holiday = new Array();

	if(jQuery("#base-holiday").val() == undefined) return;

	values = jQuery("#base-holiday").val().split('&');
	for(i=0; i<values.length; i++) {
		val = values[i].split('=');
		bas_holiday[i] = val[1].split(',');
	}

	if(jQuery("#inc-holiday").val().length > 0) {
		values = jQuery("#inc-holiday").val().split('&');
		for(i=0; i<values.length; i++) {
			val = values[i].split('=');
			inc_holiday[val[0]] = val[1].split(',');
		}
	}

	if(jQuery("#exc-holiday").val().length > 0) {
		values = jQuery("#exc-holiday").val().split('&');
		for(i=0; i<values.length; i++) {
			val = values[i].split('=');
			exc_holiday[val[0]] = val[1].split(',');
		}
	}

	create_business_calendar();
});

function create_business_calendar(y, m) {

	var now = new Date();
	var arr;
	var html;
	var mydate;
	var col;
	var firstday;
	var enddate;
	var holiday;
	var week = -1;
	var test = "";
	var nxt_y;
	var nxt_m;
	var prv_y;
	var prv_m;
	var check_date;
	var max_y_f;
	var max_m_f;
	var max_y_p;
	var max_m_p;
	var nxt_link;
	var prv_link;
	var s_day;
	var day_array;
	var diff;
	var my_day;

	if(y == undefined) y = now.getFullYear();
	if(m == undefined) m = now.getMonth() + 1;

	// 月送りを求める(未来)
	max_y_f = now.getFullYear();
	max_m_f = (now.getMonth() + 1) + parseInt(jQuery("#month_future").val());
	if(max_m_f > 12) {
		max_y_f = now.getFullYear() + 1;
		max_m_f -= 12;
	}
	check_date = new Date(max_y_f, (max_m_f-1), 1);
	mydate = new Date(y, (m-1), 1);
	if((check_date - mydate) < 0) {
		y = max_y_f;
		m = max_m_f;
	}

	// 月送りを求める(過去)
	max_y_p = now.getFullYear();
	max_m_p = (now.getMonth() + 1) - parseInt(jQuery("#month_past").val());
	if(max_m_p < 0) {
		max_y_p = now.getFullYear() - 1;
		max_m_p += 12;
	}
	check_date = new Date(max_y_p, (max_m_p-1), 1);
	mydate = new Date(y, (m-1), 1);
	if((mydate - check_date) < 0) {
		y = max_y_p;
		m = max_m_p;
	}

	arr = y + "-" + m;

	// 翌月、先月を取得
	if(m == 1) {
		nxt_y = y; nxt_m = m + 1; prv_y = y - 1; prv_m = 12;
	} else if(m == 12) {
		nxt_y = y + 1; nxt_m = 1; prv_y = y; prv_m = m - 1;
	} else {
		nxt_y = y; nxt_m = m + 1; prv_y = y; prv_m = m - 1;
	}

	// リンクを取得
	if(y == max_y_f && m == max_m_f) {
		nxt_link = '<div class="move_button nxt_off">&nbsp;</div>';
	} else {
		nxt_link = '<div class="move_button nxt" onclick="create_business_calendar(' + nxt_y + ', ' + nxt_m + ')">&nbsp;</div>';
	}

	if(y == max_y_p && m == max_m_p) {
		prv_link = '<div class="move_button prv_off">&nbsp;</div>';
	} else {
		prv_link = '<div class="move_button prv" onclick="create_business_calendar(' + prv_y + ', ' + prv_m + ')">&nbsp;</div>';
	}

	// 末日を取得
	mydate = new Date(y, m, 0);
	enddate = mydate.getDate();

	// 指定年指定月１日の曜日
	mydate = new Date(y, (m-1), 1);
	firstday = mydate.getDay();

	// 週始めを取得
	s_day = parseInt(jQuery("#s_day").val());
	if(s_day == 0) {
		day_array = new Array("日", "月", "火", "水", "木", "金", "土");
	} else if(s_day == 1) {
		day_array = new Array("月", "火", "水", "木", "金", "土", "日");
	} else if(s_day == 2) {
		day_array = new Array("火", "水", "木", "金", "土", "日", "月");
	} else if(s_day == 3) {
		day_array = new Array("水", "木", "金", "土", "日", "月", "火");
	} else if(s_day == 4) {
		day_array = new Array("木", "金", "土", "日", "月", "火", "水");
	} else if(s_day == 5) {
		day_array = new Array("金", "土", "日", "月", "火", "水", "木");
	} else if(s_day == 6) {
		day_array = new Array("土", "日", "月", "火", "水", "木", "金");
	}

	// カレンダーの作成
	html = '<table summary="営業日カレンダー" id="isp-calendar-inner" border="0" cellspacing="0" cellpadding="0"><tbody>'
				+ '<tr><td>' + prv_link + '</td>'
				+ '<td class="calendar-date-title">' + y + ' 年　' + m + ' 月</td>'
				+ '<td align="right">' + nxt_link + '</td></tr>'
				+ '<tr><td colspan="3">'
				+ '<table summary="営業日カレンダー" id="isp-business-calendar" border="0" cellpadding="0" cellspacing="1"><thead><tr>';

	for(var i=0; i<day_array.length; i++) {
		html += '<th>' + day_array[i] + '</th>';
	}

	html += '</tr></thead><tbody>';

	// 1日になるまで空白のセルを作成
	if(firstday < s_day) {
		diff = Math.abs((7+firstday) - s_day);
	} else {
		diff = Math.abs(firstday - s_day);
	}
	/*
	diff = Math.abs(firstday - s_day);
	if(s_day == 1) {
		if(firstday == 0) diff = Math.abs(7 - s_day);
	} else {
		if(firstday < s_day) diff = Math.abs((7+firstday) - s_day);
	}
	*/

	if(diff > 0) {
		html += '<tr valign="middle">';
		for(var i=0; i<diff; i++) {
			html += '<td class="space">&nbsp;</td>';
		}
	}

	// カレンダーの作成
	for(var i=1; i<=enddate; i++) {
		myday = mydate.getDay();
		if(myday == s_day && i != 1) {
			html += '</tr><tr valign="middle">';
		}

		if(myday == firstday) week++;

		// 休日の確認
		holiday = false;
		if(jQuery.inArray(myday+"", bas_holiday[week]) > -1) {
			holiday =true;
		}

		if(holiday) {
			if(exc_holiday[arr] != undefined) {
				if(jQuery.inArray(i+"", exc_holiday[arr]) > -1) holiday = false;
			}
		} else {
			if(inc_holiday[arr] != undefined) {
				if(jQuery.inArray(i+"", inc_holiday[arr]) > -1) holiday = true;
			}
		}

		if(holiday) {
			html += '<td class="holiday">' + i + '</td>';
		} else {
			html += '<td class="business">' + i + '</td>';
		}

		mydate.setDate(mydate.getDate() + 1);

		// 末日以降のデータを埋める
		if(i == enddate) {
			while(mydate.getDay() != s_day) {
				html += '<td class="space">&nbsp;</td>';
				mydate.setDate(mydate.getDate() + 1);
			}
		}
	}

	html += '</tr></tbody></table>'
				+ '</td></tr>'
				+ '<tr><td colspan="3">'
				+ '<p class="calendar-information">休業日</p>'
				+ '<p class="return_now"><a href="javascript:void(0);" onclick="create_business_calendar(' + now.getFullYear() + ', ' + (now.getMonth() + 1) + ');">当月に戻る</a></p>'
				+ '<div style="clear: both;"></div></td></tr>'
				+ '</tbody></table>';

	jQuery("#isp-calendar-frame").html(html);
}
