document.observe('dom:loaded', function () {
  var fields = $$('input.date');
  fields.each( function (e) {
    var Y, M, D;
    var DATE = e.value;
    if (DATE.length == 19) {
      Y = DATE.substring(0,4);
      M = DATE.substring(5,7);
      D = DATE.substring(8, 10);
    }

    var frm = e.up('form');

    var year = new Element('select', { id: (e.id + '_year'), name: (e.name + '[year]') });
    for(var i = (new Date()).getFullYear(); i > ((new Date()).getFullYear() - 120); i--) {
      var x;
      if (i == Y) 
        x = new Element('option', { value: i, selected: 'selected' });
      else
        x = new Element('option', { value: i });
      year.insert(x.update(i));
    }

    var month = new Element('select', { id: (e.id + '_month'), name: (e.name + '[month]') });
    var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    months.each( function (e) {
      var x;
      if (months.indexOf(e) + 1 == M) 
        x = new Element('option', { value: (months.indexOf(e) + 1 < 10 ? "0" + (months.indexOf(e) + 1): (months.indexOf(e) + 1)), selected: 'selected' });
      else
        x = new Element('option', { value: (months.indexOf(e) + 1 < 10 ? "0" + (months.indexOf(e) + 1): (months.indexOf(e) + 1)) });
      month.insert(x.update(e));
    });

    var day = new Element('select', { id: (e.id + '_day'), name: (e.name + '[day]') });
    for(var j = 0; j < 31; j++) {
      var x;
      if (j + 1 == D) 
        x = new Element('option', { value: (j + 1 < 10 ? "0" + (j + 1): (j + 1)), selected: 'selected' });
      else
        x = new Element('option', { value: (j + 1 < 10 ? "0" + (j + 1): (j + 1)) });
      day.insert(x.update(j + 1 < 10 ? "0" + (j + 1): (j + 1)));
    }

    e.up().insert(month);
    e.up().insert(day);
    e.up().insert(year);

    e.writeAttribute('type', 'hidden');
    frm.observe('submit', observeSubmit);
  });
});

function observeSubmit (ev) {
  ev.stop();
  var frm = ev.element();
  var dates = $$('form#' + frm.id + ' input.date');
  dates.each( function (e) {
    var y = $(e.id + '_year'), m = $(e.id + '_month'), d = $(e.id + '_day');
    e.setAttribute('value', y.value + '/' + m.value + '/' + d.value)
    Element.remove(y);
    Element.remove(m);
    Element.remove(d);
    e.writeAttribute('type', 'text');
  });
  ev.target.submit();
  return false;
}
