if (typeof (itsmo) == 'undefined') {
var itsmo = {};
}
if (typeof (itsmo.calendar) == 'undefined') {
itsmo.calendar = {};
}
$(document).ready(function() {
itsmo.calendar.createCalendar();
$('.fc-button').on('click', function () {
itsmo.calendar.checkRestDays($(this));
});
});
itsmo.calendar.checkRestDays = function (el) {
var calendarId = el.parent().parent().parent().attr('id');
var id = calendarId.substr(calendarId.length - 1, 1);
var restDaysOri = itsmo.calendar.restDaysOri[id];
if (restDaysOri == '') {
return false;
}
var restDaysOriArr = restDaysOri.split("、");
var restDaysFirstArr = restDaysOriArr[0].split("/");
var restDays = itsmo.calendar.createRestDaysArr(restDaysOriArr, restDaysFirstArr);
for(z = 0; z < restDays.length; z++) {
el.parent().parent().parent().find("td[data-date='" + restDays[z] + "']:first").append("
休
");
}
};
itsmo.calendar.createCalendar = function () {
for (i = 1; i <= itsmo.calendar.countCalendar; i++) {
var schedule = [];
var restDays = [];
var period = itsmo.calendar.period[i];
var restDaysOri = itsmo.calendar.restDaysOri[i];
var periodArr = period.split("~");
var startDayArr = periodArr[0].split("/");
var endDayArr = periodArr[1].split("/");
startDayArr[1] = ('0' + startDayArr[1]).slice(-2);
startDayArr[2] = ('0' + startDayArr[2]).slice(-2);
if (endDayArr[1] == undefined) {
endDayArr[1] = endDayArr[0];
endDayArr[0] = startDayArr[1];
}
endDayArr[0] = ('0' + endDayArr[0]).slice(-2);
endDayArr[1] = ('0' + endDayArr[1]).slice(-2);
var startDayPeriod = startDayArr[0] + '-' + startDayArr[1] + '-' + startDayArr[2];
var endDayPeriod = startDayArr[0] + '-' + endDayArr[0] + '-' + endDayArr[1];
endDayPeriod = itsmo.calendar.getNextDay(endDayPeriod);
if (restDaysOri != '') {
var restDaysOriArr = restDaysOri.split("、");
var restDaysFirstArr = restDaysOriArr[0].split("/");
//create rest days array
restDays = itsmo.calendar.createRestDaysArr(restDaysOriArr, restDaysFirstArr);
//create shedule event array
schedule = itsmo.calendar.createSheduleArr(restDays, startDayPeriod, endDayPeriod, endDayArr, restDaysFirstArr);
} else {
//create shedule event without rest days array
schedule = itsmo.calendar.createSheduleArrWithoutRestDays(startDayPeriod, endDayPeriod);
}
//create calendar
$("#calendar" + i).fullCalendar({
viewRender: function() {
if (typeof restDays != 'undefined')
{
for(z = 0; z < restDays.length; z++) {
$("#calendar" + i).find("td[data-date='" + restDays[z] + "']:first").append("休
");
}
}
},
header: {
left: '',
center: 'title',
right: ''
},
fixedWeekCount: false,
locale: 'ja',
events: schedule,
eventTextColor: '#ffffff',
eventColor: '#5b9bd5',
defaultDate: startDayPeriod,
});
}
};
itsmo.calendar.createRestDaysArr = function (restDaysOriArr, restDaysFirstArr) {
var restDays = [];
var restMonth = 0;
for (j = 0; j < restDaysOriArr.length; j++) {
if (j == 0) {
restDaysFirstArr[1] = ('0' + restDaysFirstArr[1]).slice(-2);
restDaysFirstArr[2] = ('0' + restDaysFirstArr[2]).slice(-2);
restMonth = restDaysFirstArr[1];
restDays.push(restDaysFirstArr[0] + '-' + restMonth + '-' + restDaysFirstArr[2]);
} else {
var restDay = restDaysOriArr[j].split("/");
if (restDay.length == 1) {
restDaysOriArr[j] = ('0' + restDaysOriArr[j]).slice(-2);
restDays.push(restDaysFirstArr[0] + '-' + restMonth + '-' + restDaysOriArr[j]);
} else {
restDay[1] = ('0' + restDay[1]).slice(-2);
restMonth = ('0' + restDay[0]).slice(-2);
restDaysOriArr[j] = ('0' + restDaysOriArr[restDay[1]]).slice(-2);
restDays.push(restDaysFirstArr[0] + '-' + restMonth + '-' + restDay[1]);
}
}
}
return restDays;
};
itsmo.calendar.createSheduleArr = function (restDays, startDayPeriod, endDayPeriod, endDayArr, restDaysFirstArr) {
var schedule = [];
var result;
for(k = 0; k < restDays.length; k++) {
if (k == 0) {
result = itsmo.calendar.execFirstElem(schedule, restDays, k, startDayPeriod, endDayPeriod);
if (result == 'continue') {
continue;
} else {
schedule = result;
}
}
if (k != 0 && k != restDays.length - 1) {
result = itsmo.calendar.execMiddleElem(schedule, restDays, k, endDayArr, endDayPeriod);
if (result == 'continue') {
continue;
} else if (result == 'break') {
break;
} else {
schedule = result;
}
}
if (k != 0 && k == restDays.length - 1) {
result = itsmo.calendar.execLastElem(schedule, restDays, k, endDayArr, endDayPeriod);
if (result == 'continue') {
continue;
} else if (result == 'break') {
break;
} else {
schedule = result;
}
}
}
return schedule;
};
itsmo.calendar.createSheduleArrWithoutRestDays = function (startDayPeriod, endDayPeriod) {
var schedule = [];
schedule.push({start: startDayPeriod, end: endDayPeriod});
return schedule;
};
itsmo.calendar.getNextDay = function (day) {
var dt = new Date(day);
dt.setDate(dt.getDate() + 1);
dt = dt.toISOString().substring(0, 10);
return dt;
}
itsmo.calendar.execFirstElem = function (schedule, restDays, k, startDayPeriod, endDayPeriod) {
if (restDays[k] == startDayPeriod) {
return 'continue';
}
schedule.push({start: startDayPeriod, end: restDays[k]});
if (restDays.length == 1) {
dt = itsmo.calendar.getNextDay(restDays[k]);
schedule.push({start: dt, end: endDayPeriod});
}
return schedule;
}
itsmo.calendar.execMiddleElem = function (schedule, restDays, k, endDayArr, endDayPeriod) {
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
if (parseInt(endDayArr[1]) < parseInt(restDays[k].split("-")[2]) && parseInt(endDayArr[0]) <= parseInt(restDays[k].split("-")[1])) {
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
if (dt == restDays[k]) {
return 'continue';
}
schedule.push({start: dt, end: endDayPeriod});
return 'break';
}
if (parseInt(endDayArr[1]) == parseInt(restDays[k].split("-")[2]) && parseInt(endDayArr[0]) <= parseInt(restDays[k].split("-")[1])) {
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
if (dt == restDays[k]) {
return 'continue';
}
schedule.push({start: dt, end: restDays[k]});
return 'break';
}
if (dt == restDays[k]) {
return 'continue';
}
schedule.push({start: dt, end: restDays[k]});
return schedule;
}
itsmo.calendar.execLastElem = function (schedule, restDays, k, endDayArr, endDayPeriod) {
if (parseInt(endDayArr[1]) < parseInt(restDays[k].split("-")[2]) && parseInt(endDayArr[0]) <= parseInt(restDays[k].split("-")[1])) {
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
if (dt == restDays[k]) {
return 'continue';
}
schedule.push({start: dt, end: endDayPeriod});
return 'break';
}
if (parseInt(endDayArr[1]) == parseInt(restDays[k].split("-")[2]) && parseInt(endDayArr[0]) <= parseInt(restDays[k].split("-")[1])) {
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
if (dt == restDays[k]) {
return 'continue';
}
schedule.push({start: dt, end: restDays[k]});
return 'break';
}
var dt = itsmo.calendar.getNextDay(restDays[k - 1]);
schedule.push({start: dt, end: restDays[k]});
dt = itsmo.calendar.getNextDay(restDays[k]);
if (dt == endDayPeriod) {
return 'continue';
}
schedule.push({start: dt, end: endDayPeriod});
return schedule;
}