var DAY_TRACK = 0;
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){
  DAY_TRACK=0;
  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.daily_order==0) {
	   event = tmp1_event;
	   break;
	  }
	 }
	 else if(tmp1_event.day > day.i) {
	  event = tmp2_event;
	  break;
	 }
	 tmp2_event = tmp1_event;
	}
 var eventPerDayCount=0;
	for(var y=0; y<json.events.length; ++y) {
  if(json.events[y].day == day.i) eventPerDayCount++;
 }
	if(event == null) { event = tmp2_event; }
	}

 var today = new Date();
 var thisMonth = ((today.getMonth()+1) == $cwm.val());
 var thisYear = (today.getFullYear() == $cwy.val());
 var clazz = "";
 var cursor = "";
 var mouseOverParams = ""; // for IE
 var mouseOutParams = ""; // for IE

	if(is_event) {
  //if(event.enabled || (today.getMonth()+1 > $cwm.val())) { clazz = "e" + event.cid; }
  clazz = "e" + event.cid;
  var hbcolor = (event.hb_color.length>0?"'" + event.hb_color + "'":"null");
  var hfcolor = (event.hf_color.length>0?"'" + event.hf_color + "'":"null");
  mouseOverParams = "this," + hbcolor + "," + hfcolor;
  mouseOutParams = "this,'" + event.b_color + "','" + event.f_color + "'";
	}
 else {
  mouseOverParams = "this,null,null";
  mouseOutParams = mouseOverParams;
 }

 var dailyCounter = "<sup> |0</sup>";
 if(eventPerDayCount>0 && event.sup == 1) { dailyCounter = "<sup> |" + eventPerDayCount + "</sup>"; }

        if(day.i == DAY_TRACK+1) { 
         cursor="cursor:pointer;";
        }

        var moDay = is_event ? "<b>" + day.i + "</b>" : day.i;
        if(!(is_event || day.i==DAY_TRACK+1)) { dailyCounter = ""; }

        var $day = $("<td onmouseover=\"hover(" + mouseOverParams + ")\" onmouseout=\"hover(" + mouseOutParams + ")\" style='" + cursor + "'>" + moDay + dailyCounter + "</td>");

        if(today.getDate() == day.i && thisMonth && thisYear && is_event) { 
         $day.addClass('eToday');
        }
        if(day.i == DAY_TRACK+1) { 
         DAY_TRACK++; 
         if(!is_event) { 
          $day.addClass('no-event');
         }
         cursor="cursor:pointer;";
        }
        if(day.t) {
          $day.addClass(day.t);
          $day.addClass(clazz);
        }
        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'); 
      }
    )*/
    $(this).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 eventBorderColor = event.b_color;
  var promoImg = '';
  if(event.special!='N' && event.enabled==1 && event.badger==1) { eventBorder = "border:" + eventBorderColor + " 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+='>';
  var ev_size = '';
  
  if(event.show_field==1) {
   if(event.field_count > 0) ev_size = ", Field: <span style='color:maroon;'>" + event.field_count + "</span>";
  }

  if(event.show_reg==1) {
    var tmpDate = new Date();
    if(event.day >= tmpDate.getDate() && event.field_count == 0) ev_size = ", Registered: <span style='color:red;'>" + event.reg + "</span>";
  }
  html+='<p><span class="date">'+event.date+'</span> - <span class="name">'+event.name+'</span> <span class="time">'+event.time+'</span>' + ev_size + '</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);
});

