var target;
var target1;
var target2;
var pop_top;
var pop_left;
var cal_Day;var opopup = document.createElement('div');
var oiframe = document.createElement('iframe');	
//var oPopup = window.createPopup();
//var oPopup = document.createElement('div'); 

function Calendar_Click(year, month, day) {

	target.value = year;
	
	if(month < 10){
		target1.value = "0"+month;
	}else{
		target1.value = month;
	}
	
	if(day < 10){
		target2.value = "0"+day;
	}else{
		target2.value = day;
	}	
	
	close();
}
function close(){
	document.getElementById("calender").style.display = "none";
	document.getElementById("iframePop").style.display = "none";
	document.body.removeChild(opopup);
	document.body.removeChild(oiframe);
}
function Calendar_D(obj,obj1,obj2) {
	
	target = obj;
	target1 = obj1;
	target2 = obj2;
	
	pop_top = document.body.clientTop + GetObjectTop(obj) - document.body.scrollTop;
	pop_left = document.body.clientLeft + GetObjectLeft(obj) -  document.body.scrollLeft;

	Show_cal(obj.value, obj1.value, obj2.value);
}

function doOver(el) {
	cal_Day = el.title;

	if (cal_Day.length > 7) {
		el.style.borderColor = "#FF0000";
	}
}

function doOut(el) {
	cal_Day = el.title;

	if (cal_Day.length > 7) {
		el.style.borderColor = "#FFFFFF";
	}
}

function day2(d) {	// 2桁数字料変更
	var str = new String();
	
	if (parseInt(d) < 10) {
		str = "0" + parseInt(d);
	} else {
		str = "" + parseInt(d);
	}
	return str;
}

