var calendar = null; // remember the calendar object so that we reuse
                     // it and avoid creating another

// This function gets called when an end-user clicks on some date
function selected(cal, date) {
  cal.callCloseHandler(); 
  cal.sel.value = date; // just update the value of the input field
  cal.sel.blur();
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks the "Close" (X) button.  It just hides the calendar without
// destroying it.
function closeHandler(cal) {
  cal.hide();			// hide the calendar

  // don't check mousedown on document anymore (used to be able to hide the
  // calendar when someone clicks outside it, see the showCalendar function).
  Calendar.removeEvent(document, "mousedown", checkCalendar);
}

// This gets called when the user presses a mouse button anywhere in the
// document, if the calendar is shown.  If the click was outside the open
// calendar this function closes it.
function checkCalendar(ev) {
  var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
  for (; el != null; el = el.parentNode)
    // FIXME: allow end-user to click some link without closing the
    // calendar.  Good to see real-time stylesheet change :)
    if (el == calendar.element || el.tagName == "A") break;
  if (el == null) {
    // calls closeHandler which should hide the calendar.
    calendar.callCloseHandler(); Calendar.stopEvent(ev);
  }
}

// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id) {
  var el = document.getElementById(id);
  if (calendar != null) {
    // we already have one created, so just update it.
    calendar.hide();		// hide the existing calendar
    //calendar.parseDate(el.value); // set it to a new date
  } else {    
    var initialDate;
    if (el.value != '')
        {
            initialDate = el.value;
            var i_day = initialDate.substring(0,2);
            var i_month = initialDate.substring(3,5);
            var i_year = initialDate.substring(6);
            initialDate = i_month + '/' + i_day + '/' + i_year;
        }
        else
        {
            initialDate = null;
        }
    
    // first-time call, create the calendar
    //var cal = new Calendar(true, null, selected, closeHandler);
    var cal = new Calendar(true, initialDate, selected, closeHandler);
    calendar = cal;		// remember the calendar in the global
    cal.setRange(1900, 2070);	// min/max year allowed
    calendar.create();		// create a popup calendar
  }
  calendar.sel = el;		// inform it about the input field in use
  calendar.showAtElement(el);	// show the calendar next to the input field

  // catch mousedown on the document
  Calendar.addEvent(document, "mousedown", checkCalendar);
  return false;
}

function showNewCalendar(id, startDate) {     
    var el = document.getElementById(id); 
    var initialDate;
    if (el.value != '')
        {
            initialDate = el.value;
            var i_day = initialDate.substring(0,2);
            var i_month = initialDate.substring(3,5);
            var i_year = initialDate.substring(6);
            initialDate = i_month + '/' + i_day + '/' + i_year;
        }
        else if (startDate != null && startDate != '')
        {
            var s_day = startDate.substring(0,2);
            var s_month = startDate.substring(3,5);
            var s_year = startDate.substring(6);
            initialDate = s_month + '/' + s_day + '/' + s_year;
        }
        else
        {
            initialDate = null;
        }

    // first-time call, create the calendar
    //var cal = new Calendar(true, null, selected, closeHandler);
    var cal = new Calendar(true, initialDate, selected, closeHandler);
    calendar = cal;		// remember the calendar in the global
    cal.setRange(1900, 2070);	// min/max year allowed
    calendar.create();		// create a popup calendar

    calendar.sel = el;		// inform it about the input field in use
    calendar.showAtElement(el);	// show the calendar next to the input field

    // catch mousedown on the document
    Calendar.addEvent(document, "mousedown", checkCalendar);
    return false;
}
