
var calendarSlide = null; 

function initCalendar() {
  initSearch();
  initCarousel();
  var container = $('calendar');
  var prev = $('prevMonth');
  var next = $('nextMonth');
  if (container) {
    calendarSlide = new Fx.Slide(container, {mode: 'horizontal', duration: 300, fps: 20, onComplete: updateCalendarTable});
    if (prev) {
      prev.addEvent('click', nextPrevCalendar);
    }
    if (next) {
      next.addEvent('click', nextPrevCalendar);
    }
    initCalendarTable();
  }
  var start = $('searchEventStart');
  if (start) {
    createJsCalendar(start);
  }
  var end = $('searchEventEnd');
  if (end) {
    createJsCalendar(end);
  }
}

function initCarousel()
{
  var carousel = $('carousel');
  if (carousel) {
    new CNETcarousel(carousel, {slidesSelector: 'a', buttonsSelector: 'span', slideInterval: 5000});
  }
}

function initSearch() {
  var search = $('search');
  var input = $('searchPhrase');
  if (search && input) {
    var text = 'Hae tapahtumaa...'
    input.addEvent('focus', function(e) {
      this.addClass('focused');
      if (this.value == text) {
        this.value = '';
      }
    });
    input.addEvent('blur', function(e) {
      this.removeClass('focused');
      if (this.value.trim() == '') {
        this.value = text;
      }
    });
    input.addEvent('keyup', function(e) {
		  var event = new Event(e);
		  if (event.key == 'enter') {
		    event.stop();
		    this.form.submit();
	    }
    });
  }
}

function createJsCalendar(element)
{
  var tmp = {};
  var xPos = 0;
  var yPos = 0;
  var pos = element.getPosition();
  xPos = pos.x;
  yPos = pos.y + 20;;
  tmp[element.id] = "j.n.Y";
  var days = ['Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai'];
  var months = ['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'];
  var cal = new Calendar(tmp, {
    offset: 1, 
    days: days, 
    months: months, 
    classes: ['dashboard'],
    draggable: false,
    tweak: {x: xPos, y: yPos}
  });
}

function nextPrevCalendar(event) {
  new Event(event).stop();
  var isNext = 0;
  if (this.id.contains('next')) {
    isNext = 1;
  }
  calendarSlide.phase = 'out';
  calendarSlide.isNext = isNext;
  calendarSlide.slideOut();
  
  return;
    
  /*
  var scroll = new Fx.Scroll('calendarContainer', {
    wait: false,
    duration: 'short',
    link: 'chain'
  });
  
  var active = $E('#calendar table.active');
  if (active) {
    var toElement = null;
    if (isNext) {
      toElement = active.getNext();
    } else {
      toElement = active.getPrevious();
    }
    
    if (toElement) {
      active.removeClass('active');
      toElement.addClass('active');
      scroll.toElement(toElement);
    }
  }
  */
  return false;
}

function updateCalendarTable(el) 
{
  if (calendarSlide.phase == 'out') {
	  calendarSlide.phase = 'in';
	  var tableId = $E('#calendar table').id;
	  var yearMonth = tableId.substr(tableId.length-6);
	  
	  var myAjax = new Ajax('/kalenteri/html', {
	    method: 'get',
	    data: {'yearMonth': yearMonth, 'isNext': this.isNext},
	    update: $('calendar'),
	    onComplete: function() {
	      initCalendarTable();
	      calendarSlide.slideIn();
	    }
	  }).request();
  }
}

function initCalendarTable() {
   $('calendar').getElements('a').each(function(link) {
     link.getNext().addEvent('mouseover', function(e) {
       this.removeClass('off');
     });
     link.getNext().addEvent('mouseout', function(e) {
       this.addClass('off');
     });
     link.addEvent('mouseover', function(e) {
       this.getNext().removeClass('off');
     });
     link.addEvent('mouseout', function(e) {
         link.getNext().addClass('off');         
     });
   });
}


