text: 'use strict';
  
  /**
   * @ngdoc function
   * @name minovateApp.controller:CalendarCtrl
   * @description
   * # CalendarCtrl
   * Controller of the minovateApp
   */
  angular.module('minovateApp')
    .controller('CalendarCtrl', function ($scope,$compile,uiCalendarConfig) {
  
      var date = new Date();
      var d = date.getDate();
      var m = date.getMonth();
      var y = date.getFullYear();
  
      /* event source that pulls from google.com */
      $scope.eventSource = {
        url: 'http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic',
        className: 'gcal-event',           // an option!
        currentTimezone: 'America/Chicago' // an option!
      };
  
      /* event source that contains custom events on the scope */
      $scope.events = [
        {title: 'All Day Event',start: new Date(y, m, 1), className: ['b-l b-2x b-greensea']},
        {title: 'Long Event',start: new Date(y, m, d - 5),end: new Date(y, m, d - 2), className: ['bg-dutch']},
        {id: 999,title: 'Repeating Event',start: new Date(y, m, d - 3, 16, 0),allDay: false, className: ['b-l b-2x b-primary']},
        {id: 999,title: 'Repeating Event',start: new Date(y, m, d + 4, 16, 0),allDay: false, className: ['b-l b-2x b-primary']},
        {title: 'Birthday Party',start: new Date(y, m, d + 1, 19, 0),end: new Date(y, m, d + 1, 22, 30),allDay: false, className: ['b-l b-2x b-default']},
        {title: 'Click for Google',start: new Date(y, m, 28),end: new Date(y, m, 29),url: 'http://google.com/', className: ['b-l b-2x b-hotpink']},
        {title: 'Make cupcakes', start: new Date(y, m, 2), className: ['b-l b-2x b-info'], location:'Bratislava', info:'The best in whole world.'},
        {title: 'Call wife', start: new Date(y, m, 6),end: new Date(y, m, 7), className: ['b-l b-2x b-red'], location:'Piestany', info:'And say her hello.'}
      ];
  
      /* alert on dayClick */
      $scope.precision = 400;
      $scope.lastClickTime = 0;
      $scope.doubleClick = function( date, jsEvent, view ){
        var time = new Date().getTime();
        if(time - $scope.lastClickTime <= $scope.precision){
          $scope.events.push({
            title: 'New Event',
            start: date,
            className: ['b-l b-2x b-info']
          });
        }
        $scope.lastClickTime = time;
      };
  
      /* alert on Drop */
      $scope.alertOnDrop = function(event, delta, revertFunc, jsEvent, ui, view){
        $scope.alertMessage = ('Event Droped to make dayDelta ' + delta);
      };
  
      /* alert on Resize */
      $scope.alertOnResize = function(event, delta, revertFunc, jsEvent, ui, view){
        $scope.alertMessage = ('Event Resized to make dayDelta ' + delta);
      };
  
      $scope.overlay = angular.element('.fc-overlay');
  
      $scope.alertOnMouseOver = function( event, jsEvent, view ){
        $scope.event = event;
        $scope.overlay.removeClass('left right');
        var wrap = angular.element(jsEvent.target).closest('.fc-event');
        var cal = wrap.closest('.calendar');
        var left = wrap.offset().left - cal.offset().left;
        var right = cal.width() - (wrap.offset().left - cal.offset().left + wrap.width());
        if( right > $scope.overlay.width() ) {
          $scope.overlay.addClass('left');
        } else if ( left > $scope.overlay.width() ) {
          $scope.overlay.addClass('right');
        }
        if (wrap.find('.fc-overlay').length === 0) {
          wrap.append( $scope.overlay );
        }
      };
  
      /* config object */
      $scope.uiConfig = {
        calendar:{
          height: 450,
          editable: true,
          header:{
            left: 'prev',
            center: 'title',
            right: 'next'
          },
          dayClick: $scope.doubleClick,
          eventDrop: $scope.alertOnDrop,
          eventResize: $scope.alertOnResize,
          eventMouseover: $scope.alertOnMouseOver
        }
      };
  
      /* add custom event*/
      $scope.addEvent = function() {
        $scope.events.push({
          title: 'New Event',
          start: new Date(y, m, d),
          className: ['b-l b-2x b-info']
        });
      };
  
      /* remove event */
      $scope.remove = function(index) {
        $scope.events.splice(index,1);
      };
  
      /* Change View */
      $scope.changeView = function(view, calendar) {
        angular.element('.calendar').fullCalendar('changeView', view);
      };
  
      $scope.today = function(calendar) {
        angular.element('.calendar').fullCalendar('today');
      };
  
      /* event sources array*/
      $scope.eventSources = [$scope.events];
  
  
    });
  