	var FONT_COLOR_HOLYDAY="red";
	var FONT_COLOR_TODAY="#00cc00";

	if(document.all){
		//IE
		var now = new Date();	// Date object
		var firstyear=2008;  //how many years back!
		var lastyear=2009;  //1 higher than the years from today you wish to display.
	}
	else{
		//Firefox
//		var now = window.opener.dateParam.date;	// Date object
//		var firstyear= window.opener.dateParam.firstyear;  //how many years back!
//		var lastyear= window.opener.dateParam.lastyear;  //1 higher than the years from today you wish to display.
	}

	var colour="#cccccc";//Greyed out days.
	var coltoday="#FF0000";//todays colour.

var data = new Array();
function calendarDataAdd(day, flg){
	data[day] = flg;
}

function calendarDataClear(){
	data = new Array();
}


	function message(cell){
		var firstOfMonth = new Date (year, month - 1, 1);
		var startingPos = firstOfMonth.getDay();
		startingPos = cell - startingPos + 1;
		if(data[startingPos] == undefined){
			return;
		}
	
		if(document.all){
			//IE
			calender_show(startingPos);
		}
		else{
			//Firefox
/*			motoData = cellday[cell];
			var setData = "";
			setData += motoData.substr(0, 4);
			setData += "/";
			setData += motoData.substr(4, 2);
			setData += "/";
			setData += motoData.substr(6, 4);
			window.opener.dateParam.obj.value = setData;*/
			calender_show(startingPos);
		}
	}

	// Calender Code, Modify only if you know what your doing. If you don't, just keep a back up!
	//--------------------------------------------------------------------------------------------

	var day;
	var month;
	var year;
	if (year < 2000)
		year = year + 1900;
	var daycell=new Array();
	var cellday=new Array();
	var n;

	//================================================
	// Create Calender
	//================================================
	function calendar(id, year, month, day){
		this.year = year;
		this.month = month;
		this.day = day;
		var calobj, caption;
		caption='Calendar';
//		alert(year + month);

		calobj='<table border="1" cellspacing="0" cellpadding="0" class="calborder" style="color:#1A3347">';
		calobj+=	'<tr>';
		calobj+=		'<td>';
		calobj+=			'<table border="0" cellspacing="0" cellpadding="0" class="calender" style="wmax">';
		calobj+=				'<tr>';
		calobj+=					'<td width=10 align="left" style="padding-left:7px;padding-top:7px;cursor:pointer;">';
		calobj+=						'<a onclick=gobackmonth();><img src="' + contextRoot + '/images/cal_left.gif"></a>';
		calobj+=					'</td>';
		calobj+=					'<td width=200 align=center style="padding-top:7px;color:#FFFFFF"><center>' + year + '年' + month + '月</center></td>';
		calobj+=					'<td width="10" class="right" align=right style="padding-right:7px;padding-top:7px;cursor:pointer;">';
		calobj+=						'<a onclick=goonmonth();><img src="' + contextRoot + '/images/cal_right.gif"></a>';
		calobj+=					'</td>';
		
		/*
		calobj+='<select name="calyear" onChange="updatecalendar()" class="caldropdowns">';

		//MODIFY START H.Satou 2005/07/07
		//プルダウンメニューのデータ変更
		for (n=firstyear;n<lastyear;n++){
		  if (n==year){
		     calobj+='<option selected value="'+n+'">'+n+'</option>';
		  }
		  else{
		    calobj+='<option value="'+n+'">'+n+'</option>';
		  }
		}
		//MODIFY END H.Satou

		calobj+='</select>　';
		
		calobj+='<select name="calmonth" onChange="updatecalendar()" class="caldropdowns">';
		calobj+='<option>１月<option>２月<option>３月<option>４月<option>５月';
		calobj+='<option>６月<option>７月<option>８月<option>９月<option>１０月';
		calobj+='<option>１１月<option>１２月</select>';
		
		
		calobj+='</td>';
		*/
		calobj+=				'</tr>';
		calobj+=				'<tr>';
		calobj+=					'<td class="calinsideborder" colspan=3>';
		calobj+=						'<table cellspacing="3" class="calinsidesettings" border="5">';
		calobj+=							'<tr align="center">';
		calobj+=								'<td width="14%" class="calLblSun">日</td>';
		calobj+=								'<td width="14%" class="caldays">月</td>';
		calobj+=								'<td width="14%" class="caldays">火</td>';
		calobj+=								'<td width="14%" class="caldays">水</td>';
		calobj+=								'<td width="14%" class="caldays">木</td>';
		calobj+=								'<td width="14%" class="caldays">金</td>';
		calobj+=								'<td width="14%" class="calLblSat">土</td>';
		calobj+=							'</tr>';

		var calcell,calrow;
		for (calcell=0; calcell < 6; calcell++ ){
			calobj+=						'<tr>';
			calobj+=							'<td class="calSun" width="14%" id=cal'+(calcell*7)+' onclick=message('+(calcell*7)+');>&nbsp;</td>';
			calobj+=							'<td width="14%" class="calwkdy" id=cal'+(calcell*7+1)+' onclick=message('+(calcell*7+1)+');>&nbsp;</td>';
			calobj+=							'<td width="14%" class="calwkdy" id=cal'+(calcell*7+2)+' onclick=message('+(calcell*7+2)+');>&nbsp;</td>';
			calobj+=							'<td width="14%" class="calwkdy" id=cal'+(calcell*7+3)+' onclick=message('+(calcell*7+3)+');>&nbsp;</td>';
			calobj+=							'<td width="14%" class="calwkdy" id=cal'+(calcell*7+4)+' onclick=message('+(calcell*7+4)+');>&nbsp;</td>';
			calobj+=							'<td width="14%" class="calwkdy" id=cal'+(calcell*7+5)+' onclick=message('+(calcell*7+5)+');>&nbsp;</td>';
			calobj+=							'<td class="calSat" width="14%" id=cal'+(calcell*7+6)+' onclick=message('+(calcell*7+6)+');>&nbsp;</td>';
			calobj+=						'</tr>';
		}
		calobj+=						'</table>';
		calobj+=					'</td>';
		calobj+=				'</tr>';
		calobj+=			'</table>';
		calobj+=		'</td>';
		calobj+=	'</tr>';
		calobj+='</table>';
		//MODIFY START H.Satou 2005/07/07
		//リンクの削除
		
		
		//MODIFY END H.Satou

		document.getElementById(id).innerHTML = calobj;

//		document.write(calobj)

		daycell[0]=document.getElementById("cal0");
		daycell[1]=document.getElementById("cal1");
		daycell[2]=document.getElementById("cal2");
		daycell[3]=document.getElementById("cal3");
		daycell[4]=document.getElementById("cal4");
		daycell[5]=document.getElementById("cal5");
		daycell[6]=document.getElementById("cal6");
		daycell[7]=document.getElementById("cal7");
		daycell[8]=document.getElementById("cal8");
		daycell[9]=document.getElementById("cal9");
		daycell[10]=document.getElementById("cal10");
		daycell[11]=document.getElementById("cal11");
		daycell[12]=document.getElementById("cal12");
		daycell[13]=document.getElementById("cal13");
		daycell[14]=document.getElementById("cal14");
		daycell[15]=document.getElementById("cal15");
		daycell[16]=document.getElementById("cal16");
		daycell[17]=document.getElementById("cal17");
		daycell[18]=document.getElementById("cal18");
		daycell[19]=document.getElementById("cal19");
		daycell[20]=document.getElementById("cal20");
		daycell[21]=document.getElementById("cal21");
		daycell[22]=document.getElementById("cal22");
		daycell[23]=document.getElementById("cal23");
		daycell[24]=document.getElementById("cal24");
		daycell[25]=document.getElementById("cal25");
		daycell[26]=document.getElementById("cal26");
		daycell[27]=document.getElementById("cal27");
		daycell[28]=document.getElementById("cal28");
		daycell[29]=document.getElementById("cal29");
		daycell[30]=document.getElementById("cal30");
		daycell[31]=document.getElementById("cal31");
		daycell[32]=document.getElementById("cal32");
		daycell[33]=document.getElementById("cal33");
		daycell[34]=document.getElementById("cal34");
		daycell[35]=document.getElementById("cal35");
		daycell[36]=document.getElementById("cal36");
		daycell[37]=document.getElementById("cal37");
		daycell[38]=document.getElementById("cal38");
		daycell[39]=document.getElementById("cal39");
		daycell[40]=document.getElementById("cal40");
		daycell[41]=document.getElementById("cal41");

		caltoday();
		updatecalendar();
	}

	//================================================
	// Set today
	//================================================
	function caltoday(){
	//	day   = now.getDate();
	//	document.getElementsByName("calmonth")[0].selectedIndex=now.getMonth();
	//	document.getElementsByName("calyear")[0].value=now.getFullYear();

//		updatecalendar();
	}

	function settoday(){
		today = new Date();
		kday = today.getDate();
		strday = kday.toString();
	
		if (strday.length==1){
			strday="0"+strday;
		}
		
		kmonth = today.getMonth()+1;
		strmon = kmonth.toString();
		if (strmon.length==1){
			strmon="0"+strmon;
		}
		
		kyear = today.getFullYear();
		stryear = kyear.toString();
		
		kyo = stryear+strmon+strday;
		
		if(document.all){
			//IE
			returnValue = kyo;
		}
		else{
			//Firefox
			motoData = kyo;
			var setData = "";
			setData += motoData.substr(0, 4);
			setData += "/";
			setData += motoData.substr(4, 2);
			setData += "/";
			setData += motoData.substr(6, 4);
			window.opener.dateParam.obj.value = setData;
		}

		window.close();
	}

	//================================================
	// Refresh Cells and Dates
	//================================================
	function updatecalendar(){
		//month = 8;
		//year  = 2008;
//		alert(month + '月');
		var firstOfMonth = new Date (year, month - 1, 1);
		var startingPos = firstOfMonth.getDay();
		var curday = 1;
		var days = monthdays(month - 1, year);
		var prevdays = monthdays(month - 1, year);
		var str;

		for (n = 0; n < 42; n++){
			if (startingPos == n){

	/*			if (month==now.getMonth() & year == now.getFullYear() & curday==now.getDate()){
					str=curday;
					daycell[n].innerHTML="<font color='" + FONT_COLOR_TODAY +"'>"+str.toString()+"</font>";
				}
				else if(isHolyday(year, month, curday )){
					daycell[n].innerHTML="<font color='"+  FONT_COLOR_HOLYDAY +"'>"+curday+"</font>";
				}
				else{*/
					if(data[curday] != undefined){
//						alert(data[curday]);
						if(data[curday] == '2'){
							daycell[n].innerHTML = curday + "<br><img src=" + contextRoot + "/images/cal_star.gif>";
						} else if(data[curday] == '1'){
							daycell[n].innerHTML = curday + "<br><img src=" + contextRoot + "/images/cal_up.gif>";
						} else if(data[curday] == '0'){
							daycell[n].innerHTML = curday + "<br><img src=" + contextRoot + "/images/cal_chk.gif>";
						}
					} else {
						daycell[n].innerHTML = curday;
					}
				
					// うまいこと判定いれてくれー（★マーク）
/*					if (curday == "7"){
						daycell[n].innerHTML = curday + "<br><img src='/kentei/images/cal_star.gif'>";
					}else if (curday == "11" || curday == "13"){
						daycell[n].innerHTML = curday + "<br><img src='/kentei/images/cal_chk.gif'>";
					}else if (curday == "20"){
						daycell[n].innerHTML = curday + "<br><img src='/kentei/images/cal_up.gif'>";
					}else{
						daycell[n].innerHTML = curday;
					}*/
//				}
				setday(n, month - 1, year, curday);
				startingPos++;
				curday++;
			}
			else{
				if (startingPos == 66){
					setday(n, month - 1, year, curday);
					str = curday;
					curday++;
				}
				else{
					setday(n, month - 1, year, prevdays - startingPos + n + 1 );
					str = prevdays - startingPos + n + 1;
				}
				daycell[n].innerHTML = "<font color='"+colour+"'>"+str.toString()+"</font>";
			}

			if (curday > days){
				curday = 1;
				startingPos = 66;
			}
		}
		//debufPrintCellday();
	}


	function debufPrintCellday(){
		var msgStr_="";
		for(var i=0; i < cellday.length; i++ ){
			//msgStr_= msgStr_ + cellday[i] + "\n";
		}
		alart(msgStr_);
	}


	//================================================
	// Set day variables
	//================================================
	function setday(cell, month, year, day){
		month++;
		if (month==13){
			month=1;
			year++;
		}
		if (month==0){
			month=12;
			year--;
		}
		var strmon;
		var stryear;
		var strday;

		strmon=month.toString();

		if (strmon.length==1)
			strmon="0"+strmon;

		strday=day.toString();
		if (strday.length==1)
			strday="0"+strday;

		stryear=year.toString();

		cellday[cell]=stryear+strmon+strday;
	}

	//================================================
	// Check days in month
	//================================================
	function monthdays(month, year){
		var days;
		if (month==0 || month==2 || month==4 || month==6 || month==7 || month==9 || month==11 || month==-1 || month==12)
			days=31;
		else if (month==3 || month==5 || month==8 || month==10)
			days=30;
		else if (month==1)  {
			if (leapyear(year))
				days=29;
			else
				days=28;
		}
		return (days);
	}

	//================================================
	// Check for leap year
	//================================================
	function leapyear (Year) {
		if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0))
			return (true);
		else
			return (false);
	}

	//================================================
	// Forward one month
	//================================================
	function goonmonth(){
		month = document.getElementsByName("calmonth")[0].selectedIndex;
		month++;
		if (month==12){
			month=0;
			goonyear();
		}
		document.getElementsByName("calmonth")[0].selectedIndex=month;
	}

	//================================================
	// Forward one year
	//================================================
	function goonyear(){
		year  = document.getElementsByName("calyear")[0].value;
		year++;
		if (year==lastyear)
			year=firstyear;
		document.getElementsByName("calyear")[0].value=year;
	}

	//================================================
	// Back one month
	//================================================
	function gobackmonth(){
		month = document.getElementsByName("calmonth")[0].selectedIndex;
		month--;
		if (month==-1){
			month=11;
			gobackyear();
		}
		document.getElementsByName("calmonth")[0].selectedIndex=month;
	}

	//================================================
	// Back one year
	//================================================
	function gobackyear(){
		year  = document.getElementsByName("calyear")[0].value;
		year--;
		if (year < firstyear)
			year=lastyear-1;
		document.getElementsByName("calyear")[0].value=year;
	}
	//================================================
	// 休暇の判定


	//
	// year_	: 年を表す数値
	// month_ 	: 月を表す数値（必ず実際の月－１。）


	// day_ 	: 日付を表す数値
	//================================================
	function isHolyday( year_, month_, day_ ){

		var date_ = new Date(year_, month_, day_);
		switch ( month_ ){
			case 0:
				//元旦チェック
				if(day_ == 1)
					return true;
				//元旦の振り替え


				if(day_ -1 == 1 && date_.getDay() ==1)
					return true;

				//成人の日：第二月曜


				if( 8 <= day_ && day_ <= 14 && date_.getDay() == 1)
					return true;
				break;
			case 1:
				//建国記念日
				if(day_ == 11 )
					return true;
				if(day_ -1 == 11 && date_.getDay() ==1)
					return true;

				break;
			case 2:
				//春分の日
				if(day_ == getSpringEquinox(year_))
					return true;
				if(day_ -1 == getSpringEquinox(year_) && date_.getDay() ==1)
					return true;
				break;
			case 3:
				//みどりの日
				if(day_ == 29 )
					return true;
				//みどりの日振り替え


				if(day_ -1 == 29 && date_.getDay() ==1)
					return true;

				break;
			case 4:
				//憲法記念日
				if(day_ == 3 )
					return true;
				//国民の休日
				if(day_ == 4 )
					return true;
				//こどもの日
				if(day_ == 5 )
					return true;
				//子供の日振り替え{
				if(day_  == 6 && date_.getDay()==1){
					return true;
				}
				break;
			case 5:
				break;
			case 6:
				//海の日：第三月曜


				if( 15 <= day_ && day_ <= 21 && date_.getDay() == 1)
					return true;
				break;
			case 7:
				break;
			case 8:
				//敬老の日：第三月曜


				if( 15 <= day_ && day_ <= 21 && date_.getDay() == 1)
					return true;
				//秋分の日
				if(day_ == getfAutumnEquinox(year_))
					return true;
				if(day_ -1 == getfAutumnEquinox(year_) && date_.getDay() ==1)
					return true;
				break;
			case 9:
				//体育の日：第二月曜


				if( 8 <= day_ && day_ <= 14 && date_.getDay() == 1)
					return true;
				break;
			case 10:
				//文化の日
				if(day_ == 3 )
					return true;
				//文化の日振り替え


				if(day_ -1 == 3 && date_.getDay() ==1)
					return true;

				//勤労感謝の日
				if(day_ == 23 )
					return true;
				//勤労感謝の日振り替え


				if(day_ -1 == 23 && date_.getDay() ==1)
					return true;

				break;
			case 11:
				//天皇誕生日
				if(day_ == 23 )
					return true;
				//天皇誕生日振り替え


				if(day_ -1 == 23 && date_.getDay() ==1)
					return true;

				break;
			default:

				return false;
		}
		return false;
	}
	//===================================================================
	// 春分/秋分日の略算式は
	// 『海上保安庁水路部 暦計算研究会編 新こよみ便利帳』


	// で紹介されているらしいです。


	function getSpringEquinox(year_){
		var result_;
		if (year_ <= 1947) {
			result_ = 99;    //祝日法施行前
		}
		else {
			if (year_ <= 1979) {
				result_ = Math.floor(20.8357 +
					(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
			}
			else {
				if (year_ <= 2099) {
					result_ = Math.floor(20.8431 +
						(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
				}
				else {
					if (year_ <= 2150) {
						result_ = Math.floor(21.851 +
							(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
					}
					else {
						result_ = 99;
					}
				}
			}
		}
		return result_;
	}

	//=====================================================================
	function getfAutumnEquinox(year_){
		var result_;
		if (year_ <= 1947) {
			result_ = 99; //祝日法施行前
		}
		else {
			if (year_ <= 1979) {
				result_ = Math.floor(23.2588 +
					(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
			}
			else {
				if (year_ <= 2099) {
					result_ = Math.floor(23.2488 +
						(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
				}
				else {
					if (year_ <= 2150) {
						result_ = Math.floor(24.2488 +
							(0.242194 * (year_ - 1980)) - Math.floor((year_ - 1980) / 4));
					}
					else {
						result_ = 99;    //2151年以降は略算式が無いので不明
					}
				}
			}
		}
		return result_;
	}
