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.