var _dynarch_popupCalendar;
var m_blnOption;

function selected(cal, date) {
	var l_blnFound;

  //cal.sel.value = date; // just update the date in the input field.
  if(m_blnOption)
  {
  l_blnFound = false;
  for(l_intIndex = 0; l_intIndex < cal.sel.options.length; l_intIndex++)
		if(cal.sel.options[l_intIndex].value == date)
		{
			cal.sel.selectedIndex = l_intIndex;
			l_blnFound = true;
			break;
		}
	if(!l_blnFound)
		cal.sel.selectedIndex = 0;
  }
  else
  {
		cal.sel.value = date;
  }
  
  if (cal.dateClicked && (cal.sel.id == "From"))
    // if we add this call we close the calendar on single-click.
    // just to exemplify both cases, we are using this only for the 1st
    // and the 3rd field, while 2nd and 4th will still require double-click.
    cal.callCloseHandler();
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button.  It just hides the calendar without
// destroying it.
function closeHandler(cal) {
  cal.hide();                        // hide the calendar
//  cal.destroy();
  _dynarch_popupCalendar = null;
}

function showCalendar(id, format, showsTime, showsOtherMonths, option, past) {
  var el = document.getElementById(id);
  if (_dynarch_popupCalendar != null) {
    // we already have some calendar created
    _dynarch_popupCalendar.hide();                 // so we hide it first.
  } else {
    // first-time call, create the calendar.
    var cal = new Calendar(1, null, selected, closeHandler);
    // uncomment the following line to hide the week numbers
    // cal.weekNumbers = false;
    if (typeof showsTime == "string") {
      cal.showsTime = true;
      cal.time24 = (showsTime == "24");
    }
    if (showsOtherMonths) {
      cal.showsOtherMonths = true;
    }
    _dynarch_popupCalendar = cal;                  // remember it in the global var
    if(past)
			cal.setRange(1900, dNextYear);        // min/max year allowed.
		else
			cal.setRange(dCurrentYear, 2070);        // min/max year allowed.
    cal.create();
  }
  _dynarch_popupCalendar.setDateFormat(format);    // set the specified date format
  m_blnOption = option;
  if(option)
		_dynarch_popupCalendar.parseDate(el.options[el.selectedIndex].value);      // try to parse the text in field
	else
		_dynarch_popupCalendar.parseDate(el.value);      // try to parse the text in field
  _dynarch_popupCalendar.sel = el;                 // inform it what input field we use

  // the reference element that we pass to showAtElement is the button that
  // triggers the calendar.  In this example we align the calendar bottom-right
  // to the button.
  //_dynarch_popupCalendar.showAt(300,300);
  //_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br");        // show the calendar
  
  _dynarch_popupCalendar.showAtElement(document.getElementById("Calendar"), "Br");
  
  return false;
}