var GCalHolidays = { userId: "ryokuyou.holiday@gmail.com", // userId: "ryokuyou.events%40gmail.com", maxResults: 62, eventURL: 'https://twitter.com/', apiKey: 'AIzaSyCJfsp-ooCdMwAuxZJ6HFPHjeM5msdgcUg', datepickerStyles: { "weekday": "text-align: center;", "sunday": "background-image: none;", //日曜日 "saturday": "background-image: none;", //土曜日 "holiday": "background-image: none; background-color: #f8e76d; color: #f00;" //祝日 } }; (function($){ GCalHolidays.get = function(callback, year, month, nyear, nmonth) { var y; var m; var ny; var nm; if(month){ y = year || new Date().getFullYear(); m = month; }else{ y = year - 1 || new Date().getFullYear() ; m = 12; } if(nmonth){ ny = nyear || new Date().getFullYear(); nm = nmonth; }else{ ny = nyear - 1 || new Date().getFullYear() ; nm = 12; } this._userCallback = callback; var gurl = '/ggc/ggc.php?calendar_id='+ this.userId + '&api_key=' + this.apiKey + '&year_from=' + y + '&month_from=' + m + '&year_to=' + ny + '&month_to=' + nm + '&max_results=' + this.maxResults + '&out_prm=c'; $.ajax({ url: gurl, scriptCharset: 'utf-8', cache:false, type: 'get', dataType: 'json', success: function(data, stts) { var days =[]; for(var i in data.items){ var xx = data.items[i].start.date.match(/(\d{4})\-(\d{2})\-(\d{2})/); var myyyyy = RegExp.$1; var mymm = RegExp.$2; var mydd = RegExp.$3; days[i] = { year: myyyyy * 1, month: mymm * 1, date: mydd * 1, title: data.items[i].summary }; } GCalHolidays._userCallback(days,0); }, error: function(res_error) { // alert(gurl+res_error.responseText); } }); return; }; function setLink(inst, elm, holiday, index, eventURL){ //会社休日のstyle var companyStyle = "company"; //イベントのstyle //祝日のstyle var holidayStyle = "holiday"; if ($(elm).text() == holiday.date ) { var title = $(elm).attr("title"); if(title) title = title + '/' + holiday.title; else title= holiday.title; if(index == 0){ $(elm).attr("title", title).removeClass("ui-state-highlight").addClass(holidayStyle); } else if(index == 1) { $(elm).attr("title", title).removeClass("ui-state-highlight").addClass(companyStyle); } return false; } } GCalHolidays.datepicker = function(year, month, inst) { if(!month){ year = year-1; month = 12; } var nextDate = new Date(year, month, 1); var nextYear = nextDate.getYear(); if (nextYear < 2000) { nextYear += 1900; } var nextMonth = nextDate.getMonth()+1; var firstIDName = "datetime_month_" + month; var lastIDName = "datetime_month_" + nextMonth; setTimeout(function() { //処理後に対象のdivが再構築されるケースを回避 GCalHolidays.get(function(holidays, index, eventURL) { for (var j = 0; j < holidays.length; j++) { var holiday = holidays[j]; if(year == holiday.year && month==holiday.month) { $("#" + firstIDName).find("a").each(function(e){setLink(inst, this, holiday, index, eventURL)}); } if(nextYear == holiday.year && nextMonth==holiday.month) { $("#" + lastIDName).find("a").each(function(e){setLink(inst, this, holiday, index, eventURL)}); } } }, year, month, nextYear, nextMonth); }, 1); }; if (window.$ && $.datepicker && $.datepicker.setDefaults) { $.datepicker.setDefaults({ onShow: function(year, month, inst){ var date = new Date(year, month, 1); GCalHolidays.datepicker(date.getFullYear(), date.getMonth(), inst); } }); } })(jQuery);