/*************************************************************************************************** * デザイン設定/必要に応じて修正してください。 ***************************************************************************************************/ var wlock = 1; // 常に全面表示の場合は 1、そうでない場合は 0 var clear_f = 0; // 1:クリアボタン表示、0:非表示 var c_body = '#ddddff'; // ボディの背景 var c_table = '#dddddd'; // カレンダーの背景 var c_month = '#003399'; // 月の背景 var f_month = '#ffffff'; // 月の文字 var c_week = '#a6c2ff'; // 週の背景 var f_week = '#000000'; // 週の文字 var c_date = '#ffffff'; // 日の背景 var c_datex = '#eeeeee'; // 日の背景(先月・来月部分) var c_dateo = '#a6c2ff'; // 日の背景(本日部分) var f_date = '#000000'; // 日の文字 var s_date = '#ffccff'; // 休祝日の背景 var t_date = '#ccffcc'; // 土曜日の背景 /*************************************************************************************************** * 設定はここまで ***************************************************************************************************/ /*************************************************************************************************** * カレンダーによる日付入力スクリプト calendar.js * ================================================================================================= * The original version * Copyright(c)1999 Toshirou Takahashi tato@fureai.or.jp * Support http://www.fureai.or.jp/~tato/JS/BOOK/INDEX.HTM * ================================================================================================= * * 【更新記録】 * 2002. 2.22 (再)「>>」クリックした時に当日の日が翌月に存在しない場合に翌月カレンダーがおかしくなる(Thanx TEC関さん) * 2002. 2.21 「>>」クリックした時に当日の日が翌月に存在しない場合に翌月カレンダーがおかしくなる(Thanx TEC関さん) * 2002. 2.21 Moz用サイズ微調整 * 2002. 1.28 1月時の前月と12月時の来月グレー日付をクリックで当年の出力になっていたのを修正(Thanx 吉野理希さん) * 2001.12.28 今月へ戻る「O」ボタンでエラーが出ていたのを修正 ( for WinIE6.0 ) * * ================================================================================================= * The reconstruction version * Created by Yoshio Kanaya on April 2, 2004 * http://www.kanaya440.com/ * ================================================================================================= * * 【更新記録】 * 2008. 6. 8 ブラウザによって年が正しく表示されない点を修正( for Firefox ) * 2007. 4. 5 2007年祝日法改正に対応 * 2005. 7.30 クリアボタンの表示、非表示を指定できるようにする * 2005. 7.19 クリア機能の追加(佐々木様による機能追加) * 2005. 7.19 年を過去にしていくと1898年以降がおかしくなるバグを修正(佐々木様によるご指摘、修正) * 2004. 6.22 Firefoxに対応するようにする * * Toshirou Takahashi氏作成のスクリプトを改造 *【改造内容】 * ・Firefoxに対応(サイズ調整) * ・NSの場合もクリックしたそばにウィンドウ表示されるようにする * ・スクリーンの上にでる場合は下に、スクリーン右に出る場合は左に表示されるようにする * ・カラーのカスタマイズを簡易(変数化)にする * ・月移動だけでなく、年移動もできるようにする * ・土日祝祭日の背景色を変えるようにする ┐春分の日・秋分の日・国民に休日にも対応 * ・マウスオーバーで祝日名を表示するようにする┘ * ・戻り値の年月日の書式指定を可能にする * 日付タイプ : 'g' → 年号の頭文字を返します (M、T、S、H) * 'gg' → 年号の先頭の 1 文字を漢字で返します (明、大、昭、平) * 'ggg' → 年号を返します (明治、大正、昭和、平成) * 'yy' → 西暦の年を下 2 桁の数値で返します (00 〜 99) * 'yyyy' → 西暦の年を 4 桁の数値で返します (100 〜 9999) * 'm' → 月を表す数値を返します。1 桁の場合、先頭に 0 が付きません (1 〜 12) * 'mm' → 月を表す数値を返します。1 桁の場合、先頭に 0 が付きます (01 〜 12) * 'd' → 日付を返します。1 桁の場合、先頭に 0 が付きません (1 〜 31) * 'dd' → 日付を返します。1 桁の場合、先頭に 0 が付きます (01 〜 31) * 'w' → 曜日を英語 (省略形) で返します (Sun 〜 Sat) * 'ww → 曜日を英語で返します (Sunday 〜 Saturday) * 'a → 曜日を日本語 (省略形) で返します (日〜土) * 'aa → 曜日を日本語で返します (日曜日〜土曜日) * * ※デフォルトは、'yyyy/mm/dd' * * ================================================================================================= * * Syntax : wrtCalendar( event,formElementObject[,formFlg][,moveMonthFlg][,winOpenFlg] ) * * Example : 受付日: * * 例1 : wrtCalendar(event,this.form.e1) * 例2 : wrtCalendar(event,this.form.e1,'yyyy/mm/dd') * 例3 : wrtCalendar(event,this.form.e1,'yyyy年m月d日(ww)') * 例4 : wrtCalendar(event,this.form.e1,'gg年m月d日(aa)') * 例5 : wrtCalendar(event,this.form.e1,'m/d') * 例6 : wrtCalendar(event,this.form.e1,'mm/dd') * ***************************************************************************************************/ var now = new Date(); var absnow = now; var Win=navigator.userAgent.indexOf('Win')!=-1; var Mac=navigator.userAgent.indexOf('Mac')!=-1; var X11=navigator.userAgent.indexOf('X11')!=-1; var Moz=navigator.userAgent.indexOf('Gecko')!=-1; var Fir=navigator.userAgent.indexOf('Firefox')!=-1; var Opera=!!window.opera; var winflg=1; function wrtCalendar(e,oj,flg,arg1,arg2){ if(Opera)return; oj.blur(); if(!arguments[2]) flg = 'yyyy/mm/dd'; if(!arguments[3]) arg1 = 0; if(!Moz) if(arguments[4]||arguments[4]==0) winflg = 0; //-初期化 if(arg1==0)now = new Date(); //-年月日取得 nowdate = now.getDate(); nowmonth = now.getMonth(); nowyear = now.getFullYear(); //-月移動処理 if(arg1 == 12){ //arg1が12なら nowyear++; //1年加算 } else if(arg1 == -12){ //arg1が-12なら nowyear--; //1年減算 } else if(nowmonth == 11 && arg1 > 0){ //12月でarg1が+なら nowmonth = -1 + arg1; nowyear++; //月はarg1-1;1年加算 } else if(nowmonth == 0 && arg1 < 0){ //1月でarg1が-なら nowmonth = 12 + arg1; nowyear--; //月はarg1+12;1年減算 } else { //2-11月なら nowmonth += arg1; //月は+arg1 } //-2000年問題対応 if(nowyear < 1900) nowyear = 1900 + nowyear; //-現在月を確定 now = new Date(nowyear,nowmonth,1); //-YYYYMM作成 nowyyyymm = nowyear * 100 + nowmonth; //-YYYY/MM作成 nowtitlemonth = nowmonth + 1; if(nowtitlemonth < 10) nowtitlemonth = '0' + nowtitlemonth nowtitleyyyymm = nowyear + ' / ' + nowtitlemonth; //-週設定 week = new Array('日','月','火','水','木','金','土'); //-カレンダー表示用サブウインドウオープン if(winflg){ var w = 160; var h = 156; if(clear_f) h = 160; //-calendar用OS別サイズ微調整 if(Fir) { w += 60; h += 15; } else if(Moz){ w += 25; h += 30; } else if(Win){ w += 0; h += 0; } else if(Mac){ w += 8; h += 22; } else if(X11){ w += 5; h += 46; } var x = 100; var y = 20; //-表示位置調整 if(document.all){ //e4,e5,e6 x = window.event.screenX + 15; if(x + w > screen.width){ x = window.event.screenX - 180; } y = window.event.screenY - 180; if(y < 0){y = window.event.screenY} } else if (document.layers || document.getElementById){ //n4,n6,n7,m1,o6 x = e.screenX + 10; if(x + w > screen.width){ x = e.screenX - 200; } y = e.screenY - 200; if(y < 0){y = e.screenY; } } //-カレンダーウィンドウを表示 mkSubWin('#','calendar',x,y,w,h); } //-カレンダー構築用基準日の取得 fstday = now; //今月の1日 startday = fstday - ( fstday.getDay() * 1000 * 60 * 60 * 24 ); //最初の日曜日 startday = new Date(startday); //-カレンダー構築用HTML ddata = ''; ddata += '\n'; ddata += ''; ddata += '\n'; ddata += 'CALENDAR\n'; ddata += '\n'; ddata += '\n'; if(wlock){ ddata += '\n'; }else{ ddata += '\n'; } ddata += '
\n'; ddata += ' \n'; //-YEAR/MONTH ddata += ' \n'; ddata += ' \n'; ddata += ' \n'; //-WEEK ddata += ' \n'; for (i=0;i<7;i++){ ddata += ' \n'; } ddata += ' \n'; //-DATE for(j=0;j<6;j++){ ddata += ' \n'; for(i=0;i<7;i++){ nextday = startday.getTime() + (i * 1000 * 60 * 60 * 24); wrtday = new Date(nextday); wrtdate = wrtday.getDate(); wrtmonth = wrtday.getMonth(); wrtyear = wrtday.getFullYear(); if(wrtyear < 1900) wrtyear = 1900 + wrtyear; wrtyyyymm = wrtyear * 100 + wrtmonth; wrtyyyymmdd = makeDate(flg,wrtyear,wrtmonth,wrtdate,i); wrtdateA = ''; wrtdateA += wrtdate; wrtdateA += ''; wrtdateA += ''; if(wrtyyyymm != nowyyyymm){ ddata += ' \n'; } ddata += ' \n'; startday = new Date(nextday); startday = startday.getTime() + (1000 * 60 * 60 * 24); startday = new Date(startday); } //-mac用クローズボタン if(Mac){ ddata += ' \n'; ddata += '
'; ddata += nowtitleyyyymm + '\n'; ddata += ' \n'; ddata += '
'; ddata += week[i]; ddata += '
'; ddata += wrtdateA; } else if( wrtdate == absnow.getDate() && wrtmonth == absnow.getMonth() && wrtday.getFullYear() == absnow.getFullYear()){ ddata += ' '; ddata += wrtdateA; if(i == 1) ++moncnt; // 月曜日をカウントする } else { // 祝日の取得 syuku = getNationalHoliday(wrtyear,wrtmonth + 1,wrtdate,i); ddata += ' ' + wrtdateA + ''; }else{ ddata += wrtdateA; } } ddata += '
'; ddata += '