function handle_tag_change(ev) {
mw.sdump('D_CAT','Entering handle_tag_change: ' + timer_elapsed('cat') + '\n');
try {
function handle_tag_change(ev) {
mw.sdump('D_CAT','Entering handle_tag_change: ' + timer_elapsed('cat') + '\n');
try {
rule_warnings = []; disable_widgets('explain_marc');
rule_warnings = []; disable_widgets('explain_marc');
var rows = document.getElementById('ctrl_rows').childNodes;
var rows = document.getElementById('ctrl_rows').childNodes;
if ((typeof(rows[r]) == 'object')&&(rows[r].tagName == 'row')) {
if ((typeof(rows[r]) == 'object')&&(rows[r].tagName == 'row')) {
test_tagnumber_rule(rows[r]);
test_tagnumber_rule(rows[r]);
rows = document.getElementById('data_rows').childNodes;
rows = document.getElementById('data_rows').childNodes;
if ( (typeof(rows[r]) == 'object') &&
(rows[r].tagName == 'row') &&
(rows[r].getAttribute('hidden') != 'true')
) {
if ( (typeof(rows[r]) == 'object') &&
(rows[r].tagName == 'row') &&
(rows[r].getAttribute('hidden') != 'true')
) {
test_tagnumber_rule(rows[r]);
test_tagnumber_rule(rows[r]);
test_subfield_rule(rows[r]);
test_subfield_rule(rows[r]);
if (rule_warnings.length > 0) {
if (rule_warnings.length > 0) {
enable_widgets('explain_marc'); }
} catch(E) {
enable_widgets('explain_marc'); }
} catch(E) {
mw.sdump('D_CAT','Exiting handle_tag_change: ' + timer_elapsed('cat') + '\n');
}
function test_tagnumber_rule(r) {
// rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
mw.sdump('D_CAT','Exiting handle_tag_change: ' + timer_elapsed('cat') + '\n');
}
function test_tagnumber_rule(r) {
// rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
var t = r.firstChild.firstChild;
var t = r.firstChild.firstChild;
if (t.value.length > 3) {
if (t.value.length > 3) {
t.value = t.value.substr(0,3);
t.value = t.value.substr(0,3);
} else if (t.value.length < 3) {
} else if (t.value.length < 3) {
switch(t.value.length) {
case 2: t.value = '0' + t.value; break;
case 1: t.value = '00' + t.value; break;
case 0: t.value = '000'; break;
}
switch(t.value.length) {
case 2: t.value = '0' + t.value; break;
case 1: t.value = '00' + t.value; break;
case 0: t.value = '000'; break;
}
removeCSSClass(t,'invalid');
removeCSSClass(t,'invalid');
if (marc_rules[t.value]) {
if (marc_rules[t.value]) {
var rule = marc_rules[t.value];
var rule = marc_rules[t.value];
if (tag_seen[t.value]) { tag_seen[t.value]++; } else { tag_seen[t.value] = 1; }
if (tag_seen[t.value]) { tag_seen[t.value]++; } else { tag_seen[t.value] = 1; }
if ( (rule.repeat == 'NR') && (tag_seen[t.value] > 1) ) {
if ( (rule.repeat == 'NR') && (tag_seen[t.value] > 1) ) {
addCSSClass(t,'invalid');
addCSSClass(t,'invalid');
var s = 'Tag ' + t.value + ' should be Non-Repeating\n';
var s = 'Tag ' + t.value + ' should be Non-Repeating\n';
rule_warnings.push(s); mw.sdump('D_CAT',s);
rule_warnings.push(s); mw.sdump('D_CAT',s);
} else if (t.value != 'LDR') {
} else if (t.value != 'LDR') {
addCSSClass(t,'invalid');
addCSSClass(t,'invalid');
var s = 'Tag ' + t.value + ' is unknown.\n';
var s = 'Tag ' + t.value + ' is unknown.\n';
rule_warnings.push(s); mw.sdump('D_CAT',s);
rule_warnings.push(s); mw.sdump('D_CAT',s);