function Show_cal(sYear, sMonth, sDay) {
	var Months_day = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31)
	var Month_Val = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
	var intThisYear = new Number(), intThisMonth = new Number(), intThisDay = new Number();

	datToday = new Date();													// 現在日設定
	
	intThisYear = parseInt(sYear,10);
	intThisMonth = parseInt(sMonth,10);
	intThisDay = parseInt(sDay,10);
	
	if (intThisYear == 0) intThisYear = datToday.getFullYear();				// 値がない場合
	if (intThisMonth == 0) intThisMonth = parseInt(datToday.getMonth(),10)+1;	// 月価格は実際値より -1 限り値が戻される.
	if (intThisDay == 0) intThisDay = datToday.getDate();
	
	switch(intThisMonth) {
		case 1:
				intPrevYear = intThisYear -1;
				intPrevMonth = 12;
				intNextYear = intThisYear;
				intNextMonth = 2;
				break;
		case 12:
				intPrevYear = intThisYear;
				intPrevMonth = 11;
				intNextYear = intThisYear + 1;
				intNextMonth = 1;
				break;
		default:
				intPrevYear = intThisYear;
				intPrevMonth = parseInt(intThisMonth,10) - 1;
				intNextYear = intThisYear;
				intNextMonth = parseInt(intThisMonth,10) + 1;
				break;
	}
	intPPyear = intThisYear-1
	intNNyear = intThisYear+1
	
	NowThisYear = datToday.getFullYear();									// 現在年
	NowThisMonth = datToday.getMonth()+1;									// 現在月
	NowThisDay = datToday.getDate();											// 現在日

	
	datFirstDay = new Date(intThisYear, intThisMonth-1, 1);			// 現在月の 1日で日付客体生成(月は 0から 11までの定数(1月から 12月))
	intFirstWeekday = datFirstDay.getDay();									// 現在月 1日の曜日を求め (0:日曜日, 1:月曜日)

	//intSecondWeekday = intFirstWeekday;
	intThirdWeekday = intFirstWeekday;
	
	datThisDay = new Date(intThisYear, intThisMonth, intThisDay);	// 越えて来た値の日付生成
	//intThisWeekday = datThisDay.getDay();										// 越えて来た日付の週 曜日
	
	intPrintDay = 1;																// 月の手始めイルチァ
	secondPrintDay = 1;
	thirdPrintDay = 1;

	Stop_Flag = 0
	
	if ((intThisYear % 4)==0) {												// 4年ごとに 1番(回)なら (4ロナヌオ落ちれば)
		if ((intThisYear % 100) == 0) {
			if ((intThisYear % 400) == 0) {
				Months_day[2] = 29;
			}
		} else {
			Months_day[2] = 29;
		}
	}
	intLastDay = Months_day[intThisMonth];						// 最後の日付求め
		
	Cal_HTML = "<table id=Cal_Table border=0 bgcolor='#f4f4f4' cellpadding=1 cellspacing=1 width=100%  style='font-size : 12;font-family:ｱｼｸｲ;'>";
	Cal_HTML += "<tr>";
	Cal_HTML += "<td colspan=7 class='date'>";
	Cal_HTML += "	<select name='selYear' STYLE='font-size:11;' OnChange='test("+intThisDay+")'>";
	for (var optYear=NowThisYear; optYear<(NowThisYear+2); optYear++) {
		Cal_HTML += "		<option value='"+optYear+"' ";
		if (optYear == intThisYear) Cal_HTML += " selected>\n";
		else Cal_HTML += ">\n";
		Cal_HTML += optYear+"</option>\n";
	}
	Cal_HTML += "	</select>";
	Cal_HTML += "&nbsp;&nbsp;&nbsp;<a style='cursor:pointer;' OnClick='Show_cal("+intPrevYear+","+intPrevMonth+","+intThisDay+");'><img src='/img/button/bt_first.gif'/></a> ";
	Cal_HTML += "<select name='selMonth' STYLE='font-size:11;' OnChange='test("+intThisDay+")'>";
	for (var i=1; i<13; i++) {	
		Cal_HTML += "		<option value='"+Month_Val[i-1]+"' ";
		if (intThisMonth == parseInt(Month_Val[i-1],10)) Cal_HTML += " selected>\n";
		else Cal_HTML += ">\n";
		Cal_HTML += Month_Val[i-1]+"</option>\n";
	}
	Cal_HTML += "	</select>&nbsp;";
	Cal_HTML += "<a style='cursor:pointer;' OnClick='Show_cal("+intNextYear+","+intNextMonth+","+intThisDay+");'><img src='/img/button/bt_end.gif'/></a>";
	Cal_HTML += "</td></tr>";
	Cal_HTML += "<tr>";
	Cal_HTML += "	<th>日</th>";
	Cal_HTML += "	<th>月</th>";
	Cal_HTML += "	<th>火</th>";
	Cal_HTML += "	<th>水</th>";
	Cal_HTML += "	<th>木</th>";
	Cal_HTML += "	<th>金</th>";
	Cal_HTML += "	<th>土</th>";
	Cal_HTML += "</tr>";
		
	for (intLoopWeek=1; intLoopWeek < 7; intLoopWeek++) {	// 週単位ルーフ手始め, 最大 6週

		Cal_HTML += "<tr>"
		for (intLoopDay=1; intLoopDay <= 7; intLoopDay++) {	// 曜日単位ルーフ手始め, 日曜日から
			if (intThirdWeekday > 0) {											// 初週手始め日付が 1より大きければ
				Cal_HTML += "<td>&nbsp;";
				intThirdWeekday--;
			} else {
				if (thirdPrintDay > intLastDay) {								// 入力日付が月末より大きければ
					Cal_HTML += "<td>&nbsp;";
				} else {														// 入力日付がヒョンゼワルに当たれば
					Cal_HTML += "<td onClick=Calendar_Click("+intThisYear+","+day2(intThisMonth).toString()+","+day2(thirdPrintDay).toString()+"); title="+intThisYear+"-"+day2(intThisMonth).toString()+"-"+day2(thirdPrintDay).toString()+" style=\"cursor:pointer; solid white;";
					if (intThisYear == NowThisYear && intThisMonth==NowThisMonth && thirdPrintDay==intThisDay) {
						Cal_HTML += "background-color:#f2c8c6;";
					}
					
					switch(intLoopDay) {
						case 1:															// 日曜日なら赤い色で
							Cal_HTML += "color:red;"
							break;
						//case 7:
						//	Cal_HTML += "color:blue;"
						//	break;
						default:
							Cal_HTML += "color:black;"
							break;
					}
					Cal_HTML += "\">"+thirdPrintDay;
				}
				thirdPrintDay++;
				
				if (thirdPrintDay > intLastDay) {								// もし日付値が月末値より大きければルプムン脱出
					Stop_Flag = 1;
				}
			}
			Cal_HTML += "</td>";
		}
		Cal_HTML += "</tr>";
		if (Stop_Flag==1) break;
	}
	Cal_HTML += "<tr><td colspan=7><a href='javascript:close();'><img src='/img/button/bt_close_02.gif' style='padding-top:5px;'/></td></a></tr>"
	Cal_HTML += "</table>";
	
	opopup.setAttribute("id","calender");
	document.body.appendChild(opopup);
	oiframe.setAttribute("id","iframePop");
	document.body.appendChild(oiframe);
	
	var oPopCalender = document.getElementById('calender');
	oPopCalender.innerHTML = Cal_HTML;
	oPopCalender.style.position = "absolute";
	oPopCalender.style.border = "solid black 1px";
	oPopCalender.style.zIndex=2;	
	oPopCalender.style.top = pop_top + target.offsetHeight + 3 + "px";
	oPopCalender.style.left = pop_left - 25 + "px";
	oPopCalender.style.width = 178;
	
	var oPopframe = document.getElementById('iframePop');
	oPopframe.style.position = "absolute";
	oPopframe.style.top = pop_top + target.offsetHeight + 3 + "px";
	oPopframe.style.left = pop_left - 25 + "px";
	oPopframe.style.zIndex=1;	
	oPopframe.style.width = 178;
	oPopframe.style.height = oPopCalender.style.height;
	
	oPopframe.style.display = "block";
	oPopCalender.style.display = "block";
	
}


//----------------------------------
//	年度リストで年度選択
//----------------------------------
function fnChangeYearD(sYear,sMonth,sDay){
	Show_cal(sYear, sMonth, sDay);
}

function test(day){
	var year = document.getElementById('selYear').value;
	var modth = document.getElementById('selMonth').value;
	
	Show_cal(year, modth, day);
}

/**
	HTML 個体用ユーティリティー関数
**/
function GetObjectTop(obj)
{
	if (obj.offsetParent == document.body)
		return obj.offsetTop;
	else
		return obj.offsetTop + GetObjectTop(obj.offsetParent);
}

function GetObjectLeft(obj)
{
	if (obj.offsetParent == document.body)
		return obj.offsetLeft;
	else
		return obj.offsetLeft + GetObjectLeft(obj.offsetParent);
}
