
var calendar = $('events-calendar');

if(calendar != null){

  var is_full_calendar = calendar.hasClassName('full');

  function event_cell_over(event){
    var caller = event.element();
    var event_data = events[caller.id.replace(/-/g, '_')];
    event_popup_open = true;

    var popup = $('events-module-popup');
    if(popup != null){
      popup.remove();
    }

    var events_popup_html = '<div id="events-module-popup" class="events-module-popup"><ul>';
    event_data.each(function(_event){
      events_popup_html += '<li><a href="' + root_path + 'events/show/' + _event.alias + '">' + _event.title + '</a></li>';
    });
    events_popup_html += '</ul><b></b></div>';
    
    $(document.body).insert({bottom: events_popup_html});
    popup = $('events-module-popup');
    popup.setOpacity(0);
    new Effect.Appear(popup, {duration: 0.3});
    popup.clonePosition(caller, {setWidth: false, setHeight: false, offsetTop: 16, offsetLeft: 16});

    
    if(calendar.up('#right-sidebar') != null){//popup.positionedOffset().left + popup.getWidth() > calendar.positionedOffset().left + calendar.getWidth()){
      popup.addClassName('events-module-popup-right');
      popup.setStyle({left: (popup.positionedOffset().left - 215) + 'px'});
    }	

    popup.observe('mouseover', event_popup_over);
    popup.observe('mouseout', event_popup_out);

  }

  function event_link_over(event){
    var caller = event.element();
    var event_data = events[caller.up('td').id.replace(/-/g, '_')]['event_' + caller.id.split('-')[1]];

    event_popup_open = true;

    var popup = $('events-module-popup');
    if(popup != null){
      popup.remove();
    }

    var events_popup_html = '<div id="events-module-popup" class="events-module-popup-full">';
    events_popup_html += '<h3>' + stripslashes(event_data.title) + '</h3>';
    events_popup_html += '<div class="loading">Loading...</div>';
    events_popup_html += '<b></b></div>';
    $(document.body).insert({bottom: events_popup_html});
    popup = $('events-module-popup');
    popup.setOpacity(0);
    new Effect.Appear(popup, {duration: 0.3});
    popup.clonePosition(caller, {setWidth: false, setHeight: false, offsetTop: 24, offsetLeft: 0});

    if(popup.positionedOffset().left + popup.getWidth() > calendar.positionedOffset().left + calendar.getWidth()){
      popup.addClassName('events-module-popup-full-right');
      popup.setStyle({left: (popup.positionedOffset().left - 255 - 102) + 'px'});
    }

    popup.observe('mouseover', event_popup_over);
    popup.observe('mouseout', event_popup_out);

    load_event_data(event_data.id);

  }

  var event_popup_open = false;
  
  function event_link_out(event){
    event_popup_open = false;
    setTimeout(hide_event_popup, 100);
  }

  function event_cell_out(event){
    event_popup_open = false;
    setTimeout(hide_event_popup, 100);
  }

  function event_popup_over(event){
    event_popup_open = true;
  }

  function event_popup_out(event){
    event_popup_open = false;
    setTimeout(hide_event_popup, 100);
  }

  function remove_event_popup(){
    if(!event_popup_open){
      var popup = $('events-module-popup');
      if(popup != null){
	popup.remove();
      }
    }
  }

  function hide_event_popup(){
    if(!event_popup_open){
      var popup = $('events-module-popup');
      if(popup != null){
        new Effect.Fade(popup, {duration: 0.25});
        setTimeout(remove_event_popup, 100);
      }
    }
  }

  if(is_full_calendar){
    var calendar_event_links = calendar.select('tbody td.has-events li a');
    calendar_event_links.each(function(event_link){
      event_link.observe('mouseover', event_link_over);
      event_link.observe('mouseout', event_link_out);
    });
  }else{
    var calendar_cells = calendar.select('tbody td.has-events');
    calendar_cells.each(function(cell){
      cell.observe('mouseover', event_cell_over);
      cell.observe('mouseout', event_cell_out);
    });
  }

  // Setup months dropdown
/*
	if(is_full_calendar){
    var dropdown = $$('#events-nav .dropdown')[0];
    dropdown.insert({before: '<div id="events-nav-dropdown-arrow"></div>'});
    dropdown.insert({bottom: '<b id="events-nav-dropdown-arrow-open"></b>'});
    $('events-nav-dropdown-arrow').observe('click', function(event){
      dropdown.absolutize();
      dropdown.clonePosition(event.element(), {setWidth: false, setHeight: false, offsetLeft: -97, offsetTop: 16});
      new Effect.Appear(dropdown, {duration: 0.2});
    });
    var dropdown_open_arrow = $('events-nav-dropdown-arrow-open');
    $('events-nav-dropdown-arrow-open').observe('click', function(event){
      new Effect.Fade(dropdown, {duration: 0.2});
    });
  }
*/

}

var event_details;
var events_details = {};
function load_event_data(event_id){

  if(events_details['event-' + event_id] != null){
    show_event_details(events_details['event-' + event_id]);
  }else{
    new Ajax.Request('events/show/' + event_id + '.js', {
      method: 'get',
      onComplete: function(transport) {
        eval(transport.responseText);
	show_event_details(event_details);
	events_details['event-' + event_id] = event_details;
      }
    });
  }
}

function show_event_details(details){
    var popup = $('events-module-popup');
    popup.select('.loading')[0].remove();
    popup.insert({bottom: '<p class="date"><strong>'+details.date+'</strong></p>'});
    popup.insert({bottom: '<p class="location"><strong>'+details.location+'</strong></p>'});
    popup.insert({bottom: '<p class="summary">'+details.summary+'</p>'});
}


function addslashes(str){
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	return str;
}
function stripslashes(str){
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}


