PageSourceSearch

https://www.vill.higashi.okinawa.jp/material/calendar.js?20190101

js vill.higashi.okinawa.jp collected 2026-10-02 10:19:51 UTC 32,067 bytes, 824 lines download raw bytes

1var SmartCMSCalendar = function(calendarUrl, eventCalendarUrlPrefix, miniCalendarId, eventIconPositionIsTail, targetCategoryNo) {
2  var weekdayName = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
3  var weekdayJPName = ['日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜'];
4  var calendarCurrentDateTime = null;
5  var calendarData = [];
6  var initialHash = null;
7
8  var MAX_SEARCH_COND_COOKIE_AGE = 60 * 60 * 24;
9
10  this.updateCalendarData = function(calendarDataUrl) {
11    updateCalendarData(calendarDataUrl);
12  }
13
14  this.init = function(calendarDataUrl) {
15    var params = getCurrentQueryParams();
16    var oldStateType = $('#calStateBlock input[name=type]:first').val();
17    var oldStateDate = $('#calStateBlock input[name=date]:first').val();
18    if (oldStateType && oldStateDate) {
19      calendarCurrentDateTime = new Date(oldStateDate);
20      toggleCalendar(parseInt(oldStateType));
21    } else {
22      var hash = window.location.hash;
23      var hashDateMatch = hash.match(/calendar_date_(\d+)_(\d+)_(\d+)/);
24      if (calendarCurrentDateTime != null) {
25        // toggleCalendar(1);
26      } else if (hashDateMatch) {
27        calendarCurrentDateTime = new Date(parseInt(hashDateMatch[1]), parseInt(hashDateMatch[2]) - 1, parseInt(hashDateMatch[3]));
28        toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_DATE);
29        initialHash = hash;
30      } else if (params && ('year' in params) && ('month' in params)) {
31        if ('day' in params) {
32          calendarCurrentDateTime = new Date(parseInt(params['year']), parseInt(params['month']) - 1, parseInt(params['day']));
33          toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_DATE);
34        } else {
35          calendarCurrentDateTime = new Date(parseInt(params['year']), parseInt(params['month']) - 1, 1);
36          toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_LIST);
37          var hashDayMatch = hash.match(/day=(\d+)/);
38          if (hashDayMatch) {
39            initialHash = 'calendar_list_' + parseInt(params['year']) + '_' + parseInt(params['month']) + '_' + parseInt(hashDayMatch[1]);
40          }
41        }
42      } else {
43        calendarCurrentDateTime = new Date();
44        toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_LIST);
45      }
46    }
47    initSearchForms();
48
49    $('.calGoCurrentMonth').unbind('click').click(function() {
50      goCurrentMonth();
51      updateCalendar();
52    });
53
54    $('.calGoPrevMonth').unbind('click').click(function() {
55      goPrevMonth();
56      updateCalendar();
57    });
58
59    $('.calGoNextMonth').unbind('click').click(function() {
60      goNextMonth();
61      updateCalendar();
62    });
63
64    $('#calListBlock .changeCalendarType').unbind('click').click(function() {
65      toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_GRID);
66    });
67    $('#calGridBlock .changeCalendarType').unbind('click').click(function() {
68      toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_LIST);
69    });
70    $('#calDateBlock .changeCalendarType').unbind('click').click(function() {
71      toggleCalendar(SmartCMSCalendarCommon.CALENDAR_TYPE_GRID);
72    });
73
74    $('#formEventSearch [name=search]').unbind('click').click(function() {
75      submitSearch();
76    });
77
78    $('#formEventSearch [name=reset]').unbind('click').click(function() {
79      $('#formEventSearch [name=eventTypeNo]').val('');
80      $('#formEventSearch .formEventFieldBox [name=eventFieldNoList]').prop('checked', false);
81      $('#formEventSearch .formEventFieldBox .formEventSearchFieldList').css('display', 'none');
82      $('#formEventSearch .formEventAreaBox [name=eventAreaNoList]').prop('checked', false);
83      $('#formEventSearch [name=search-key-text]').val('');
84      loadDefaultCalendar(calendarDataUrl);
85    });
86
87    if (params || !loadSearchCondCookie()) {
88      loadDefaultCalendar(calendarDataUrl);
89    }
90
91    $('#formEventSearch #formEventSearchType').unbind('change').change(function() {
92      onChangeEventType();
93    });
94  }
95
96  this.initMiniCalendar = function(calendarDataUrl) {
97    var oldStateDate = $('#miniCalendarStateBlock' + miniCalendarId + ' input[name=date]:first').val();
98    calendarCurrentDateTime = oldStateDate ? new Date(oldStateDate) : new Date();
99    $('#miniCalendarTable' + miniCalendarId + ' .miniCalGoCurrentMonth').unbind('click').click(function() {
100      goCurrentMonth();
101      updateMiniCalendar();
102    });
103
104    $('#miniCalendarTable' + miniCalendarId + ' .miniCalGoPrevMonth').unbind('click').click(function() {
105      goPrevMonth();
106      updateMiniCalendar();
107    });
108
109    $('#miniCalendarTable' + miniCalendarId + ' .miniCalGoNextMonth').unbind('click').click(function() {
110      goNextMonth();
111      updateMiniCalendar();
112    });
113    updateMiniCalendarData(calendarDataUrl);
114  }
115
116  function submitSearch() {
117    var eventTypeNo = $('#formEventSearch [name=eventTypeNo]').val();
118    var eventFieldNos = '';
119    if (eventTypeNo) {
120      eventFieldNos = $('#formEventSearch #formEventSearchFieldList_' + eventTypeNo + ' [name=eventFieldNoList]:checked').map(function(index, element) {
121        return $(element).val()
122      }).get().join(',');
123    } else {
124      eventTypeNo = '';
125    }
126    var eventAreaNos = $('#formEventSearch [name=eventAreaNoList]:checked').map(function(index, element) {
127      return $(element).val()
128    }).get().join(',');
129    var keyword = $('#formEventSearch [name=search-key-text]').val();
130    var eventCalendarUrl = eventCalendarUrlPrefix;
131    eventCalendarUrl += '&eventTypeNo=' + encodeURIComponent(eventTypeNo);
132    eventCalendarUrl += '&eventFieldNo=' + encodeURIComponent(eventFieldNos);
133    eventCalendarUrl += '&eventAreaNo=' + encodeURIComponent(eventAreaNos);
134    eventCalendarUrl += '&keyword=' + encodeURIComponent(keyword);
135    eventCalendarUrl += '&timeSpanType=-1';
136    $('#eventCalendarSearchBox').css('display', '');
137    saveSearchCondCookie(eventTypeNo, eventFieldNos, eventAreaNos, keyword);
138    updateCalendarData(eventCalendarUrl);
139  }
140
141  function updateEventCalendarByParams(eventTypeNo, eventFieldNos, eventAreaNos, keyword, fromDate, toDate) {
142    var eventCalendarUrlSuffix = '';
143    if (eventTypeNo) {
144      $('#formEventSearch [name=eventTypeNo]').val(eventTypeNo);
145      onChangeEventType();
146      eventCalendarUrlSuffix += '&eventTypeNo=' + encodeURIComponent(eventTypeNo);
147    }
148    if (eventFieldNos) {
149      eventFieldNos.split(',').forEach(function(value, i, list) {
150        $('#formEventSearch input#eventFieldNoList_' + parseInt(value)).prop('checked', true);
151      });
152      eventCalendarUrlSuffix += '&eventFieldNo=' + encodeURIComponent(eventFieldNos);
153    }
154    if (eventAreaNos) {
155      eventAreaNos.split(',').forEach(function(value, i, list) {
156        $('#formEventSearch input#eventAreaNoList_' + parseInt(value)).prop('checked', true);
157      });
158      eventCalendarUrlSuffix += '&eventAreaNo=' + encodeURIComponent(eventAreaNos);
159    }
160    if (keyword) {
161      $('#formEventSearch [name=search-key-text]').val(keyword);
162      eventCalendarUrlSuffix += '&keyword=' + encodeURIComponent(keyword);
163    }
164    if (fromDate) {
165      eventCalendarUrlSuffix += '&fromDate=' + encodeURIComponent(fromDate);
166    }
167    if (toDate) {
168      eventCalendarUrlSuffix += '&toDate=' + encodeURIComponent(toDate);
169    }
170    updateCalendarData(eventCalendarUrlPrefix + eventCalendarUrlSuffix + '&timeSpanType=-1');
171  }
172
173  function saveSearchCondCookie(eventTypeNo, eventFieldNos, eventAreaNos, keyword) {
174    document.cookie = 'calendar_search_' + targetCategoryNo + '=' + eventTypeNo + '|' + eventFieldNos + '|' + eventAreaNos + '|' + encodeURIComponent(keyword) + ';max-age='
175        + MAX_SEARCH_COND_COOKIE_AGE;
176  }
177
178  function loadSearchCondCookie() {
179    var params = document.cookie.split(';');
180    for (var i = 0; i < params.length; i++) {
181      var element = params[i].split('=');
182      if (element.length >= 2) {
183        var name = decodeURIComponent(element[0].replace(/^\s+|\s+$/g, ''));
184        var value = decodeURIComponent(element[1].replace(/^\s+|\s+$/g, ''));
185        if (name == 'calendar_search_' + targetCategoryNo) {
186          var values = value.split('|');
187          if (values.length >= 4) {
188            updateEventCalendarByParams(values[0], values[1], values[2], values[3], null, null);
189          }
190          return true;
191        }
192      }
193    }
194    return false;
195  }
196  function loadDefaultCalendar(calendarDataUrl) {
197    var params = getCurrentQueryParams();
198    // var isEventSearch = params ? true : false;
199    var isEventSearch = false;
200    if (params && ('calendarType' in params)) {
201      isEventSearch = false;
202      toggleCalendar(params['calendarType']);
203    }
204
205    if (params) {
206      var eventTypeNo = null;
207      var eventFieldNos = null;
208      var eventAreaNos = null;
209      var keyword = null;
210      var fromDate = null;
211      var toDate = null;
212      if ('eventTypeNo' in params) {
213        eventTypeNo = params['eventTypeNo'];
214        isEventSearch = true;
215      }
216      if ('eventFieldNo' in params) {
217        eventFieldNos = params['eventFieldNo'];
218        isEventSearch = true;
219      }
220      if ('eventAreaNo' in params) {
221        eventAreaNos = params['eventAreaNo'];
222        isEventSearch = true;
223      }
224      if ('keyword' in params) {
225        keyword = params['keyword'];
226        isEventSearch = true;
227      }
228      if ('fromDate' in params) {
229        fromDate = encodeURIComponent(params['fromDate']);
230        isEventSearch = true;
231      }
232      if ('toDate' in params) {
233        toDate = encodeURIComponent(params['toDate']);
234        isEventSearch = true;
235      }
236    }
237    if (isEventSearch) {
238      $('#eventCalendarSearchBox').css('display', '');
239      updateEventCalendarByParams(eventTypeNo, eventFieldNos, eventAreaNos, keyword, fromDate, toDate);
240    } else {
241      $('#eventCalendarSearchBox').css('display', 'none');
242      updateCalendarData(calendarDataUrl);
243    }
244  }
245  function onChangeEventType() {
246    var val = $('#formEventSearch #formEventSearchType option:selected').val();
247    $('#formEventSearch .formEventSearchFieldList').css('display', 'none');
248    if (val) {
249      $('#formEventSearch #formEventSearchFieldList_' + val).css('display', '');
250      $('#formEventSearch .formEventFieldBox').css('display', '');
251    } else {
252      $('#formEventSearch .formEventFieldBox').css('display', 'none');
253    }
254  }
255
256  function updateCalendarData(calendarDataUrl) {
257    SmartCMSCalendarCommon.showLoadingDialog();
258    $.getJSON(calendarDataUrl, function(json) {
259      calendarData = json;
260      updateCalendar();
261      SmartCMSCalendarCommon.hideLoadingDialog();
262    });
263  }
264
265  function updateMiniCalendarData(calendarDataUrl) {
266    $.getJSON(calendarDataUrl, function(json) {
267      calendarData = json;
268      updateMiniCalendar();
269    });
270  }
271
272  function getCurrentQueryParams() {
273    var search = window.location.search;
274    if (search.length <= 1) {
275      return false;
276    }
277    var query = window.location.search.substring(1);
278    var params = query.split('&');
279    var result = new Object();
280    for (var i = 0; i < params.length; i++) {
281      var element = params[i].split('=');
282      var name = decodeURIComponent(element[0]);
283      result[name] = decodeURIComponent(element[1]);
284    }
285    return result;
286  }
287
288  function initSearchForms() {
289    var search = window.location.search;
290    if (search.length <= 1) {
291      return false;
292    }
293    var query = window.location.search.substring(1);
294    var params = query.split('&');
295    var result = new Object();
296    $('#formEventSearchType option').attr('data-show-type-option', '1');
297    for (var i = 0; i < params.length; i++) {
298      var element = params[i].split('=');
299      var name = decodeURIComponent(element[0]);
300      var value = decodeURIComponent(element[1]);
301      var values = value.split(',');
302      switch (name) {
303        case 'type-display':
304          $('#formEventSearch .formEventTypeBox').css('display', ((value == 0) ? 'none' : 'block'));
305          // fall through
306        case 'field-display':
307          $('#formEventSearch .formEventFieldBox').css('display', ((value == 0) ? 'none' : 'block'));
308          break;
309        case 'area-display':
310          $('#formEventSearch .formEventAreaBox').css('display', ((value == 0) ? 'none' : 'block'));
311          break;
312        case 'type-option-display':
313          if (values.length > 0) {
314            $('#formEventSearchType option').attr('data-show-type-option', '0');
315            $('#formEventSearchType option[value=]').attr('data-show-type-option', '1');
316            $.each(values, function(index, val) {
317              $('#formEventSearchType option[value=' + val + ']').attr('data-show-type-option', '1');
318            });
319          }
320          break;
321        case 'type-option-non-display':
322          if (values.length > 0) {
323            $.each(values, function(index, val) {
324              $('#formEventSearchType option[value=' + val + ']').attr('data-show-type-option', '0');
325            });
326          }
327          break;
328        case 'field-option-display':
329          if (values.length > 0) {
330            $('#formEventSearch .formEventSearchFieldList .eventFieldItem').hide();
331            $.each(values, function(index, val) {
332              $('#formEventSearch .formEventSearchFieldList .eventFieldItem_' + val).show();
333            });
334          }
335          break;
336        case 'field-option-non-display':
337          if (values.length > 0) {
338            $.each(values, function(index, val) {
339              $('#formEventSearch .formEventSearchFieldList .eventFieldItem_' + val).hide();
340            });
341          }
342          break;
343        case 'area-option-display':
344          if (values.length > 0) {
345            $('#formEventSearch .formEventAreaBox .eventAreaItem').hide();
346            $.each(values, function(index, val) {
347              $('#formEventSearch .formEventAreaBox .eventAreaItem_' + val).show();
348            });
349          }
350          break;
351        case 'area-option-non-display':
352          if (values.length > 0) {
353            $.each(values, function(index, val) {
354              $('#formEventSearch .formEventAreaBox .eventAreaItem_' + val).hide();
355            });
356          }
357          break;
358      }
359    }
360    $('#formEventSearchType option[data-show-type-option=0]').remove();
361    $('#formEventSearchType option').removeAttr('data-show-type-option');
362  }
363
364  function goCurrentMonth() {
365    calendarCurrentDateTime = new Date();
366  }
367
368  function goPrevMonth() {
369    var year = calendarCurrentDateTime.getFullYear();
370    var month = calendarCurrentDateTime.getMonth() + 1;
371    calendarCurrentDateTime = SmartCMSCalendarCommon.getPrevMonthDate(year, month);
372  }
373
374  function goNextMonth() {
375    var year = calendarCurrentDateTime.getFullYear();
376    var month = calendarCurrentDateTime.getMonth() + 1;
377    calendarCurrentDateTime = SmartCMSCalendarCommon.getNextMonthDate(year, month);
378  }
379
380  function toggleCalendar(mode) {
381    switch (parseInt(mode)) {
382      case SmartCMSCalendarCommon.CALENDAR_TYPE_GRID:
383        $('#calDateBlock').css('display', 'none');
384        $('#calGridBlock').css('display', 'block');
385        $('#calListBlock').css('display', 'none');
386        break;
387      case SmartCMSCalendarCommon.CALENDAR_TYPE_DATE:
388        $('#calDateBlock').css('display', 'block');
389        $('#calGridBlock').css('display', 'none');
390        $('#calListBlock').css('display', 'none');
391        break;
392      default:
393        $('#calDateBlock').css('display', 'none');
394        $('#calGridBlock').css('display', 'none');
395        $('#calListBlock').css('display', 'block');
396        break;
397    }
398    $('#calStateBlock input[name=type]:first').val(mode);
399  }
400
401  function updateCalendar() {
402    $('#calStateBlock input[name=date]:first').val(calendarCurrentDateTime.toDateString());
403    var currentYear = calendarCurrentDateTime.getFullYear();
404    var currentMonth = calendarCurrentDateTime.getMonth() + 1;
405    var currentMday = calendarCurrentDateTime.getDate();
406    var currentWday = new Date(currentYear, currentMonth - 1, currentMday).getDay();
407
408    var todayDateTime = new Date();
409    var todayYear = todayDateTime.getFullYear();
410    var todayMonth = todayDateTime.getMonth() + 1;
411    var todayMday = todayDateTime.getDate();
412
413    var yearHeisei = currentYear - 1988;
414    $('.calendarYearAD').text(currentYear);
415    $('.calendarYearJPPrefix').text(SmartCMSCalendarCommon.getJPYearPrefix(currentYear, currentMonth));
416    $('.calendarYearJP').text(SmartCMSCalendarCommon.getJPYear(currentYear, currentMonth));
417    $('.calendarMonth').text(currentMonth);
418    $('.calendarDate').text(currentMday);
419
420    $('.calGridRow').remove();
421
422    // create grid
423    var gridTable = $('#calGridTable');
424    var gridDataList = createGridDataList(currentYear, currentMonth);
425
426    var topWday = new Date(currentYear, currentMonth - 1, 1).getDay();
427    var firstGridMday = -topWday + 1;
428    var lastMday = SmartCMSCalendarCommon.getMonthLastMday(currentYear, currentMonth);
429    var lastWday = new Date(currentYear, currentMonth - 1, lastMday).getDay();
430    var lastGridMday = lastMday - lastWday + 6;
431
432    var processList = {};
433    for (var i = firstGridMday; i <= lastGridMday; i++) {
434      processList[i] = 0;
435    }
436    for (var sunMday = firstGridMday; sunMday <= lastGridMday; sunMday += 7) {
437      var headerGirdRow = $('<tr class="col-day calGridRow"><\/tr>');
438      for (var wday = 0; wday < 7; wday++) {
439        i = sunMday + wday;
440        var gridData = gridDataList[i];
441        var td = '<td';
442        if (gridData['cls']) {
443          td += ' class="' + gridData['cls'] + '"';
444        }
445        td += '>';
446        if (i <= 0) {
447          td += '<p class="prevMonthDate">';
448        } else if (i > lastMday) {
449          td += '<p class="nextMonthDate">';
450        } else {
451          td += '<p>';
452        }
453        td += gridData['mday'];
454        if (gridData['holiday']) {
455          td += ' <span class="holidayName">' + gridData['holiday'] + '<\/span>';
456        }
457        td += '<\/p><\/td>';
458        headerGirdRow.append(td);
459      }
460      gridTable.append(headerGirdRow);
461
462      while (true) {
463        var eventCount = 0;
464        var currentGirdRow = $('<tr class="col calGridRow"><\/tr>');
465        for (var wday = 0; wday < 7; wday++) {
466          i = sunMday + wday;
467          var gridData = gridDataList[i];
468          var cls = gridData['cls'] ? gridData['cls'] : '';
469
470          var eventList = gridData['events'];
471
472          var eventFound = false;
473          for (var j = processList[i]; j < eventList.length; j++) {
474            var event = eventList[j];
475            var continuous = event['continuous'];
476            var span = event['span'];
477            var stepover = (7 - wday < span);
478            if (stepover) {
479              span = 7 - wday;
480            }
481
482            if (wday == 0 || !continuous) {
483              var beginWday = wday;
484              var td = '<td';
485              if (span > 1) {
486                td += ' colspan="' + span + '"';
487                wday += span - 1;
488              }
489              td += '>';
490              var eventTag = createEventLinkTag(event, false, false);
491
492              if (beginWday == 0 && continuous) {
493                if (stepover) {
494                  eventTag = '<p class="step_over_end step_over_next ' + event['event_apply_class'] + '">' + eventTag + '<\/p>';
495                } else {
496                  eventTag = '<p class="step_over_end ' + event['event_apply_class'] + '">' + eventTag + '<\/p>';
497                }
498              } else if (stepover) {
499                eventTag = '<p class="step_over_next ' + event['event_apply_class'] + '">' + eventTag + '<\/p>';
500              } else {
501                eventTag = '<p class="' + event['event_apply_class'] + '">' + eventTag + '<\/p>';
502              }
503              currentGirdRow.append(td + eventTag + '<\/td>');
504              processList[i] = j + 1;
505              eventFound = true;
506              eventCount++;
507              break;
508            }
509          }
510          if (!eventFound) {
511            var td = '<td class="' + cls + '">';
512            currentGirdRow.append(td);
513          }
514        }
515        if (eventCount == 0) {
516          break;
517        }
518        gridTable.append(currentGirdRow);
519      }
520    }
521
522    // create list
523    $('.calListRow').remove();
524    var listTable = $('#calListTable');
525    for (var mday = 1; mday <= lastMday; mday++) {
526      var wday = new Date(currentYear, currentMonth - 1, mday).getDay();
527      var holiday = SmartCMSCalendarCommon.getHolidayName(currentYear, currentMonth, mday);
528      var dayClass = weekdayName[wday];
529      if (holiday) {
530        // dayClass = 'Holiday';
531        dayClass = 'sun';
532      } else if (todayYear == currentYear && todayMonth == currentMonth && todayMday == mday) {
533        // dayClass = 'Today';
534      }
535
536      var detail = '';
537      var eventList = getDailyEventList(currentYear, currentMonth, mday);
538      if (eventList) {
539        for (var i = 0; i < eventList.length; i++) {
540          var event = eventList[i];
541          detail += createEventLinkTag(event, true, true);
542        }
543      }
544
545      if (holiday) {
546        listTable.append('<tr class="calListRow calListWeekday ' + dayClass + '"><td id="calendar_list_' + currentYear + '_' + currentMonth + '_' + mday + '" class="date">' + mday + '<\/td><td>'
547            + weekdayJPName[wday] + '<\/td><td>' + holiday + detail + '<\/td><\/tr>');
548      } else {
549        listTable.append('<tr class="calListRow calListWeekday ' + dayClass + '"><td id="calendar_list_' + currentYear + '_' + currentMonth + '_' + mday + '" class="date">' + mday + '<\/td><td>'
550            + weekdayJPName[wday] + '<\/td><td>' + detail + '<\/td><\/tr>');
551      }
552    }
553
554    // create date : TODO デザインどうするか
555    $('.calDateRow').remove();
556    var dateTable = $('#calDateTable');
557    var detail = '';
558    var eventList = getDailyEventList(currentYear, currentMonth, currentMday);
559    if (eventList) {
560      for (var i = 0; i < eventList.length; i++) {
561        var event = eventList[i];
562        detail += createEventLinkTag(event, true, false);
563      }
564    }
565    dateTable.append('<tr class="calListRow calListWeekday"><td>' + detail + '<\/td><\/tr>');
566
567    // create event list
568    updateEventApplyListTable('ApplySoon', getEventApplyList(SmartCMSCalendarCommon.EVENT_APPLY_STATUS_FINISH_SOON));
569    updateEventApplyListTable('ApplyRecently', getEventApplyList(SmartCMSCalendarCommon.EVENT_APPLY_STATUS_FINISHED_RECENTLY));
570
571    jumpInitialHash();
572  }
573
574  function updateEventApplyListTable(tag, eventList) {
575    $('.calEvent' + tag + 'Item').remove();
576    var eventApplyList = $('#calEvent' + tag + 'List');
577    var limit = eventApplyList.attr('data-limit');
578    if (eventList && eventList.length > 0) {
579      for (var i = 0; i < eventList.length; i++) {
580        var event = eventList[i];
581        var applyEndDateString = SmartCMSCalendarCommon.convertSqlDateTimeToJpString(event.event['event_apply_end_datetime']);
582        eventApplyList.append('<li><div class="calEvent' + tag + 'Item calEvent' + tag + 'ItemHead"><a href="' + event['url'] + '">' + event['page_name'] + '<\/a><\/div>' + '<dl class="calEvent'
583            + tag + 'Item calEvent' + tag + 'ItemBody"><dt>【申し込み締切日】<\/dt><dd>' + applyEndDateString + '<\/dd><\/dl><\/li>');
584        if (limit != 0 && i >= limit - 1) {
585          break;
586        }
587      }
588      $('#calEvent' + tag + 'Block').css('display', '');
589      $('.calEvent' + tag + 'Link').css('display', '');
590    } else {
591      $('#calEvent' + tag + 'Block').css('display', 'none');
592      $('.calEvent' + tag + 'Link').css('display', 'none');
593    }
594  }
595
596  function updateMiniCalendar() {
597    $('#miniCalendarStateBlock' + miniCalendarId + ' input[name=date]:first').val(calendarCurrentDateTime.toDateString());
598    var year = calendarCurrentDateTime.getFullYear();
599    var month = calendarCurrentDateTime.getMonth() + 1;
600
601    var todayDateTime = new Date();
602    var todayYear = todayDateTime.getFullYear();
603    var todayMonth = todayDateTime.getMonth() + 1;
604    var todayMday = todayDateTime.getDate();
605
606    $('#miniCalendarTable' + miniCalendarId + ' .miniCalendarYearAD').text(year);
607    $('#miniCalendarTable' + miniCalendarId + ' .miniCalendarYearJPPrefix').text(SmartCMSCalendarCommon.getJPYearPrefix(year, month));
608    $('#miniCalendarTable' + miniCalendarId + ' .miniCalendarYearJP').text(SmartCMSCalendarCommon.getJPYear(year, month));
609    $('#miniCalendarTable' + miniCalendarId + ' .miniCalendarMonth').text(month);
610
611    $('#miniCalendarTable' + miniCalendarId + ' .miniCalGridRow').remove();
612
613    var gridTable = $('#miniCalendarTable' + miniCalendarId + ' .miniCalGridTable');
614
615    var topWday = new Date(year, month - 1, 1).getDay();
616    var firstGridMday = -topWday + 1;
617    var lastMday = SmartCMSCalendarCommon.getMonthLastMday(year, month);
618    var lastWday = new Date(year, month - 1, lastMday).getDay();
619    var lastGridMday = lastMday - lastWday + 6;
620
621    for (var sunMday = firstGridMday; sunMday <= lastGridMday; sunMday += 7) {
622      var headerGirdRow = $('<tr class="col-day miniCalGridRow"><\/tr>');
623      for (var wday = 0; wday < 7; wday++) {
624        i = sunMday + wday;
625        var datetime = new Date(year, month - 1, i);
626        var year0 = datetime.getFullYear();
627        var month0 = datetime.getMonth() + 1;
628        var mday0 = datetime.getDate();
629        var holiday = SmartCMSCalendarCommon.getHolidayName(year, month, i);
630        var td = '<td';
631        if (holiday) {
632          td += ' class="day-sun holiday"';// FIXME
633        }
634        td += '>';
635        if (i <= 0) {
636          td += '<p class="prevMonthDate">';
637        } else if (i > lastMday) {
638          td += '<p class="nextMonthDate">';
639        } else {
640          td += '<p>';
641        }
642        var eventList = getDailyEventList(year0, month0, mday0);
643        // if (eventList.length == 1) {
644        // td += '<a href="' + eventList[0]['url'] + '"><span>' + mday0 +
645        // '<\/span><\/a>';
646        // } else
647        if (eventList.length > 0) {
648          td += '<a href="' + calendarUrl + '#calendar_date_' + year0 + '_' + month0 + '_' + mday0 + '"><span>' + mday0 + '<\/span><\/a>';
649        } else {
650          td += mday0;
651        }
652        td += '<\/p><\/td>';
653        headerGirdRow.append(td);
654      }
655      gridTable.append(headerGirdRow);
656    }
657  }
658  function createGridDataList(year, month) {
659    var result = {};
660
661    var curLastMday = SmartCMSCalendarCommon.getMonthLastMday(year, month);
662    var prev = SmartCMSCalendarCommon.getPrevMonthDate(year, month);
663    var prevLastMday = SmartCMSCalendarCommon.getMonthLastMday(prev.getFullYear(), prev.getMonth() + 1);
664    var next = SmartCMSCalendarCommon.getNextMonthDate(year, month);
665    var nextLastMday = SmartCMSCalendarCommon.getMonthLastMday(next.getFullYear(), next.getMonth() + 1);
666
667    for (var i = 1; i <= prevLastMday; i++) {
668      result[i - prevLastMday] = createGridDataNode(prev.getFullYear(), prev.getMonth() + 1, i);
669    }
670
671    for (var i = 1; i <= curLastMday; i++) {
672      result[i] = createGridDataNode(year, month, i);
673    }
674
675    for (var i = 1; i <= nextLastMday; i++) {
676      result[i + curLastMday] = createGridDataNode(next.getFullYear(), next.getMonth() + 1, i);
677    }
678    return result;
679  }
680
681  function createGridDataNode(year, month, mday) {
682    var wday = new Date(year, month - 1, mday).getDay();
683    var holiday = SmartCMSCalendarCommon.getHolidayName(year, month, mday);
684    var cls = false;
685    if (holiday) {
686      cls = 'day-sun holiday'; // FIXME
687    } else if (wday == 0) {
688      cls = 'day-sun';
689    } else if (wday == 6) {
690      cls = 'day-sat';
691    }
692    return {
693      'year': year,
694      'month': month,
695      'mday': mday,
696      'events': getDailyEventList(year, month, mday),
697      'holiday': holiday,
698      'cls': cls
699    };
700  }
701
702  function createEventLinkTag(event, enableDivTag, enableTextTags) {
703    var linkTag = '<a href="' + event['url'] + '">' + event['page_name'] + '<\/a>';
704    var textIcons = '';
705    if (event.event && 'event_fields' in event.event) {
706      $.each(event.event.event_fields, function(field_no, field_name) {
707        textIcons += '<span class="event_icon event_field' + field_no + '">' + field_name + '</span>';
708      });
709    }
710    if (event.event && 'event_area' in event.event) {
711      $.each(event.event.event_area, function(area_no, area_name) {
712        textIcons += '<span class="event_icon event_area' + area_no + '">' + area_name + '</span>';
713      });
714    }
715    if (enableDivTag) {
716      if (enableTextTags && textIcons.length > 0) {
717        result = '<div class="calPageLink is-tag ' + event['event_apply_class'] + '">';
718        if (eventIconPositionIsTail) {
719          result += linkTag + textIcons;
720        } else {
721          result += textIcons + linkTag;
722        }
723        result += '<\/div>';
724      } else {
725        result = '<div class="calPageLink ' + event['event_apply_class'] + '">' + linkTag + '<\/div>';
726      }
727    } else {
728      result = linkTag;
729    }
730    return result;
731  }
732
733  function jumpInitialHash() {
734    if (initialHash) {
735      window.location.hash = "#";
736      window.location.hash = initialHash;
737      initialHash = null;
738    }
739  }
740
741  function getDailyEventList(year, month, mday) {
742    var dateString = SmartCMSCalendarCommon.createDateString(year, month, mday);
743    var result = [];
744    for (var i = 0; i < calendarData.length; i++) {
745      var event = calendarData[i];
746      for (var j = 0; j < event.date_list.length; j++) {
747        var start = event.date_list[j][0];
748        var end = event.date_list[j][1];
749        if (start <= dateString && dateString <= end) {
750          result.push(createObjectByEvent(event, (dateString != start), SmartCMSCalendarCommon.getDateDiff(dateString, end) + 1));
751          break;
752        }
753      }
754    }
755    return result;
756  }
757
758  function getEventApplyList($eventApplyStatus) {
759    var result = [];
760    for (var i = 0; i < calendarData.length; i++) {
761      var event = calendarData[i];
762      if ('event' in event && event.event != null && event.event['event_apply_status_list_display'] && event.event['event_apply_status'] == $eventApplyStatus) {
763        result.push(createObjectByEvent(event, false, 1));
764      }
765    }
766    result.sort(function(a, b) {
767      if (a.event['event_apply_end_datetime'] < b.event['event_apply_end_datetime']) {
768        return -1;
769      } else if (a.event['event_apply_end_datetime'] > b.event['event_apply_end_datetime']) {
770        return 1;
771      } else {
772        return 0;
773      }
774    });
775    return result;
776  }
777
778  function createObjectByEvent(event, continuous, span) {
779    var pageNo = event.page_no;
780    var pageName = event.page_name;
781    var pageUrl = event.url;
782    if (pageNo <= 0) {
783      pageUrl += '?ref=' + window.location.href;
784    }
785    return {
786      page_no: pageNo,
787      page_name: pageName,
788      url: pageUrl,
789      continuous: continuous,
790      span: span,
791      event: ('event' in event) ? event.event : null,
792      event_apply_class: getEventApplyClassName(event)
793    };
794  }
795
796  function getEventApplyClassName(event) {
797    var eventApplyClassName = 'event_apply_status_none';
798    if ('event' in event && event.event != null && event.event['event_apply_status_icon_display']) {
799      switch (event.event['event_apply_status']) {
800        case SmartCMSCalendarCommon.EVENT_APPLY_STATUS_UPCOMING:
801          eventApplyClassName = 'event_apply_status_upcoming';
802          break;
803        case SmartCMSCalendarCommon.EVENT_APPLY_STATUS_WANTED:
804          eventApplyClassName = 'event_apply_status_wanted';
805          break;
806        case SmartCMSCalendarCommon.EVENT_APPLY_STATUS_FINISH_SOON:
807          eventApplyClassName = 'event_apply_status_finish_soon';
808          break;
809        case SmartCMSCalendarCommon.EVENT_APPLY_STATUS_FINISHED_RECENTLY:
810          eventApplyClassName = 'event_apply_status_finished_recently';
811          break;
812        case SmartCMSCalendarCommon.EVENT_APPLY_STATUS_FINISHED:
813          eventApplyClassName = 'event_apply_status_finished';
814          break;
815      }
816      if (event.event['event_apply_status_icon_position'] == 1) {
817        eventApplyClassName += '_after';
818      } else {
819        eventApplyClassName += '_before';
820      }
821    }
822    return eventApplyClassName;
823  }
824};

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.