/* * Document : be_comp_calendar.js * Author : pixelcave * Description: Custom JS code used in Calendar Page */ var BeCompCalendar = function() { // Add new event in the event list var addEvent = function() { var eventInput = jQuery('.js-add-event'); var eventInputVal = ''; // When the add event form is submitted jQuery('.js-form-add-event').on('submit', function(){ eventInputVal = eventInput.prop('value'); // Get input value // Check if the user entered something if ( eventInputVal ) { // Add it to the events list jQuery('.js-events') .prepend('
  • ' + jQuery('
    ').text(eventInputVal).html() + '
  • '); // Clear input field eventInput.prop('value', ''); // Re-Init Events initEvents(); } return false; }); }; // Init drag and drop event functionality var initEvents = function() { jQuery('.js-events') .find('li') .each(function() { var event = jQuery(this); // create an Event Object var eventObject = { title: jQuery.trim(event.text()), color: event.css('background-color') }; // store the Event Object in the DOM element so we can get to it later jQuery(this).data('eventObject', eventObject); // make the event draggable using jQuery UI jQuery(this).draggable({ zIndex: 999, revert: true, revertDuration: 0 }); }); }; // Init FullCalendar var initCalendar = function(){ var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); jQuery('.js-calendar').fullCalendar({ firstDay: 1, editable: true, droppable: true, header: { left: 'title', right: 'prev,next today month,agendaWeek,agendaDay,listWeek' }, drop: function(date, allDay) { // this function is called when something is dropped // retrieve the dropped element's stored Event Object var originalEventObject = jQuery(this).data('eventObject'); // we need to copy it, so that multiple events don't have a reference to the same object var copiedEventObject = jQuery.extend({}, originalEventObject); // assign it the date that was reported copiedEventObject.start = date; // render the event on the calendar // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) jQuery('.js-calendar').fullCalendar('renderEvent', copiedEventObject, true); // remove the element from the "Draggable Events" list jQuery(this).remove(); }, events: [ { title: 'Gaming Day', start: new Date(y, m, 1), allDay: true, color: '#fcf7e6' }, { title: 'Skype Meeting', start: new Date(y, m, 3) }, { title: 'Project X', start: new Date(y, m, 9), end: new Date(y, m, 12), allDay: true, color: '#fae9e8' }, { title: 'Work', start: new Date(y, m, 17), end: new Date(y, m, 19), allDay: true, color: '#fae9e8' }, { id: 999, title: 'Hiking (repeated)', start: new Date(y, m, d - 1, 15, 0) }, { id: 999, title: 'Hiking (repeated)', start: new Date(y, m, d + 3, 15, 0) }, { title: 'Landing Template', start: new Date(y, m, d - 3), end: new Date(y, m, d - 3), allDay: true, color: '#fcf7e6' }, { title: 'Lunch', start: new Date(y, m, d + 7, 15, 00), color: '#ebf5df' }, { title: 'Coding', start: new Date(y, m, d, 8, 0), end: new Date(y, m, d, 14, 0), color: '#fcf7e6' }, { title: 'Trip', start: new Date(y, m, 25), end: new Date(y, m, 27), allDay: true, color: '#fcf7e6' }, { title: 'Reading', start: new Date(y, m, d + 8, 20, 0), end: new Date(y, m, d + 8, 22, 00) }, { title: 'Follow me on Twitter', start: new Date(y, m, 22), allDay: true, url: 'http://twitter.com/pixelcave' } ] }); }; return { init: function () { // Add Event functionality addEvent(); // FullCalendar, for more examples you can check out http://fullcalendar.io/ initEvents(); initCalendar(); } }; }(); // Initialize when page loads jQuery(function(){ BeCompCalendar.init(); });