function PickerOnSelectionChanged(picker) {
	picker.AssociatedCalendar.SetSelectedDate(picker.GetSelectedDate());
}

function CalendarOnSelectionChanged(calendar) {
	calendar.AssociatedPicker.SetSelectedDate(calendar.GetSelectedDate());
}
function ButtonOnClick(alignElement, calendar) {
	if (calendar.PopUpObjectShowing) {
		calendar.Hide();
	}
	else {
		calendar.SetSelectedDate(calendar.AssociatedPicker.GetSelectedDate());
		calendar.Show(alignElement);
	}
}

function ButtonOnMouseUp(calendar) {
	if (calendar.PopUpObjectShowing) {
		event.cancelBubble=true;
		event.returnValue=false;
		return false;
	}
	else	{
		return true;
	}
}

function singleEventToolTip(event, day, categoryName, title, time, location) {
	var content = "<div class=\'tooltipdate\'>" + day + "</div>";
	content += (categoryName != "") ? (categoryName + "<br/>") : "";
	content += title + "<br/>";
	content += (time != "") ? (time + "<br/>") : "";
	content += (location != "") ? location : "";		

	showToolTip(event, content);
}

function multipleEventToolTip(event, content) {
	showToolTip(event, content);
}

/******** TOOLTIP CODE *********/
var dw_event = 
{

	add: function(obj, etype, fp, cap)
     {
          cap = cap || false;
          if (obj.addEventListener)
               obj.addEventListener(etype, fp, cap);
          else if (obj.attachEvent)
               obj.attachEvent("on" + etype, fp);
     }
     , 

     remove: function(obj, etype, fp, cap)
     {
          cap = cap || false;
          if (obj.removeEventListener)
               obj.removeEventListener(etype, fp, cap);
          else if (obj.detachEvent)
               obj.detachEvent("on" + etype, fp);
     }
     , 

     DOMit: function(e)
     {
          e = e ? e : window.event;
          e.tgt = e.srcElement ? e.srcElement : e.target;

          if (!e.preventDefault)
          e.preventDefault = function()
          {
               return false;
          }
          if (!e.stopPropagation)
          e.stopPropagation = function()
          {
               if (window.event)
                    window.event.cancelBubble = true;
          }

          return e;
     }

}

var viewport = 
{
     getWinWidth: function()
     {
          this.width = 0;
          if (window.innerWidth)
               this.width = window.innerWidth - 18;
          else if (document.documentElement &&
               document.documentElement.clientWidth)
               this.width = document.documentElement.clientWidth;
          else if (document.body && document.body.clientWidth)
               this.width = document.body.clientWidth;
     }
     , 

     getWinHeight: function()
     {
          this.height = 0;
          if (window.innerHeight)
               this.height = window.innerHeight - 18;
          else if (document.documentElement &&
               document.documentElement.clientHeight)
               this.height = document.documentElement.clientHeight;
          else if (document.body && document.body.clientHeight)
               this.height = document.body.clientHeight;
     }
     , 

     getScrollX: function()
     {
          this.scrollX = 0;
          if (typeof window.pageXOffset == "number")
               this.scrollX = window.pageXOffset;
          else if (document.documentElement &&
               document.documentElement.scrollLeft)
               this.scrollX = document.documentElement.scrollLeft;
          else if (document.body && document.body.scrollLeft)
               this.scrollX = document.body.scrollLeft;
          else if (window.scrollX)
               this.scrollX = window.scrollX;
     }
     , 

     getScrollY: function()
     {
          this.scrollY = 0;
          if (typeof window.pageYOffset == "number")
               this.scrollY = window.pageYOffset;
          else if (document.documentElement &&
               document.documentElement.scrollTop)
               this.scrollY = document.documentElement.scrollTop;
          else if (document.body && document.body.scrollTop)
               this.scrollY = document.body.scrollTop;
          else if (window.scrollY)
               this.scrollY = window.scrollY;
     }
     , 

     getAll: function()
     {
          this.getWinWidth();
          this.getWinHeight();
          this.getScrollX();
          this.getScrollY();
     }

}


var Tooltip = 
{
     followMouse: true, offX: 8, offY: 12, tipID: "tipDiv", showDelay: 100,
          hideDelay: 200, ready: false, timer: null, tip: null, init: function()
     {
          if (document.createElement && document.body && typeof
               document.body.appendChild != "undefined")
          {
               if (!document.getElementById(this.tipID))
               {
                    var el = document.createElement("DIV");
                    el.id = this.tipID;
                    document.body.appendChild(el);
               }
               this.ready = true;
          }
     }
     , show: function(e, msg)
     {
          if (this.timer)
          {
               clearTimeout(this.timer);
               this.timer = 0;
          }
          this.tip = document.getElementById(this.tipID);
          if (this.followMouse)
               dw_event.add(document, "mousemove", this.trackMouse, true);
          this.writeTip("");
          this.writeTip(msg);
          viewport.getAll();
          this.positionTip(e);
          this.timer = setTimeout("Tooltip.toggleVis('" + this.tipID + 
               "', 'visible')", this.showDelay);
     }
     , writeTip: function(msg)
     {
          if (this.tip && typeof this.tip.innerHTML != "undefined")
               this.tip.innerHTML = msg;
     }
     , positionTip: function(e)
     {
          if (this.tip && this.tip.style)
          {
               var x = e.pageX ? e.pageX : e.clientX + viewport.scrollX;
               var y = e.pageY ? e.pageY : e.clientY + viewport.scrollY;
               if (x + this.tip.offsetWidth + this.offX > viewport.width +
                    viewport.scrollX)
               {
                    x = x - this.tip.offsetWidth - this.offX;
                    if (x < 0)
                         x = 0;
               }
               else
                    x = x + this.offX;
               if (y + this.tip.offsetHeight + this.offY > viewport.height +
                    viewport.scrollY)
               {
                    y = y - this.tip.offsetHeight - this.offY;
                    if (y < viewport.scrollY)
                         y = viewport.height + viewport.scrollY -
                              this.tip.offsetHeight;
               }
               else
                    y = y + this.offY;
               this.tip.style.left = x + "px";
               this.tip.style.top = y + "px";
          }
     }
     , hide: function()
     {
          if (this.timer)
          {
               clearTimeout(this.timer);
               this.timer = 0;
          }
          this.timer = setTimeout("Tooltip.toggleVis('" + this.tipID + 
               "', 'hidden')", this.hideDelay);
          if (this.followMouse)
               dw_event.remove(document, "mousemove", this.trackMouse, true);
          this.tip = null;
     }
     , toggleVis: function(id, vis)
     {
          var el = document.getElementById(id);
          if (el)
               el.style.visibility = vis;
     }
     , trackMouse: function(e)
     {
          e = dw_event.DOMit(e);
          Tooltip.positionTip(e);
     }
};

function showToolTip(e, msg)
{
     if (typeof Tooltip == "undefined" || !Tooltip.ready)
          return ;
     Tooltip.show(e, msg);
}

function hideToolTip()
{
     if (typeof Tooltip == "undefined" || !Tooltip.ready)
          return ;
     Tooltip.hide();
}

function init()
{
	Tooltip.offX = -24;  
	Tooltip.init();
}

window.onload = init;
