Object.extend(Date.prototype, {
  strftime: function(format) {
    var day = this.getUTCDay(), month = this.getUTCMonth();
    var hours = this.getUTCHours(), minutes = this.getUTCMinutes();
    function pad(num) { return num.toPaddedString(2); };

    return format.gsub(/\%([aAbBcdDHiImMpSwyY])/, function(part) {
      switch(part[1]) {
        case 'a': return $w("Sun Mon Tue Wed Thu Fri Sat")[day]; break;
        case 'A': return $w("Sunday Monday Tuesday Wednesday Thursday Friday Saturday")[day]; break;
        case 'b': return $w("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")[month]; break;
        case 'B': return $w("January February March April May June July August September October November December")[month]; break;
        case 'c': return this.toString(); break;
        case 'd': return this.getUTCDate(); break;
        case 'D': return pad(this.getUTCDate()); break;
        case 'H': return pad(hours); break;
        case 'i': return (hours === 12 || hours === 0) ? 12 : (hours + 12) % 12; break;
        case 'I': return pad((hours === 12 || hours === 0) ? 12 : (hours + 12) % 12); break;
        case 'm': return pad(month + 1); break;
        case 'M': return pad(minutes); break;
        case 'p': return hours > 11 ? 'PM' : 'AM'; break;
        case 'S': return pad(this.getUTCSeconds()); break;
        case 'w': return day; break;
        case 'y': return pad(this.getUTCFullYear() % 100); break;
        case 'Y': return this.getUTCFullYear().toString(); break;
      }
    }.bind(this));
  }
});

document.observe('dom:loaded', function(){
  $$('a.popup').each(function(element){
    element.observe('click', function(e) {
      e.stop();
    })
    var date = new Date();
    var event_date = element.href.toQueryParams().date.split('-')
    date.setUTCFullYear(event_date[0]);
    date.setUTCMonth(parseInt(event_date[1], 10) - 1);
    date.setUTCDate(event_date[2]);
    var desc = element.up().next().cloneNode(true).show();
    new Tip(element, desc, {
      className: 'silver',
      // hideOn: 'closeButton',
      // closeButton: true,
      offset: {x:16, y:10},
      // hook: {target: 'bottomMiddle', tip: 'topMiddle'},
      // showOn: 'click',
      hideAfter: 0.5,
      hideOn: false,
      title: date.strftime('%b %d') + element.innerHTML
    });
  });
});