var holidays = jQuery.parseJSON('{"closed":[0,6],"days":{"2014-01-01":"1","2014-01-13":"1","2014-02-11":"1","2014-03-21":"1","2014-04-29":"1","2014-05-03":"1","2014-05-04":"1","2014-05-05":"1","2014-05-06":"1","2014-07-21":"1","2014-09-15":"1","2014-09-23":"1","2014-10-13":"1","2014-11-03":"1","2014-11-23":"1","2014-11-24":"1","2014-12-23":"1","2015-01-01":"1","2015-01-02":"1","2015-01-03":"1","2015-01-12":"1","2015-02-11":"1","2015-03-21":"1","2015-04-29":"1","2015-05-03":"1","2015-05-04":"1","2015-05-05":"1","2015-05-06":"1","2015-07-20":"1","2015-09-21":"1","2015-09-22":"1","2015-09-23":"1","2015-10-12":"1","2015-11-03":"1","2015-11-23":"1","2015-12-23":"1","2015-12-31":"1","2016-01-01":"1","2016-01-02":"1","2016-01-11":"1","2016-02-11":"1","2016-03-20":"1","2016-03-21":"1","2016-04-29":"1","2016-05-03":"1","2016-05-04":"1","2016-05-05":"1","2016-07-18":"1","2016-08-11":"1","2016-09-19":"1","2016-09-22":"1","2016-10-10":"1","2016-11-03":"1","2016-11-23":"1","2016-12-23":"1","2016-12-31":"1","2017-01-01":"1","2017-01-02":"1","2017-01-09":"1","2017-02-11":"1","2017-03-20":"1","2017-04-29":"1","2017-05-03":"1","2017-05-04":"1","2017-05-05":"1","2017-07-17":"1","2017-08-11":"1","2017-09-18":"1","2017-09-23":"1","2017-10-09":"1","2017-11-03":"1","2017-11-23":"1","2017-12-23":"1","2018-01-01":"1","2018-01-02":"1","2018-01-03":"1","2018-01-08":"1","2018-02-11":"1","2018-02-12":"1","2018-03-21":"1","2018-04-29":"1","2018-04-30":"1","2018-05-01":"1","2018-05-02":"1","2018-05-03":"1","2018-05-04":"1","2018-05-05":"1","2018-07-16":"1","2018-08-11":"1","2018-09-17":"1","2018-09-23":"1","2018-09-24":"1","2018-10-08":"1","2018-11-03":"1","2018-11-23":"1","2018-12-23":"1","2018-12-24":"1","2018-12-31":"1","2019-01-01":"1","2019-01-02":"1","2019-01-03":"1","2019-01-04":"1","2019-01-14":"1","2019-02-11":"1","2019-03-21":"1","2019-04-29":"1","2019-04-30":"1","2019-05-01":"1","2019-05-02":"1","2019-05-03":"1","2019-05-04":"1","2019-05-05":"1","2019-05-06":"1","2019-07-15":"1","2019-08-11":"1","2019-08-12":"1","2019-09-16":"1","2019-09-23":"1","2019-10-14":"1","2019-10-22":"1","2019-11-03":"1","2019-11-04":"1","2019-11-23":"1","2019-12-31":"1","2020-01-01":"1","2020-01-02":"1","2020-01-03":"1","2020-01-13":"1","2020-02-11":"1","2020-02-23":"1","2020-02-24":"1","2020-03-20":"1","2020-04-29":"1","2020-05-03":"1","2020-05-04":"1","2020-05-05":"1","2020-05-06":"1","2020-07-23":"1","2020-07-24":"1","2020-08-10":"1","2020-09-21":"1","2020-09-22":"1","2020-11-03":"1","2020-11-23":"1","2020-12-31":"1","2021-01-01":"1","2021-01-11":"1","2021-02-11":"1","2021-02-23":"1","2021-03-20":"1","2021-04-29":"1","2021-05-03":"1","2021-05-04":"1","2021-05-05":"1","2021-07-22":"1","2021-07-23":"1","2021-08-08":"1","2021-08-09":"1","2021-09-20":"1","2021-09-23":"1","2021-11-03":"1","2021-11-23":"1","2021-12-31":"1","2022-01-01":"1","2022-01-03":"1","2022-01-10":"1","2022-02-11":"1","2022-02-23":"1","2022-03-21":"1","2022-04-29":"1","2022-05-03":"1","2022-05-04":"1","2022-05-05":"1","2022-07-18":"1","2022-08-11":"1","2022-09-19":"1","2022-09-23":"1","2022-10-10":"1","2022-11-03":"1","2022-11-23":"1","2023-01-01":"1","2023-01-02":"1","2023-01-03":"1","2023-01-09":"1","2023-02-11":"1","2023-02-23":"1","2023-03-21":"1","2023-04-29":"1","2023-05-03":"1","2023-05-04":"1","2023-05-05":"1","2023-07-17":"1","2023-08-11":"1","2023-09-18":"1","2023-09-23":"1","2023-10-09":"1","2023-11-03":"1","2023-11-23":"1","2024-01-01":"1","2024-01-08":"1","2024-02-11":"1","2024-02-12":"1","2024-02-23":"1","2024-03-20":"1","2024-04-29":"1","2024-05-03":"1","2024-05-04":"1","2024-05-05":"1","2024-05-06":"1","2024-07-15":"1","2024-08-11":"1","2024-08-12":"1","2024-09-16":"1","2024-09-22":"1","2024-09-23":"1","2024-10-14":"1","2024-11-03":"1","2024-11-04":"1","2024-11-23":"1","2025-01-01":"1","2025-01-13":"1","2025-02-11":"1","2025-02-23":"1","2025-02-24":"1","2025-03-20":"1","2025-04-29":"1","2025-05-03":"1","2025-05-04":"1","2025-05-05":"1","2025-05-06":"1","2025-07-21":"1","2025-08-11":"1","2025-09-15":"1","2025-09-23":"1","2025-10-13":"1","2025-11-03":"1","2025-11-23":"1","2025-11-24":"1"}}');
$(function() {
/* DatePicker入力補完 */
$(document).on('blur', '.input-group.date>input[type="text"]', function(event){
if ($(this).val() != '') {
$(this).val(formatDateStr($(this).val()));
}
});
});
/* Datepicker初期化 */
function initDatePicker(objs, option) {
var pickerOpt = {dateFormat: "yy-mm-dd", constrainInput: false, showOn: "button", beforeShowDay: function(day) {return setHolidays(day, holidays);}};
for(var key in option){
pickerOpt[key] = option[key];
}
jQuery.each(objs, function(index, obj) {
var targetObj = $(obj).find('input[type="text"]');
if (targetObj) {
targetObj.datepicker(pickerOpt);
$(obj).find('button.ui-datepicker-trigger').text('');
$(obj).find('button.ui-datepicker-trigger').wrap('');
$(obj).find('button.ui-datepicker-trigger').html('');
$(obj).find('button.ui-datepicker-trigger').addClass('btn').addClass('btn-default');
}
});
}
/* 日付フォーマット化 */
function formatDateStr(str) {
var tempStr = jQuery.trim(str);
var retStr = str;
// 半角化(文字コードをシフト)
tempStr = formatHalfAlnum(tempStr);
tempStr = tempStr.replace(new RegExp("\/", 'g'), "\-");
tempStr = tempStr.split('.').join('-');
var tempArr = tempStr.split('-');
var itemNum = tempArr.length;
var tempYear, tempMonth, tempDay;
if (itemNum >= 2 && itemNum <= 3 && !isNaN(tempArr[0]) && !isNaN(tempArr[1])) {
if (itemNum == 2 || !isNaN(tempArr[2])) {
var arrDate = [];
try {
if (itemNum == 3) {
tempMonth = parseInt(tempArr[1], 10)-1;
tempDay = parseInt(tempArr[2], 10);
tempYear = parseInt(tempArr[0], 10);
if (tempYear >= 0 && tempYear < 100) {
tempYear = tempYear + 2000; // 年を4桁化
}
} else {
// 年がない場合は今年で補完
tempMonth = parseInt(tempArr[0], 10)-1;
tempDay = parseInt(tempArr[1], 10);
var tempDate = new Date();
tempYear = tempDate.getFullYear();
}
var date = new Date(tempYear, tempMonth, tempDay);
arrDate[0] = date.getFullYear();
arrDate[1] = date.getMonth() + 1;
arrDate[2] = date.getDate();
if (!isNaN(arrDate[1]) && !isNaN(arrDate[2])) {
arrDate[1] = ('0' + arrDate[1]).slice(-2);
arrDate[2] = ('0' + arrDate[2]).slice(-2);
if (itemNum == 2) {
var nowDate = new Date();
arrDate[0] = nowDate.getFullYear();
}
retStr = arrDate.join('-');
}
} catch (e) {
}
}
}
return retStr;
}
/* カレンダーの休日設定 */
function setHolidays(day, holidays) {
var holiday = holidays.days[jQuery.datepicker.formatDate("yy-mm-dd", day)];
var className = "";
if (holiday) {
className = "date-closed";
} else {
var wday = day.getDay();
jQuery.each(holidays.closed, function(index, elem) {
if (elem == wday) {
className = "date-closed";
return false;
}
});
result = [true, className];
}
return [true, className];
}
/* 日付のバリデーション(整形後) */
function isValidDate(strDate) {
var tempArr = strDate.split('-');
if (tempArr.length != 3) return false;
var arrDate = [];
try {
var tempDate = new Date(tempArr.join('/'));
arrDate[0] = tempDate.getFullYear();
arrDate[1] = tempDate.getMonth() + 1;
arrDate[2] = tempDate.getDate();
if (isNaN(arrDate[0]) || isNaN(arrDate[1]) || isNaN(arrDate[2])) return false;
arrDate[1] = ('0' + arrDate[1]).slice(-2);
arrDate[2] = ('0' + arrDate[2]).slice(-2);
if (tempArr[0] != arrDate[0] || tempArr[1] != arrDate[1] || tempArr[2] != arrDate[2]) return false;
} catch (e) {
return false;
}
return true;
}