Advertisement
Guest User

neutrino-calendar

a guest
Jun 17th, 2014
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function createCalendar(containerId, events) {
  2.     var container = document.querySelector(containerId);
  3.     var selectedBox = null;
  4.     var calendar = createCalendar(new Date(2014, 5, 1), 30);
  5.     fillTasks(calendar, events);
  6.     container.appendChild(calendar);
  7.  
  8.     function createCalendar(date, numDays) {
  9.         var i, day;
  10.         var dayTemplate = createDayTemplate();
  11.         var calendar = document.createElement('ul');
  12.         for (i = 1; i <= numDays; i += 1) {
  13.             day = dayTemplate.cloneNode(true);
  14.             date.setDate(i);
  15.             day.children[0].innerHTML = date.toDateString();
  16.             addEventListeners(day);
  17.             calendar.appendChild(day);
  18.         }
  19.  
  20.         calendar.style.fontFamily = 'calibri';
  21.         calendar.style.fontSize = '0.8em';
  22.         calendar.style.width = 128 * 7 + 'px';
  23.  
  24.         return calendar;
  25.     }
  26.  
  27.     function createDayTemplate() {
  28.         var day = document.createElement('li');
  29.         day.style.float = 'left';
  30.         day.style.listStyleType = 'none';
  31.         day.style.margin = '0 -1px -1px 0';
  32.         day.style.border = '1px solid black';
  33.         day.style.width = '120px';
  34.  
  35.         var dateRow = document.createElement('div');
  36.         dateRow.style.borderBottom = '1px solid black';
  37.         dateRow.style.textAlign = 'center';
  38.         dateRow.style.fontWeight = 'bold';
  39.         dateRow.style.backgroundColor = 'rgb(204, 204, 204)';
  40.  
  41.         var taskRow = document.createElement('div');
  42.         taskRow.style.padding = '3px';
  43.         taskRow.style.height = '100px';
  44.  
  45.         day.appendChild(dateRow);
  46.         day.appendChild(taskRow);
  47.  
  48.         return day;
  49.     }
  50.  
  51.     function fillTasks(calendar, events) {
  52.         events.forEach(function (event) {
  53.             var date = +event.date;
  54.             var dayBox = calendar.children[date - 1];
  55.             dayBox.children[1].innerHTML = event.hour + ' - ' + event.title;
  56.         });
  57.     }
  58.  
  59.     function addEventListeners(day) {
  60.         day.addEventListener('mouseover', function (evt) {
  61.             if (selectedBox !== this)
  62.                 this.children[0].style.backgroundColor = 'rgb(153, 153, 153)';
  63.         });
  64.         day.addEventListener('mouseout', function (evt) {
  65.             if (selectedBox !== this)
  66.                 this.children[0].style.backgroundColor = 'rgb(204, 204, 204)';
  67.         });
  68.         day.addEventListener('click', function (evt) {
  69.             if (selectedBox === this) {
  70.                 selectedBox = null;
  71.                 this.children[0].style.backgroundColor = 'rgb(153, 153, 153)';
  72.             } else {
  73.                 if (selectedBox)
  74.                     selectedBox.children[0].style.background = 'rgb(204, 204, 204)';
  75.                 this.children[0].style.backgroundColor = 'rgb(255, 255, 255)';
  76.                 selectedBox = this;
  77.             }
  78.         });
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement