summaryrefslogtreecommitdiff
path: root/data/js/staffalias.js
blob: 825f4d720b6103cfb2d7c5d54a8bfdfc0ef7b334 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function salLoad () {
  byId('alias_tbl').appendChild(tag('tr', {id:'alias_new'},
    tag('td', null),
    tag('td', {colspan:3}, tag('a', {href:'#', onclick:salFormAdd}, mt('_staffe_aliases_add')))));

  salAdd(byId('primary').value||0, byId('name').value, byId('original').value);
  var aliases = jsonParse(byId('aliases').value) || [];
  for(var i = 0; i < aliases.length; i++) {
    salAdd(aliases[i].aid, aliases[i].name, aliases[i].orig);
  }

  byName(byId('maincontent'), 'form')[0].onsubmit = salSerialize;
}

function salAdd(aid, name, original) {
  var tbl = byId('alias_tbl');
  var first = tbl.rows.length <= 1;
  tbl.insertBefore(tag('tr', first ? {id:'primary_name'} : null,
    tag('td', {'class':'tc_id' },
      tag('input', {type:'radio', name:'primary_id', value:aid, checked:first, onchange:salPrimary})),
    tag('td', {'class':'tc_name' },     tag('input', {type:'text', 'class':'text', value:name})),
    tag('td', {'class':'tc_original' }, tag('input', {type:'text', 'class':'text', value:original})),
    tag('td', {'class':'tc_add' }, !first ?
      tag('a', {href:'#', onclick:salDel}, mt('_js_remove')) : null)
  ), byId('alias_new'));
}

function salPrimary() {
  var prev = byId('primary_name')
  prev.removeAttribute('id');
  byClass(prev, 'td', 'tc_add')[0].appendChild(tag('a', {href:'#', onclick:salDel}, mt('_js_remove')));
  var tr = this;
  while (tr && tr.nodeName.toLowerCase() != 'tr')
    tr = tr.parentNode;
  tr.setAttribute('id', 'primary_name');
  var td = byClass(tr, 'td', 'tc_add')[0];
  while (td.firstChild)
    td.removeChild(td.firstChild);

  return salSerialize();
}

function salSerialize() {
  var tbl = byName(byId('alias_tbl'), 'tr');
  var a = [];
  for (var i = 0; i < tbl.length; ++i) {
    if(tbl[i].id == 'alias_new')
      continue;
    var id   = byName(byClass(tbl[i], 'td', 'tc_id')[0], 'input')[0].value;
    var name = byName(byClass(tbl[i], 'td', 'tc_name')[0], 'input')[0].value;
    var orig = byName(byClass(tbl[i], 'td', 'tc_original')[0], 'input')[0].value;
    if(tbl[i].id == 'primary_name') {
      byId('name').value = name;
      byId('original').value = orig;
      byId('primary').value = id;
    } else
      a.push({ aid:Number(id), name:name, orig:orig });
  }
  byId('aliases').value = JSON.stringify(a);
  return true;
}

function salDel() {
  var tr = this;
  while (tr && tr.nodeName.toLowerCase() != 'tr')
    tr = tr.parentNode;
  var tbl = byId('alias_tbl');
  tbl.removeChild(tr);
  salSerialize();
  return false;
}

function salFormAdd() {
  salAdd(0, '', '');
  byName(byClass(byId('alias_new').previousSibling, 'td', 'tc_name')[0], 'input')[0].focus();
  return false;
}

if(byId('jt_box_staffe_geninfo'))
  salLoad();