;(function($){var onFrontEndCalendarBubbleClick=function(event){event.stopPropagation();};var onFrontEndCalendarOccurrenceClick=function(event,mouseEvent,occurrence){mouseEvent.preventDefault();var header=$.htmlEncode(occurrence.event.summary);var body='';body+='<ul class="calendar-occurrence-info">';body+='<li class="calendar-occurrence-info-start"><strong>'+$.htmlEncode(iwp.lang.get('module_calendar_Starts'))+':</strong> <span>'+$.date('D, M j, h:ia',occurrence.start)+'</span></li>';body+='<li class="calendar-occurrence-info-end"><strong>'+$.htmlEncode(iwp.lang.get('module_calendar_Ends'))+':</strong> <span>'+$.date('D, M j, h:ia',occurrence.end)+'</span></li>';if(occurrence.event.location){body+='<li class="calendar-occurrence-info-location"><strong>'+$.htmlEncode(iwp.lang.get('module_calendar_Location'))+':</strong> <span>'+$.htmlEncode(occurrence.event.location)+'</span></li>';}
body+='</ul>';if(occurrence.event.description){body+='<div class="calendar-occurrence-description">'+occurrence.event.description+'</div>';}
var bubble=$.calendarBubbleShow({x:mouseEvent.pageX,y:mouseEvent.pageY},header,body);$(bubble).click(onFrontEndCalendarBubbleClick);};var onFrontEndCalendarMoreEventsClick=function(event,mouseEvent,date){onFrontEndCalendarRangeSelect.apply(this,[event,mouseEvent,{first:date,last:date}]);};var onFrontEndCalendarRangeSelect=function(event,mouseEvent,range){var first;if(typeof range.first=='string'){first=IWP_Module_Calendar.parseJSONDate(range.first);}else{first=range.first.copy();}
first.setMidnight();var found=false;var calendar,i,j;for(i=IWP_Module_Calendar.instances.list.length;i--;){calendar=IWP_Module_Calendar.instances.list[i];if($.inArray('day',calendar.availableViews)>=0){calendar.showView('Day');calendar.setDate(first);found=true;continue;}
if($.inArray('week',calendar.availableViews)>=0){calendar.showView('Week');calendar.setDate(first);found=true;continue;}}
if(found){return;}
calendar=this;var last=first.copy();last.addDate(1);var occurrences=calendar.getOccurrences(first,last);if(occurrences.length===1){onFrontEndCalendarOccurrenceClick(event,mouseEvent,occurrences[0]);return;}
var header=$.htmlEncode($.date('D, M j, Y',first));var body='';body+='<div class="agendadialog">';if(occurrences.length){if(occurrences.length>1){body+='<div>'+$.htmlEncode(iwp.lang.get('module_calendar_Thereareeventsscheduledtoday')).replace(/%%events%%/,'<strong>'+occurrences.length+'</strong>')+'</div>';}
body+='<ol>';var occurrence;for(i=0;i<occurrences.length;i++){occurrence=occurrences[i]
body+='<li>';body+=$.htmlEncode(occurrence.event.summary);if(occurrence.event.allDay){body+=' <em>('+$.htmlEncode(iwp.lang.get('module_calendar_alldayevent'))+')</em>';}else{body+=' <em>('+($.date('g:ia',occurrence.start).replace(/(\:00|am)/g,'')+' - '+$.date('g:ia',occurrence.end).replace(/(\:00)/g,''))+')</em>';}
body+='</li>';}
body+='</ol>';}else{body+='<div>'+$.htmlEncode(iwp.lang.get('module_calendar_Therearenoevents'))+'</div>';}
body+='</div>';var bubble=$.calendarBubbleShow({x:mouseEvent.pageX,y:mouseEvent.pageY},header,body);$(bubble).click(onFrontEndCalendarBubbleClick);};var onFrontEndCalendarDateChange=function(event,oldDate,silent){var range=this.getCurrentView().getViewDateRange();var instance,instanceIsCompact;for(var i=IWP_Module_Calendar.instances.list.length;i--;){instance=IWP_Module_Calendar.instances.list[i];if(instance===this){continue;}
if(silent){continue;}
instanceIsCompact=(instance.getCurrentView().constructor===IWP_Module_Calendar.viewClasses.Tinymonth);instance.setDate(this.getDate(),true);if(instanceIsCompact){instance.getCurrentView().setHighlightRange(range.first,range.last);}}};var onFrontEndCalendarViewChange=function(event,currentView){var range=currentView.getViewDateRange();var instance;for(var i=IWP_Module_Calendar.instances.list.length;i--;){instance=IWP_Module_Calendar.instances.list[i];if(instance===this){continue;}
instanceIsCompact=(instance.getCurrentView().constructor===IWP_Module_Calendar.viewClasses.Tinymonth);if(instanceIsCompact){instance.getCurrentView().setHighlightRange(range.first,range.last);}}};var onFrontEndCalendarDateNavigatorClick=function(event,clickEvent,currentView){var calendar=this;var instance;for(var i=IWP_Module_Calendar.instances.list.length;i--;){instance=IWP_Module_Calendar.instances.list[i];instanceIsCompact=(instance.getCurrentView().constructor===IWP_Module_Calendar.viewClasses.Tinymonth);if(instance===this){continue;}
instance.setDate(calendar.getDate());if($.inArray('month',instance.availableViews)>=0){instance.showView('Month');}}};var processNewFrontEndCalendarInstance=function(calendar){var view=calendar.getCurrentView();if(view===null){return;}
var isCompact=(view.constructor===IWP_Module_Calendar.viewClasses.Tinymonth);if(isCompact){$(calendar)
.bind('rangeselect',onFrontEndCalendarRangeSelect)
.bind('occurrenceclick',onFrontEndCalendarOccurrenceClick)
.bind('datenavigatorclick',onFrontEndCalendarDateNavigatorClick);var instance,found=false;for(var i=IWP_Module_Calendar.instances.list.length;i--;){instance=IWP_Module_Calendar.instances.list[i];if(instance===calendar||instance.getCurrentView().constructor===IWP_Module_Calendar.viewClasses.Tinymonth){continue;}
found=true;var range=instance.getCurrentView().getViewDateRange();view.setHighlightRange(range.first,range.last);break;}
for(var i=IWP_Module_Calendar.instances.list.length;i--;){instance=IWP_Module_Calendar.instances.list[i];if(instance.getCurrentView().constructor!==IWP_Module_Calendar.viewClasses.Tinymonth){continue;}
instance.getCurrentView().clickableMonthNavigator(found);}}else{$(calendar)
.bind('datechange',onFrontEndCalendarDateChange)
.bind('viewchange',onFrontEndCalendarViewChange)
.bind('occurrenceclick',onFrontEndCalendarOccurrenceClick)
.bind('moreeventsclick',onFrontEndCalendarMoreEventsClick)
.trigger('viewchange',view);}};var onNewFrontendCalendarInstance=function(event,calendar){processNewFrontEndCalendarInstance(calendar);};for(var i=IWP_Module_Calendar.instances.list.length;i--;){processNewFrontEndCalendarInstance(IWP_Module_Calendar.instances.list[i]);};$(IWP_Module_Calendar.instances).bind('newinstance',onNewFrontendCalendarInstance);})(jQuery);