one problem you are facing is that the initialized events have no duration, so fullcalendar does not know if the overlapping restrictions of events and businessHours overlap when deleting. Ease of installation / completion may solve this.
$(this).data('event', { title: $.trim($(this).text()),
bonus : in the initializer set fullcalendar defaultTimedEventDuration:'01:00:00', (the duration of the default event is 2 hours) - set this value in accordance with the domain to which the application is applied.
About different times on different days; BusinessHours can be an array - (which can come from a function that returns jsonarray (since jsonArrays is fully consistent with js). See https://fullcalendar.io/docs/display/businessHours/ p>
businessHours: [ { dow: [ 1, 2, 3 ], // Monday, Tuesday, Wednesday start: '08:00', // 8am end: '18:00' // 6pm }, { dow: [ 4, 5 ], // Thursday, Friday start: '10:00', // 10am end: '16:00' // 4pm } ], eventConstraint:"businessHours",
see this script http://jsfiddle.net/htexjtg6/11/ for the fork of your code (with a working day)
source share