/**
 * @author ability
 */
dispCalendarFlg = false;		// カレンダーの初期表示	true:デフォルト表示	false:リンク押下表示
linkHtml = '<p><a href="javascript:void(0);" onclick="dispLinkCalendar(\'link\', \'\', \'\');">カレンダー表示</a></p>';
nCntCalendar = 0;

window.onload = function(){
	
	// 日付の設定
	var thisDate = new Date();
	var thisYear = thisDate.getFullYear();
	var thisMonth = thisDate.getMonth()+1;
	var thisDay = thisDate.getDate();	
	
	
	/*
	 * 年のセレクトボックス生成
	 */
	var objYear = document.getElementById("nen");
	
	/*
	 * 月のセレクトボックス生成
	 */
	var objMonth = document.getElementById("tuki");
	
	/*
	 * 日のセレクトボックス生成
	 */
	var objDay = document.getElementById("hi");
	
	
	/*
	 * カレンダーの表示
	 */
	if(dispCalendarFlg){
		calendarHtml = dispCalendar(objYear.value, objMonth.value);
	}else{
		calendarHtml = linkHtml;
	}
	document.getElementById("search_calendar").innerHTML = calendarHtml;
}

/*
 * 日付未定チェック
 */
function DateDiseble(form)
{
	var no_date = form;
	if( no_date.checked )
	{
		$( "#nen" ).attr( "disabled", "disabled" );
		$( "#tuki" ).attr( "disabled", "disabled" );
		$( "#hi" ).attr( "disabled", "disabled" );
		$( "#room_num" ).attr( "disabled", "disabled" );
		$( "#haku_num" ).attr( "disabled", "disabled" );
	}
	else
	{
		$( "#nen" ).removeAttr( "disabled" );
		$( "#tuki" ).removeAttr( "disabled" );
		$( "#hi" ).removeAttr( "disabled" );
		$( "#room_num" ).removeAttr( "disabled" );
		$( "#haku_num" ).removeAttr( "disabled" );
	}
}

/*
 * 次月選択時
 */
function setNextMonth(year, month){
	var objCalendar = document.getElementById("search_calendar");
	if(month == 12){
		year++;
		month = 1;
	}else{
		month++;
	}
	
	if (!dispCalendarFlg) {
		nCntCalendar = 0;
		dispLinkCalendar("ctrl", year, month);
	}
	else {
		objCalendar.innerHTML = dispCalendar(year, month);
	}
	
	return false;
}

/*
 * 前月選択時
 */
function setBackMonth(year, month){
	var objCalendar = document.getElementById("search_calendar");
	if(month == 1){
		year--;
		month = 12;
	}else{
		month--;
	}
	
	if (!dispCalendarFlg) {
		nCntCalendar = 0;
		dispLinkCalendar("ctrl", year, month);
	}
	else {
		objCalendar.innerHTML = dispCalendar(year, month);
	}
	
	return false;
}

/*
 * 日付選択時
 */
function selDate(year, month, day){
	var objYear = document.getElementById("nen");
	var objMonth = document.getElementById("tuki");
	var objDay = document.getElementById("hi");
	
	// 年のセレクトボックスが存在するか
	var flYear = false;
	for(nYear = 0; nYear < objYear.options.length; nYear++){
		if(objYear.options[nYear].value == year){
			flYear = true;
		}
	}
	
	if(!flYear){
		selectLn = objYear.options.length;
		objYear.options[selectLn] = new Option(year, year);
	}
	
	// セレクトボックスの選択
	for(nYear = 0; nYear < objYear.options.length; nYear++){
		if(objYear.options[nYear].value == year){
			objYear.selectedIndex = nYear;
		}
	}
	objMonth.selectedIndex = month-1;
	objDay.selectedIndex = day-1;
	
	if(!dispCalendarFlg){
		closeCalendar();
	}
	
	return false;
}

/*
 * カレンダーリンクの表示
 */
