/*--------------------------------------
カレンダー表示/日付入力補助スクリプト

	2009/01/27 Ver 1.2

	setCalender	  : カレンダー初期設定
	createClender : カレンダー表示
	selectDay     : 年月日ドロップダウンの値取得
	closeCalender : カレンダーを閉じる
	nextmonth     : 翌月へ
	prevmonth     : 先月へ
	get_yearmonth : ドロップダウンからの年月取得

----------------------------------------*/

	//----------------  カレンダー初期設定 --------------------------------

	myWeekTbl = new Array("日","月","火","水","木","金","土"); // 曜日テーブル定義
	myMonthTbl= new Array(31,28,31,30,31,30,31,31,30,31,30,31);// 月テーブル定義
	_x = '';
	_y = '';
	var num = '';
	getbrows();   //ブラウザ判別

	//----------------- カレンダー初期設定関数------------------------------

	function setCalender(num){

		// ****************
		// **   下準備   **
		// ****************

		if (! num){
			num = 0;
		} else {
			num = eval(num);
		}

		myDate    = new Date();                                    // 今日の日付データ取得
		myYear    = myDate.getYear();							   // 今年の年を取得
		myMonth   = myDate.getMonth();							　 // 今年の月を取得
		myToday   = myDate.getDate();                              // 今日の'日'を退避
		thisToday = myDate;										   // 今日の年月日を退避

		move_Month = '';                                           // 移動後の月を定義
		tempHtml  = '';                                            // 月移動の時の一時ファイル
// 旧バージョン時使用。
//		getIndex();												   // マウスがクリックされた座標を取得
		get_yearmonth(num);										   // ドロップダウンから日付を取得

		makeTable();											   // カレンダー設定。

		createCalender(num);
		return;
	}



	//------------------　カレンダー作成　本体部分 -------------------------

	function createCalender(num){

		// ***********************
		// **  カレンダーの表示  **
		// ***********************

		myHtml = '';
		myHtml +="<table border='0' cellspacing='1' cellpadding='0'";      // 表の作成開始
		myHtml +="width='165px' bgcolor='#FFFFFF'>\n";

/*----------ボーダー使用時の設定-----------------

		myHtml +="bordercolor='#808080' ";
		myHtml +="bordercolordark='#000000' ";
		myHtml +="bordercolorlight='#C0C0C0'>\n";

-------------------------------------------------*/

		myHtml +="<tr><td colspan='7'>\n";  // 見出し行セット
		myHtml +="<strong>"+myYear+"年"+(myMonth+1)+"月</strong>\n";
		myHtml +="<a href='javascript:void(0)' onClick='closeCalender("+num+")' style='font-size:10px;'> [閉じる×]</a>\n"
		myHtml +="</td></tr>\n";

		//月の移動
		moveMonth(num);
		myHtml += tempHtml;
		tempHtml='';

		myHtml +="<tr>\n";                                          // 曜日見出しセット
		for(i=0; i<7; i++){                                         // 一行(１週間)ループ
		   myHtml +="<td align='center' ";
		   if (i==0) {
			myHtml +="bgcolor='#fa8072'>";                   // 日曜のセルの色
		   } else if (i==6) {
			myHtml +="bgcolor='#97ffff'>";
		   } else {
			   myHtml +="bgcolor='#FDFDFD'>";                   // 月～土のセルの色
		   }

		   myHtml +="<strong>"+myWeekTbl[i]+"</strong>";            // '日'から'土'の表示
		   myHtml +="</td>";
		}
		myHtml +="</tr>";


		for(i=0; i<myTblLine; i++){                                 // 表の「行」のループ
		   myHtml +="<tr>";                                 　　　　// 行の開始
		   for(j=0; j<7; j++){                                      // 表の「列」のループ

		      myHtml +="<td align='center' ";                       // 列(セル)の作成

		      myDat = myTable[j+(i*7)];                             // 書きこむ内容の取得
			  thisDat = new Date(myYear,myMonth,myDat);             // 書き込む年月日取得

		      if (thisDat==thisToday) {
				myHtml +="bgcolor='#00ffff'>";   // 今日のセルの色
		      } else if(j==0) {
				myHtml +="bgcolor='#ffb6c1'>";   // 日曜のセルの色
			  } else if(j==6) {
				myHtml +="bgcolor='#97ffff'>";   // 土曜日の色設定
			  } else {
				myHtml +="bgcolor='#FDFDFD'>";   // 平日のセルの色
			  }

		      myHtml +="<strong>";				 // 日付セット

			  if (thisDat<thisToday || myDat=="　") {
				  myHtml += myDat;
			  } else if (! isNaN(myDat)) {
				  myHtml += "<a href='javascript:void(0)' onClick='selectDay("+myYear+","+myMonth+","+myDat+","+num+")'>";
				  myHtml += myDat;
				  myHtml += "</a>\n";
			  }

			  myHtml +="</strong>";
		      myHtml +="</td>\n";                                   // 列(セル)の終わり
		   }
		   myHtml +="</tr>";                                        // 行の終わり
		}
		myHtml +="</table>\n";                                      // 表の終わり

		//カレンダーブロックの定義
		if (num == 0){
			num = '';
		}
		my_cal = "my_calender"+num;
		document.getElementById(my_cal).style.zIndex = 3;

		if (num > 0) {
			document.getElementById(my_cal).style.width  = 165+"px";
			document.getElementById(my_cal).style.height = 160+"px";
		} else {
			document.getElementById(my_cal).style.width  = 0;
			document.getElementById(my_cal).style.height = 0;
		}
/*
		document.getElementById(my_cal).style.top    = _x+"px";
		document.getElementById(my_cal).style.left   = _y+"px";
*/
		//カレンダー本体を表示
		document.getElementById(my_cal).innerHTML = myHtml;
	}

	//----------------ここまで、カレンダー表示パーツ---------------------




	//-----------------カレンダーの基本情報を設定------------------------

	function makeTable(){

		myYear = myDate.getYear();                                 // 下２桁の西暦取得
		myYear = (myYear<2000) ? (1900+myYear) : (myYear);         // ４桁の西暦に変換
		if (((myYear%4)==0 && (myYear%100)!=0) || (myYear%400)==0) // うるう年だったら...
		   myMonthTbl[1] = 29;                                     // 　２月を２９日とする
		myMonth = myDate.getMonth();                               // 月を取得(0月～11月)
		myDate.setDate(1);                                         // 日付を'１日'に変えて、
		myWeek = myDate.getDay();                                  // 　'１日'の曜日を取得
		myTblLine = Math.ceil((myWeek+myMonthTbl[myMonth])/7);     // カレンダーの行数
		myTable   = new Array(7*myTblLine);                        // 表のセル数分定義

		for(i=0; i<7*myTblLine; i++) myTable[i]="　";              // myTableを掃除する
		for(i=0; i<myMonthTbl[myMonth]; i++)myTable[i+myWeek]=i+1; // 日付を埋め込む
		return;
	}


	//---------------------日付選択を反映させる。------------------------

	function selectDay(y,m,d,num){

		if (num == 0) {
			num='';
		}
		myHtml = '';
		my_cal = "my_calender"+num;
		dy = "dep_year"+num;
		dm = "dep_month"+num;
		dd = "dep_day"+num;
		document.getElementById(my_cal).innerHTML = '';
		document.getElementById(my_cal).style.width = 0+"px";
		document.getElementById(my_cal).style.height = 0+"px";
		document.getElementById(dy).value  = y;
		document.getElementById(dm).value = m+1;
		document.getElementById(dd).value   = d;

	}


	//---------------------翌月を表示させる------------------------------
	function nextmonth(y,m,num){
		myDate = new Date(y,m+1,1);
		makeTable();
		createCalender(num);
		return;
	}


	//---------------------先月を表示させる------------------------------

	function prevmonth(y,m,num){
		myDate = new Date(y,m,0);
		myDate.setDate(1);
		makeTable();
		createCalender(num);
		return;
	}


	//---------------------カレンダーを閉じる----------------------------

	function closeCalender(num){
		if (num == 0){
			num = '';
		}

		my_cal = "my_calender"+num;
		document.getElementById(my_cal).innerHTML = '';
		document.getElementById(my_cal).style.width = 0+"px";
		document.getElementById(my_cal).style.height = 0+"px";
	}


	//-----------------------月移動の情報取得-----------------------------

	function moveMonth(num) {

		tempHtml += "<tr>\n";
		tempHtml += "<td colspan='7' height='20px'>\n";

		move_Month = new Date(myYear,myMonth,1);	//今表示されている月の1日を取得

		//カレンダーの最終年を取得
		myNum = (num==0) ? '' : num;
		dy = "dep_year"+myNum;

		y  = document.getElementById(dy).options.length;
		ly = eval(document.getElementById(dy).options[y-1].value);
		last_Year  = new Date(ly,11,1);

		if (move_Month > thisToday) {
			tempHtml += "<a href='javascript:void(0)' onClick='prevmonth("+myYear+","+myMonth+","+num+")'";
			tempHtml += " align='left' style='font-size:12px;'>←先月へ</a>\n";
		}

		if (move_Month < last_Year) {
			tempHtml += "<a href='javascript:void(0)' onClick='nextmonth("+myYear+","+myMonth+","+num+")'";
			tempHtml += "style='font-size:12px;'>来月へ→</a>\n";
			tempHtml += "</td></tr>";
		}

		return;
	}


	//--------- ドロップダウンからカレンダーの年月日を取得 ------------

	function get_yearmonth(num){

		if (num == 0) {
			num = '';
		}
		dy = "dep_year"+num;
		dm = "dep_month"+num;
		dd = "dep_day"+num;
		dYear  = document.getElementById(dy).value;
		dMonth = document.getElementById(dm).value;
		dDay   = document.getElementById(dd).value;

		if (isNaN(dYear) || isNaN(dMonth) || isNaN(dDay)){
			return;
		} else {
			myDate = new Date(dYear,dMonth-1,dDay);
		}

		return;
	}


	//------------　座標取得（ボタン押下げ時のカーソルポイント）取得 --------------

	function getIndex(){
		if (browser.charAt(0) == 'I') {
			_x = window.event.offsetX;
			_y = window.event.offsetY;
			return;
		} else {
			_x = 100;
			_y = 120;
		}
		/*Firefox用　設定　動作せず。
			_x = onClick.pageX;
			_y = onClick.pageY;
		}

		if (isNaN(_x) || isNaN(_y)){
			_x = 100;
			_y = 120;
		}
		*/
	}


	//----------------------- ブラウザ判別 ----------------------------------------

	function getbrows(){

		if (navigator.appName.charAt(0)=='N'){

			if (navigator.userAgent.indexOf("Netscape") == -1) {

				if (navigator.userAgent.indexOf("Safari") != -1) {
					browser = "Safari";
					return;
				}

				if (navigator.userAgent.indexOf("Firefox") != -1) {
					browser = "Firefox";
					return;
				}

				if (navigator.userAgent.indexOf("Gecko") != -1) {
					browser = "Mozilla";
					return;
				}
			}

			browser = "Netscape";
			return;
		}

		if (navigator.appName.charAt(0)=="M") {

			if (navigator.userAgent.indexOf("Opera") != -1) {
				browser = "Opera";
				return;
			}

			browser = "Internet Explorer";
			return;
		}

		browser = "unknown";
	}


