//------------------------------------------------------------------------------
// A class that manages an individual day within the horizontal calendar.
dojo.require("dojo.fx");

dojo.declare("hpr.CalendarDay", null, {
    //--------------------------------------------------------------------------
    constructor: function(element) {
      this.dayElement = element;
      this.eventListElement = dojo.query(".dayEventList", this.dayElement)[0];
      this.horizontalCalendarElement = dojo.byId("horizontalCalendar");
      this.dayCoords = dojo.coords(this.dayElement);
      this.calendarCoords = dojo.coords(this.horizontalCalendarElement);

      if (this.eventListElement) {
        this._setupRollover();
      }
    },

    //--------------------------------------------------------------------------
    _setupRollover: function() {
      dojo.style(this.eventListElement, "position", "absolute");
      dojo.style(this.eventListElement, "top", this.dayCoords.h + "px");
      var halfWidth = this.calendarCoords.w/2;
      var relativeDayLeft = this.dayCoords.x - this.calendarCoords.x;
      var eventListWidth = dojo.style(this.eventListElement, "width");
      var left = 0;
      if (relativeDayLeft > halfWidth) {
        var left =  relativeDayLeft - eventListWidth + this.dayCoords.w;
        dojo.addClass(this.eventListElement, "dropLeft");
      } else {
        dojo.addClass(this.eventListElement, "dropRight");
        var left = relativeDayLeft;
      }
      dojo.style(this.eventListElement, "left", left + "px");

      dojo.query(".day", this.dayElement).hover(
            dojo.hitch(this, this._rollOver),
            dojo.hitch(this, this._rollOut)
        );
    },

    //--------------------------------------------------------------------------
    _rollOver: function (e) {
      dojo.removeClass(this.dayElement, "rollOut");
      dojo.addClass(this.dayElement, "rollOver");
    },

    //--------------------------------------------------------------------------
    _rollOut: function (e) {
      dojo.removeClass(this.dayElement, "rollOver");
      dojo.addClass(this.dayElement, "rollOut");
    },

    _forIE: "No Trailing Commas"
});
