// Mihai Bazons DHTML calendar (http://students.infoiasi.ro/~mishoo/site/calendar.epl) interface
// for NUSTEP HTML Form library // EDITED BY MH

function clendarClosed(cal)
{
  cal.hide();
}

function calendarDateSelected_combo(cal, date)
{
  var re=/(\d{4})\/0?(\d?\d)\/0?(\d?\d)/;
  if (!re.exec(date))
    return;

  // if not read-only input
  if (!cal.elementNotNull || !cal.elementNotNull.disabled) {
    cal.elementDay.value   = RegExp.$3;
    cal.elementMonth.value = RegExp.$2;
    cal.elementYear.value  = RegExp.$1;

    if (cal.elementNotNull && !cal.elementNotNull.checked) {
      cal.elementNotNull.checked = true;
      cal.elementNotNull.onclick(cal.elementNotNull);
    }
  }

  cal.callCloseHandler();
}

function htmlFormCalendarShow_combo(ADateInputID)
{
  var elementDay     = document.getElementById(ADateInputID + '_day');
  var elementMonth   = document.getElementById(ADateInputID + '_month');
  var elementYear    = document.getElementById(ADateInputID + '_year');
  var elementNotNull = document.getElementById(ADateInputID + '_enabled');

  if (elementNotNull && elementNotNull.disabled)
    return; // read-only input

  if (calendar != null) {
    calendar.hide();
  } else {
    var mondayFirst = true;
    calendar = new Calendar(mondayFirst, null, calendarDateSelected_combo, clendarClosed);
    calendar.offsetCorrection['y'] = 1;
    // calendar.weekNumbers = false;
    calendar.setRange(1900, 2070);
    calendar.create();
  }
  calendar.setDateFormat('y/mm/dd');
  calendar.parseDate(elementYear.value + '/' + elementMonth.value + '/' + elementDay.value);

  calendar.elementDay   = elementDay;
  calendar.elementMonth = elementMonth;
  calendar.elementYear  = elementYear;
  calendar.elementNotNull = elementNotNull;
  calendar.showAtElement(elementDay);
}


function calendarDateSelected_edit(cal, date)
{
  // if not read-only input
  if (cal.elementDate && !cal.elementDate.disabled)
    cal.elementDate.value = date;
    //super trupper feri edit
    $(cal.elementDate).change();
 
  cal.callCloseHandler();
}

function htmlFormCalendarShow_edit(ADateInputID)
{
  var elementDate = document.getElementById(ADateInputID);

  if (elementDate && elementDate.disabled)
    return; // read-only input

  if (calendar != null) {
    calendar.hide();
  } else {
    var mondayFirst = true;
    calendar = new Calendar(mondayFirst, null, calendarDateSelected_edit, clendarClosed);
    calendar.offsetCorrection['y'] = 1;
    // calendar.weekNumbers = false;
    calendar.setRange(1900, 2070);
    calendar.create();
  }
  calendar.setDateFormat('d.m.y');
  calendar.parseDate(elementDate.value);

  calendar.elementDate = elementDate;

  calendar.showAtElement(elementDate);
}

function htmlFormCalendarShow(ADateInputID, AControlType)
{
  switch (AControlType) {
    case 'combo':
      return htmlFormCalendarShow_combo(ADateInputID);
    case 'edit':
    default:
      return htmlFormCalendarShow_edit(ADateInputID);
  }
}
