PageSourceSearch

http://www.hotel-ichiei.com/reservation/jkl-calendar.js

js hotel-ichiei.com collected 2026-10-08 05:34:05 UTC 26,851 bytes, 651 lines download raw bytes

1//  ========================================================
2//  jkl-calendar.js ---- ポップアップカレンダー表示クラス
3//  Copyright 2005-2006 Kawasaki Yusuke <u-suke [at] kawa.net>
4//  2005/04/06 - 最初のバージョン
5//  2005/04/10 - 外部スタイルシートを使用しない、JKL.Opacity はオプション
6//  2006/10/22 - typo修正、spliter/min_date/max_dateプロパティ、×ボタン追加
7//  2006/10/23 - prototype.js併用時は、Event.observe()でイベント登録
8//  2006/10/24 - max_date 範囲バグ修正
9//  2006/10/25 - フォームに初期値があれば、カレンダーの初期値に採用する
10//  2006/11/15 - MOM Update 週の初めの曜日を変更できるように修正
11//  2006/11/23 - MOM Update 今日日付の文字色を指定できるように修正、あと枠線も描画してみる
12//               邪魔な<select>への応急処置を書いてみた
13//  2006/11/27 - MOM Update 邪魔な<select>への応急処置を修正、描画領域の高さを取得する
14//  2006/11/30 - MOM Update 選択可能な曜日をプロパティに追加、今日日付と選択不可能な日付の背景色をスタイルに追加
15//               カレンダーのz-indexをプロパティに追加
16//  2006/12/04 - ksuzu Update 選択可能日がない月には移動できないように変更
17//               カレンダーの表示月をクリックすると現在の月に移動できるよう変更
18//               閉じるボタンにてカレンダーを閉じたとき、カレンダーの初期表示を戻すよう変更
19//  2006/12/30 - MOM IFRAMEのSRC属性にdummy.htmlを挿入
20//  2007/02/04 - MOM setDateYMDのバグを修正
21//               TDタグのスタイルに背景色を指定するよう修正
22//  ========================================================
23
24// 親クラス
25
26if ( typeof(JKL) == 'undefined' ) JKL = function() {};
27
28// JKL.Calendar コンストラクタの定義
29
30JKL.Calendar = function ( eid, fid, valname ) {
31    this.eid = eid;
32    this.formid = fid;
33    this.valname = valname;
34    this.__dispelem = null;  // カレンダー表示欄エレメント
35    this.__textelem = null;  // テキスト入力欄エレメント
36    this.__opaciobj = null;  // JKL.Opacity オブジェクト
37    this.style = new JKL.Calendar.Style();
38    return this;
39};
40
41// バージョン番号
42
43JKL.Calendar.VERSION = "0.13";
44
45// デフォルトのプロパティ
46
47JKL.Calendar.prototype.spliter = "/";
48JKL.Calendar.prototype.date = null;
49JKL.Calendar.prototype.min_date = null;
50JKL.Calendar.prototype.max_date = null;
51
52// 2006.11.15 MOM 表示開始曜日をプロパティに追加(デフォルトは日曜日=0)
53JKL.Calendar.prototype.start_day = 0;
54
55// 2006.11.23 MOM カレンダー内の日付を枠線で区切るかどうかのプロパティ(デフォルトはtrue)
56JKL.Calendar.prototype.draw_border = true;
57
58// 2006.11.30 MOM 各曜日の選択可否をプロパティに追加(デフォルトは全てtrue)
59// 配列の添え字で曜日を指定(0~6 = 日曜~土曜)、選択可否をboolean値で代入する、という使い方
60JKL.Calendar.prototype.selectable_days = new Array(true,true,true,true,true,true,true);
61
62// 2006.11.30 MOM カレンダーのz-indexをプロパティに追加
63JKL.Calendar.prototype.zindex = 10;
64
65// JKL.Calendar.Style
66
67JKL.Calendar.Style = function() {
68    return this;
69};
70
71// デフォルトのスタイル
72
73JKL.Calendar.Style.prototype.frame_width        = "220px";      // フレーム横幅
74JKL.Calendar.Style.prototype.frame_color        = "#CCCCCC";    // フレーム枠の色
75JKL.Calendar.Style.prototype.font_size          = "12px";       // 文字サイズ
76JKL.Calendar.Style.prototype.day_bgcolor        = "#FFFFFF";    // カレンダーの背景色
77JKL.Calendar.Style.prototype.month_color        = "#333333";    // ○年○月部分の背景色
78JKL.Calendar.Style.prototype.month_hover_color  = "#333333";    // 月のマウスオーバー時の≪≫文字色
79JKL.Calendar.Style.prototype.month_hover_bgcolor= "#DDDDDD";    // 月のマウスオーバー時の≪≫背景色
80JKL.Calendar.Style.prototype.weekday_color      = "#404040";    // 月曜~金曜日セルの文字色
81JKL.Calendar.Style.prototype.saturday_color     = "#0040D0";    // 土曜日セルの文字色
82JKL.Calendar.Style.prototype.sunday_color       = "#D00000";    // 日曜日セルの文字色
83JKL.Calendar.Style.prototype.others_color       = "#AAAAAA";    // 他の月の日セルの文字色
84JKL.Calendar.Style.prototype.day_hover_bgcolor  = "#FFEAEA";    // 日付のマウスオーバー時の日セルの背景
85JKL.Calendar.Style.prototype.cursor             = "pointer";    // 日付のマウスオーバー時のカーソル形状
86
87// 2006.11.23 MOM 今日日付の文字色をプロパティに追加
88JKL.Calendar.Style.prototype.today_color        = "#666666";    // 今日日付セルの文字色
89
90// 2006.11.23 MOM 枠線もつけてみる
91JKL.Calendar.Style.prototype.today_border_color = "#666666";    // 今日日付セルの枠線の色
92JKL.Calendar.Style.prototype.others_border_color= "#EEEEEE";    // 他の日セルの枠線の色
93
94// 2006.11.30 MOM 今日日付の背景色を忘れてたので追加してみる
95JKL.Calendar.Style.prototype.today_bgcolor      = "#FFFFFF";    // 今日日付セルの背景色
96
97// 2006.11.30 MOM 選択不可能な日付の背景色を追加
98JKL.Calendar.Style.prototype.unselectable_day_bgcolor = "#EEEEEE";    // 選択不可能な日付の背景色
99
100//  メソッド
101
102JKL.Calendar.Style.prototype.set = function(key,val) { this[key] = val; }
103JKL.Calendar.Style.prototype.get = function(key) { return this[key]; }
104JKL.Calendar.prototype.setStyle = function(key,val) { this.style.set(key,val); };
105JKL.Calendar.prototype.getStyle = function(key) { return this.style.get(key); };
106
107// 日付を初期化する
108
109JKL.Calendar.prototype.initDate = function ( dd ) {
110    if ( ! dd ) dd = new Date();
111    var year = dd.getFullYear();
112    var mon  = dd.getMonth();
113    var date = dd.getDate();
114    this.date = new Date( year, mon, date );
115    this.getFormValue();
116    return this.date;
117}
118
119// 透明度設定のオブジェクトを返す
120
121JKL.Calendar.prototype.getOpacityObject = function () {
122    if ( this.__opaciobj ) return this.__opaciobj;
123    var cal = this.getCalendarElement();
124    if ( ! JKL.Opacity ) return;
125    this.__opaciobj = new JKL.Opacity( cal );
126    return this.__opaciobj;
127};
128
129// カレンダー表示欄のエレメントを返す
130
131JKL.Calendar.prototype.getCalendarElement = function () {
132    if ( this.__dispelem ) return this.__dispelem;
133    this.__dispelem = document.getElementById( this.eid )
134    return this.__dispelem;
135};
136
137// テキスト入力欄のエレメントを返す
138
139JKL.Calendar.prototype.getFormElement = function () {
140    if ( this.__textelem ) return this.__textelem;
141    var frmelms = document.getElementById( this.formid );
142    if ( ! frmelms ) return;
143    for( var i=0; i < frmelms.elements.length; i++ ) {
144        if ( frmelms.elements[i].name == this.valname ) {
145            this.__textelem = frmelms.elements[i];
146        }
147    }
148    return this.__textelem;
149};
150
151// オブジェクトに日付を記憶する(YYYY/MM/DD形式で指定する)
152
153JKL.Calendar.prototype.setDateYMD = function (ymd) {
154    var splt = ymd.split( this.spliter );
155    if ( splt[0]-0 > 0 &&
156         splt[1]-0 >= 1 && splt[1]-0 <= 12 &&       // bug fix 2006/03/03 thanks to ucb
157         splt[2]-0 >= 1 && splt[2]-0 <= 31 ) {
158        if ( ! this.date ) this.initDate();
159            this.date.setDate( splt[2] );
160            this.date.setMonth( splt[1]-1 );
161            this.date.setFullYear( splt[0] );
162    } else {
163        ymd = "";
164    }
165    return ymd;
166};
167
168// オブジェクトから日付を取り出す(YYYY/MM/DD形式で返る)
169// 引数に Date オブジェクトの指定があれば、
170// オブジェクトは無視して、引数の日付を使用する(単なるfprint機能)
171
172JKL.Calendar.prototype.getDateYMD = function ( dd ) {
173    if ( ! dd ) {
174        if ( ! this.date ) this.initDate();
175        dd = this.date;
176    }
177    var mm = "" + (dd.getMonth()+1);
178    var aa = "" + dd.getDate();
179    if ( mm.length == 1 ) mm = "" + "0" + mm;
180    if ( aa.length == 1 ) aa = "" + "0" + aa;
181    return dd.getFullYear() + this.spliter + mm + this.spliter + aa;
182};
183
184// テキスト入力欄の値を返す(ついでにオブジェクトも更新する)
185
186JKL.Calendar.prototype.getFormValue = function () {
187    var form1 = this.getFormElement();
188    if ( ! form1 ) return "";
189    var date1 = this.setDateYMD( form1.value );
190    return date1;
191};
192
193// フォーム入力欄に指定した値を書き込む
194
195JKL.Calendar.prototype.setFormValue = function (ymd) {
196    if ( ! ymd ) ymd = this.getDateYMD();   // 無指定時はオブジェクトから?
197    var form1 = this.getFormElement();
198    if ( form1 ) form1.value = ymd;
199};
200
201// 2011.02.09 DYN追加
202// カレンダーから日付データを戻す
203JKL.Calendar.prototype.SetCalenderYmd = function (ymd) {
204	var warrArray = new Array;
205	var warrY;
206	var warrM;
207	var warrD;
208	var cnt;
209
210	warrArray = ymd.split('/');
211	warrY   = warrArray[0];
212	warrM   = Number(warrArray[1]);
213	warrD   = Number(warrArray[2]);
214
215	objfrm.cmbARRY.value = warrY;
216	objfrm.cmbARRM.value = warrM;
217	objfrm.cmbARRD.value = warrD;
218};
219
220//  カレンダー表示欄を表示する
221
222JKL.Calendar.prototype.show = function () {
223    this.getCalendarElement().style.display = "";
224};
225
226//  カレンダー表示欄を即座に隠す
227
228JKL.Calendar.prototype.hide = function () {
229    this.getCalendarElement().style.display = "none";
230};
231
232//  カレンダー表示欄をフェードアウトする
233
234JKL.Calendar.prototype.fadeOut = function (s) {
235    if ( JKL.Opacity ) {
236        this.getOpacityObject().fadeOut(s);
237    } else {
238        this.hide();
239    }
240};
241
242// 月単位で移動する
243
244JKL.Calendar.prototype.moveMonth = function ( mon ) {
245    // 前へ移動
246    if ( ! this.date ) this.initDate();
247    for( ; mon<0; mon++ ) {
248        this.date.setDate(1);   // 毎月1日の1日前は必ず前の月
249        this.date.setTime( this.date.getTime() - (24*3600*1000) );
250    }
251    // 後へ移動
252    for( ; mon>0; mon-- ) {
253        this.date.setDate(1);   // 毎月1日の32日後は必ず次の月
254        this.date.setTime( this.date.getTime() + (24*3600*1000)*32 );
255    }
256    this.date.setDate(1);       // 当月の1日に戻す
257    this.write();    // 描画する
258};
259
260// イベントを登録する
261
262JKL.Calendar.prototype.addEvent = function ( elem, ev, func ) {
263//  prototype.js があれば利用する(IEメモリリーク回避)
264    if ( window.Event && Event.observe ) {
265        Event.observe( elem, ev, func, false );
266    } else {
267        elem["on"+ev] = func;
268    }
269}
270
271// カレンダーを描画する
272
273JKL.Calendar.prototype.write = function () {
274    var date = new Date();
275    if ( ! this.date ) this.initDate();
276    date.setTime( this.date.getTime() );
277
278    var year = date.getFullYear();          // 指定年
279    var mon  = date.getMonth();             // 指定月
280    var today = date.getDate();             // 指定日
281    var form1 = this.getFormElement();
282
283    // 選択可能な日付範囲
284    var min;
285    if ( this.min_date ) {
286        var tmp = new Date( this.min_date.getFullYear(), 
287            this.min_date.getMonth(), this.min_date.getDate() );
288        min = tmp.getTime();
289    }
290    var max;
291    if ( this.max_date ) {
292        var tmp = new Date( this.max_date.getFullYear(), 
293            this.max_date.getMonth(), this.max_date.getDate() );
294        max = tmp.getTime();
295    }
296
297    // 直前の月曜日まで戻す
298    date.setDate(1);                        // 1日に戻す
299    var wday = date.getDay();               // 曜日 日曜(0)~土曜(6)
300
301// 2006.11.15 MOM 表示開始曜日を可変にしたので、ロジックちょっといじりますよ
302    if ( wday != this.start_day ) {
303        date.setTime( date.getTime() - (24*3600*1000)*((wday-this.start_day+7)%7) );
304    }
305
306
307    // 最大で7日×6週間=42日分のループ
308    var list = new Array();
309    for( var i=0; i<42; i++ ) {
310        var tmp = new Date();
311        tmp.setTime( date.getTime() + (24*3600*1000)*i );
312        if ( i && i%7==0 && tmp.getMonth() != mon ) break;
313        list[list.length] = tmp;
314    }
315
316    // スタイルシートを生成する
317    var month_table_style = 'width: 100%; ';
318    month_table_style += 'background: '+this.style.frame_color+'; ';
319    month_table_style += 'border: 1px solid '+this.style.frame_color+';';
320
321    var week_table_style = 'width: 100%; ';
322    week_table_style += 'background: '+this.style.day_bgcolor+'; ';
323    week_table_style += 'border-left: 1px solid '+this.style.frame_color+'; ';
324    week_table_style += 'border-right: 1px solid '+this.style.frame_color+'; ';
325
326    var days_table_style = 'width: 100%; ';
327    days_table_style += 'background: '+this.style.day_bgcolor+'; ';
328    days_table_style += 'border: 1px solid '+this.style.frame_color+'; ';
329
330    var month_td_style = "";
331// 2007.02.04 MOM TDタグも背景色のスタイルを明示的に指定する
332    month_td_style += 'background: '+this.style.frame_color+'; ';
333    month_td_style += 'font-size: '+this.style.font_size+'; ';
334    month_td_style += 'color: '+this.style.month_color+'; ';
335    month_td_style += 'padding: 4px 0px 2px 0px; ';
336    month_td_style += 'text-align: center; ';
337    month_td_style += 'font-weight: bold;';
338
339    var week_td_style = "";
340// 2007.02.04 MOM TDタグも背景色のスタイルを明示的に指定する
341    week_td_style += 'background: '+this.style.day_bgcolor+'; ';
342    week_td_style += 'font-size: '+this.style.font_size+'; ';
343    week_td_style += 'padding: 2px 0px 2px 0px; ';
344    week_td_style += 'font-weight: bold;';
345    week_td_style += 'text-align: center;';
346
347    var days_td_style = "";
348// 2007.02.04 MOM TDタグも背景色のスタイルを明示的に指定する
349    days_td_style += 'background: '+this.style.day_bgcolor+'; ';
350    days_td_style += 'font-size: '+this.style.font_size+'; ';
351    days_td_style += 'padding: 1px; ';
352    days_td_style += 'text-align: center; ';
353    days_td_style += 'font-weight: bold;';
354
355    var days_unselectable = "font-weight: normal;";
356
357    // HTMLソースを生成する
358    var src1 = "";
359
360// 2006.11.23 MOM 邪魔な<select>への応急処置その1
361// テーブルをdivで囲んで上位レイヤに設定(z-indexの値を大きくしておく)
362// 2006.11.27 MOM 描画フィールドの高さを取得するため、idをセットしておく
363    src1 += '<div id="'+this.eid+'_screen" style="position:relative;z-index:'+(this.zindex+1)+';">\n';
364
365    src1 += '<table border="0" cellpadding="0" cellspacing="0" style="'+month_table_style+'"><tr>';
366    src1 += '<td id="__'+this.eid+'_btn_prev" title="前の月へ" style="'+month_td_style+'">≪</td>';
367    src1 += '<td style="'+month_td_style+'">&nbsp;</td>';
368// 2006.12.04 ksuzu 表示月をクリックすると現在の月に移動
369    src1 += '<td id="__'+this.eid+'_btn_today" style="'+month_td_style+'">'+(year)+'年 '+(mon+1)+'月</td>';
370    src1 += '<td id="__'+this.eid+'_btn_close" title="閉じる" style="'+month_td_style+'">×</td>';
371    src1 += '<td id="__'+this.eid+'_btn_next" title="次の月へ" style="'+month_td_style+'">≫</td>';
372    src1 += "</tr></table>\n";
373    src1 += '<table border="0" cellpadding="0" cellspacing="0" style="'+week_table_style+'"><tr>';
374
375// 2006.11.15 MOM 表示開始曜日start_dayから順に一週間分表示する
376    for(var i = this.start_day; i < this.start_day + 7; i++){
377        var _wday = i%7;
378        if(_wday == 0){
379             src1 += '<td style="color: '+this.style.sunday_color+'; '+week_td_style+'">日</td>';
380        }else if(_wday == 6){
381             src1 += '<td style="color: '+this.style.saturday_color+'; '+week_td_style+'">土</td>';
382        }else{
383             src1 += '<td style="color: '+this.style.weekday_color+'; '+week_td_style+'">';
384            if(_wday == 1)        src1 += '月</td>';
385            else if(_wday == 2)    src1 += '火</td>';
386            else if(_wday == 3)    src1 += 'æ°´</td>';
387            else if(_wday == 4)    src1 += '木</td>';
388            else if(_wday == 5)    src1 += '金</td>';
389        }
390    }
391
392
393    src1 += "</tr></table>\n";
394    src1 += '<table border="0" cellpadding="0" cellspacing="0" style="'+days_table_style+'">';
395
396    var curutc;
397    if ( form1 && form1.value ) {
398        var splt = form1.value.split(this.spliter);
399        if ( splt[0] > 0 && splt[2] > 0 ) {
400            var curdd = new Date( splt[0]-0, splt[1]-1, splt[2]-0 );
401            curutc = curdd.getTime(); // フォーム上の当日
402        }
403    }
404
405//2006.11.23 MOM 今日日付を取得し、時分秒を切り捨てる
406    var realdd = new Date();
407    var realutc = (new Date(realdd.getFullYear(),realdd.getMonth(),realdd.getDate())).getTime();
408
409    for ( var i=0; i<list.length; i++ ) {
410        var dd = list[i];
411        var ww = dd.getDay();
412        var mm = dd.getMonth();
413
414        if ( ww == this.start_day ) {
415            src1 += "<tr>"; // 表示開始曜日の前に行頭
416        }
417
418
419        var cc = days_td_style;
420        var utc = dd.getTime();
421
422        if ( mon == mm ) {
423
424//2006.11.23 MOM 最初に今日日付かどうかをチェックする
425//※当月でない場合にも色変えると選択できそうに見えて紛らわしいので、当月かつ今日日付の場合のã
425¿è‰²ã‚’変える
426            if ( utc == realutc ){
427                cc += "color: "+this.style.today_color+";";     // 今日日付
428            } else
429
430            if ( ww == 0 ) {
431                cc += "color: "+this.style.sunday_color+";";    // 当月の日曜日
432            } else if ( ww == 6 ) {
433                cc += "color: "+this.style.saturday_color+";";  // 当月の土曜日
434            } else {
435                cc += "color: "+this.style.weekday_color+";";   // 当月の平日
436            }
437        } else {
438            cc += "color: "+this.style.others_color+";";        // 前月末と翌月初の日付
439        }
440
441//2006.11.23 MOM utcの変数宣言を↑に移動
442//      var utc = dd.getTime();
443
444// 2006.11.30 MOM 選択可能な曜日指定の条件追加
445//        if (( min && min > utc ) || ( max && max < utc )) {
446        if (( min && min > utc ) || ( max && max < utc ) || ( !this.selectable_days[dd.getDay()] )) {
447            cc += days_unselectable;
448        }
449        if ( utc == curutc ) { // フォーム上の当日
450            cc += "background: "+this.style.day_hover_bgcolor+";";
451        }
452// 2006.11.30 MOM 今日日付の背景色
453        else if ( mon == mm && utc == realutc ) {
454            cc += "background: "+this.style.today_bgcolor+";";
455        }
456// 2006.11.30 MOM 選択不可能な日付の背景色
457        else if (( min && min > utc ) || ( max && max < utc ) || ( !this.selectable_days[dd.getDay()] )) {
458            cc += 'background: '+this.style.unselectable_day_bgcolor+';';
459        }
460
461//2006.11.23 MOM 枠線描画を追加
462        if ( this.draw_border ){
463            if ( mon == mm && utc == realutc ){
464                cc += "border:solid 1px "+this.style.today_border_color+";";    // 当月かつ今日日付
465            } else {
466                cc += "border:solid 1px "+this.style.others_border_color+";";    // その他
467            }
468        }
469
470        var ss = this.getDateYMD(dd);
471        var tt = dd.getDate();
472
473        src1 += '<td style="'+cc+'" title='+ss+' id="__'+this.eid+'_td_'+ss+'">'+tt+'</td>';
474
475        if ( ww == (this.start_day+6)%7 ) {
476            src1 += "</tr>\n";                                  // 表示開始曜日の1つ手前で行末
477        }
478    }
479    src1 += "</table>\n";
480
481    src1 += '</div>\n';
482
483    // カレンダーを書き換える
484    var cal1 = this.getCalendarElement();
485    if ( ! cal1 ) return;
486    cal1.style.width = this.style.frame_width;
487    cal1.style.position = "absolute";
488    cal1.innerHTML = src1;
489
490
491// 2006.11.23 MOM 邪魔な<select>への応急処置その2
492// カレンダーと全く同じサイズのIFRAMEを生成し、座標を一致させて下位レイヤに描画する
493
494// IFRAME対応が可能なバージョンのみ処置を施す
495    var ua = navigator.userAgent;
496    if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 ){
497
498// 2006.11.27 MOM 先にinnerHTMLにカレンダーの実体を渡しておいて、描画フィールドの高さを取得する
499// ※hide()が呼ばれた直後だと、offsetHeightが0になってしまうので、一時的にshowを呼ぶ
500        this.show();
501        var screenHeight = cal1.document.getElementById(this.eid+"_screen").offsetHeight;
502        this.hide();
503
504        src1 += '<div style="position:absolute;z-index:'+this.zindex+';top:0px;left:0px;">';
505        src1 += '<iframe /?scid="dummy.htm" frameborder=0 scrolling=no width='+this.style.frame_width+' height='+screenHeight+'></iframe>';
506        src1 += '</div>\n';
507
508//改めてinnerHTMLにセット
509        cal1.innerHTML = src1;
510    }
511
512
513
514    // イベントを登録する
515    var __this = this;
516    var get_src = function (ev) {
517        ev  = ev || window.event;
518        var src = ev.target || ev.srcElement;
519        return src;
520    };
521    var month_onmouseover = function (ev) {
522        var src = get_src(ev);
523        src.style.color = __this.style.month_hover_color;
524        src.style.background = __this.style.month_hover_bgcolor;
525    };
526    var month_onmouseout = function (ev) {
527        var src = get_src(ev);
528        src.style.color = __this.style.month_color;
529        src.style.background = __this.style.frame_color;
530    };
531    var day_onmouseover = function (ev) {
532        var src = get_src(ev);
533        src.style.background = __this.style.day_hover_bgcolor;
534    };
535    var day_onmouseout = function (ev) {
536        var src = get_src(ev);
537// 2006.11.30 MOM 当月かつ今日日付であれば、今日日付用の背景色を適用
538        var today = new Date();
539        if( today.getMonth() == __this.date.getMonth() && src.id == '__'+__this.eid+'_td_'+__this.getDateYMD(today) ){
540            src.style.background = __this.style.today_bgcolor;
541        }else{
542            src.style.background = __this.style.day_bgcolor;
543        }
544    };
545    var day_onclick = function (ev) {
546        var src = get_src(ev);
547        var srcday = src.id.substr(src.id.length-10);
548//      __this.setFormValue( srcday );
549	__this.SetCalenderYmd( srcday );
550        __this.fadeOut( 1.0 );
551    };
552
553//
554// 2006.12.04 ksuzu 選択できない月へのリンクは作成しない
555//
556    // 前の月へボタン
557    var tdprev = document.getElementById( "__"+this.eid+"_btn_prev" );
558    //前の月の最終日
559    var tmpDate = new Date(year,mon,1);
560    tmpDate.setTime( tmpDate.getTime() - (24*3600*1000) );
561    //選択可能な日がある?
562    if ( !min || this.min_date <= tmpDate ){
563        tdprev.style.cursor = this.style.cursor;
564        this.addEvent( tdprev, "mouseover", month_onmouseover );
565        this.addEvent( tdprev, "mouseout", month_onmouseout );
566        this.addEvent( tdprev, "click", function(){ __this.moveMonth( -1 ); });
567    }
568    //選択不可能
569    else{
570        tdprev.title = "前の月は選択できません";
571    }
572
573
574//
575// 2006.12.04 ksuzu 表示月をクリックすると現在の月に移動
576//
577    var nMov = (realdd.getFullYear() - year) * 12 + (realdd.getMonth() - mon);
578    if ( nMov != 0 ){
579        // 現在の月へボタン
580        var tdtoday = document.getElementById( "__"+this.eid+"_btn_today" );
581        tdtoday.style.cursor = this.style.cursor;
582        tdtoday.title = "現在の月へ";
583        this.addEvent( tdtoday, "mouseover", month_onmouseover );
584        this.addEvent( tdtoday, "mouseout", month_onmouseout );
585        this.addEvent( tdtoday, "click", function(){ __this.moveMonth( nMov ); });
586    }
587
588    // 閉じるボタン
589    var tdclose = document.getElementById( "__"+this.eid+"_btn_close" );
590    tdclose.style.cursor = this.style.cursor;
591    this.addEvent( tdclose, "mouseover", month_onmouseover );
592    this.addEvent( tdclose, "mouseout", month_onmouseout );
593
594//
595// 2006.12.04 ksuzu カレンダーの初期表示を戻す
596//
597    this.addEvent( tdclose, "click", function(){ __this.getFormValue(); __this.hide(); });
598
599//
600// 2006.12.04 ksuzu 選択できない月へのリンクは作成しない
601//
602    // 次の月へボタン
603    var tdnext = document.getElementById( "__"+this.eid+"_btn_next" );
604    //次の月の初日
605    var tmpDate = new Date(year,mon,1);
606    tmpDate.setTime( tmpDate.getTime() + (24*3600*1000)*32 );
607    tmpDate.setDate(1);
608    //選択可能な日がある?
609    if ( !max || this.max_date >= tmpDate ){
610        tdnext.style.cursor = this.style.cursor;
611        this.addEvent( tdnext, "mouseover", month_onmouseover );
612        this.addEvent( tdnext, "mouseout", month_onmouseout );
613        this.addEvent( tdnext, "click", function(){ __this.moveMonth( +1 ); });
614    }
615    //選択不可能
616    else{
617        tdnext.title = "次の月は選択できません";
618    }
619
620
621    // セルごとのイベントを登録する
622    for ( var i=0; i<list.length; i++ ) {
623        var dd = list[i];
624        if ( mon != dd.getMonth() ) continue;       // 今月のセルにのみ設定する
625
626        var utc = dd.getTime();
627        if ( min && min > utc ) continue;           // 昔過ぎる
628        if ( max && max < utc ) continue;           // 未来過ぎる
629        if ( utc == curutc ) continue;              // フォーム上の当日
630// 2006.11.30 MOM 選択可能な曜日指定対応
631        if ( !this.selectable_days[dd.getDay()] ) continue;
632
633        var ss = this.getDateYMD(dd);
634        var cc = document.getElementById( "__"+this.eid+"_td_"+ss );
635        if ( ! cc ) continue;
636
637        cc.style.cursor = this.style.cursor;
638        this.addEvent( cc, "mouseover", day_onmouseover );
639        this.addEvent( cc, "mouseout", day_onmouseout );
640        this.addEvent( cc, "click", day_onclick );
641    }
642
643    // 表示する
644    this.show();
645
646};
647
648
649// 旧バージョン互換(typo)
650JKL.Calendar.prototype.getCalenderElement = JKL.Calendar.prototype.getCalendarElement;
651JKL.Calender = JKL.Calendar;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.