function dispLinkCalendar(mode, year, month){
	if(mode == "link"){
		year = document.getElementById("nen").value;
		month = document.getElementById("tuki").value;
	}
	
	if (nCntCalendar < 1) {
		document.getElementById("search_calendar").innerHTML = linkHtml;
		document.getElementById("search_calendar").innerHTML += dispCalendar(year, month);
		
		var objCalendarTable = document.getElementById("calendar_table");
		objCalendarTable.style.position = "absolute";
		objCalendarTable.style.zIndex = "120";
		
		var objCalendarShim = document.getElementById("shim");
		objCalendarShim.style.position = "absolute";
		objCalendarShim.style.zIndex = "110";
	}
	
	nCntCalendar++;
	
	return false;
}

/*
 * カレンダーの閉じ
 */
function closeCalendar(){
	nCntCalendar = 0;
	var objCalendar = document.getElementById("search_calendar");
	objCalendar.innerHTML = linkHtml;
}

/*
 * カレンダーの表示
 */
function dispCalendar(year, month){
	var today = new Date();
	var endDay = new Date(year, month, 0).getDate()+1;
	var calHtml = '<iframe scrolling="no" frameborder="0" id="shim"></iframe>';
	calHtml += '<table id="calendar_table">';
	calHtml += '<tr>';
	calHtml += '<th colspan="2" class="cl_back"><a href="javascript:void(0);" onclick="setBackMonth('+year+', '+month+', '+dispCalendarFlg+');">&lt; 前月</a></th>';
	calHtml += '<th colspan="3">'+year+'年'+month+'月</th>';
	calHtml += '<th colspan="2" class="cl_next"><a href="javascript:void(0);" onclick="setNextMonth('+year+', '+month+', '+dispCalendarFlg+');">次月 &gt;</a></th>';
	calHtml += '</tr>';
	if(!dispCalendarFlg){
		calHtml += '<tr>';
		calHtml += '<th colspan="7" class="cl_close"><a href="javascript:void(0);" onclick="closeCalendar();">×閉じる</a></th>'
		calHtml += '</tr>';
	}
	calHtml += '<tr class="cl_week">';
	calHtml += '<td class="cl_sun">日</td>';
	calHtml += '<td>月</td>';
	calHtml += '<td>火</td>';
	calHtml += '<td>水</td>';
	calHtml += '<td>木</td>';
	calHtml += '<td>金</td>';
	calHtml += '<td class="cl_sat">土</td>';
	calHtml += '</tr>';
	
	// 日付のセル
	for(day = 1; day < endDay; day++){
		var thisDay = new Date(year, month-1, day);
		var week = thisDay.getDay();
		if(day == 1){
			calHtml += '<tr class="cl_date">';
			// 前月分の空欄
			for(empty = 0; empty < week; empty++){
				if(empty == 0){
					calHtml += '<td class="cl_sun">&nbsp;</td>';
				}else{
					calHtml += '<td>&nbsp;</td>';
				}
			}
		}
		
		// 日付
		// 日曜日の場合は新しい列
		if(day != 1 && week == 0){
			calHtml += '<tr class="cl_date">';
		}
		
		var tdClass = '';
		if(week == 0){
			tdClass = ' class="cl_sun"';
		}else if(week == 6){
			tdClass = ' class="cl_sat"';
		}
		
		var diffDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
		// 今日以前の日付は選択できないようにする。
		if(diffDate.getTime() <= thisDay.getTime()){
			calHtml += '<td'+tdClass+'><a href="javascript:void(0);" onclick="selDate('+year+', '+month+', '+day+');">'+day+'</a></td>';
		}else{
			calHtml += '<td'+tdClass+'>'+day+'</td>';
		}
		if(week == 6){
			calHtml += '</tr>';
		}
		
		// 次月分の空欄
		if(day == endDay-1){
			var endEmpty;
			switch(week){
				case 0:
					endEmpty = 6;
					break;
				case 1:
					endEmpty = 5;
					break;
				case 2:
					endEmpty = 4;
					break;
				case 3:
					endEmpty = 3;
					break;
				case 4:
					endEmpty = 2;
					break;
				case 5:
					endEmpty = 1;
					break;
				case 6:
					endEmpty = 0;
					break;
			}
			
			for(empty = 0; empty < endEmpty; empty++){
				if(empty == endEmpty-1){
					calHtml += '<td class="cl_sat">&nbsp;</td>';
				}else{
					calHtml += '<td>&nbsp;</td>';
				}
			}
			
			if(week != 6){
				calHtml += '</tr>';
			}
		}
		
	}
	calHtml += '</table>';
	
	return calHtml;
}


