var calendar = {};
calendar.zeroPad = function(n,t){
  n=n.toString();
  var p='';
  if(t>n.length)
    for(var i=0;i<(t-n.length);i++)
      p+='0';
  return p+n.toString();
}
calendar.getMonthName = function(n){
  if(n < 1 || n > 12) return null;
  return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][n-1];
}
calendar.getMonthDayCt = function(d){
  var n=new Date();
  n.setMonth(d.getMonth());
  n.setYear(d.getYear());
  n.setDate(0);
  return n.getDate();
}
calendar.updateCalendar = function(action, init){
  var $cwm = $('#cwm');
  var $cwy = $('#cwy');
  $.getJSON('jquery.calendar.php', {action: action, cwm: $cwm.val(), cwy: $cwy.val()}, function(json){
    $cwm.attr({value: json.values.cwm});
    $cwy.attr({value: json.values.cwy});
    $('#calendar span.month').text(json.title.month);
    $('#calendar span.year').text(json.title.year);
    $('#calendar tr.week').each(function(weekIndex){
      var self = this;
      $(self).empty();
      $.each(json.calendar[weekIndex], function(dayIndex, day){
	var is_event = (day.t == 'event');
	if(is_event) {
	var tmp1_event, tmp2_event, event;
	for(var x=0; x<json.events.length; ++x) {
	 tmp1_event = json.events[x];
	 if(tmp1_event.day == day.i) {
	  if(tmp1_event.special == 'Y') {
	   event = tmp1_event;
	   break;
	  }
	 }
	 else if(tmp1_event.day > day.i) {
	  event = tmp2_event;
	  break;
	 }
	 tmp2_event = tmp1_event;
	}
	if(event == null) { event = tmp2_event; }
	}
	var special = "";
	if(is_event && event.special == 'Y') {
	 special = " style='padding:3px;background-color:red;color:black;'";
	}
        var $day = $("<td><span "+special+">"+day.i+"</span></td>");

        if(day.t)
          $day.addClass(day.t);
        if(dayIndex == 6)
          $day.addClass('last-weekday');
        $day.appendTo(self);
      });
    });
  });
  if(init)
    calendar.updateEvents(new Date().getDate(), 2);
  // Google maps
  $('#calendar-events .google-map-link').livequery(function(){
    $(this).click(function(event){
      $('#calendar-ui > *').hide();
      var map_src = $(this).attr('href');
      var $map = $('#calendar-google-map');
      if($map.attr('src') == map_src)
        $map.show();
      else
        $map.attr({src: map_src}).show();
      event.stopPropagation();
      return false;
    });
  });
  // Cell highlighters
  $('#calendar td:not(.preview)').livequery(function(){
    $(this).hover(
      function(){
        if($(this).is('.event')){
          $(this).addClass('event-hover');
          $('.event-'+$(this).text()).addClass('event-hover');
        }
        else 
          $(this).addClass('hover');
      },
      function(){
        if($(this).is('.event')){
          $(this).removeClass('event-hover');
          $('.event-'+$(this).text()).removeClass('event-hover');
        }
        else
          $(this).removeClass('hover'); 
      }
    )
    .bind('click',function(){
      calendar.updateEvents($(this).text(), 2);
      return false;
    })
  });
}
calendar.updateEvents = function(cwd, range){
  if(!range) range = 0;
  var $cwm = $('#cwm');
  var $cwy = $('#cwy');
  $.getJSON('jquery.calendar.php', {action: 'get_events', cwd: cwd, range: range, cwm: $cwm.val(), cwy: $cwy.val()}, function(events){
    var $calendarEvents = $('#calendar-events');
    $calendarEvents.empty();
    if(events.length > 0)
      $.each(events, function(eventIndex, event){
        $(calendar.printEvent(event))
          .hover(
            function(){
              if(event.active)
                $(this).addClass('event-hover');
              else
                $(this).addClass('event-hover1');
            },
            function(){
              $(this).removeClass('event-hover');
              $(this).removeClass('event-hover1');
            }
          )
          .click(function(){
            if(event.active)
              document.location.href = 'book.php?eid='+event.eid;
												else {
//														document.location.href = 'event_stats.php?eid='+event.eid;
//														document.location.target = '_blank';
              window.open('event_stats.php?eid='+event.eid,'_blank');
												}
            return false;
          })
          .find('a.web')
            .click(function(event){
              event.stopPropagation();
            })
          .end()
          .appendTo($calendarEvents);
      });
    else
      $('<div>No events..</div>').appendTo($calendarEvents);
  });
}
calendar.printEvent = function(event){
  var html = '';
  var eventBorder = '';
  var promoImg = '';
  if(event.special=='Y') { eventBorder = "border:red 2px solid;padding:3px;"; }
  else { eventBorder = "border:#999999 1px solid;padding:3px;border-top:#999999 1px dotted;"; }
  if(event.promo_icon.length > 0 && (event.promo_short.length > 0 || event.promo_long.length > 0)) { promoImg = "background-image:url(images/promos/" + event.promo_icon + "-64.png);background-repeat:no-repeat;background-position:98% 50%;"; }
  html+='<div style="' + eventBorder + promoImg + '" id="event-'+event.eid+'" class="event-'+event.day+'"';
    if(event.active)
      html+=' title="Click to sign-up!"';
    else
      html+=' title="Click to view results."';
  html+='>';
  html+='<p><span class="date">'+event.date+'</span> - <span class="name">'+event.name+'</span> <span class="time">'+event.time+'</span></p>';
  if(event.comment != null) {
  html+='<p style="margin-top:5px;margin-bottom:5px;"><span style="border-bottom:1px dotted blue;border-top:1px dotted blue;font-size:12px;color:blue;">'+event.comment+'</span></p>';
  }
  html+='<p><span class="location">'+event.street+'</span><br />';
  html+='<span class="location">'+event.city+' '+event.state+' '+event.zip+'</span><br />';
  html+='<span class="location">'+event.phone+'</span>';
  if(event.promo_short.length > 0) {
    html+='<br/><div style="width:' + (promoImg == '' ? '100' : '80') + '%;font-weight:bold;text-align:center;';
    if(event.web) { html+='border-bottom:1px dotted green;'; }
    html+='border-top:1px dotted green;font-size:12px;color:green;margin-bottom:0px;margin-top:3px;margin-bottom:3px;">'+event.promo_short+'</div>';
  }
  if(event.web) {
    html+='<div style="margin:0px;font-size:0.7em;"><a class="web" href="'+event.web+'" target="_blank">'+event.web+'</a></div>'
  }
  html += '</p>';
  html+='</div>';
  return html;
}


$(document).ready(function(){
  // buttons
  $('#prev_month, #next_month').click(function(){
    $('#calendar-ui > *:not(#calendar-google-map)').remove();
    $('#calendar-google-map').attr({src: ''});
    $('#calendar-ui > *').hide();
    calendar.updateCalendar($(this).attr('id'));
    return false;
  });
  
  // init
  calendar.updateCalendar('refresh', true);
});
