
function makeGermanCalendar(cal1) {
  // Correct formats for Germany: dd.mm.yyyy, dd.mm, mm.yyyy
  cal1.cfg.setProperty("DATE_FIELD_DELIMITER", ".");

  cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
  cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
  cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);

  cal1.cfg.setProperty("MD_DAY_POSITION", 1);
  cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

  // Date labels for German locale
  cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
  cal1.cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
  cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);
  cal1.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
  cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
  cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);
}

function calButton(basename, dialog, calendar, input, td) {
    //console.debug('calButton ' + basename + ' ' + dialog + ' ' +
    //              calendar + ' ' + input + ' ' + td);
    var Elem = YAHOO.util.Element;
    var btn = new Elem(document.createElement('button'));
    btn.set('title', 'Show calendar');
    var img = new Elem(document.createElement('img'));
    img.set('src', '/design/matrix/javascript/yui/examples/calendar/assets/calbtn.gif');
    img.set('alt', 'Calendar');
    img.set('width', '18');
    img.set('height', '18');
    btn.appendChild(img);
    if (td) {
        td.appendChild(btn);
    }
    else {
        new Elem(basename + '-idtd').appendChild(btn); 
    }

    var args = { btn: btn.get('element'), dlg: dialog, inp: input, cal: calendar };
    btn.on('click', function (e, args) {
        YAHOO.util.Event.stopEvent(e);
        args.dlg.cfg.setProperty('context', [args.btn, 'tl', 'tl']);
        // only have one subscriber at a time
        args.cal.selectEvent.unsubscribeAll();
        args.cal.selectEvent.subscribe(function(e, eparams, obj) { 
          var date = eparams[0][0];
          var year = date[0], month = date[1], day = date[2];
          obj.set('value', month + '/' + day + '/' + year);
        }, args.inp);

        args.dlg.show();
    }, args);
}

function pmAddRow(matrix_id, dialog, calendar) {
  //  console.debug('addRow ' + matrix_id + ' ' + dialog + ' ' + calendar);
  var dom = YAHOO.util.Dom;
  var Elem = YAHOO.util.Element;

  var bgclass = 'bgdark';
  if (_ts_pmtx_ids[matrix_id] % 2 == 1) bgclass = 'bglight';
  var tbl = dom.get('de-ts-pmtx-' + matrix_id);

  var basename = 'de-ts-pmtx-' + matrix_id + '-' + _ts_pmtx_ids[matrix_id].next_id;

  var newrow = new Elem(document.createElement('tr'));
  newrow.set('id', basename);
  newrow.set('class', bgclass);

  var c = new Elem(document.createElement('td'));
  var cb = new Elem(document.createElement('input'));
  cb.set('type', 'checkbox');
  cb.set('name', basename + '-remove');
  cb.set('id', basename + '-remove');
  cb.set('value', '1');
  cb.set('title', 'Check for deletion');
  c.appendChild(cb);
  newrow.appendChild(c);

  c = new Elem(document.createElement('td'));
  var sel = new Elem(document.createElement('select'));
  sel.set('name', basename + '-productid');
  createProductOptions(sel);
  c.appendChild(sel);
  newrow.appendChild(c);

  c = new Elem(document.createElement('td'));
  c.set('id', basename + '-idtd');
  var df = new Elem(document.createElement('input'));
  df.set('id', basename + '-installdate');
  df.set('name', basename + '-installdate');
  c.appendChild(df);
  newrow.appendChild(c);
  calButton(basename, dialog, calendar, df, c);
 
  c = new Elem(document.createElement('td'));
  var s = new Elem(document.createElement('input'));
  s.set('id', basename + '-serial');
  s.set('name', basename + '-serial');
  c.appendChild(s);
  newrow.appendChild(c);

  c = new Elem(document.createElement('td'));
  var ta = new Elem(document.createElement('textarea'));
  ta.set('name', basename + '-comment');
  c.appendChild(ta);
  newrow.appendChild(c);

  new Elem(document.getElementById('de-ts-pmtx-' + matrix_id + '-tbody')).appendChild(newrow);

  _ts_pmtx_ids[matrix_id].next_id++;
  _ts_pmtx_ids[matrix_id].rows.push(basename);
  document.getElementById('de-ts-pmtx-' + matrix_id + '-rows').value = _ts_pmtx_ids[matrix_id].rows.join(',');
}

function pmDelRows(matrix_id) {
  var Elem = YAHOO.util.Element;
  var dom = YAHOO.util.Dom;
  var removed = 0;
  var new_state = [];
  for (var i = 0; i < _ts_pmtx_ids[matrix_id].rows.length; i++) {
    var el = dom.get(_ts_pmtx_ids[matrix_id].rows[i] + '-remove');
    if (el) {
      if (el.checked) {
        var tr = new Elem(_ts_pmtx_ids[matrix_id].rows[i]);
        if (tr) {
          new Elem(dom.get('de-ts-pmtx-' + matrix_id + '-tbody')).removeChild(tr);
          removed++;
        }
      }
      else {
        new_state.push(_ts_pmtx_ids[matrix_id].rows[i]);
      }
    }
  }

  _ts_pmtx_ids[matrix_id].rows = new_state;
  document.getElementById('de-ts-pmtx-' + matrix_id + '-rows').value = _ts_pmtx_ids[matrix_id].rows.join(',');
}
