var g_oTargetInput;

var Calendar = {
    startDate: null,
    selectedDate: null,
    month: null,
    year: null,
    load: function (oSourceElement) {
        g_oTargetInput = oSourceElement;

        var oContainer = $("#calendarContainer");
        oContainer.css("position", "absolute");

        if (oContainer.css("display") == "none" || oContainer.css("display") == null) {
            oContainer.css("top", ($(oSourceElement).offset().top) + "px");
            AjaxCommands.submitJson({ StartDate: Calendar.startDate }, "Calendar", "Index", "calendarContainer");
        }
    }
};

function handleDateClick(oSource)
{
    deselectCells();
    selectCell(oSource);
    $(document).trigger("date-selected");
  }

function handleMonthYearChange() {
  Calendar.month = $("#selMonths option:selected").val();
  Calendar.year = $("#selYears option:selected").val();
  AjaxCommands.submitJson({ Month: Calendar.month, Year: Calendar.year }, "Calendar", "Index", "calendarContainer");
}

function selectCell(oSource)
{
  if (oSource == null) return;
    
  oSource.className = "dateSelected";

  var sDate = oSource.id.replace("dateControl", "");
  setSelectedDate(sDate);
  $("#calendarContainer").hide();
}

function setSelectedDate(sDate)
{
  Calendar.startDate = formatFriendlyDate(sDate);
  Calendar.selectedDate = formatServerDate(sDate);
  $(g_oTargetInput).html(formatFriendlyDate(sDate));
}

function setSelectedFriendlyDate(sDate)
{
    deselectCells();
    selectCell(document.getElementById("dateControl" + formatServerDate(sDate)));
    setSelectedDate(formatServerDate(sDate));
}

function formatServerDate(sDate)
{
  var saDateParts = sDate.split("/");
  if (saDateParts.length > 1) {
    return formatDatePart(saDateParts[2]) + formatDatePart(saDateParts[0]) +
        formatDatePart(saDateParts[1]);
  }
  return sDate;
}

function formatDatePart(sDatePart)
{
    if (sDatePart.length == 1)
        return "0" + sDatePart;
    return sDatePart;
}

function formatFriendlyDate(sDate) {
  if (sDate.indexOf("/") == -1) {
    return sDate.substr(4, 2) + "/" + sDate.substr(6, 2) + "/" + sDate.substr(0, 4);
  }

  return sDate;
}

function deselectCells()
{
    var oCell = getSelectedCell();
    if (oCell != null) oCell.className = "date";
}

function getSelectedCell()
{
    return document.getElementById("dateControl" + Calendar.startDate);
}

function isCellSelected(oSource)
{
    return (oSource == getSelectedCell());
}


