--- /dev/null
+// find_this_id = document id
+
+var org_shortname2id = {};
+var my_treerow;
+var browse_meter_per = 0;
+var orgs_with_copies = [];
+var orgs_with_copies_hash = {};
+
+function my_init() {
+ timer_init('cat');
+ dump('TESTING: browse_list.js: ' + mw.G['main_test_variable'] + '\n');
+ var tc = document.getElementById('browse_list_tree_children');
+ build_tree_branch(tc,mw.G['org_tree'],true);
+ my_treerow = document.getElementById( 'org_unit_' + mw.G.user_ou.shortname() ).firstChild;
+ document.getElementById('browse_meter').value = 0;
+ document.getElementById('browse_meter').setAttribute('real', '0.0');
+ gather_copies();
+ //populate_tree();
+}
+
+function refresh_browse_list() {
+ dump('=-=-=-=-=-=-=-=-=\n\n\nrefresh_browse_list()\n');
+ // Prune tree
+ var nl = document.getElementsByTagName('treeitem');
+ for (var i = 0; i < nl.length; i++) {
+ var v_treeitem = nl[i];
+ if (v_treeitem.getAttribute('object_type') == 'volume') {
+ var org_treechildren = v_treeitem.parentNode;
+ var org_treeitem = org_treechildren.parentNode;
+ org_treeitem.removeChild(org_treechildren);
+ var org_treerow = org_treeitem.firstChild;
+ org_treerow.childNodes[1].setAttribute('label','0');
+ org_treerow.childNodes[2].setAttribute('label','0');
+ }
+ }
+ document.getElementById('browse_meter').value = 0;
+ document.getElementById('browse_meter').setAttribute('real', '0.0');
+ gather_copies();
+}
+
+function button_toggle_my_libraries(ev) {
+ // label = Hide My Libraries
+ // alt_label = Show My Libraries
+ var target = document.getElementById('browse_list_button1');
+ if (!target) { dump('eh?\n'); return; }
+ swap_attributes('browse_list_button1','label','alt_label');
+ var toggle = cycle_attribute( target,'toggle', [ '1', '2' ] );
+ for (var i in mw.G.my_orgs) {
+ var lib = mw.G.my_orgs[i];
+ var item = document.getElementById('org_unit_'+lib.shortname());
+ if (item) {
+ if (toggle == '2') {
+ hide_branch(item);
+ } else {
+ unhide_branch(item);
+ }
+ }
+ }
+}
+
+function button_toggle_libraries(ev) {
+ // label = Show Other Libraries With Copies
+ // alt_label = Show Just My Libraries
+ var target = document.getElementById('browse_list_button2');
+ if (!target) { dump('eh?\n'); return; }
+ swap_attributes('browse_list_button2','label','alt_label');
+ var toggle = cycle_attribute( target,'toggle',['1','2'] );
+ if (toggle == '1') {
+ dump('Showing just my libraries...\n');
+ /*hide_branch( document.getElementById('org_unit_PINES') );
+ for (var i = 0; i < mw.G.my_orgs.length; i++) {
+ unhide_branch(
+ document.getElementById( 'org_unit_' + mw.G.my_orgs[i].shortname() )
+ );
+ }*/
+ var nl = document.getElementsByTagName('treeitem');
+ for (var i = 0; i < nl.length; i++) {
+ var item = nl[i];
+ if (item.getAttribute('id').substr(0,9) != 'org_unit_') continue;
+ if (mw.G.my_orgs_hash[ item.getAttribute('myid') ]) {
+ //item.setAttribute('hidden','false');
+ unhide_branch(item);
+ } else {
+ //item.setAttribute('hidden','true');
+ hide_branch(item);
+ }
+ }
+ } else {
+ dump('Showing other libraries with copies...\n');
+ var nl = document.getElementsByTagName('treeitem');
+ for (var i = 0; i < nl.length; i++) {
+ var item = nl[i];
+ if (item.getAttribute('copies') == 'true') {
+ //item.setAttribute('hidden','false');
+ //dump('\tunhiding ' + item.getAttribute('id') + '\n');
+ unhide_branch(item);
+ } else {
+ //item.setAttribute('hidden','true');
+ //dump('\thiding ' + item.getAttribute('id') + '\n');
+ //hide_branch(item);
+ }
+ }
+
+ }
+}
+
+function unhide_branch(item,do_open,do_copies) {
+ if (item.getAttribute('id') == 'org_unit_PINES') { return; }
+ //dump('Unhiding ' + item.getAttribute('id') + '\n');
+ item.setAttribute('hidden','false');
+ if (do_open) {
+ item.setAttribute('open','true');
+ }
+ if (do_copies) {
+ item.setAttribute('copies','true');
+ }
+ if (item.parentNode && item.parentNode.setAttribute) {
+ var id = item.parentNode.getAttribute('id');
+ if (id.substr(0,7) != 'browse_' && id != 'org_unit_PINES') {
+ unhide_branch(item.parentNode,do_open,do_copies);
+ }
+ }
+}
+
+function hide_branch(item,do_open,do_copies) {
+ if (item.getAttribute('id') == 'org_unit_PINES') { return; }
+ //dump('Hiding ' + item.getAttribute('id') + '\n');
+ item.setAttribute('hidden','true');
+ if (do_open) {
+ item.setAttribute('open','false');
+ }
+ if (do_copies) {
+ item.setAttribute('copies','true');
+ }
+ if (item.parentNode && item.parentNode.setAttribute) {
+ var id = item.parentNode.getAttribute('id');
+ if (id.substr(0,7) != 'browse_' && id != 'org_unit_PINES') {
+ hide_branch(item.parentNode,do_open,do_copies);
+ }
+ }
+}
+
+function gather_copies() {
+ // loop the libs
+ dump('Hello : ' + timer_elapsed('world') + '\n');
+/* user_async_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.copy_tree.global.retrieve',
+ [ mw.G['auth_ses'][0], find_this_id ],
+ gather_copies_callback
+ );
+*/
+ var orgs_with_copies = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.actor.org_unit.retrieve_by_title',
+ [ find_this_id ]
+ )[0];
+ for (var i = 0; i < orgs_with_copies.length; i++) {
+ orgs_with_copies_hash[ orgs_with_copies[i] ] = true;
+ }
+ var bucket = new Array();
+ for (var i = 0; i < mw.G.my_orgs.length; i++ ) {
+ //if (find_id_object_in_list( mw.G.aout_list, mw.G.my_orgs[i].ou_type() ).can_have_vols() == '0')
+ if ( mw.G.aout_list[ mw.G.my_orgs[i].ou_type() ].can_have_vols() == '0')
+ continue;
+ if ( ! orgs_with_copies_hash[ mw.G.my_orgs[i].id() ] ) continue;
+ bucket.push( mw.G.my_orgs[i].id() );
+ }
+ document.getElementById('browse_libs').setAttribute('value','Retrieving my copies...');
+ user_async_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.copy_tree.retrieve',
+ [ mw.G['auth_ses'][0], find_this_id, bucket ],
+ function (request) {
+ gather_copies_callback(request);
+ document.getElementById('browse_libs').setAttribute('value','Retrieving copies from other libraries...');
+ gather_other_copies();
+ }
+ );
+ dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n');
+}
+
+function gather_other_copies() {
+ var w_s = 10; var c_s = 0;
+ var bucket = new Array();
+
+ var nl = document.getElementsByTagName('treeitem');
+ for (var i = 0; i < nl.length; i++) {
+ var item = nl[i];
+ if (item.getAttribute('can_have_vols') == '0') continue;
+ //if ( find_id_object_in_list( mw.G.my_orgs, item.getAttribute('myid') ) ) { continue; }
+ if ( mw.G.my_orgs_hash[ item.getAttribute('myid') ] ) { continue; }
+ if ( ! orgs_with_copies_hash[ item.getAttribute('myid') ] ) continue;
+ bucket.push( item.getAttribute('myid') );
+ if (++c_s >= w_s) {
+ user_async_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.copy_tree.retrieve',
+ [ mw.G['auth_ses'][0], find_this_id, bucket ],
+ gather_copies_callback
+ );
+ dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n');
+ bucket = new Array();
+ c_s = 0;
+ }
+ }
+ if (bucket.length > 0) {
+ user_async_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.copy_tree.retrieve',
+ [ mw.G['auth_ses'][0], find_this_id, bucket ],
+ gather_copies_callback
+ );
+ dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n');
+ }
+ browse_meter_per = 100 / counter_peek('world');
+ dump(timer_elapsed('world') + ' : World : ' + timer_elapsed('gather') + '\n');
+}
+
+function find_my_treerow_index() {
+ var nl = document.getElementById('browse_list_tree').getElementsByTagName('treerow');
+ var count = 0;
+ //dump('find_my_treerow: count = ' + count + ' nl.length = ' + nl.length + '\n');
+ for (var i = 0; i < nl.length; i++) {
+ var row = nl[i];
+ var item = row.parentNode;
+ if (item.getAttribute('id') == 'org_unit_' + mw.G.user_ou.shortname() ) {
+ return count;
+ }
+ var open_attr = item.getAttribute('open');
+ var hidden_prop = item.hidden;
+ //dump('id = ' + item.getAttribute('id') + ' hidden_attr = ' + hidden_attr + ' hidden_prop = ' + hidden_prop + '\n');
+ if (hidden_prop.toString() == 'false' && open_attr.toString() == 'true') {
+ count++;
+ }
+ }
+ return 0;
+}
+
+function gather_copies_callback(request) {
+ dump('gather_copies_callback : ' + timer_elapsed('gather') + ' : ' + ' count = ' + counter_incr('gather') + '\n');
+ var result = request.getResultObject();
+ var n_volumes = 0; var n_copies = 0; var flag = false;
+ //dump('copybrowser result = ' + js2JSON(result) + '\n=-=-=\n');
+ for (var y in result) {
+ if (result[y] && (typeof(result[y])=='object')) {
+ var volume = result[y]; n_volumes++;
+ //dump('\nvolume = ' + js2JSON(volume) + '\n');
+ dump(' volume id = ' + volume.id() + '\n');
+ var lib = find_ou( mw.G.org_tree, volume.owning_lib() );
+ //dump('lib = ' + js2JSON(lib) + '\n');
+ if ( lib.shortname() == mw.G.user_ou.shortname() ) { flag = true; }
+ var callnumber = volume.label();
+ var copies = volume.copies();
+ //dump('\tcopies = ' + js2JSON(copies) + '\n');
+ var item = document.getElementById('org_unit_'+lib.shortname());
+ if (!item) { dump('skipping\n'); continue; }
+
+ var item_row = item.firstChild;
+ var volumes_treecell;
+ if (item_row.childNodes.length == 1) {
+ volumes_treecell = document.createElement('treecell');
+ volumes_treecell.setAttribute('label','0');
+ item_row.appendChild(volumes_treecell);
+ } else {
+ volumes_treecell = item_row.childNodes[1];
+ }
+ volumes_treecell.setAttribute(
+ 'label',
+ parseInt(volumes_treecell.getAttribute('label')) + 1
+ );
+
+ var copies_treecell;
+ if (item_row.childNodes.length < 3) {
+ copies_treecell = document.createElement('treecell');
+ copies_treecell.setAttribute('label','0');
+ item_row.appendChild(copies_treecell);
+ } else {
+ copies_treecell = item_row.childNodes[2];
+ }
+ copies_treecell.setAttribute(
+ 'label',
+ parseInt(copies_treecell.getAttribute('label')) + copies.length
+ );
+
+
+ var cn_treechildren;
+ var nl = item.getElementsByTagName('treechildren');
+ //unhide_branch(item,false,true);
+ item.setAttribute('copies',true);
+ if (nl.length == 0) {
+ cn_treechildren = document.createElement('treechildren');
+ item.appendChild(cn_treechildren);
+ } else {
+ cn_treechildren = nl[0];
+ }
+
+ var cn_treeitem = document.createElement('treeitem');
+ cn_treeitem.setAttribute('container','true');
+ cn_treeitem.setAttribute('open','true');
+ cn_treeitem.setAttribute('object_type','volume');
+ cn_treeitem.setAttribute('volume_id',volume.id());
+ cn_treeitem.setAttribute('callnumber',volume.label());
+ cn_treeitem.setAttribute('ou_id',lib.id());
+
+ cn_treechildren.appendChild(cn_treeitem);
+
+ var cn_treerow = document.createElement('treerow');
+ cn_treeitem.appendChild(cn_treerow);
+
+ var cn_treecell = document.createElement('treecell');
+ cn_treecell.setAttribute('label',callnumber);
+ cn_treerow.appendChild(cn_treecell);
+
+ var treechildren = document.createElement('treechildren');
+ cn_treeitem.appendChild(treechildren);
+ //dump( 'org_unit_'+lib+' item = '+item.tagName+'\n');
+ for (var j = 0; j < copies.length; j++) {
+ var copy = copies[j]; n_copies++;
+ //dump('barcode: ' + copy.barcode() + '\n');
+
+ var treeitem = document.createElement('treeitem');
+ treeitem.setAttribute('open','true');
+ treeitem.setAttribute('container','true');
+ treeitem.setAttribute('class','barcode_row');
+ treeitem.setAttribute('object_type','copy');
+ treeitem.setAttribute('ou_shortname',lib.shortname());
+ treeitem.setAttribute('ou_id',lib.id());
+ treeitem.setAttribute('callnumber',callnumber);
+ treeitem.setAttribute('barcode',copy.barcode());
+ treeitem.setAttribute('copy_id',copy.id());
+ treeitem.setAttribute('volume_id',volume.id());
+ //treeitem.setAttribute('copy',js2JSON(copy));
+ treechildren.appendChild(treeitem);
+
+ var treerow = document.createElement('treerow');
+ treeitem.appendChild(treerow);
+
+ var list = [
+ copy.barcode() , '', '', lib.shortname() , callnumber , copy.copy_number() ,
+ //find_id_object_in_list( mw.G.acpl_list, copy.location() ).name() ,
+ mw.G.acpl_hash[ copy.location() ].name() ,
+ //find_ou( mw.G.org_tree, copy.circ_lib() ).shortname() ,
+ mw.G.org_tree_hash[ copy.circ_lib() ].shortname(),
+ yesno( copy.circulate() ) , yesno( copy.ref() ) ,
+ yesno( copy.opac_visible() ) , copy.circ_as_type() , copy.circ_modifier() ,
+ copy.loan_duration() , copy.fine_level() , copy.create_date() ,
+ copy.creator() , copy.edit_date() , copy.editor() , copy.deposit() ,
+ copy.deposit_amount() , copy.price() , copy.status()
+ ];
+
+ for (var i = 0; i < list.length; i++ ) {
+ var treecell = document.createElement('treecell');
+ treecell.setAttribute('label',list[i]);
+ treerow.appendChild(treecell);
+ }
+
+ }
+ } else {
+ dump('gather_copies problem: ' + result[y] + '\n');
+ //throw(result[0]);
+ }
+ }
+ var tree = document.getElementById('browse_list_tree');
+ if (tree.currentIndex != -1) {
+ //dump('currentIndex != -1 = ' + tree.currentIndex + '\n');
+ //tree.treeBoxObject.scrollToRow( tree.currentIndex );
+ tree.treeBoxObject.ensureRowIsVisible( tree.currentIndex );
+ } else if (flag) {
+ //dump('currentIndex == -1\n');
+ var find = find_my_treerow_index();
+ dump('find = ' + find + ' n_volumes = ' + n_volumes + ' n_copies = ' + n_copies + '\n');
+ //alert('find = ' + find + ' n_volumes = ' + n_volumes + ' n_copies = ' + n_copies + '\n');
+ if (find > 0) {
+ find = find + n_volumes + n_copies;
+ tree.view.selection.select( find );
+ }
+ //tree.treeBoxObject.ensureRowIsVisible( find );
+ }
+ var meter = document.getElementById('browse_meter');
+ var real = parseFloat( meter.getAttribute('real') ) + browse_meter_per;
+ meter.setAttribute('real',real);
+ meter.value = Math.ceil( real );
+ if ( counter_peek('gather') == counter_peek('world') ) {
+ document.getElementById('browse_libs').setAttribute('value','Finished');
+ document.getElementById('browse_libs').setAttribute('hidden','true');
+ meter.value = 100;
+ meter.setAttribute('hidden','true');
+ }
+ dump('gather callback done : ' + timer_elapsed('gather') + '\n');
+}
+
+
+function build_tree_branch(treechildren,org,hide) {
+ var id = org.id();
+ var name = org.name();
+ var shortname = org.shortname(); org_shortname2id[shortname] = id;
+ var children = org.children();
+ var flag = mw.G.aout_hash[ org.ou_type() ].can_have_vols() == '1';
+ var item = make_treeitem('org_unit_' + shortname, name, flag);
+ item.setAttribute('hidden',hide);
+ item.setAttribute('ou_id',org.id());
+ //if ( find_id_object_in_list( mw.G.my_orgs, id ) ) {
+ if ( mw.G.my_orgs_hash[ id ] ) {
+ item.setAttribute('open','true');
+ item.setAttribute('hidden','false');
+ item.setAttribute('myorg','true');
+ }
+ item.setAttribute(
+ 'can_have_vols',
+ //find_id_object_in_list( mw.G.aout_list, org.ou_type() ).can_have_vols()
+ mw.G.aout_hash[ org.ou_type() ].can_have_vols()
+ );
+ item.setAttribute( 'myid', org.id() );
+ if (children && (children.length > 0)) {
+ var n_treechildren = document.createElement('treechildren');
+ for (var i in children) {
+ var child = children[i];
+ build_tree_branch(n_treechildren, child, true);
+ }
+ item.appendChild(n_treechildren);
+ }
+ treechildren.appendChild(item);
+}
+
+function make_treeitem(id,name,flag) {
+ var treeitem = document.createElement('treeitem');
+ treeitem.setAttribute('id',id);
+ treeitem.setAttribute('container','true');
+ var treerow = make_treerow(name,flag);
+ treeitem.appendChild(treerow);
+ treeitem.setAttribute('object_type','org_unit');
+ return treeitem;
+}
+
+function make_treerow(name,flag) {
+ var treerow = document.createElement('treerow');
+ var treecell = document.createElement('treecell');
+ treecell.setAttribute('label',name);
+ treerow.appendChild(treecell);
+ treecell = document.createElement('treecell');
+ if (flag) treecell.setAttribute('label',0);
+ treerow.appendChild(treecell);
+ treecell = document.createElement('treecell');
+ if (flag) treecell.setAttribute('label',0);
+ treerow.appendChild(treecell);
+
+ return treerow;
+}
+
+function get_selected_rows_by_object_type(tree,object_type) {
+ var items = get_list_from_tree_selection(tree);
+ var command = "filter_list(items, function (obj) { return obj.getAttribute('object_type') == '" + object_type + "'; } );";
+ return eval(command);
+}
+
+function build_CopyBrowser_Context(ev) {
+ dump('build_CopyBrowser_Context: ev.target.tagName = ' + ev.target.tagName + '\n');
+ dump('this = ' + this.tagName + '\n');
+
+ var popup = document.getElementById('browse_menu');
+ empty_widget(popup);
+
+ var volume_flag = 0; var copy_flag = 0; var library_flag = 0;
+
+ var hitlist = document.getElementById('browse_list_tree');
+ var start = new Object(); var end = new Object();
+ var numRanges = hitlist.view.selection.getRangeCount();
+ for (var t=0; t<numRanges; t++){
+ hitlist.view.selection.getRangeAt(t,start,end);
+ for (var v=start.value; v<=end.value; v++){
+ var i = hitlist.contentView.getItemAtIndex(v);
+ //dump(i + ':' + i.firstChild.childNodes.length + '\n');
+ switch( i.getAttribute('object_type') ) {
+ case 'volume' : volume_flag++; break;
+ case 'copy' : copy_flag++; break;
+ case 'org_unit' : if (i.getAttribute('can_have_vols') == '1') library_flag++; break;
+ }
+ }
+ }
+ dump('volume_flag = ' + volume_flag + ' copy_flag = ' + copy_flag + ' library_flag = ' + library_flag + '\n');
+ if (library_flag > 0) {
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ menuitem.setAttribute('label','Add Volumes');
+ menuitem.setAttribute('command','cmd_volume_add');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+ }
+ if (volume_flag > 0) {
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ if (volume_flag > 1) {
+ menuitem.setAttribute('label','Edit Volumes');
+ } else {
+ menuitem.setAttribute('label','Edit Volume');
+ }
+ menuitem.setAttribute('command','cmd_volume_edit');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+ menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ menuitem.setAttribute('label','Add Copies');
+ menuitem.setAttribute('command','cmd_copy_add');
+ menuitem = document.createElement('menuitem');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+ }
+ if (copy_flag > 0) {
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ if (copy_flag > 1) {
+ menuitem.setAttribute('label','Edit Copies');
+ } else {
+ menuitem.setAttribute('label','Edit Copy');
+ }
+ menuitem.setAttribute('command','cmd_copy_edit');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+ }
+ if (volume_flag > 0) {
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ if (volume_flag > 1) {
+ menuitem.setAttribute('label','Delete Volumes');
+ } else {
+ menuitem.setAttribute('label','Delete Volume');
+ }
+ menuitem.setAttribute('command','cmd_volume_delete');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+
+ }
+ if (copy_flag > 0) {
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ if (copy_flag > 1) {
+ menuitem.setAttribute('label','Delete Copies');
+ } else {
+ menuitem.setAttribute('label','Delete Copy');
+ }
+ menuitem.setAttribute('command','cmd_copy_delete');
+ popup.appendChild( document.createElement( 'menuseparator' ) );
+ }
+
+ var menuitem = document.createElement('menuitem');
+ popup.appendChild(menuitem);
+ menuitem.setAttribute('label','Refresh Listing');
+ menuitem.setAttribute('command','cmd_refresh');
+}
+
+function volume_add(tab,params) {
+ dump('trying to volume_add()\n');
+ params['shortcut'] = 'volume_add';
+ var w;
+ //var items = get_selected_rows(tree);
+ var items = get_list_from_tree_selection(params.tree);
+ items = filter_list(
+ items,
+ function (obj) {
+ return obj.getAttribute('object_type') == 'org_unit';
+ }
+ );
+ var chrome = 'chrome://evergreen/content/cat/volume_copy_add_wizard.xul';
+ if (tab) {
+ parentWindow.new_tab('main_tabbox');
+ w = parentWindow.replace_tab('main_tabbox','Add Volume',chrome);
+ } else {
+ w = mw.new_window( chrome );
+ }
+ dump('setting use_this_tree\n');
+ w.tree_items = items;
+ w.record_id = find_this_id;
+ w.params = params;
+}
+
+function copy_add(tab,params) {
+ dump('trying to copy_add()\n');
+ params['shortcut'] = 'copy_add';
+ var w;
+ //var items = get_selected_rows(tree);
+ var items = get_list_from_tree_selection(params.tree);
+ items = filter_list(
+ items,
+ function (obj) {
+ return obj.getAttribute('object_type') == 'volume';
+ }
+ );
+ var chrome = 'chrome://evergreen/content/cat/copy_add_wizard.xul';
+ if (tab) {
+ parentWindow.new_tab('main_tabbox');
+ w = parentWindow.replace_tab('main_tabbox','Add Copy',chrome);
+ } else {
+ w = mw.new_window( chrome );
+ }
+ dump('setting use_this_tree\n');
+ w.tree_items = items;
+ w.record_id = find_this_id;
+ w.params = params;
+}
+
+function volume_edit(tab,params) {
+ dump('trying to volume_edit()\n');
+ params['shortcut'] = 'volume_edit';
+ var w;
+ //var items = get_selected_rows(tree);
+ var items = get_list_from_tree_selection(params.tree);
+ items = filter_list(
+ items,
+ function (obj) {
+ return obj.getAttribute('object_type') == 'volume';
+ }
+ );
+ var chrome = 'chrome://evergreen/content/cat/volume_edit_wizard.xul';
+ if (tab) {
+ parentWindow.new_tab('main_tabbox');
+ w = parentWindow.replace_tab('main_tabbox','Edit Volumes',chrome);
+ } else {
+ w = mw.new_window( chrome );
+ }
+ dump('setting use_this_tree\n');
+ w.tree_items = items;
+ w.record_id = find_this_id;
+ w.params = params;
+
+}
+
+function volume_delete(tab,params) {
+ var volumes = get_selected_rows_by_object_type(params.tree,'volume');
+ var cn_list = [];
+ for (var i = 0; i < volumes.length; i++) {
+ var cn = new acn();
+ cn.id( volumes[i].getAttribute('volume_id') );
+ cn.isdeleted( '1' );
+ cn_list.push( cn );
+ }
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
+ [ mw.G['auth_ses'][0], cn_list]
+ );
+ dump('volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
+ refresh_browse_list();
+}
+
+function copy_delete(tab,params) {
+ var copies = get_selected_rows_by_object_type(params.tree,'copy');
+ var cn_list = [];
+ for (var i = 0; i < copies.length; i++) {
+ var cn = new acn();
+ cn.id( copies[i].getAttribute('volume_id') );
+
+ var cp = new acp();
+ cp.id( copies[i].getAttribute('copy_id') );
+ cp.isdeleted( '1' );
+
+ cn.copies( [ cp ] );
+ cn_list.push( cn );
+ }
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
+ [ mw.G['auth_ses'][0], cn_list]
+ );
+ dump('volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
+ refresh_browse_list();
+}
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's Search Result Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE window SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<window id="browse_list_win" title="&browse_list.win_title;"
+ orient="vertical" style="overflow: scroll" width="800" height="500"
+ onload="my_init();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/browse_list_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="browse_list_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="browse_list_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="browse_list_keys" />
+
+ <!-- Context menus -->
+ <popupset id="browse_list_popupset" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="browse_list_vbox" class="test_class"/>
+
+</window>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="browse_list_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="browse_list_js">
+ <!--<script src="chrome://evergreen/content/evergreen/fieldmapper.js" />-->
+ <util id="util_js"/>
+ <script src="browse_list.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="browse_list_cmds">
+ <command id="cmd_edit_browse" oncommand="spawn_editors();"/>
+ <command id="cmd_volume_add" oncommand="volume_add(false,{ 'tree' : 'browse_list_tree', 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_volume_edit" oncommand="volume_edit(false,{ 'tree' : 'browse_list_tree', 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_volume_delete" oncommand="volume_delete(false,{ 'tree' : 'browse_list_tree', 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_copy_add" oncommand="copy_add(false,{ 'tree' : 'browse_list_tree', 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_copy_edit" oncommand="spawn_batch_copy_editor(true, { 'tree' : document.getElementById('browse_list_tree') , 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_copy_delete" oncommand="copy_delete(false,{ 'tree' : 'browse_list_tree', 'refresh_func' : refresh_browse_list });"/>
+ <command id="cmd_toggle_my_libs" oncommand="button_toggle_my_libraries(event);"/>
+ <command id="cmd_toggle_libs" oncommand="button_toggle_libraries(event);"/>
+ <command id="cmd_refresh" oncommand="refresh_browse_list();"/>
+ <command id="cmd_alert" oncommand="alert('Not Yet Implemented');"/>
+</commandset>
+
+<!-- Context menus -->
+<popupset id="browse_list_popupset">
+ <popup id="browse_menu" onpopupshowing="build_CopyBrowser_Context(event);">
+ <!--
+ <menuitem id="browse_menu1" label="Add Volume" command="cmd_volume_add"/>
+ <menuitem id="browse_menu2" label="Edit Volume" command="cmd_alert" disabled="true"/>
+ <menuseparator id="browse_menu_sep1"/>
+ <menuitem id="browse_menu3" label="Add Copy" command="cmd_copy_add" disabled="true"/>
+ <menuitem id="browse_menu4" label="Edit Copy" command="cmd_copy_edit"/>
+ <menuseparator id="browse_menu_sep2"/>
+ <menuitem id="browse_menu5" label="Refresh Display" command="cmd_refresh"/>
+ -->
+ </popup>
+</popupset>
+
+<!-- The top level widget for the cat client -->
+<vbox id="browse_list_vbox" flex="1">
+ <hbox id="browse_list_buttonbox"/>
+ <tree id="browse_list_tree"/>
+</vbox>
+
+<hbox id="browse_list_buttonbox">
+ <!--
+ <button id="browse_list_button1" label="Hide My Libraries" alt_label="Show My Libraries" toggle="1" command="cmd_toggle_my_libs"/>
+ -->
+ <button id="browse_list_button3" label="Refresh" command="cmd_refresh"/>
+ <button id="browse_list_button2" label="Show Other Libraries With Copies" alt_label="Show Just My Libraries" toggle="1" command="cmd_toggle_libs"/>
+ <label id="browse_libs"/>
+ <progressmeter id="browse_meter" mode="normal" value="0" flex="1"/>
+</hbox>
+
+<tree id="browse_list_tree" enableColumnDrag="true" flex="1">
+ <treecols id="browse_list_treecols">
+ <treecol id="browse1" label="&browse_list.location;" flex="2" primary="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse1b" label="Volumes" flex="0"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse1a" label="Copies" flex="0"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse2" label="&browse_list.library;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse3" label="&browse_list.callnumber;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4" label="&browse_list.copy_number;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4aa" label="&browse_list.location2;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4a" label="&browse_list.circ_lib;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4b" label="&browse_list.circulate;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4bb" label="&browse_list.ref;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4bbb" label="&browse_list.opac_visible;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4c" label="&browse_list.circ_as_type;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4d" label="&browse_list.circ_modifier;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4e" label="&browse_list.loan_duration;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse4f" label="&browse_list.fine_level;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse5" label="&browse_list.create_date;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse6" label="&browse_list.creator;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse7" label="&browse_list.edit_date;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse8" label="&browse_list.editor;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse9" label="&browse_list.deposit;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse10" label="&browse_list.deposit_amount;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse11" label="&browse_list.price;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="browse12" label="&browse_list.status;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ </treecols>
+ <treechildren id="browse_list_tree_children" context="browse_menu"/>
+</tree>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="browse_list_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+function my_init() {
+ document.getElementById('search-entry-box').focus();
+ dump('TESTING: cat.js: ' + mw.G['main_test_variable'] + '\n');
+ populate_lib_list(
+ 'search-copy-count-menu',
+ 'search-copy-count-popup',
+ mw.G.user_ou
+ );
+}
+
+function search(s_type, s_loc, s_fmt, s_ord, s_term) {
+ var w_type = document.getElementById(s_type);
+ var w_loc = document.getElementById(s_loc);
+ var w_fmt = document.getElementById(s_fmt);
+ var w_term = document.getElementById(s_term);
+ var w_order = document.getElementById(s_ord);
+ var frame_box = document.getElementById('cat_result_box');
+ while (frame_box.lastChild) { frame_box.removeChild(frame_box.lastChild); }
+ switch(w_type.value) {
+ case 'barcode':
+ alert('Not Yet Implemented');
+ break;
+ case 'id':
+ alert('Not Yet Implemented');
+ break;
+ case 'title': case 'author': case 'tcn': case 'subject':
+ var frame = document.createElement('iframe');
+ frame_box.appendChild(frame);
+ frame.setAttribute('flex','1');
+ frame.setAttribute('src','chrome://evergreen/content/cat/record_list.xul');
+ frame.contentWindow.parentWindow = parentWindow;
+ frame.contentWindow.search_term = w_term.value;
+ frame.contentWindow.search_type = w_type.value;
+ frame.contentWindow.search_location = w_loc.value;
+ frame.contentWindow.search_order = w_order.value;
+ frame.contentWindow.catWindow = this;
+ frame.contentWindow.tabWindow = tabWindow;
+ frame.contentWindow.mw = mw;
+ frame.contentWindow.am_i_a_top_level_tab = false;
+ dump('here ====>\n');
+ frame.contentWindow.addEventListener('load',function (e) { dump('here1<==\n'); this.test_hash['hello1'] = 'boo'; }, false);
+ frame.contentWindow.addEventListener('load',function (e) { dump('here2<==\n'); this.test_hash['hello2'] = 'boo'; }, false);
+ break;
+ case 'isbn':
+ alert('Not Yet Implemented');
+ break;
+ case 'callnumber':
+ alert('Not Yet Implemented');
+ break;
+ case 'all':
+ alert('Not Yet Implemented');
+ break;
+ default:
+ alert('This case is not handled: ' + w_type.value);
+ break;
+ }
+}
+
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's Search Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<page id="cat_win" title="&cat.title;"
+ orient="vertical" style="overflow: scroll"
+ onload="my_init();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/cat_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="cat_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="cat_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="cat_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="cat_vbox" class="test_class"/>
+
+</page>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="cat_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="cat_js">
+ <script>var ses;</script>
+ <util id="util_js"/>
+ <script src="cat.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="cat_cmds">
+ <command id="cmd_search" oncommand="
+ search(
+ 'search-type-menu',
+ 'search-copy-count-menu',
+ 'search-format-menu',
+ 'search-order-menu',
+ 'search-entry-box'
+ );
+ "/>
+ <command id="cmd_test" oncommand="
+ /*spawn_copy_browser( document.getElementById('search-entry-box').value );*/
+ spawn_marc_editor( document.getElementById('search-entry-box').value );
+ "/>
+ <command id="cmd_alert" oncommand="
+ alert('Not Yet Implemented');
+
+ "/>
+</commandset>
+
+<!-- The top level widget for the cat client -->
+<vbox id="cat_vbox" flex="1" style="min-width: 100px; overflow: scroll;">
+ <vbox id="cat_search_box"/>
+ <vbox id="cat_result_box" flex="1"/>
+</vbox>
+
+<!-- The search box -->
+<vbox id="cat_search_box">
+ <groupbox id="search_groupbox"/>
+</vbox>
+
+<groupbox id="search_groupbox">
+ <caption label="&cat.search_criteria;"/>
+ <grid id="search_grid"/>
+</groupbox>
+
+<grid id="search_grid">
+ <columns>
+ <column/> <column/>
+ <column/> <column/>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row id="search_row1"/>
+ <row id="search_row2"/>
+ <row id="search_row3"/>
+ </rows>
+</grid>
+
+<row id="search_row1">
+ <label
+ value="&cat.search_type;"
+ control="search-type-menu"
+ accesskey="&cat.search_type.key;"
+ />
+ <menulist id="search-type-menu"/>
+
+ <label
+ value="&cat.search_term;"
+ control="search-entry-box"
+ accesskey="&cat.search_term.key;"
+ />
+ <textbox id="search-entry-box" flex="1"/>
+
+
+ <!--<label
+ value="&cat.search_location;"
+ control="search-location-menu"
+ accesskey="&cat.search_location.key;"
+ />
+ <menulist id="search-location-menu"/>-->
+</row>
+<row id="search_row2">
+ <label
+ value="&cat.search_format;"
+ control="search-format-menu"
+ accesskey="&cat.search_format.key;"
+ />
+ <menulist id="search-format-menu"/>
+ <label
+ value="&cat.search_count_copy;"
+ control="search-copy-count-menu"
+ accesskey="&cat.search_count_copy.key;"
+ />
+ <menulist id="search-copy-count-menu"/>
+
+</row>
+<row id="search_row3">
+ <label
+ value="&cat.search_order;"
+ control="search-order-menu"
+ accesskey="&cat.search_order.key;"
+ />
+ <menulist id="search-order-menu"/>
+ <spacer/>
+ <hbox>
+ <button label="&cat.search_submit;" accesskey="&cat.search_submit.key;" command="cmd_search"/>
+ <button label="&cat.search_advanced;" accesskey="&cat.search_advanced.key;" command="cmd_alert"/>
+ </hbox>
+
+
+</row>
+
+<!-- The search location -->
+<!-- This should be populated by a script -->
+<menulist id="search-location-menu">
+ <menupopup id="search-location-popup">
+ <menuitem label="This Library (Athens-Clarke County Library)" value="PINES.ARL.ATH" />
+ <menuitem label="This Library System (Athens Regional Library)" value="PINES.ARL" />
+ <menuitem label="All PINES Libraries" value="PINES" />
+ </menupopup>
+</menulist>
+
+<menulist id="search-copy-count-menu">
+ <menupopup id="search-copy-count-popup"/>
+</menulist>
+
+
+
+<!-- The search format -->
+<menulist id="search-format-menu">
+ <menupopup id="search-format-popup" command="cmd_alert">
+ <menuitem label="&cat.type_of_material;" value="all" />
+ <menuitem label="&cat.fixed.BKS;" value="BKS" />
+ <menuitem label="&cat.fixed.SER;" value="SER" />
+ <menuitem label="&cat.fixed.VIS;" value="VIS" />
+ <menuitem label="&cat.fixed.MIX;" value="MIX" />
+ <menuitem label="&cat.fixed.MAP;" value="MAP" />
+ <menuitem label="&cat.fixed.SCO;" value="SCO" />
+ <menuitem label="&cat.fixed.REC;" value="REC" />
+ <menuitem label="&cat.fixed.COM;" value="COM" />
+ </menupopup>
+</menulist>
+
+<!-- The search order -->
+<menulist id="search-order-menu">
+ <menupopup id="search-order-popup" command="cmd_alert">
+ <menuitem label="&cat.search_title;" value="title" />
+ <menuitem label="&cat.search_author;" value="author" />
+ <menuitem label="&cat.search_pubyear;" value="pubyear" />
+ </menupopup>
+</menulist>
+
+
+<!-- The search type -->
+<menulist id="search-type-menu">
+ <menupopup id="search-type-popup">
+ <menuitem label="&cat.search_barcode;" value="barcode" />
+ <menuitem label="&cat.search_tcn;" value="tcn" />
+ <menuitem label="&cat.search_isbn;" value="isbn" />
+ <menuitem label="&cat.search_title;" value="title" selected="true"/>
+ <menuitem label="&cat.search_author;" value="author" />
+ <menuitem label="&cat.search_subject;" value="subject" />
+ <menuitem label="&cat.search_callnumber;" value="callnumber" />
+ <menuitem label="&cat.search_id;" value="id" />
+ <menuitem label="&cat.search_all;" value="all" />
+ </menupopup>
+</menulist>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="cat_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+var local_stat_cats;
+var local_stat_cat_entries = {};
+
+function my_init() {
+ dump('entering my_init for copy.js\n');
+ dump('TESTING: copy.js: ' + mw.G['main_test_variable'] + '\n');
+ dump('real_parentWindow: ' + real_parentWindow + '\n');
+ populate_copy_status_list('copy-status-menu','copy-status-popup','0');
+ populate_copy_location_list('shelving-location-menu','shelving-location-popup');
+ populate_lib_list_with_branch('circulating-library-menu','circulating-library-popup', mw.G.user_ou, mw.G.org_tree, true );
+ dump('super_dump cn_list = ' + super_dump_norecurse(cn_list) + '\n');
+ dump('my_init: cn_list = ' + js2JSON(cn_list) + '\n');
+ /*cn_list = fixJSON(cn_list);
+ dump('super_dump cn_list = ' + super_dump_norecurse(cn_list) + '\n');
+ dump('my_init: cn_list = ' + js2JSON(cn_list) + '\n');*/
+ var pertinent_libs = [];
+ for (var i = 0; i < cn_list.length; i++) {
+ var cn = cn_list[i];
+ for (var j = 0; j < cn.copies().length; j++) {
+ var cp = cn.copies()[j];
+ add_to_listbox(
+ i,j,
+ mw.G.org_tree_hash[ cn.owning_lib() ].shortname(),
+ cn.label(),
+ cp.barcode()
+ );
+ }
+ pertinent_libs.push( cn.owning_lib() );
+ }
+ local_stat_cats = mw.G.asc_list;
+ populate_listbox_with_local_stat_cats_myself(
+ local_stat_cats,
+ local_stat_cat_entries,
+ 'local_attr_listbox',
+ pertinent_libs,
+ 'open-ils.circ',
+ 'open-ils.circ.stat_cat.asset.multirange.intersect.retrieve',
+ false
+ );
+ if (params.select_all) {
+ document.getElementById('ephemeral_listbox').selectAll();
+ apply_attributes();
+ }
+}
+
+function transfer_attributes(event) {
+ var items = event.target.selectedItems;
+ dump('selectedItems.length = ' + items.length + '\n');
+ if (items.length == 0) { return; }
+
+ // Dump items
+ var dump_copies = map_list(
+ items,
+ function (obj) {
+ var cnp = obj.getAttribute('cn_pos');
+ var cpp = obj.getAttribute('cp_pos');
+ return cn_list[cnp].copies()[cpp];
+ }
+ );
+ for (var i in dump_copies) {
+ dump('\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
+ dump( js2JSON(dump_copies[i]) );
+ dump('\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
+ }
+
+ // Transfer values from first item to XUL
+
+ var cp_pos = items[0].getAttribute('cp_pos');
+ var cn_pos = items[0].getAttribute('cn_pos');
+ var cp_list = cn_list[cn_pos].copies();
+ var copy = cp_list[cp_pos];
+ if (copy.circ_lib()) document.getElementById('circulating-library-menu').value =
+ copy.circ_lib().id();
+ if (copy.location()) document.getElementById('shelving-location-menu').value =
+ copy.location().id();
+ if (copy.status()) document.getElementById('copy-status-menu').value =
+ copy.status().id();
+ if (copy.loan_duration()) document.getElementById('loan-duration-menu').value =
+ copy.loan_duration();
+ if (copy.fine_level()) document.getElementById('fine-level-menu').value =
+ copy.fine_level();
+ if (copy.circulate()) document.getElementById('circulate_menu').value =
+ copy.circulate();
+ if (copy.deposit()) document.getElementById('deposit_menu').value =
+ copy.deposit();
+ if (copy.deposit_amount()) document.getElementById('deposit_amount').value =
+ copy.deposit_amount();
+ if (copy.price()) document.getElementById('price').value =
+ copy.price();
+ if (copy.ref()) document.getElementById('reference_menu').value =
+ copy.ref();
+ if (copy.opac_visible()) document.getElementById('opac_visible_menu').value =
+ copy.opac_visible();
+
+ for (var i in copy.stat_cat_entries()) {
+ var entry = copy.stat_cat_entries()[i];
+ var menuitem = document.getElementById('menuitem_stat_cat_entry_' + entry.id());
+ if (menuitem) {
+ menuitem.parentNode.parentNode.selectedItem = menuitem;
+ }
+ }
+ dump('select fired\n');
+}
+
+
+function save_attributes() {
+ real_parentWindow.cn_list = cn_list;
+ real_parentWindow.document.getElementById('volume_add').canAdvance = true;
+ //window.close();
+}
+
+function apply_attributes() {
+ var circ_lib = document.getElementById('circulating-library-menu').value;
+ var shelving_loc = document.getElementById('shelving-location-menu').value;
+ var copy_status = document.getElementById('copy-status-menu').value;
+ var loan_duration = document.getElementById('loan-duration-menu').value;
+ var fine_level = document.getElementById('fine-level-menu').value;
+ var circulate = document.getElementById('circulate_menu').value;
+ var deposit = document.getElementById('deposit_menu').value;
+ var deposit_amount = document.getElementById('deposit_amount').value;
+ var price = document.getElementById('price').value;
+ var ref = document.getElementById('reference_menu').value;
+ var opac = document.getElementById('opac_visible_menu').value;
+ var listbox = document.getElementById('ephemeral_listbox');
+ var items = listbox.selectedItems;
+ dump('selectedItems.length = ' + items.length + '\n');
+ for (var i = 0; i < items.length; i++) {
+ var listitem = items[i];
+ var cn_pos = listitem.getAttribute('cn_pos');
+ var cp_pos = listitem.getAttribute('cp_pos');
+ var copy_node = cn_list[cn_pos].copies()[cp_pos];
+ copy_node.circ_lib( mw.G.org_tree_hash[ circ_lib ]);
+ copy_node.location( mw.G.acpl_hash[ shelving_loc ]);
+ copy_node.status( mw.G.ccs_hash[ copy_status ]);
+ copy_node.loan_duration(loan_duration);
+ copy_node.fine_level(fine_level);
+ copy_node.circulate(circulate);
+ copy_node.deposit(deposit);
+ copy_node.deposit_amount(deposit_amount);
+ copy_node.price(price);
+ copy_node.ref(ref);
+ copy_node.opac_visible(opac);
+ copy_node.ischanged(1);
+ }
+
+ dump('changed cn_list: ' + js2JSON(cn_list) + '\n');
+}
+
+function apply_attribute(ev) {
+ dump('Entering apply_attribute with element id = ');
+ var popup_id;
+ if (ev.target.tagName == 'menuitem') {
+ popup_id = ev.target.parentNode.getAttribute('id');
+ } else {
+ popup_id = ev.target.getAttribute('id');
+ }
+ dump(popup_id + '\n');
+ dump('ev.target = ' + ev.target + ' .tagName = ' + ev.target.tagName + '\n');
+
+ var circ_lib = document.getElementById('circulating-library-menu').value;
+ var shelving_loc = document.getElementById('shelving-location-menu').value;
+ var copy_status = document.getElementById('copy-status-menu').value;
+ var loan_duration = document.getElementById('loan-duration-menu').value;
+ var fine_level = document.getElementById('fine-level-menu').value;
+ var circulate = document.getElementById('circulate_menu').value;
+ var deposit = document.getElementById('deposit_menu').value;
+ var deposit_amount = document.getElementById('deposit_amount').value;
+ var price = document.getElementById('price').value;
+ var ref = document.getElementById('reference_menu').value;
+ var opac = document.getElementById('opac_visible_menu').value;
+ var listbox = document.getElementById('ephemeral_listbox');
+ var items = listbox.selectedItems;
+
+ dump('selectedItems.length = ' + items.length + '\n');
+ dump('before cn_list: ' + js2JSON(cn_list) + '\n');
+ for (var i = 0; i < items.length; i++) {
+ var listitem = items[i];
+ var cn_pos = listitem.getAttribute('cn_pos');
+ var cp_pos = listitem.getAttribute('cp_pos');
+ var copy_node = cn_list[cn_pos].copies()[cp_pos];
+
+ dump('\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
+ dump('Setting copy ' + copy_node.id() + '...\n');
+ switch(popup_id) {
+ case 'circulating-library-popup':
+ dump('\tbefore circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
+ copy_node.circ_lib( mw.G.org_tree_hash[ circ_lib ] );
+ dump('\tafter circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
+ break;
+ case 'shelving-location-popup':
+ dump('\tbefore location = ' + js2JSON(copy_node.location()) + '\n');
+ copy_node.location( mw.G.acpl_hash[ shelving_loc ] );
+ dump('\tafter location = ' + js2JSON(copy_node.location()) + '\n');
+ break;
+ case 'copy-status-popup':
+ dump('\tbefore status = ' + js2JSON(copy_node.status()) + '\n');
+ copy_node.status( mw.G.ccs_hash[ copy_status ]);
+ dump('\tafter status = ' + js2JSON(copy_node.status()) + '\n');
+ break;
+ case 'loan-duration-popup':
+ dump('\tbefore loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
+ copy_node.loan_duration(loan_duration);
+ dump('\tafter loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
+ break;
+ case 'fine-level-popup':
+ dump('\tbefore fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
+ copy_node.fine_level(fine_level);
+ dump('\tafter fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
+ break;
+ case 'circulate_popup':
+ dump('\tbefore circulate = ' + js2JSON(copy_node.circulate()) + '\n');
+ copy_node.circulate(circulate);
+ dump('\tafter circulate = ' + js2JSON(copy_node.circulate()) + '\n');
+ break;
+ case 'deposit_popup':
+ dump('\tbefore deposit = ' + js2JSON(copy_node.deposit()) + '\n');
+ copy_node.deposit(deposit);
+ dump('\tafter deposit = ' + js2JSON(copy_node.deposit()) + '\n');
+ break;
+ case 'deposit_amount':
+ dump('\tbefore deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
+ copy_node.deposit_amount(deposit_amount);
+ dump('\tafter deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
+ break;
+ case 'price':
+ dump('\tbefore price = ' + js2JSON(copy_node.price()) + '\n');
+ copy_node.price(price);
+ dump('\tafter price = ' + js2JSON(copy_node.price()) + '\n');
+ break;
+ case 'reference_popup':
+ dump('\tbefore ref = ' + js2JSON(copy_node.ref()) + '\n');
+ copy_node.ref(ref);
+ dump('\tafter ref = ' + js2JSON(copy_node.ref()) + '\n');
+ break;
+ case 'opac_visible_popup':
+ dump('\tbefore opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
+ copy_node.opac_visible(opac);
+ dump('\tafter opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
+ break;
+ default:
+ dump('\t++++++++ Unhandled.. this should be a stat_cat: ' + popup_id + ' / ' + ev.target.tagName + '\n');
+ update_stat_cat_entry(copy_node,ev.target);
+ break;
+ }
+ dump('\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
+ copy_node.ischanged(1);
+ }
+
+ dump('changed cn_list: ' + js2JSON(cn_list) + '\n');
+}
+
+function update_stat_cat_entry(copy,menuitem) {
+ dump('\tupdate_stat_cat_entry: value = ' + menuitem.value + '\n');
+ var entries = copy.stat_cat_entries();
+ //dump('\n\n\ncopy = ' + js2JSON(copy) + '\n');
+ //dump('\n\n\ncopy.stat_cat_entries() = ' + js2JSON(copy.stat_cat_entries()) + '\n');
+ var stat_cat_id = menuitem.getAttribute('stat_cat');
+ var entry = find_attr_object_in_list(entries,'stat_cat',stat_cat_id);
+ if (entry) {
+ dump('\tReplacing old stat_cat_entry with ');
+
+ entries = filter_list(
+ entries,
+ function (obj) {
+ return (obj.id() != entry.id());
+ }
+ );
+
+ } else {
+ dump('\tAppending new stat_cat_entry = ');
+ }
+ dump(js2JSON(local_stat_cat_entries[menuitem.value]) + '\n');
+ entries.push( local_stat_cat_entries[ menuitem.value ] );
+ copy.stat_cat_entries( entries );
+}
+
+function add_to_listbox(cn_pos,cp_pos,name,callnumber,barcode) {
+ dump('xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
+ var listbox = document.getElementById('ephemeral_listbox');
+ var listitem = document.createElement('listitem');
+ listitem.setAttribute('cn_pos',cn_pos);
+ listitem.setAttribute('cp_pos',cp_pos);
+ listbox.appendChild(listitem);
+ var listcell1 = document.createElement('listcell');
+ listcell1.setAttribute('label',name);
+ listitem.appendChild(listcell1);
+ var listcell2 = document.createElement('listcell');
+ listcell2.setAttribute('label',callnumber);
+ listitem.appendChild(listcell2);
+ var listcell3 = document.createElement('listcell');
+ listcell3.setAttribute('label',barcode);
+ listitem.appendChild(listcell3);
+}
+
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's Copy Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<page id="copy_win" title="©.title;"
+ orient="vertical" style="overflow: scroll" persist="width height"
+ onload="
+ dump('start onload: ' + timer_elapsed('cat') + '\n');
+ my_init();
+ dump('end onload: ' + timer_elapsed('cat') + '\n');
+ "
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/copy_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <script src="chrome://evergreen/content/util/util.js" />
+ <script>timer_init('cat');</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="copy_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="copy_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="copy_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="copy_vbox" class="test_class"/>
+
+</page>
+
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- This DTD declaration needs to be fixed for Mozilla locales -->
+<!DOCTYPE wizard SYSTEM "chrome://evergreen/locale/cat.dtd">
+<wizard id="volume_add" title="©.wizard.title;"
+ orient="vertical" style="overflow: auto"
+ onload="my_init();" width="800" height="600"
+ onwizardfinish="send_to_bill();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/volume_copy_add_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="volume_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="volume_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="volume_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <!--<wizardpage id="page1"/>-->
+ <wizardpage id="page2"/>
+ <wizardpage id="page3"/>
+ <wizardpage id="page4"/>
+
+</wizard>
+
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: About -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+
+<window id="copy_display_win" title="hello"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <OpenSRF id="OpenSRF_js"/>
+ <util id="util_js"/>
+
+ <vbox id="copy_display_vbox" flex="1" pack="center" align="center">
+ <label name="click_label" datum="1" click_evt="click_evt"/>
+ <label name="edit_date" datum="1" render_filter="^(.){10}" click_evt="click_evt" />
+ <label name="call_number" datum="1" render_path="label" click_evt="click_evt" />
+ <label name="fine_level" datum="1" click_evt="click_evt"/>
+ <label name="creator" datum="1" render_path="usrname" click_evt="click_evt"/>
+ <label name="creator" datum="1" render_path="home_ou/name" click_evt="click_evt"/>
+ <textbox name="status" datum="1" change_evt="edit_evt" click_evt="click_evt"/>
+ <textbox name="circulate" datum="1" change_evt="edit_evt" click_evt="click_evt"/>
+ <label name="circ_as_type" datum="1" click_evt="click_evt"/>
+ <label name="stat_cat_entries" datum="1" click_evt="click_evt"/>
+ <label name="isnew" datum="1" click_evt="click_evt"/>
+ <label name="editor" datum="1" render_path="usrname" click_evt="click_evt"/>
+ <label name="ischanged" datum="1" click_evt="click_evt"/>
+ <label name="id" datum="1" click_evt="click_evt"/>
+ <label name="isdeleted" datum="1" click_evt="click_evt"/>
+ <textbox name="deposit" datum="1" change_evt="edit_evt" click_evt="click_evt"/>
+ <label name="location" datum="1" click_evt="click_evt"/>
+ <label name="loan_duration" datum="1" click_evt="click_evt"/>
+ <label name="ref" datum="1" click_evt="click_evt"/>
+ <label name="create_date" datum="1" click_evt="click_evt"/>
+ <textbox name="barcode" datum="1" change_evt="validate_evt,edit_evt" click_evt="click_evt" />
+ <label name="deposit_amount" datum="1" click_evt="click_evt"/>
+ <textbox name="opac_visible" datum="1" change_evt="edit_evt" click_evt="click_evt"/>
+ <label name="copy_number" datum="1" click_evt="click_evt"/>
+ <textbox name="price" datum="1" change_evt="edit_evt" click_evt="click_evt"/>
+ <label name="circ_modifier" datum="1" click_evt="click_evt"/>
+ <label name="circ_lib" datum="1" render_path="name" click_evt="click_evt"/>
+ </vbox>
+
+</window>
+
--- /dev/null
+var cn_list;
+
+function copy_edit_init() {
+ dump('entering my_init for copy_edit.js\n');
+ dump('TESTING: copy_edit.js: ' + mw.G['main_test_variable'] + '\n');
+ dump('Gathering copies to put in the acn object...\n');
+ var list = get_list_from_tree_selection( params.tree );
+ dump('list.length = ' + list.length + '\n');
+ var filtered_list = filter_list(
+ list,
+ function (obj) {
+ return (obj.getAttribute('object_type') == 'copy');
+ }
+ );
+ dump('filtered_list.length = ' + filtered_list.length + '\n');
+ var id_mapped_list = map_list(
+ filtered_list,
+ function (obj) {
+ return obj.getAttribute('copy_id');
+ }
+ );
+ dump('id_mapped_list.length = ' + id_mapped_list.length + '\n');
+ var result = user_request(
+ 'open-ils.search',
+ 'open-ils.search.asset.copy.fleshed.batch.retrieve',
+ [ id_mapped_list ]
+ )[0];
+ dump('result.length = ' + result.length + '\n');
+ cn_list = new Array();
+ for (var i in result) {
+ cn_list[i] = new acn();
+ cn_list[i].label( filtered_list[i].getAttribute('callnumber') );
+ cn_list[i].owning_lib( filtered_list[i].getAttribute('ou_id') );
+ cn_list[i].copies( [ result[i] ] );
+ }
+ dump('cn_list = ' + js2JSON(cn_list) + '\n');
+ spawn_copy_editor();
+}
+
+function spawn_copy_editor() {
+ dump('trying to spawn_copy_editor()\n');
+ var params = { 'select_all' : false };
+ var chrome = 'chrome://evergreen/content/cat/copy.xul';
+ var frame = document.getElementById('copy_edit_frame');
+ frame.setAttribute('src',chrome);
+ frame.setAttribute('flex','1');
+ frame.contentWindow.cn_list = cn_list;
+ frame.contentWindow.mw = mw;
+ frame.contentWindow.real_parentWindow = this;
+ frame.contentWindow.parentWindow = parentWindow;
+ frame.contentWindow.params = params;
+}
+
+function save_edited_copies() {
+ //dump('trying to save ====================================================================================\n\n\n');
+ //dump('cn_list = ' + js2JSON(cn_list) + '\n\n');
+ var copies = [];
+ for (var i = 0; i < cn_list.length; i++) {
+ var cn_copies = cn_list[i].copies();
+ for (var j = 0; j < cn_copies.length; j++) {
+ copies.push( cn_copies[j] );
+ }
+ }
+ //dump('copies = ' + js2JSON(copies) + '\n\n');
+ try {
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.copy.fleshed.batch.update',
+ [ mw.G.auth_ses[0], copies ]
+ )[0];
+ if (result == '1') {
+ alert('Successfully updated these copies.\n');
+ } else {
+ throw('There was an error updating the copies.\n');
+ }
+ dump('Result = ' + js2JSON(result) + '\n');
+ refresh_spawning_browse_list();
+ } catch(E) {
+ handle_error(E);
+ }
+}
+
+function refresh_spawning_browse_list() {
+ try {
+ params.refresh_func();
+ } catch(E) {
+ dump('refresh_spawning_browse_list error: ' + js2JSON(E) + '\n');
+ }
+}
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's Copy Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<page id="copy_edit_win" title="©.title;"
+ orient="vertical" style="overflow: scroll" persist="width height"
+ onload=" copy_edit_init(); "
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/copy_edit_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <script src="chrome://evergreen/content/util/util.js" />
+ <script>timer_init('cat');</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="copy_edit_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="copy_edit_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="copy_edit_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="copy_edit_vbox" class="test_class"/>
+
+</page>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="copy_edit_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="copy_edit_js">
+ <util id="util_js"/>
+ <!--<script src="chrome://evergreen/content/util/RemoteRequest.js" />
+ <script src="chrome://evergreen/content/util/ses.js" />-->
+ <script src="copy_edit.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="copy_edit_cmds">
+ <command id="cmd_alert" oncommand="
+ alert(event.target.tagName + ' Not Yet Implemented');
+ "/>
+ <command id="cmd_edit_save" oncommand="
+ save_edited_copies();
+ "/>
+ <command id="cmd_refresh_parent" oncommand="
+ refresh_spawning_browse_list();
+ "/>
+</commandset>
+
+<vbox id="copy_edit_vbox" flex="1">
+ <iframe id="copy_edit_frame" flex="1"/>
+ <hbox id="copy_edit_hbox" flex="0">
+ <spacer id="copy_edit_spacer" flex="1"/>
+ <button id="copy_edit_save" label="Save Changes" command="cmd_edit_save"/>
+ </hbox>
+</vbox>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="copy_edit_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="copy_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="copy_js">
+ <util id="util_js"/>
+ <!--<script src="chrome://evergreen/content/util/RemoteRequest.js" />
+ <script src="chrome://evergreen/content/util/ses.js" />-->
+ <script src="copy.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="copy_cmds">
+ <command id="cmd_alert" oncommand="
+ alert(event.target.tagName + ' Not Yet Implemented');
+ "/>
+ <command id="cmd_apply" oncommand="
+ apply_attribute(event);
+ "/>
+ <command id="cmd_save" oncommand="
+ save_attributes();
+ "/>
+</commandset>
+
+<!-- The top level widget for the cat client -->
+<vbox id="copy_vbox" flex="1">
+ <vbox flex="1">
+ <hbox flex="1">
+ <deck id="pines_info_deck"/>
+ <splitter collapse="after"> <grippy/> </splitter>
+ <vbox>
+ <deck id="local_info_deck"/>
+ <!--
+ <splitter collapse="after"> <grippy/> </splitter>
+ <vbox>
+ <listbox id="notes_listbox"/>
+ <hbox id="note_button_box"/>
+ </vbox>
+ -->
+ </vbox>
+ </hbox>
+ <hbox id="copy_button_box"/>
+ </vbox>
+ <splitter collapse="after"> <grippy/> </splitter>
+ <vbox flex="1">
+ <deck id="bottom_deck"/>
+ </vbox>
+</vbox>
+
+<hbox id="copy_button_box">
+ <!--
+ <button label="©.save;" accesskey="©.save.key;" command="cmd_alert"/>
+ <spacer flex="1"/>
+ <button label="©.reload;" accesskey="©.reload.key;" command="cmd_alert"/>
+ <button label="©.bucket;" accesskey="©.bucket.key;" command="cmd_alert"/>
+ <button label="©.clone;" accesskey="©.clone.key;" command="cmd_alert"/>
+ <button label="©.transfer;" accesskey="©.transfer.key;" command="cmd_alert"/>
+ <button label="©.delete;" accesskey="©.delete.key;" command="cmd_alert"/>
+ <button id="apply_attr_button" label="Apply these Attributes to the selected Copies" command="cmd_apply"/>
+ <button id="save_attr_button" label="Save Changes" command="cmd_save"/>
+ -->
+ <description>Any change made above affects the copies selected below.</description>
+</hbox>
+
+<hbox id="note_button_box">
+ <hbox flex="1">
+ <button label="©.notes.delete;" accesskey="©.notes.delete.key;" command="cmd_alert"/>
+ <button label="©.notes.add;" accesskey="©.notes.add.key;" command="cmd_alert"/>
+ </hbox>
+ <button label="©.close;" accesskey="©.close.key;" oncommand="window.close();"/>
+</hbox>
+
+<deck id="bottom_deck" flex="1">
+ <vbox>
+ <listbox id="ephemeral_listbox" flex="1" seltype="multiple" onselect="transfer_attributes(event);">
+ <listhead>
+ <listheader/>
+ <listheader label="Location"/>
+ <listheader label="Call Number"/>
+ <listheader label="Barcode"/>
+ </listhead>
+ <listcols>
+ <listcol/>
+ <listcol flex="1"/>
+ <listcol flex="1"/>
+ <listcol flex="1"/>
+ </listcols>
+ </listbox>
+ </vbox>
+</deck>
+
+
+<deck id="pines_info_deck" flex="1">
+ <vbox>
+ <listbox id="pines_attr_listbox"/>
+ </vbox>
+</deck>
+
+<deck id="local_info_deck" flex="1">
+ <vbox>
+ <listbox id="local_attr_listbox"/>
+ <hbox pack="end"><button disabled="true" label="©.edit_categories;" command="cmd_alert"/></hbox>
+ </vbox>
+</deck>
+
+<!-- At some point we will programatically populate these grids and menus -->
+
+<menulist id="shelving-location-menu">
+ <menupopup id="shelving-location-popup" command="cmd_apply">
+ <menuitem id="shelving-location-prompt" label="Select one..." hidden="true"/>
+ </menupopup>
+</menulist>
+
+<listbox id="notes_listbox" flex="1">
+ <listhead>
+ <listheader label="©.notes.opac;"/>
+ <listheader label="©.notes.date;"/>
+ <listheader label="©.notes.from;"/>
+ <listheader label="©.notes;"/>
+ </listhead>
+ <listcols>
+ <listcol/>
+ <listcol/>
+ <listcol/>
+ <listcol flex="1"/>
+ </listcols>
+ <!--
+ <listitem allowevents="true">
+ <listcell>
+ <checkbox/>
+ </listcell>
+ <listcell label="2004-12-01"/>
+ <listcell label="Admin"/>
+ <listcell label="Legacy Fields: Item Type = BOOK, Item Cat1 = FICTION, Item Cat2 = ADULT"/>
+ </listitem>
+ -->
+</listbox>
+
+<listbox id="local_attr_listbox" flex="1">
+ <listhead>
+ <listheader />
+ <listheader label="©.local.attr;"/>
+ <listheader label="©.local.attr.value;"/>
+ </listhead>
+ <listcols>
+ <listcol />
+ <listcol flex="1"/>
+ <listcol flex="2"/>
+ </listcols>
+ <!--
+ <listitem allowevents="true">
+ <listcell label="©.attr.stat.genre;"/>
+ <listcell>
+ <menulist id="stat-genre-menu"/>
+ <hbox pack="end" flex="1">
+ <button disabled="true" label="©.edit_entries;" command="cmd_alert"/>
+ </hbox>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.stat.audience;"/>
+ <listcell>
+ <menulist id="stat-audience-menu"/>
+ <hbox pack="end" flex="1">
+ <button disabled="true" label="©.edit_entries;" command="cmd_alert"/>
+ </hbox>
+ </listcell>
+ </listitem>
+ -->
+</listbox>
+
+<listbox id="pines_attr_listbox" flex="1">
+ <listhead>
+ <listheader label="©.pines.attr;"/>
+ <listheader label="©.pines.attr.value;"/>
+ </listhead>
+ <listcols>
+ <listcol flex="1"/>
+ <listcol flex="2"/>
+ </listcols>
+ <listitem allowevents="true" hidden="true">
+ <listcell label="©.attr.barcode;"/>
+ <listcell label="330620563200"/>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.copy_status;"/>
+ <listcell>
+ <menulist id="copy-status-menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.shelving_location;"/>
+ <listcell>
+ <menulist id="shelving-location-menu"/>
+ <!--<hbox pack="end" flex="1">
+ <button disabled="true" label="©.edit_entries;" command="cmd_alert"/>
+ </hbox>-->
+ </listcell>
+ </listitem>
+
+ <listitem allowevents="true">
+ <listcell label="©.attr.circulating_lib;"/>
+ <listcell>
+ <menulist id="circulating-library-menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.loan_duration;"/>
+ <listcell>
+ <menulist id="loan-duration-menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.fine_level;"/>
+ <listcell>
+ <menulist id="fine-level-menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.circulate;"/>
+ <listcell>
+ <menulist id="circulate_menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.deposit;"/>
+ <listcell>
+ <menulist id="deposit_menu"/>
+ <label value="©.attr.deposit_amount;"/>
+ <textbox id="deposit_amount" size="6" onchange="apply_attribute(event);" value="0.00"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.price;"/>
+ <listcell>
+ <textbox id="price" size="6" onchange="apply_attribute(event);" value="0.00"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.reference_material;"/>
+ <listcell>
+ <menulist id="reference_menu"/>
+ </listcell>
+ </listitem>
+ <listitem allowevents="true">
+ <listcell label="©.attr.opac_visible;"/>
+ <listcell>
+ <menulist id="opac_visible_menu"/>
+ </listcell>
+ </listitem>
+</listbox>
+
+<menulist id="opac_visible_menu">
+ <menupopup id="opac_visible_popup" command="cmd_apply">
+ <menuitem label="©.attr.opac_visible.yes;" value="1" selected="true"/>
+ <menuitem label="©.attr.opac_visible.no;" value="0"/>
+ </menupopup>
+</menulist>
+
+<menulist id="reference_menu">
+ <menupopup id="reference_popup" command="cmd_apply" >
+ <menuitem label="©.attr.reference_material.no;" value="0" selected="true"/>
+ <menuitem label="©.attr.reference_material.yes;" value="1"/>
+ </menupopup>
+</menulist>
+
+<menulist id="deposit_menu">
+ <menupopup id="deposit_popup" command="cmd_apply">
+ <menuitem label="©.attr.deposit.no;" value="0" selected="true"/>
+ <menuitem label="©.attr.deposit.yes;" value="1"/>
+ </menupopup>
+</menulist>
+
+<menulist id="circulate_menu">
+ <menupopup id="circulate_popup" command="cmd_apply">
+ <menuitem label="©.attr.circulate.yes;" value="1" selected="true"/>
+ <menuitem label="©.attr.circulate.no;" value="0"/>
+ </menupopup>
+</menulist>
+
+<menulist id="fine-level-menu">
+ <menupopup id="fine-level-popup" command="cmd_apply">
+ <menuitem label="©.attr.fine_level.normal;" value="2" selected="true"/>
+ <menuitem label="©.attr.fine_level.high;" value="3"/>
+ <menuitem label="©.attr.fine_level.low;" value="1"/>
+ </menupopup>
+</menulist>
+
+<menulist id="loan-duration-menu">
+ <menupopup id="loan-duration-popup" command="cmd_apply">
+ <menuitem label="©.attr.loan_duration.normal;" value="2" selected="true"/>
+ <menuitem label="©.attr.loan_duration.long;" value="3"/>
+ <menuitem label="©.attr.loan_duration.short;" value="1"/>
+ </menupopup>
+</menulist>
+
+<menulist id="circulating-library-menu">
+ <menupopup id="circulating-library-popup" command="cmd_apply">
+ </menupopup>
+</menulist>
+
+<menulist id="copy-status-menu">
+ <menupopup id="copy-status-popup" command="cmd_apply">
+ <!-- <menuitem label="©.attr.copy_status.example1;" value="©.attr.copy_status.example1;"/> -->
+ </menupopup>
+</menulist>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="copy_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+dump('loading marc.js\n');
+
+var character_measure = {};
+var tree;
+var meta;
+var backup_tree;
+
+function my_init() {
+ dump('Entering my_init() : ' + timer_elapsed('cat') + '\n');
+ dump('TESTING: marc.js: ' + mw.G['main_test_variable'] + '\n');
+
+ dump("DOC ID " + find_this_id + "\n" );
+
+ if (! params.import_tree ) {
+ tree = retrieve_record( find_this_id );
+ meta = retrieve_meta_record( find_this_id );
+ document.getElementById('meta_create_date').setAttribute('value',
+ meta.create_date().split('.')[0]
+ );
+ document.getElementById('meta_creator').setAttribute('value',
+ meta.creator()
+ );
+ document.getElementById('meta_edit_date').setAttribute('value',
+ meta.edit_date().split('.')[0]
+ );
+ document.getElementById('meta_editor').setAttribute('value',
+ meta.editor()
+ );
+ document.getElementById('meta_tcn_publisher').setAttribute('value',
+ meta.tcn_value()
+ );
+ var text = document.createTextNode(
+ record_columns[1] + ' / ' + record_columns[2]
+ );
+ document.getElementById('meta_title_author').appendChild(
+ text
+ );
+ } else {
+ tree = params.import_tree;
+ if (tree.name() == 'collection') {
+ tree = find_list(
+ tree.children(),
+ function (obj) {
+ return (obj.name() == 'record');
+ }
+ );
+ }
+ }
+ //dump('Retrieved: ' + js2JSON(tree) + '\n');
+ //dump('Retrieved: ' + js2JSON(meta) + '\n');
+ build_grid(
+ document.getElementById('ctrl_rows'),
+ document.getElementById('data_rows'),
+ tree
+ );
+ fixed_fields_show_only('fixed_grid','BKS');
+ apply_event_listeners('fixed_grid','fixed');
+ character_measure = measure_character('marc_win','M');
+ window.addEventListener('resize',my_resize_handler,false);
+ handle_tag_change();
+ document.getElementById('data_rows').firstChild.firstChild.firstChild.focus();
+ dump('Exiting my_init() : ' + timer_elapsed('cat') + '\n');
+}
+
+function measure_character(w,c) {
+ var el = document.getElementById(w);
+ var b = document.createElement('hbox');
+ var l = document.createElement('label');
+ l.setAttribute('class','marc');
+ el.appendChild(b);
+ b.appendChild(l);
+ var lwidth = l.boxObject.width;
+ l.value = c;
+ lwidth = Math.abs( l.boxObject.width - lwidth);
+ var lheight = l.boxObject.height;
+ b.removeChild(l); el.removeChild(b);
+ return { "width" : lwidth, "height" : lheight };
+}
+
+function my_resize_handler(ev) {
+ dump('resize\n');
+ resizeAllWrappers('ctrl_rows');
+ resizeAllWrappers('data_rows');
+}
+
+function retrieve_record(id) {
+ dump('Entering retrieve_record() : ' + timer_elapsed('cat') + '\n');
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.biblio.record.tree.retrieve',
+ [ id ]
+ );
+ //var result = [ JSON2js( test_nodeset() ) ];
+ /*var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.biblio.record.tree.retrieve.test',
+ [ id ]
+ );*/
+ if (typeof(result[0]) != 'object') {
+ alert( 'user_request gave ' + js2JSON(result) );
+ dump('Exiting retrieve_record() : ' + timer_elapsed('cat') + '\n');
+ return 0;
+ } else {
+ /*
+ dump('Entering nodeset2tree() : ' + timer_elapsed('cat') + '\n');
+ result[0] = nodeset2tree( result[0] )[0];
+ dump('Exiting nodeset2tree() : ' + timer_elapsed('cat') + '\n');
+ */
+ dump('Exiting retrieve_record() : ' + timer_elapsed('cat') + '\n');
+ return result[0];
+ }
+}
+
+function retrieve_meta_record(id) {
+ dump('Entering retrieve_meta_record() : ' + timer_elapsed('cat') + '\n');
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.biblio.record.metadata.retrieve',
+ [ id ]
+ );
+ if (typeof(result[0]) != 'object') {
+ alert( 'user_request gave ' + js2JSON(result) );
+ dump('Exiting retrieve_meta_record() : ' + timer_elapsed('cat') + '\n');
+ return 0;
+ } else {
+ dump('Exiting retrieve_meta_record() : ' + timer_elapsed('cat') + '\n');
+ return result[0][0];
+ }
+}
+
+
+
+function empty_me(p) {
+ while (p.lastChild) {
+ //dump('emptying ' + p.lastChild.tagName + '\n');
+ empty_me(p.lastChild);
+ p.removeChild(p.lastChild);
+ }
+}
+
+function empty_grid( ctrl_rows, data_rows ) {
+ var rows = document.getElementById(ctrl_rows);
+ empty_me(rows);
+ rows = document.getElementById(data_rows);
+ empty_me(rows);
+}
+
+function build_grid( ctrl_rows, data_rows, root ) {
+ dump('Entering build_grid() : ' + timer_elapsed('cat') + '\n');
+ var ctrl_count = 1; var data_count = 1;
+ //dump( 'what is root?\n' + pretty_print(js2JSON(root)) + '\n');
+ dump('root.children.length = ' + root.children.length + '\n');
+ root_loop:
+ var children = root.children();
+ for (var i in children) {
+ var node = children[i];
+ var node_type = node.node_type();
+ var row = {};
+ switch(node_type) {
+ case '18': /* namespace */
+ break;
+ case '1': /* element */
+ row = get_row(node);
+ switch(row.type) {
+ case 'leader': case 'controlfield':
+ populate_xul_row(
+ ctrl_rows,
+ row,
+ 'ctrl_' + ctrl_count++
+ );
+ break;
+ case 'datafield':
+ populate_xul_row(
+ data_rows,
+ row,
+ 'data_' + data_count++
+ );
+ break;
+ default:
+ dump('Unexpected row type: ' +
+ js2JSON(node) + '\n');
+ break;
+ }
+ break;
+ default: /* eh? */
+ dump( 'Did not expect node_type = ' + node_type +
+ ' : ' + js2JSON(node) + '\n');
+ break;
+ }
+ //dump( i + ' ' + dump_ns_node(node) + '\n');
+ }
+ dump('Exiting build_grid() : ' + timer_elapsed('cat') + '\n');
+}
+
+function get_row( top ) {
+ var row = {
+ 'field' : { 'id' : '1' },
+ 'tag' : { 'value' : '', 'id' : '-1' },
+ 'ind1' : { 'value' : '', 'id' : '-1' },
+ 'ind2' : { 'value' : '', 'id' : '-1' },
+ 'data' : { 'value' : '', 'id' : '-1' }
+ };
+ var name = top.name();
+ var id = top.intra_doc_id();
+ var children = top.children();
+ row.field.id = id;
+ dump('Making row.... row.field.id = <' + id + '>\n');
+ if (name == 'leader') { row.tag.value = 'LDR'; row.tag.id = id; }
+ row.type = name;
+ top_loop:
+ for (var i in children) {
+ var node = children[i];
+ var node_type = node.node_type();
+ var node_name = node.name();
+ var node_value = node.value();
+ var node_id = node.intra_doc_id();
+ var node_children = node.children();
+ switch(node_type) {
+ case '18': /* namespace */
+ continue top_loop;
+ case '2': /* attribute */
+ switch(node_name) {
+ case 'tag':
+ row.tag.value = node_value;
+ row.tag.id = node_id;
+ break;
+ case 'ind1':
+ row.ind1.value = node_value;
+ row.ind1.id = node_id;
+ break;
+ case 'ind2':
+ row.ind2.value = node_value;
+ row.ind2.id = node_id;
+ break;
+ default:
+ dump('\tattribute surprise on node_name = ' +
+ node_name + ' : '
+ + js2JSON(node) + '\n');
+ break;
+ }
+ break;
+ case '1': /* element */
+ switch(node_name) {
+ case 'subfield':
+ row.data.value = row.data.value +
+ String.fromCharCode(8225) +
+ node_children[0].value() + ' ' +
+ node_children[1].value() + ' ';
+ row.data.id = node_id;
+ break;
+ default:
+ dump('\telement surprise on node_name = ' +
+ node_name + ' : '
+ + js2JSON(node) + '\n');
+ break;
+ }
+ break;
+ case '3': /* textNode */
+ row.data.value = node_value;
+ row.data.id = node_id;
+ break;
+ default: /* eh? */
+ dump('\tunknown type surprise on node_type = ' +
+ node_type + ' : ' +
+ js2JSON(node) + '\n');
+ break;
+ }
+ }
+ //dump(js2JSON(row) + '\n');
+ return row;
+}
+
+function build_xul_row( id, type ) {
+ switch(type) {
+ case 'leader': case 'controlfield':
+ return build_ctrl_row( id );
+ break;
+ case 'datafield':
+ return build_data_row( id );
+ break;
+ default:
+ dump('Unexpected row type\n');
+ break;
+ }
+}
+
+function build_data_row( id ) {
+ //dump('Entering build_xul_row() : ' + timer_elapsed('cat') + '\n');
+ var xul_row = document.createElement('row');
+ xul_row.setAttribute('id',id);
+ xul_row.setAttribute('class','field_row data_row');
+ //xul_rows.appendChild(xul_row);
+
+ /* the elements in the row */
+ var wrapper1 = document.createElement('hbox');
+ wrapper1.setAttribute( 'class', 'marc_wrapper marc_tag_wrapper');
+ var xul_col1 = document.createElement('textbox');
+ xul_col1.setAttribute( 'cols', '3');
+ xul_col1.setAttribute( 'rows', '1');
+ xul_col1.setAttribute( 'multiline', 'true');
+ xul_col1.setAttribute( 'size', '3');
+ xul_col1.setAttribute( 'class', 'marc marc_tag');
+ wrapper1.appendChild(xul_col1);
+ xul_row.appendChild(wrapper1);
+ var wrapper2 = document.createElement('hbox');
+ wrapper2.setAttribute( 'class', 'marc_wrapper marc_ind_wrapper marc_ind1_wrapper');
+ var xul_col2 = document.createElement('textbox');
+ xul_col2.setAttribute( 'cols', '1');
+ xul_col2.setAttribute( 'rows', '1');
+ xul_col2.setAttribute( 'multiline', 'true');
+ xul_col2.setAttribute( 'size', '1');
+ xul_col2.setAttribute( 'class', 'marc marc_ind marc_ind1');
+ wrapper2.appendChild(xul_col2);
+ xul_row.appendChild(wrapper2);
+ var wrapper3 = document.createElement('hbox');
+ wrapper3.setAttribute( 'class', 'marc_wrapper marc_ind_wrapper marc_ind2_wrapper');
+ var xul_col3 = document.createElement('textbox');
+ xul_col3.setAttribute( 'cols', '1');
+ xul_col3.setAttribute( 'rows', '1');
+ xul_col3.setAttribute( 'multiline', 'true');
+ xul_col3.setAttribute( 'size', '1');
+ xul_col3.setAttribute( 'class', 'marc marc_ind marc_ind2');
+ wrapper3.appendChild(xul_col3);
+ xul_row.appendChild(wrapper3);
+ var wrapper4 = document.createElement('hbox');
+ wrapper4.setAttribute( 'class', 'marc_wrapper marc_data_wrapper');
+ var xul_col4 = document.createElement('textbox');
+ xul_col4.setAttribute( 'subfields', 'true');
+ xul_col4.setAttribute( 'cols', '60');
+ xul_col4.setAttribute( 'size', '60');
+ xul_col4.setAttribute( 'rows', '1');
+ xul_col4.setAttribute( 'multiline', 'true');
+ xul_col4.setAttribute( 'class', 'marc marc_data resizable');
+ xul_col4.setAttribute( 'flex', '1');
+ wrapper4.appendChild(xul_col4);
+ xul_row.appendChild(wrapper4);
+
+ return xul_row;
+ //dump('Exiting build_xul_row() : ' + timer_elapsed('cat') + '\n');
+}
+
+function build_ctrl_row( id ) {
+ //dump('Entering build_xul_row() : ' + timer_elapsed('cat') + '\n');
+ var xul_row = document.createElement('row');
+ xul_row.setAttribute('class','field_row ctrl_row');
+ xul_row.setAttribute('id',id);
+ //xul_rows.appendChild(xul_row);
+
+ /* the elements in the row */
+ var wrapper1 = document.createElement('hbox');
+ wrapper1.setAttribute( 'class', 'marc_wrapper marc_tag_wrapper ctrl_wrapper');
+ var xul_col1 = document.createElement('textbox');
+ xul_col1.setAttribute( 'cols', '3');
+ xul_col1.setAttribute( 'rows', '1');
+ xul_col1.setAttribute( 'multiline', 'true');
+ xul_col1.setAttribute( 'size', '3');
+ xul_col1.setAttribute( 'class', 'marc marc_tag ctrl');
+ xul_col1.setAttribute( 'disabled', 'true');
+ wrapper1.appendChild(xul_col1);
+ xul_row.appendChild(wrapper1);
+ var wrapper4 = document.createElement('hbox');
+ wrapper4.setAttribute( 'class', 'marc_wrapper marc_data_wrapper ctrl_wrapper');
+ var xul_col4 = document.createElement('textbox');
+ xul_col4.setAttribute( 'cols', '60');
+ xul_col4.setAttribute( 'size', '60');
+ xul_col4.setAttribute( 'rows', '1');
+ xul_col4.setAttribute( 'multiline', 'true');
+ xul_col4.setAttribute( 'class', 'marc marc_data ctrl');
+ xul_col4.setAttribute( 'flex', '1');
+ xul_col4.setAttribute( 'disabled', 'true');
+ wrapper4.appendChild(xul_col4);
+ xul_row.appendChild(wrapper4);
+
+ return xul_row;
+ //dump('Exiting build_xul_row() : ' + timer_elapsed('cat') + '\n');
+}
+
+
+function apply_event_listeners(c,which) {
+ switch(which) {
+ case 'ctrl':
+ break;
+ case 'data':
+ c[0].firstChild.addEventListener("change",handle_tag_change,false);
+ c[0].firstChild.addEventListener("keypress",handle_keypress,false);
+ c[1].firstChild.addEventListener("keypress",handle_keypress,false);
+ c[1].firstChild.addEventListener("change",handle_tag_change,false);
+ c[2].firstChild.addEventListener("keypress",handle_keypress,false);
+ c[2].firstChild.addEventListener("change",handle_tag_change,false);
+ c[3].firstChild.addEventListener("keypress",handle_keypress,false);
+ c[3].firstChild.addEventListener("change",handle_tag_change,false);
+ c[3].firstChild.addEventListener("change",handle_change,false);
+ break;
+ case 'fixed':
+ var g = document.getElementById(c);
+ var nl = g.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ nl[i].addEventListener("change",handle_fixed_change,false);
+ }
+ }
+ break;
+ }
+}
+
+function populate_xul_row( xul_rows, row, id ) {
+
+ var r = document.getElementById(id);
+ if (!r) {
+ r = build_xul_row(id,row.type);
+ xul_rows.appendChild(r);
+ //r = document.getElementById(id);
+ }
+ r.setAttribute('notempty','true');
+ r.setAttribute('mynode',row.field.id);
+ var c = r.childNodes;
+ switch(row.type) {
+ case 'leader': case 'controlfield':
+ c[0].firstChild.value = row.tag.value;
+ c[0].firstChild.select();
+ c[0].firstChild.setAttribute('mynode', row.tag.id);
+ c[1].firstChild.value = row.data.value;
+ c[1].firstChild.select();
+ c[1].firstChild.setAttribute('mynode', row.data.id);
+ apply_event_listeners(c,'ctrl');
+ break;
+ case 'datafield':
+ c[0].firstChild.value = row.tag.value;
+ c[0].firstChild.select();
+ c[0].firstChild.setAttribute('mynode', row.tag.id);
+ c[1].firstChild.value = row.ind1.value;
+ c[1].firstChild.select();
+ c[1].firstChild.setAttribute('mynode', row.ind1.id);
+ c[2].firstChild.value = row.ind2.value;
+ c[2].firstChild.select();
+ c[2].firstChild.setAttribute('mynode', row.ind2.id);
+ c[3].firstChild.value = row.data.value;
+ c[3].firstChild.select();
+ c[3].firstChild.setAttribute('mynode', row.data.id);
+ apply_event_listeners(c,'data');
+ break;
+ }
+ //resizeWrapper(c3);
+}
+
+function handle_change(ev) {
+ dump('handle_change\n');
+ var t = ev.target;
+ // parse subfields
+ resizeWrapper(t);
+}
+
+function resizeWrapper(t) {
+ if (t.tagName != 'textbox') { return; }
+ var wrapper = t.parentNode;
+ var width = wrapper.boxObject.width;
+ var height = wrapper.boxObject.height;
+
+ /*var lwidth = character_measure.width * t.value.length; // linux */
+ var lwidth = (character_measure.width*2+5) * t.value.length; // windows
+ var lheight = character_measure.height;
+
+ if (width == 0) { width = lwidth; }
+ var xrows = Math.ceil( lwidth / width );
+ if (xrows < 1) { xrows = 1; }
+ var xheight = (xrows * (lheight+5));
+
+ //dump(wrapper.parentNode.id + ' wrapper: ' + width + 'x' + height + ' label: ' + lwidth + 'x' + lheight + '\n');
+ wrapper.setAttribute('style','min-height: ' + xheight + 'px;');
+}
+
+function resizeAllWrappers(rows) {
+ dump('Entering resizeAllWrappers() : ' + timer_elapsed('cat') + '\n');
+ var p = document.getElementById(rows);
+ var c = p.childNodes;
+ for (var r in c) {
+ if (typeof(c[r])=='object') {
+ if (c[r].getAttribute('notempty')) {
+ resizeWrapper(c[r].lastChild.firstChild);
+ } else {
+ p.removeChild(c[r]);
+ }
+ }
+ }
+ dump('Exiting resizeAllWrappers() : ' + timer_elapsed('cat') + '\n');
+}
+
+function find_element_with_id(ns_slice,id) {
+ // we might change this in the future to be a hash lookup
+ // { node id => [lvl 1 index, lvl 2 index, lvl 3 index] }
+ // with the hash being populated when the tree is generated
+ // and updated when we go to insert nodes
+ //dump('Find ' + id + ' in ' + js2JSON(ns_slice) + '\n');
+ //dump('Find ' + id + '\n');
+ for (i in ns_slice) {
+ if (ns_slice[i].intra_doc_id() == id) {
+ //dump('Found at index ' + i + '\n');
+ return i;
+ }
+ }
+ dump(id + 'not found in' + js2JSON(ns_slice) + '\n');
+}
+
+function delete_children(branch) {
+ var children = branch.children();
+ for (var c in children) {
+ children[c].isdeleted(1);
+ dump( children[c].name() + ':' +
+ children[c].id() + ':' +
+ children[c].intra_doc_id() + '.is_deleted = 1\n');
+ if (children[c].children()) {
+ delete_children(children[c]);
+ }
+ }
+}
+
+function submit_marc() {
+ // walk through the marc grid and compare with the tree
+ // 1) updates and deletes
+
+dump('Updates and Deletes\n');
+ backup_tree = JSON2js( js2JSON( tree ) );
+
+ var tree_fields = tree.children(); // LEVEL 1
+ var ctrl_rows = document.getElementById('ctrl_rows').childNodes;
+ for (var r = 0; r < ctrl_rows.length ; r++) {
+ //if (r == 0) { continue; } // skip leader for now
+ //dump( r + '\n');
+ var tag_node_id;
+ try {
+ tag_node_id = ctrl_rows[r].getAttribute('mynode');
+ } catch(E) {
+ dump('Could not find mynode in ctrl_rows[' + r + ']\n');
+ continue;
+ }
+ //dump( r + ':' + ctrl_rows[r].tagName + ':' + tag_node_id + '\n' );
+ if (tag_node_id) {
+dump('Processing ctrl_rows[' + r + '], tag_node_id = ' + tag_node_id + '\n');
+ if (tag_node_id < 0) { continue; } // new node, handle elsewhere
+dump('1st find =========================================\n')
+ var tree_pos = find_element_with_id(tree_fields,tag_node_id);
+ if (tree_pos == null) { alert('tree_pos problem!'); }
+ var tree_field = tree_fields[tree_pos];
+
+ if (ctrl_rows[r].getAttribute('hidden') == 'true') {
+ tree_field.isdeleted(1);
+ dump( tree_field.name() + ':' +
+ tree_field.id() + ':' +
+ tree_field.intra_doc_id() + '.isdeleted = 1\n');
+ delete_children(tree_field);
+ continue;
+ }
+
+ var col1 = ctrl_rows[r].childNodes[0].firstChild;
+ var col2 = ctrl_rows[r].childNodes[1].firstChild;
+ var id1 = col1.getAttribute('mynode');
+ var id2 = col2.getAttribute('mynode');
+ dump('id1 = ' + id1 + ' col1.value = ' + col1.value + ' id2 = ' + id2 + ' col2.value = ' + col2.value + '\n');
+ var tree_field_children = tree_field.children(); // LEVEL 2
+
+ if (r == 0) { // leader is special. Only one child
+ if (tree_field_children[0].value() != col2.value) {
+ tree_field_children[0].value(col2.value);
+ tree_field_children[0].ischanged(1);
+ dump( tree_field_children[0].name() + ':' +
+ tree_field_children[0].id() + ':' +
+ tree_field_children[0].intra_doc_id() +
+ '.ischanged = 1\n');
+ }
+ continue;
+ }
+
+dump('2nd find =========================================\n')
+ var tree_tag = find_element_with_id(tree_field_children,id1);
+dump('3rd find =========================================\n')
+ var tree_value = find_element_with_id(tree_field_children,id2);
+ if (tree_tag == null) { alert('tree_tag problem!'); }
+ if (tree_value == null) { alert('tree_value problem!'); }
+ if (tree_field_children[tree_tag].value() != col1.value) {
+ tree_field_children[tree_tag].value(col1.value);
+ tree_field_children[tree_tag].ischanged(1);
+ dump( tree_field_children[tree_tag].name() + ':' +
+ tree_field_children[tree_tag].id() + ':' +
+ tree_field_children[tree_tag].intra_doc_id() +
+ '.ischanged = 1\n');
+ }
+ if (tree_field_children[tree_value].value() != col2.value) {
+ tree_field_children[tree_value].value(col2.value);
+ tree_field_children[tree_value].ischanged(1);
+ dump( tree_field_children[tree_value].name() + ':' +
+ tree_field_children[tree_value].id() + ':' +
+ tree_field_children[tree_value].intra_doc_id() +
+ '.ischanged = 1\n');
+ }
+ }
+ }
+ var data_rows = document.getElementById('data_rows').childNodes;
+ for (var r = 0; r < data_rows.length ; r++ ) {
+ var tag_node_id;
+ try {
+ tag_node_id = data_rows[r].getAttribute('mynode');
+ } catch(E) {
+ continue;
+ }
+ //dump( r + ':' + data_rows[r].tagName + ':' + tag_node_id + '\n' );
+ if (tag_node_id) {
+dump('Processing data_rows[' + r + '], tag_node_id = ' + tag_node_id + '\n');
+ if (tag_node_id < 0) { continue; } // new node, handle elsewhere
+dump('4th find =========================================\n')
+ var tree_pos = find_element_with_id(tree_fields,tag_node_id);
+ if (tree_pos == null) { alert('tree_pos problem!'); }
+ var tree_field = tree_fields[tree_pos];
+
+ if (data_rows[r].getAttribute('hidden') == 'true') {
+ tree_field.isdeleted(1);
+ dump(tree_field.name() + ':' +
+ tree_field.id() + ':' +
+ tree_field.intra_doc_id() +
+ '.isdeleted = 1\n');
+ delete_children(tree_field);
+ continue;
+ }
+
+ var col1 = data_rows[r].childNodes[0].firstChild;
+ var col2 = data_rows[r].childNodes[1].firstChild;
+ var col3 = data_rows[r].childNodes[2].firstChild;
+ var col4 = data_rows[r].childNodes[3].firstChild;
+ var id1 = col1.getAttribute('mynode');
+ var id2 = col2.getAttribute('mynode');
+ var id3 = col3.getAttribute('mynode');
+ var id4 = col4.getAttribute('mynode');
+ var tree_field_children = tree_field.children(); // LEVEL 2
+dump('5th find =========================================\n')
+ var tree_tag = find_element_with_id(tree_field_children,id1);
+dump('6th find =========================================\n')
+ var tree_ind1 = find_element_with_id(tree_field_children,id2);
+dump('7th find =========================================\n')
+ var tree_ind2 = find_element_with_id(tree_field_children,id3);
+dump('8th find =========================================\n')
+ var tree_data = find_element_with_id(tree_field_children,id4);
+ if (tree_tag == null) { alert('tree_tag problem!'); }
+ if (tree_ind1 == null) { alert('tree_ind1 problem!'); }
+ if (tree_ind2 == null) { alert('tree_ind2 problem!'); }
+ if (tree_data == null) { alert('tree_data problem!'); }
+ if (tree_field_children[tree_tag].value() != col1.value) {
+ tree_field_children[tree_tag].value(col1.value);
+ tree_field_children[tree_tag].ischanged(1);
+ dump( tree_field_children[tree_tag].name() + ':' +
+ tree_field_children[tree_tag].id() + ':' +
+ tree_field_children[tree_tag].intra_doc_id() +
+ '.is_changed = 1\n');
+ }
+ if (tree_field_children[tree_ind1].value() != col2.value) {
+ tree_field_children[tree_ind1].value(col2.value);
+ tree_field_children[tree_ind1].ischanged(1);
+ dump( tree_field_children[tree_ind1].name() + ':' +
+ tree_field_children[tree_ind1].id() + ':' +
+ tree_field_children[tree_ind1].intra_doc_id() +
+ '.is_changed = 1\n');
+ }
+ if (tree_field_children[tree_ind2].value() != col3.value) {
+ tree_field_children[tree_ind2].value(col3.value);
+ tree_field_children[tree_ind2].ischanged(1);
+ dump( tree_field_children[tree_ind2].name() + ':' +
+ tree_field_children[tree_ind2].id() + ':' +
+ tree_field_children[tree_ind2].intra_doc_id() +
+ '.is_changed = 1\n');
+ }
+ process_subfields(tree_field_children,col4.value); // LEVEL 3
+ }
+ }
+
+
+ // 2) inserts
+dump('Inserts\n');
+
+ for (var r = 0; r < ctrl_rows.length ; r++) {
+ var newnode;
+ try {
+ newnode = ctrl_rows[r].getAttribute('newnode');
+ } catch(E) {
+ continue;
+ }
+ if (newnode=='true') {
+dump('New node = ctrl_rows[' + r + ']');
+ if (ctrl_rows[r].getAttribute('hidden')=='true') { continue; }
+ var col1 = ctrl_rows[r].childNodes[0].firstChild.value;
+ var col2 = ctrl_rows[r].childNodes[1].firstChild.value;
+ var level1 = new brn();
+ populate_node( level1, 1, 'controlfield' );
+ var level2a = new brn();
+ populate_node( level2a, 2, 'tag' );
+ level2a.value(col1);
+ var level2b = new brn();
+ populate_node( level2b, 3, null );
+ level2b.value(col2);
+ level1.children([ level2a, level2b ]);
+ ctrl_rows[r].setAttribute('mynode', level1.intra_doc_id());
+dump(' with intra_doc_id = ' + level1.intra_doc_id() + '\n');
+ insert_into_tree(tree.children(),ctrl_rows[r],level1);
+ }
+ }
+
+ for (var r = 0; r < data_rows.length ; r++) {
+ var newnode;
+ try {
+ newnode = data_rows[r].getAttribute('newnode');
+ } catch(E) {
+ continue;
+ }
+ if (newnode=='true') {
+dump('New node = data_rows[' + r + ']');
+ if (data_rows[r].getAttribute('hidden')=='true') { continue; }
+ var col1 = data_rows[r].childNodes[0].firstChild.value;
+ var col2 = data_rows[r].childNodes[1].firstChild.value;
+ var col3 = data_rows[r].childNodes[2].firstChild.value;
+ var col4 = data_rows[r].childNodes[3].firstChild.value;
+ var level1 = new brn();
+ populate_node( level1, 1, 'datafield' );
+ var level2a = new brn();
+ populate_node( level2a, 2, 'tag' );
+ level2a.value(col1);
+ var level2b = new brn();
+ populate_node( level2b, 2, 'ind1' );
+ level2b.value(col2);
+ var level2c = new brn();
+ populate_node( level2c, 2, 'ind2' );
+ level2c.value(col3);
+ level1.children([ level2a, level2b, level2c ]);
+ process_subfields(level1.children(),col4);
+ data_rows[r].setAttribute('mynode', level1.intra_doc_id());
+dump(' with intra_doc_id = ' + level1.intra_doc_id() + '\n');
+ insert_into_tree(tree.children(),data_rows[r],level1);
+ }
+
+ }
+ //dump('******\nSending: ' + pretty_print(js2JSON(tree)) + '\n');
+ dump('Auth session: ' + mw.G['auth_ses'][0] + '\n');
+ try {
+ if (params.import_tree) {
+ tree = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.biblio.record.tree.import',
+ [ mw.G['auth_ses'][0], tree ]
+ )[0];
+
+ } else {
+ tree = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.biblio.record.tree.commit',
+ [ mw.G['auth_ses'][0], tree ]
+ )[0];
+ }
+ if (typeof(tree) == 'object') {
+ dump('\n\n\n\nnew tree = ' + js2JSON(tree) + '\n');
+ params.import_tree = false;
+ new_node_id = -1;
+ empty_grid('ctrl_rows','data_rows');
+ build_grid(
+ document.getElementById('ctrl_rows'),
+ document.getElementById('data_rows'),
+ tree
+ );
+ handle_tag_change();
+ my_resize_handler();
+ alert('MARC record successfully updated.');
+ } else {
+ throw('result: ' + tree + '\n');
+ }
+ } catch(E) {
+ dump('backup_tree\n');
+ tree = backup_tree;
+ handle_tag_change();
+ my_resize_handler();
+ handle_error(E);
+ }
+}
+
+function insert_into_tree(branch,r,n) {
+ var s = nextSibling_not_hidden(r);
+ if (s) {
+ dump('9th find =========================================\n')
+ dump('s = ' + s + '\n');
+ dump('s.getAttribute mynode = <' + s.getAttribute('mynode') + '>\n');
+ var pos = find_element_with_id(branch,s.getAttribute('mynode'));
+ branch.splice(pos,0,n);
+ } else {
+ branch.push(n);
+ }
+}
+
+var new_node_id = -1;
+function populate_node(node,ntype,name) {
+ node.intra_doc_id( new_node_id-- );
+ node.isnew( 1 );
+ node.node_type( ntype );
+ node.name( name );
+ dump( node.name() + ':' + node.intra_doc_id() + '.is_new = 1\n');
+}
+
+function process_subfields(tfc,datastring) {
+ dump('process_subfields: <' + tfc + '> <' + datastring + '>\n');
+ var orig_subfields = [];
+ //dump('\n');
+ for (var i in tfc) {
+ dump(i + ' : ' + typeof(tfc[i]) + ' : ' + js2JSON(tfc[i]) + ' : node_type() = ' + tfc[i].node_type() + '\n');
+ try {
+ if (tfc[i].node_type() == 1) {
+ var orig_data = tfc[i].children()[1].value();
+ orig_data = orig_data.replace(/^\s+/,'').replace(/\s+$/,'');
+ orig_subfields.push( [
+ i, // subfield node index
+ tfc[i].children()[0].value(), // subf indicator
+ orig_data // data
+ ] );
+ }
+
+ } catch(E) {
+ dump('\tan error? gasp: ' + js2JSON(E) + '\n');
+ continue;
+ }
+ }
+ datastring = datastring.replace(/^\s+/,'').replace(/\s+$/,'');
+ var local_subf_array = datastring.split(String.fromCharCode(8225));
+ // Our validation routines should assert that the beginning of
+ // a data string start with the subfield delimiter symbol. We're
+ // passing the buck of the 'implicit' subfield-a check elsewhere.
+ local_subf_array.shift();
+ dump('orig_subfields = ' + js2JSON(orig_subfields) + '\n');
+ dump('local_subfields = ' + js2JSON(local_subf_array) + '\n');
+ for (var i in local_subf_array) {
+ if ((local_subf_array[i]=='')||(local_subf_array==null)) { continue; }
+ var s_ind = local_subf_array[i].substr(0,1);
+ var s_data = local_subf_array[i].substr(1).replace(/^\s+/,'').replace(/\s+$/,'');
+ dump('Processing code = ' + s_ind + ' and value = ' + s_data + '\n');
+ if (!orig_subfields[i]) { // new subfield
+ dump('making new subfield : i = ' + i + '\n');
+ var level1 = new brn();
+ populate_node( level1, 1, 'subfield' );
+ var level2a = new brn();
+ populate_node( level2a, 2, 'code' );
+ level2a.value(s_ind);
+ var level2b = new brn();
+ populate_node( level2b, 3, null );
+ level2b.value(s_data);
+ level1.children([ level2a, level2b ]);
+ tfc.push(level1);
+ dump('New node = ' + js2JSON(level1) + '\n');
+ } else {
+ var orig_node = orig_subfields[i][0];
+ var orig_ind = orig_subfields[i][1];
+ var orig_data = orig_subfields[i][2];
+ if (orig_ind != s_ind) { // update subf indicator
+ tfc[orig_node].children()[0].value(s_ind);
+ tfc[orig_node].children()[0].ischanged(1);
+ dump( tfc[orig_node].children()[0].name() + ':' +
+ tfc[orig_node].children()[0].id() + ':' +
+ tfc[orig_node].children()[0].intra_doc_id() +
+ '.is_changed = 1\n');
+ dump('Updated node = ' + js2JSON(tfc[orig_node].children()[0]) + '\n');
+ }
+ if (orig_data != s_data) { // update subf data
+ tfc[orig_node].children()[1].value(s_data);
+ tfc[orig_node].children()[1].ischanged(1);
+ dump( tfc[orig_node].children()[1].name() + ':' +
+ tfc[orig_node].children()[1].id() + ':' +
+ tfc[orig_node].children()[1].intra_doc_id() +
+ '.is_changed = 1\n');
+ dump('Updated node = ' + js2JSON(tfc[orig_node].children()[1]) + '\n');
+ }
+ }
+ }
+ // delete any remaining
+ for (var i = local_subf_array.length; i < orig_subfields.length; i++) {
+ var orig_node = orig_subfields[i][0];
+ tfc[orig_node].isdeleted(1);
+ dump( tfc[orig_node].name() + ':' +
+ tfc[orig_node].id() + ':' +
+ tfc[orig_node].intra_doc_id() + '.is_deleted = 1\n');
+ delete_children(tfc[orig_node]);
+ }
+}
+
+
+
+function test_nodeset() {
+ return null;
+}
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's MARC Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/marc.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE window SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<window id="marc_win" title="&cat.title;"
+ orient="vertical" style="overflow: scroll"
+ width="800" height="600" persist="width height"
+ onload="
+ dump('start onload: ' + timer_elapsed('cat') + '\n');
+ my_init();
+ dump('end onload: ' + timer_elapsed('cat') + '\n');
+ "
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/marc_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <script src="chrome://evergreen/content/util/util.js" />
+ <script>timer_init('cat');</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="marc_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="marc_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="marc_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="marc_vbox" class="test_class"/>
+
+</window>
+
--- /dev/null
+function pad_fixed(value,field) {
+ var padding = '';
+ if (field == '008') {
+ for (var i = value.length; i<40; i++) {
+ padding = padding + ' ';
+ }
+ } else if (field == 'LDR') {
+ for (var i = value.length; i<24; i++) {
+ padding = padding + ' ';
+ }
+ }
+ return padding;
+}
+
+
+function handle_fixed_change(ev) {
+ dump('Entering handle_fixed_change\n');
+ if (ev.target.tagName != 'textbox') { dump('early exit\n'); return; }
+ var t = ev.target;
+ var field = t.getAttribute('field');
+ var spos = t.getAttribute('spos');
+ var epos = t.getAttribute('epos');
+ var size = t.getAttribute('size');
+ if ( (epos - spos + 1) != size ) {
+ dump('Invalid fixed field DTD: field='+field+' spos='+spos+
+ ' epos='+epos+' size='+size+'\n');
+ alert('Invalid fixed field DTD: field='+field+' spos='+spos+
+ ' epos='+epos+' size='+size+'\n');
+ }
+ if (t.value.length > size) {
+ t.value = t.value.substr(0,size);
+ } else if (t.value.length < size) {
+ var padding = '';
+ for (var i = 0; i<(size-t.value.length); i++) {
+ padding = padding + ' ';
+ }
+ t.value = t.value + padding;
+ }
+ var fixed = find_textbox('ctrl_rows', field);
+ //dump('length of fixed: ' + fixed.value.length + '\n');
+ fixed.value = fixed.value + pad_fixed(fixed.value,field);
+ dump('length of fixed: ' + fixed.value.length + '\n');
+
+ //dump('field='+field+' spos='+spos+' epos='+epos+' size='+size+' t="'+t.value+'"\n');
+ dump('replacing "'+fixed.value+'"\n');
+ fixed.value = fixed.value.substr(0,spos) + t.value + fixed.value.substr(1+Number(epos));
+ dump(' with "'+fixed.value+'"\n');
+}
+
+function find_textbox(where, field) {
+ var rows = document.getElementById(where).childNodes;
+ var ideal_sibling;
+ for (var r in rows) {
+ if (typeof(rows[r])=='object') {
+ //dump(r + ':' + rows[r] + '\n');
+ var t = rows[r].childNodes[0].firstChild;
+ if (t.value == field) {
+ return rows[r].childNodes[1].firstChild;
+ } else if (t.value < field) {
+ ideal_sibling = rows[r];
+ }
+ }
+ }
+ var new_r = build_ctrl_row('ctrl_' + new_row_id--);
+ new_r.setAttribute('notempty','true');
+ new_r.setAttribute('newnode','true');
+ if (ideal_sibling.nextSibling) {
+ rows.insertBefore(new_r,ideal_sibling.nextSibling);
+ } else {
+ rows.appendChild(new_r);
+ }
+ new_r.childNodes[0].firstChild.value = field;
+ new_r.childNodes[1].firstChild.value = padding;
+ return new_r.childNodes[1].firstChild;
+}
+
+function fixed_fields_update_all(grid) {
+ var g = document.getElementById(grid);
+ var nl = g.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ var t = nl[i];
+ var field = t.getAttribute('field');
+ var spos = t.getAttribute('spos');
+ var epos = t.getAttribute('epos');
+ var size = t.getAttribute('size');
+ var data = find_textbox('ctrl_rows',field);
+ data.value = data.value + pad_fixed(data.value,field);
+ t.value = data.value.substr(spos,size);
+ }
+ }
+}
+
+
+function fixed_fields_hide_all(grid) {
+ var g = document.getElementById(grid);
+ var nl = g.getElementsByTagName('label');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ nl[i].setAttribute('hidden','true');
+ }
+ }
+ nl = g.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ nl[i].setAttribute('hidden','true');
+ }
+ }
+}
+
+function fixed_fields_show_all(grid) {
+ var g = document.getElementById(grid);
+ var nl = g.getElementsByTagName('label');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ nl[i].setAttribute('hidden','false');
+ }
+ }
+ nl = g.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ nl[i].setAttribute('hidden','false');
+ }
+ }
+}
+
+function fixed_fields_show_only(grid,attr) {
+ fixed_fields_hide_all(grid);
+ fixed_fields_update_all(grid);
+ var g = document.getElementById(grid);
+ var nl = g.getElementsByTagName('label');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ if (nl[i].getAttribute(attr) == 'true') {
+ nl[i].setAttribute('hidden','false');
+ }
+ }
+ }
+ nl = g.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ if (nl[i].getAttribute(attr) == 'true') {
+ nl[i].setAttribute('hidden','false');
+ }
+ }
+ }
+}
+
+
--- /dev/null
+function handle_keyup(ev) {
+ if (ev.target.tagName != 'textbox') { return; }
+ //dump('keyCode:' + ev.keyCode + ' charCode:' + ev.charCode + ' shift:' + ev.shiftKey + ' ctrl:' + ev.ctrlKey + ' meta:' + ev.metaKey + '\n');
+ resizeWrapper(ev.target);
+}
+
+function handle_keypress(ev) {
+ dump('keyCode:' + ev.keyCode + ' charCode:' + ev.charCode + ' shift:' + ev.shiftKey + ' ctrl:' + ev.ctrlKey + ' meta:' + ev.metaKey + '\n');
+ if (ev.target.tagName != 'textbox') { return; }
+ var rstatus = false;
+ if (ev.charCode) {
+ switch(ev.charCode) {
+ case 100:
+ if (ev.ctrlKey) { /* control+d */
+ rstatus = handle_key_c_d(ev);
+ }
+ break;
+ }
+ } else if (ev.keyCode) {
+ switch(ev.keyCode) {
+ case 13: /* enter */
+ case 77: /* mac enter */
+ rstatus = handle_key_enter(ev);
+ break;
+ case 46:
+ if (ev.ctrlKey) { /* control+del */
+ rstatus = handle_key_c_del(ev);
+ }
+ break;
+ case 9:
+ if (ev.shiftKey) { /* shift+tab */
+ rstatus = navigate_col_left(ev.target,true);
+ } else { /* tab */
+ rstatus = navigate_col_right(ev.target,true);
+ }
+ break;
+ }
+ }
+ resizeWrapper(ev.target);
+ if (rstatus) {
+ ev.preventDefault();
+ }
+ return rstatus;
+}
+
+function handle_key_c_d(ev) {
+ if (ev.target.tagName != 'textbox') { return; }
+ var t = ev.target;
+ if ((ev.ctrlKey)&&(ev.charCode==100)&&(t.getAttribute('subfields')=='true')) {
+ var n_ev = document.createEvent("KeyEvents");
+ if (n_ev) { /* the best way... fake a keypress */
+ n_ev.initKeyEvent("keypress", 1, 1, null, 0, 0, 0, 0, 0, 8225);
+ t.inputField.dispatchEvent(n_ev);
+ } else { /* this destroys the widget's undo buffer */
+ var s_start = t.selectionStart; var s_end = t.selectionEnd;
+ var first_half = t.value.substr(0,s_start);
+ var second_half = t.value.substr(s_end);
+ t.value = first_half + String.fromCharCode(8225) + second_half;
+ t.setSelectionRange(s_start+1,s_start+1);
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function handle_key_c_del(ev) {
+ // rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
+ if (ev.target.tagName != 'textbox') { return; }
+ var t = ev.target;
+ var r = t.parentNode.parentNode;
+ if ((ev.ctrlKey)&&(ev.keyCode==46)) {
+ r.setAttribute('hidden','true');
+ handle_tag_change(ev);
+ if (! navigate_row_down(t,which_col_am_i(t),false) ) {
+ navigate_row_up(t,which_col_am_i(t),false);
+ dump("let's go up\n");
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+var new_row_id = -1;
+function handle_key_enter(ev) {
+ // rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
+ if (ev.target.tagName != 'textbox') { return; }
+ var t = ev.target;
+ if ((ev.keyCode == 13) || (ev.keyCode == 77)) {
+ if (ev.ctrlKey) { // add new row
+ var new_r = build_data_row('data_' + new_row_id--);
+ new_r.setAttribute('notempty','true');
+ new_r.setAttribute('newnode','true');
+ var w = t.parentNode;
+ var r = w.parentNode;
+ var rows = r.parentNode;
+ var sibling_row;
+ if (ev.shiftKey) {
+ sibling_row = r;
+ } else {
+ sibling_row = r.nextSibling;
+ }
+ if (sibling_row) {
+ rows.insertBefore(new_r,sibling_row);
+ } else {
+ rows.appendChild(new_r);
+ }
+ var c = new_r.childNodes;
+ apply_event_listeners(c,'data');
+ c[1].firstChild.value = ' '; // indicator 1
+ c[2].firstChild.value = ' '; // indicator 2
+ c[0].firstChild.focus();
+ return true;
+ } else { // move to next row
+ navigate_row_down(t,which_col_am_i(t),true);
+ return true;
+ }
+ } else {
+ return false;
+ }
+}
+
+function which_col_am_i(t) {
+ var r = t.parentNode.parentNode;
+ for (var i in r.childNodes) {
+ if (t == r.childNodes[i].firstChild) {
+ return i;
+ }
+ }
+}
+
+function nextSibling_not_hidden(e) {
+ var s = e.nextSibling;
+ while ((s)&&(s.getAttribute('hidden')=='true')) {
+ s = s.nextSibling;
+ }
+ return s;
+}
+
+function previousSibling_not_hidden(e) {
+ var s = e.previousSibling;
+ while ((s)&&(s.getAttribute('hidden')=='true')) {
+ s = s.previousSibling;
+ }
+ return s;
+}
+
+function navigate_row_down(t,c,wrap) {
+ // rows -> row (r) -> wrapper -> textbox (t)
+ var r = t.parentNode.parentNode;
+ var sibling_row = nextSibling_not_hidden(r);
+ if (sibling_row) {
+ sibling_row.childNodes[c].firstChild.focus();
+ if (c == 0) {
+ sibling_row.childNodes[c].firstChild.select();
+ }
+ } else {
+ if (wrap) {
+ r.parentNode.firstChild.childNodes[c].firstChild.focus();
+ } else {
+ return false;
+ }
+ }
+ return true;
+}
+
+function navigate_row_up(t,c,wrap) {
+ // rows -> row (r) -> wrapper -> textbox (t)
+ var r = t.parentNode.parentNode;
+ var sibling_row = previousSibling_not_hidden(r);
+ if (sibling_row) {
+ sibling_row.childNodes[c].firstChild.focus();
+ } else {
+ if (wrap) {
+ r.parentNode.lastChild.childNodes[c].firstChild.focus();
+ } else {
+ return false;
+ }
+ }
+ return true;
+}
+
+function navigate_col_left(t,wrap) {
+ // rows -> row -> wrapper (w) -> textbox (t)
+ var w = t.parentNode;
+ var sibling_wrapper = w.previousSibling;
+ if (sibling_wrapper) {
+ sibling_wrapper.firstChild.focus();
+ if (sibling_wrapper.parentNode.childNodes[3] != sibling_wrapper) {
+ sibling_wrapper.firstChild.select();
+ }
+ } else {
+ if (wrap) {
+ return navigate_row_up(t,3,false);
+ } else {
+ return false;
+ }
+ }
+ return true;
+}
+
+function navigate_col_right(t,wrap) {
+ // rows -> row -> wrapper (w) -> textbox (t)
+ var w = t.parentNode;
+ var sibling_wrapper = w.nextSibling;
+ if (sibling_wrapper) {
+ sibling_wrapper.firstChild.focus();
+ if (sibling_wrapper.parentNode.childNodes[3] != sibling_wrapper) {
+ sibling_wrapper.firstChild.select();
+ }
+ } else {
+ if (wrap) {
+ return navigate_row_down(t,0);
+ } else {
+ return false;
+ }
+ }
+ return true;
+}
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="marc_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="marc_js">
+ <!--<script src="chrome://evergreen/content/evergreen/fieldmapper.js" />-->
+ <!--<script src="chrome://evergreen/content/util/RemoteRequest.js" />
+ <script src="chrome://evergreen/content/util/ses.js" />-->
+ <util id="util_js"/>
+ <script src="marc_rules.js" />
+ <script src="marc_validate.js" />
+ <script src="marc_fixed.js" />
+ <script src="marc_keys.js" />
+ <script src="marc.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="marc_cmds">
+ <command id="cmd_marc_validate" oncommand="
+ alert('Feature Not Yet Implemented');
+ validate_marc();
+ "/>
+ <command id="cmd_marc_explain" oncommand="
+ explain_marc();
+ "/>
+ <command id="cmd_marc_submit" oncommand="
+ submit_marc();
+ "/>
+ <command id="cmd_marc_reload" oncommand="
+ alert('Feature Not Yet Implemented');
+ reload_marc();
+ "/>
+ <command id="cmd_marc_export" oncommand="
+ alert('Feature Not Yet Implemented');
+ export_marc();
+ "/>
+ <command id="cmd_marc_legend" oncommand="
+ legend_marc();
+ "/>
+ <command id="cmd_close_window" oncommand="
+ dump('close editor\n');
+ if (am_i_a_top_level_tab) {
+ tabWindow.close_tab('main_tabbox');
+ } else {
+ window.close();
+ }
+ "/>
+ <command id="cmd_marc_fixed_BKS" oncommand="
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','BKS');
+ "/>
+ <command id="cmd_marc_fixed_SER" oncommand="
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','SER');
+ "/>
+ <command id="cmd_marc_fixed_VIS" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','VIS');
+ "/>
+ <command id="cmd_marc_fixed_MIX" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','MIX');
+ "/>
+ <command id="cmd_marc_fixed_MAP" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','MAP');
+ "/>
+ <command id="cmd_marc_fixed_SCO" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','SCO');
+ "/>
+ <command id="cmd_marc_fixed_REC" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','REC');
+ "/>
+ <command id="cmd_marc_fixed_COM" oncommand="
+ alert('Feature Not Yet Implemented');
+ document.getElementById('ctrl_deck').setAttribute('selectedIndex',0);
+ fixed_fields_show_only('fixed_grid','COM');
+ "/>
+ <command id="cmd_marc_control_fields" oncommand="
+ var deck = document.getElementById('data_deck');
+ if (deck.getAttribute('selectedIndex') == '1') {
+ deck.setAttribute('selectedIndex','0');
+ } else {
+ deck.setAttribute('selectedIndex','1');
+ }
+ "/>
+ <command id="cmd_marc_cover_art" oncommand="
+ var box = document.getElementById('art_groupbox');
+ if (box.getAttribute('hidden') == 'true') {
+ box.setAttribute('hidden','false');
+ } else {
+ box.setAttribute('hidden','true');
+ }
+ "/>
+ <command id="cmd_marc_meta_data" oncommand="
+ var box = document.getElementById('meta_groupbox');
+ if (box.getAttribute('hidden') == 'true') {
+ box.setAttribute('hidden','false');
+ } else {
+ box.setAttribute('hidden','true');
+ }
+ "/>
+
+</commandset>
+
+<!-- The top level widget for the cat client -->
+<vbox id="marc_vbox" flex="1">
+ <toolbox id="marc_toolbox"/>
+<!-- <deck id="meta_deck"/>
+ <splitter collapse="before"> <grippy/> </splitter> -->
+ <deck id="ctrl_deck"/>
+ <splitter collapse="before"> <grippy/> </splitter>
+ <deck id="data_deck"/>
+ <hbox id="marc_buttons_box"/>
+</vbox>
+
+<hbox id="marc_buttons_box" class="marc_buttons_box">
+ <button label="&marc.file.close;" accesskey="&marc.file.close.key;" key="file-close-key" command="cmd_close_window"/>
+ <button label="&marc.file.reload;" accesskey="&marc.file.reload.key;" key="file-reload-key" command="cmd_marc_reload"/>
+ <button label="&marc.file.publish;" accesskey="&marc.file.publish.key;" key="file-publish-key" command="cmd_marc_submit"/>
+</hbox>
+
+<!-- The main top level menubar -->
+<toolbox id="marc_toolbox">
+ <menubar id="marc_menubar">
+ <menu id="marc-file" label="&marc.file;" accesskey="&marc.file.key;"/>
+ <menu id="marc-display" label="&marc.display;" accesskey="&marc.display.key;"/>
+ </menubar>
+</toolbox>
+
+<!-- The File menu on the marc menu -->
+<menu id="marc-file">
+ <menupopup id="marc-popup">
+ <menuitem label="&marc.file.validate;" accesskey="&marc.file.validate.key;" key="file-validate-key" command="cmd_marc_validate"/>
+ <menuseparator />
+ <menuitem label="&marc.file.reload;" accesskey="&marc.file.reload.key;" key="file-reload-key" command="cmd_marc_reload"/>
+ <menuitem label="&marc.file.export;" accesskey="&marc.file.export.key;" key="file-export-key" command="cmd_marc_export"/>
+ <menuitem label="&marc.file.publish;" accesskey="&marc.file.publish.key;" key="file-publish-key" command="cmd_marc_submit"/>
+ <menuseparator />
+ <menuitem label="&marc.file.close;" accesskey="&marc.file.close.key;" key="file-close-key" command="cmd_close_window"/>
+ </menupopup>
+</menu>
+
+<!-- The Display menu on the marc menu -->
+<menu id="marc-display">
+ <menupopup id="display-popup">
+ <menuitem id="explain_marc" label="&marc.display.explain;" accesskey="&marc.display.explain.key;" key="display-explain-key" command="cmd_marc_explain"/>
+ <menuitem label="&marc.display.legend;" accesskey="&marc.display.legend.key;" key="file-legend-key" command="cmd_marc_legend"/>
+ <menuseparator />
+ <menuitem label="&marc.display.cover_art;" accesskey="&marc.display.cover_art.key;" key="file-cover-art-key" command="cmd_marc_cover_art"/>
+ <menuitem label="&marc.display.meta_data;" accesskey="&marc.display.meta_data.key;" key="file-meta-data-key" command="cmd_marc_meta_data"/>
+ <menuitem label="&marc.display.control_fields;" accesskey="&marc.display.control_fields.key;" key="file-control-fields-key" command="cmd_marc_control_fields"/>
+ <menuseparator />
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.BKS;" accesskey="&marc.display.fixed.BKS.key;" key="file-fixed-BKS-key" command="cmd_marc_fixed_BKS"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.SER;" accesskey="&marc.display.fixed.SER.key;" key="file-fixed-SER-key" command="cmd_marc_fixed_SER"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.VIS;" accesskey="&marc.display.fixed.VIS.key;" key="file-fixed-VIS-key" command="cmd_marc_fixed_VIS"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.MIX;" accesskey="&marc.display.fixed.MIX.key;" key="file-fixed-MIX-key" command="cmd_marc_fixed_MIX"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.MAP;" accesskey="&marc.display.fixed.MAP.key;" key="file-fixed-MAP-key" command="cmd_marc_fixed_MAP"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.SCO;" accesskey="&marc.display.fixed.SCO.key;" key="file-fixed-SCO-key" command="cmd_marc_fixed_SCO"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.REC;" accesskey="&marc.display.fixed.REC.key;" key="file-fixed-REC-key" command="cmd_marc_fixed_REC"/>
+ <menuitem type="radio" name="fixed_field_display" label="&marc.display.fixed.COM;" accesskey="&marc.display.fixed.COM.key;" key="file-fixed-COM-key" command="cmd_marc_fixed_COM"/>
+ </menupopup>
+</menu>
+
+<deck id="meta_deck" flex="0">
+</deck>
+
+<deck id="ctrl_deck" flex="1">
+ <hbox flex="1">
+ <groupbox id="art_groupbox" hidden="true"/>
+ <vbox flex="1" style="overflow: auto;">
+ <groupbox id="meta_groupbox"/>
+ <groupbox id="fixed_groupbox"/>
+ </vbox>
+ </hbox>
+</deck>
+
+<deck id="data_deck" flex="1">
+ <groupbox id="data_groupbox"/>
+ <groupbox id="ctrl_groupbox"/>
+ <groupbox id="help_groupbox"/>
+</deck>
+
+<groupbox id="meta_groupbox" flex="1" hidden="true">
+ <caption label="&marc.groupbox.meta;"/>
+ <grid id="meta_grid"/>
+</groupbox>
+
+<groupbox id="data_groupbox">
+ <caption label="&marc.groupbox.data;"/>
+ <grid id="data_grid"/>
+</groupbox>
+
+<groupbox id="ctrl_groupbox">
+ <caption label="&marc.groupbox.control;"/>
+ <grid id="ctrl_grid"/>
+</groupbox>
+
+<groupbox id="fixed_groupbox">
+ <caption label="&marc.groupbox.fixed;"/>
+ <grid id="fixed_grid"/>
+</groupbox>
+
+<groupbox id="art_groupbox">
+ <caption label="&marc.groupbox.cover;"/>
+ <image src="chrome://evergreen/content/images/noimage.jpg"/>
+</groupbox>
+
+<grid id="meta_grid" flex="1" class="meta_grid">
+ <columns class="fixed_columns">
+ <column/>
+ <column flex="1"/>
+ <column/> <column /> <column/> <column />
+ </columns>
+ <rows>
+ <row id="meta_row1"/>
+ <row id="meta_row2"/>
+ </rows>
+</grid>
+
+<row id="meta_row1">
+ <label value="Title/Author"/>
+ <description id="meta_title_author"/>
+ <label value="Creation Date"/>
+ <label id="meta_create_date"/>
+ <label value="Created By"/>
+ <label id="meta_creator"/>
+</row>
+<row id="meta_row2">
+ <label value="TCN/Publisher/etc"/>
+ <label id="meta_tcn_publisher"/>
+ <label value="Modification Date"/>
+ <label id="meta_edit_date"/>
+ <label value="Last Modified By"/>
+ <label id="meta_editor"/>
+</row>
+
+<grid id="fixed_grid" flex="1" class="fixed_grid">
+ <columns class="fixed_columns">
+ <column/> <column flex="1"/> <column/> <column flex="1"/>
+ <column/> <column flex="1"/> <column/> <column flex="1"/>
+ <column/> <column flex="1"/> <column/> <column flex="1"/>
+ </columns>
+ <rows class="fixed_rows">
+ <row id="fixed_row1" class="fixed_row"/>
+ <row id="fixed_row2" class="fixed_row"/>
+ <row id="fixed_row3" class="fixed_row"/>
+ <row id="fixed_row4" class="fixed_row"/>
+ </rows>
+</grid>
+
+<row id="fixed_row1">
+ <hbox>
+ <label
+ value="&marc.LDR.type.short;"
+ tooltiptext="&marc.LDR.type.desc;"
+ onclick="window.open('&marc.LDR.type.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.LDR.type.field;"
+ spos="&marc.LDR.type.field_start_pos;"
+ epos="&marc.LDR.type.field_end_pos;"
+ size="&marc.LDR.type.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.LDR.elvl.short;"
+ tooltiptext="&marc.LDR.elvl.desc;"
+ onclick="window.open('&marc.LDR.elvl.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.LDR.elvl.field;"
+ spos="&marc.LDR.elvl.field_start_pos;"
+ epos="&marc.LDR.elvl.field_end_pos;"
+ size="&marc.LDR.elvl.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.srce.short;"
+ tooltiptext="&marc.008.srce.desc;"
+ onclick="window.open('&marc.008.srce.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.srce.field;"
+ spos="&marc.008.srce.field_start_pos;"
+ epos="&marc.008.srce.field_end_pos;"
+ size="&marc.008.srce.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.VIS.SCO.REC.COM.audn.short;"
+ tooltiptext="&marc.008.BKS.VIS.SCO.REC.COM.audn.desc;"
+ onclick="window.open('&marc.008.BKS.VIS.SCO.REC.COM.audn.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.BKS.SER.VIS.MAP.COM.gpub.short;"
+ tooltiptext="&marc.008.BKS.SER.VIS.MAP.COM.gpub.desc;"
+ onclick="window.open('&marc.008.BKS.SER.VIS.MAP.COM.gpub.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.VIS.SCO.REC.COM.audn.field;"
+ spos="&marc.008.BKS.VIS.SCO.REC.COM.audn.field_start_pos;"
+ epos="&marc.008.BKS.VIS.SCO.REC.COM.audn.field_end_pos;"
+ size="&marc.008.BKS.VIS.SCO.REC.COM.audn.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field;"
+ spos="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_start_pos;"
+ epos="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_end_pos;"
+ size="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.LDR.ctrl.short;"
+ tooltiptext="&marc.LDR.ctrl.desc;"
+ onclick="window.open('&marc.LDR.ctrl.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.LDR.ctrl.field;"
+ spos="&marc.LDR.ctrl.field_start_pos;"
+ epos="&marc.LDR.ctrl.field_end_pos;"
+ size="&marc.LDR.ctrl.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.lang.short;"
+ tooltiptext="&marc.008.lang.desc;"
+ onclick="window.open('&marc.008.lang.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.lang.field;"
+ spos="&marc.008.lang.field_start_pos;"
+ epos="&marc.008.lang.field_end_pos;"
+ size="&marc.008.lang.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+</row>
+<row id="fixed_row2">
+ <hbox>
+ <label
+ value="&marc.LDR.blvl.short;"
+ tooltiptext="&marc.LDR.blvl.desc;"
+ onclick="window.open('&marc.LDR.blvl.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.LDR.blvl.field;"
+ spos="&marc.LDR.blvl.field_start_pos;"
+ epos="&marc.LDR.blvl.field_end_pos;"
+ size="&marc.LDR.blvl.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.SER.MIX.SCO.REC.form.short;"
+ tooltiptext="&marc.008.BKS.SER.MIX.SCO.REC.form.desc;"
+ onclick="window.open('&marc.008.BKS.SER.MIX.SCO.REC.form.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.SER.MIX.SCO.REC.form.field;"
+ spos="&marc.008.BKS.SER.MIX.SCO.REC.form.field_start_pos;"
+ epos="&marc.008.BKS.SER.MIX.SCO.REC.form.field_end_pos;"
+ size="&marc.008.BKS.SER.MIX.SCO.REC.form.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.SER.conf.short;"
+ tooltiptext="&marc.008.BKS.SER.conf.desc;"
+ onclick="window.open('&marc.008.BKS.SER.conf.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.SER.conf.field;"
+ spos="&marc.008.BKS.SER.conf.field_start_pos;"
+ epos="&marc.008.BKS.SER.conf.field_end_pos;"
+ size="&marc.008.BKS.SER.conf.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.biog.short;"
+ tooltiptext="&marc.008.BKS.biog.desc;"
+ onclick="window.open('&marc.008.BKS.biog.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.freq.short;"
+ tooltiptext="&marc.008.SER.freq.desc;"
+ onclick="window.open('&marc.008.SER.freq.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.biog.field;"
+ spos="&marc.008.BKS.biog.field_start_pos;"
+ epos="&marc.008.BKS.biog.field_end_pos;"
+ size="&marc.008.BKS.biog.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.freq.field;"
+ spos="&marc.008.SER.freq.field_start_pos;"
+ epos="&marc.008.SER.freq.field_end_pos;"
+ size="&marc.008.SER.freq.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.mrec.short;"
+ tooltiptext="&marc.008.mrec.desc;"
+ onclick="window.open('&marc.008.mrec.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.mrec.field;"
+ spos="&marc.008.mrec.field_start_pos;"
+ epos="&marc.008.mrec.field_end_pos;"
+ size="&marc.008.mrec.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.ctry.short;"
+ tooltiptext="&marc.008.ctry.desc;"
+ onclick="window.open('&marc.008.ctry.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.ctry.field;"
+ spos="&marc.008.ctry.field_start_pos;"
+ epos="&marc.008.ctry.field_end_pos;"
+ size="&marc.008.ctry.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+</row>
+
+<row id="fixed_row3">
+ <hbox>
+ <label
+ value="&marc.008.SER.succ.short;"
+ tooltiptext="&marc.008.SER.succ.desc;"
+ onclick="window.open('&marc.008.SER.succ.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.SER.succ.field;"
+ spos="&marc.008.SER.succ.field_start_pos;"
+ epos="&marc.008.SER.succ.field_end_pos;"
+ size="&marc.008.SER.succ.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.cont.short;"
+ tooltiptext="&marc.008.BKS.cont.desc;"
+ onclick="window.open('&marc.008.BKS.cont.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.orig.short;"
+ tooltiptext="&marc.008.SER.orig.desc;"
+ onclick="window.open('&marc.008.SER.orig.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.cont.field;"
+ spos="&marc.008.BKS.cont.field_start_pos;"
+ epos="&marc.008.BKS.cont.field_end_pos;"
+ size="&marc.008.BKS.cont.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.orig.field;"
+ spos="&marc.008.SER.orig.field_start_pos;"
+ epos="&marc.008.SER.orig.field_end_pos;"
+ size="&marc.008.SER.orig.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.SER.VIS.MAP.COM.gpub.short;"
+ tooltiptext="&marc.008.BKS.SER.VIS.MAP.COM.gpub.desc;"
+ onclick="window.open('&marc.008.BKS.SER.VIS.MAP.COM.gpub.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.entw.short;"
+ tooltiptext="&marc.008.SER.entw.desc;"
+ onclick="window.open('&marc.008.SER.entw.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field;"
+ spos="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_start_pos;"
+ epos="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_end_pos;"
+ size="&marc.008.BKS.SER.VIS.MAP.COM.gpub.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.entw.field;"
+ spos="&marc.008.SER.entw.field_start_pos;"
+ epos="&marc.008.SER.entw.field_end_pos;"
+ size="&marc.008.SER.entw.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.litf.short;"
+ tooltiptext="&marc.008.BKS.litf.desc;"
+ onclick="window.open('&marc.008.BKS.litf.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.regl.short;"
+ tooltiptext="&marc.008.SER.regl.desc;"
+ onclick="window.open('&marc.008.SER.regl.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.litf.field;"
+ spos="&marc.008.BKS.litf.field_start_pos;"
+ epos="&marc.008.BKS.litf.field_end_pos;"
+ size="&marc.008.BKS.litf.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.regl.field;"
+ spos="&marc.008.SER.regl.field_start_pos;"
+ epos="&marc.008.SER.regl.field_end_pos;"
+ size="&marc.008.SER.regl.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.MAP.indx.short;"
+ tooltiptext="&marc.008.BKS.MAP.indx.desc;"
+ onclick="window.open('&marc.008.BKS.MAP.indx.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.issn.short;"
+ tooltiptext="&marc.008.SER.issn.desc;"
+ onclick="window.open('&marc.008.SER.issn.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.MAP.indx.field;"
+ spos="&marc.008.BKS.MAP.indx.field_start_pos;"
+ epos="&marc.008.BKS.MAP.indx.field_end_pos;"
+ size="&marc.008.BKS.MAP.indx.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.issn.field;"
+ spos="&marc.008.SER.issn.field_start_pos;"
+ epos="&marc.008.SER.issn.field_end_pos;"
+ size="&marc.008.SER.issn.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.SER.alph.short;"
+ tooltiptext="&marc.008.SER.alph.desc;"
+ onclick="window.open('&marc.008.SER.alph.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.SER.alph.field;"
+ spos="&marc.008.SER.alph.field_start_pos;"
+ epos="&marc.008.SER.alph.field_end_pos;"
+ size="&marc.008.SER.alph.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+</row>
+
+<row id="fixed_row4">
+ <hbox>
+ <label
+ value="&marc.LDR.desc.short;"
+ tooltiptext="&marc.LDR.desc.desc;"
+ onclick="window.open('&marc.LDR.desc.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.LDR.desc.field;"
+ spos="&marc.LDR.desc.field_start_pos;"
+ epos="&marc.LDR.desc.field_end_pos;"
+ size="&marc.LDR.desc.field_size;"
+ BKS="true" SER="true" VIS="true" MIX="true"
+ MAP="true" SCO="true" REC="true" COM="true"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.ills.short;"
+ tooltiptext="&marc.008.BKS.ills.desc;"
+ onclick="window.open('&marc.008.BKS.ills.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.srtp.short;"
+ tooltiptext="&marc.008.SER.srtp.desc;"
+ onclick="window.open('&marc.008.SER.srtp.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.ills.field;"
+ spos="&marc.008.BKS.ills.field_start_pos;"
+ epos="&marc.008.BKS.ills.field_end_pos;"
+ size="&marc.008.BKS.ills.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.srtp.field;"
+ spos="&marc.008.SER.srtp.field_start_pos;"
+ epos="&marc.008.SER.srtp.field_end_pos;"
+ size="&marc.008.SER.srtp.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.BKS.fest.short;"
+ tooltiptext="&marc.008.BKS.fest.desc;"
+ onclick="window.open('&marc.008.BKS.fest.help;');"
+ class="fixed_label"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ <label
+ value="&marc.008.SER.cont.short;"
+ tooltiptext="&marc.008.SER.cont.desc;"
+ onclick="window.open('&marc.008.SER.cont.help;');"
+ class="fixed_label"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.BKS.fest.field;"
+ spos="&marc.008.BKS.fest.field_start_pos;"
+ epos="&marc.008.BKS.fest.field_end_pos;"
+ size="&marc.008.BKS.fest.field_size;"
+ BKS="true" SER="false" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ <textbox
+ field="&marc.008.SER.cont.field;"
+ spos="&marc.008.SER.cont.field_start_pos;"
+ epos="&marc.008.SER.cont.field_end_pos;"
+ size="&marc.008.SER.cont.field_size;"
+ BKS="false" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.dtst.short;"
+ tooltiptext="&marc.008.dtst.desc;"
+ onclick="window.open('&marc.008.dtst.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.dtst.field;"
+ spos="&marc.008.dtst.field_start_pos;"
+ epos="&marc.008.dtst.field_end_pos;"
+ size="&marc.008.dtst.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.date1.short;"
+ tooltiptext="&marc.008.date1.desc;"
+ onclick="window.open('&marc.008.dates.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.date1.field;"
+ spos="&marc.008.date1.field_start_pos;"
+ epos="&marc.008.date1.field_end_pos;"
+ size="&marc.008.date1.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+ <hbox>
+ <label
+ value="&marc.008.date2.short;"
+ tooltiptext="&marc.008.date2.desc;"
+ onclick="window.open('&marc.008.dates.help;');"
+ class="fixed_label"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ />
+ </hbox>
+ <hbox>
+ <textbox
+ field="&marc.008.date2.field;"
+ spos="&marc.008.date2.field_start_pos;"
+ epos="&marc.008.date2.field_end_pos;"
+ size="&marc.008.date2.field_size;"
+ BKS="true" SER="true" VIS="false" MIX="false"
+ MAP="false" SCO="false" REC="false" COM="false"
+ onclick="this.select();"
+ />
+ </hbox>
+</row>
+
+<grid id="ctrl_grid" flex="1" class="ctrl_grid">
+ <columns id="ctrl_columns">
+ <column id="ctrl_column1"/>
+ <column id="ctrl_column2" flex="1"/>
+ </columns>
+ <rows id="ctrl_rows"/>
+</grid>
+
+<grid id="data_grid" flex="1" class="data_grid">
+ <columns id="data_columns">
+ <column id="data_column1"/>
+ <column id="data_column2"/>
+ <column id="data_column3"/>
+ <column id="data_column4" flex="1"/>
+ </columns>
+ <rows id="data_rows"/>
+</grid>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="marc_keys">
+ <key id="marc-close-editor-key" modifiers="accel" key="&marc.close.editor.key;" command="cmd_close_window"/>
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+
+var marc_rules = {"001":{"desc":"CONTROL NUMBER","repeat":"NR"},"002":{"desc":"LOCALLY DEFINED (UNOFFICIAL)","repeat":"NR"},"003":{"desc":"CONTROL NUMBER IDENTIFIER","repeat":"NR"},"005":{"desc":"DATE AND TIME OF LATEST TRANSACTION","repeat":"NR"},"006":{"desc":"FIXED-LENGTH DATA ELEMENTS--ADDITIONAL MATERIAL CHARACTERISTICS--GENERAL INFORMATION","repeat":"R"},"007":{"desc":"PHYSICAL DESCRIPTION FIXED FIELD--GENERAL INFORMATION","repeat":"R"},"008":{"desc":"FIXED-LENGTH DATA ELEMENTS--GENERAL INFORMATION","repeat":"NR"},"010":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"LC control number ","repeat":"NR"},"b":{"desc":"NUCMC control number ","repeat":"R"},"desc":"LIBRARY OF CONGRESS CONTROL NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR","z":{"desc":"Canceled/invalid LC control number ","repeat":"R"}},"013":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Number ","repeat":"NR"},"b":{"desc":"Country ","repeat":"NR"},"c":{"desc":"Type of number ","repeat":"NR"},"d":{"desc":"Date ","repeat":"R"},"desc":"PATENT CONTROL INFORMATION","e":{"desc":"Status ","repeat":"R"},"f":{"desc":"Party to document ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"015":{"2":{"desc":"Source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"National bibliography number ","repeat":"R"},"desc":"NATIONAL BIBLIOGRAPHY NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"016":{"2":{"desc":"Source ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Record control number ","repeat":"NR"},"desc":"NATIONAL BIBLIOGRAPHIC AGENCY CONTROL NUMBER","ind1":{"allowed":" 7","desc":"National bibliographic agency"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled or invalid record control number ","repeat":"R"}},"017":{"2":{"desc":"Source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Copyright registration number ","repeat":"R"},"b":{"desc":"Assigning agency ","repeat":"NR"},"desc":"COPYRIGHT OR LEGAL DEPOSIT NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"018":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Copyright article-fee code ","repeat":"NR"},"desc":"COPYRIGHT ARTICLE-FEE CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"020":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"International Standard Book Number ","repeat":"NR"},"c":{"desc":"Terms of availability ","repeat":"NR"},"desc":"INTERNATIONAL STANDARD BOOK NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid ISBN ","repeat":"R"}},"022":{"2":{"desc":"Source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"International Standard Serial Number ","repeat":"NR"},"desc":"INTERNATIONAL STANDARD SERIAL NUMBER","ind1":{"allowed":" 01","desc":"Level of international interest"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","y":{"desc":"Incorrect ISSN ","repeat":"R"},"z":{"desc":"Canceled ISSN ","repeat":"R"}},"024":{"2":{"desc":"Source of number or code ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Standard number or code ","repeat":"NR"},"c":{"desc":"Terms of availability ","repeat":"NR"},"d":{"desc":"Additional codes following the standard number or code ","repeat":"NR"},"desc":"OTHER STANDARD IDENTIFIER","ind1":{"allowed":"0123478","desc":"Type of standard number or code"},"ind2":{"allowed":" 01","desc":"Difference indicator"},"repeat":"R","z":{"desc":"Canceled/invalid standard number or code ","repeat":"R"}},"025":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Overseas acquisition number ","repeat":"R"},"desc":"OVERSEAS ACQUISITION NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"026":{"2":{"desc":"Source ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"First and second groups of characters ","repeat":"R"},"b":{"desc":"Third and fourth groups of characters ","repeat":"R"},"c":{"desc":"Date ","repeat":"NR"},"d":{"desc":"Number of volume or part ","repeat":"R"},"desc":"FINGERPRINT IDENTIFIER","e":{"desc":"Unparsed fingerprint ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"027":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Standard technical report number ","repeat":"NR"},"desc":"STANDARD TECHNICAL REPORT NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid number ","repeat":"R"}},"028":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Publisher number ","repeat":"NR"},"b":{"desc":"Source ","repeat":"NR"},"desc":"PUBLISHER NUMBER","ind1":{"allowed":"012345","desc":"Type of publisher number"},"ind2":{"allowed":"0123","desc":"Note/added entry controller"},"repeat":"R"},"030":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"CODEN ","repeat":"NR"},"desc":"CODEN DESIGNATION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid CODEN ","repeat":"R"}},"032":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Postal registration number ","repeat":"NR"},"b":{"desc":"Source (agency assigning number) ","repeat":"NR"},"desc":"POSTAL REGISTRATION NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"033":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Formatted date/time ","repeat":"R"},"b":{"desc":"Geographic classification area code ","repeat":"R"},"c":{"desc":"Geographic classification subarea code ","repeat":"R"},"desc":"DATE/TIME AND PLACE OF AN EVENT","ind1":{"allowed":" 012","desc":"Type of date in subfield $a"},"ind2":{"allowed":" 012","desc":"Type of event"},"repeat":"R"},"034":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Category of scale ","repeat":"NR"},"b":{"desc":"Constant ratio linear horizontal scale ","repeat":"R"},"c":{"desc":"Constant ratio linear vertical scale ","repeat":"R"},"d":{"desc":"Coordinates--westernmost longitude ","repeat":"NR"},"desc":"CODED CARTOGRAPHIC MATHEMATICAL DATA","e":{"desc":"Coordinates--easternmost longitude ","repeat":"NR"},"f":{"desc":"Coordinates--northernmost latitude ","repeat":"NR"},"g":{"desc":"Coordinates--southernmost latitude ","repeat":"NR"},"h":{"desc":"Angular scale ","repeat":"R"},"ind1":{"allowed":"013","desc":"Type of scale"},"ind2":{"allowed":" 01","desc":"Type of ring"},"j":{"desc":"Declination--northern limit ","repeat":"NR"},"k":{"desc":"Declination--southern limit ","repeat":"NR"},"m":{"desc":"Right ascension--eastern limit ","repeat":"NR"},"n":{"desc":"Right ascension--western limit ","repeat":"NR"},"p":{"desc":"Equinox ","repeat":"NR"},"repeat":"R","s":{"desc":"G-ring latitude ","repeat":"R"},"t":{"desc":"G-ring longitude ","repeat":"R"}},"035":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"System control number ","repeat":"NR"},"desc":"SYSTEM CONTROL NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid control number ","repeat":"R"}},"036":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Original study number ","repeat":"NR"},"b":{"desc":"Source (agency assigning number) ","repeat":"NR"},"desc":"ORIGINAL STUDY NUMBER FOR COMPUTER DATA FILES","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"037":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Stock number ","repeat":"NR"},"b":{"desc":"Source of stock number/acquisition ","repeat":"NR"},"c":{"desc":"Terms of availability ","repeat":"R"},"desc":"SOURCE OF ACQUISITION","f":{"desc":"Form of issue ","repeat":"R"},"g":{"desc":"Additional format characteristics ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"n":{"desc":"Note ","repeat":"R"},"repeat":"R"},"038":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Record content licensor ","repeat":"NR"},"desc":"RECORD CONTENT LICENSOR","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"040":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Original cataloging agency ","repeat":"NR"},"b":{"desc":"Language of cataloging ","repeat":"NR"},"c":{"desc":"Transcribing agency ","repeat":"NR"},"d":{"desc":"Modifying agency ","repeat":"R"},"desc":"CATALOGING SOURCE","e":{"desc":"Description conventions ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"041":{"2":{"desc":"Source of code ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Language code of text/sound track or separate title ","repeat":"R"},"b":{"desc":"Language code of summary or abstract/overprinted title or subtitle ","repeat":"R"},"d":{"desc":"Language code of sung or spoken text ","repeat":"R"},"desc":"LANGUAGE CODE","e":{"desc":"Language code of librettos ","repeat":"R"},"f":{"desc":"Language code of table of contents ","repeat":"R"},"g":{"desc":"Language code of accompanying material other than librettos ","repeat":"R"},"h":{"desc":"Language code of original and/or intermediate translations of text ","repeat":"R"},"ind1":{"allowed":"01","desc":"Translation indication"},"ind2":{"allowed":" 7","desc":"Source of code"},"repeat":"R"},"042":{"a":{"desc":"Authentication code ","repeat":"R"},"desc":"AUTHENTICATION CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"043":{"2":{"desc":"Source of local code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Geographic area code ","repeat":"R"},"b":{"desc":"Local GAC code ","repeat":"R"},"c":{"desc":"ISO code ","repeat":"R"},"desc":"GEOGRAPHIC AREA CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"044":{"2":{"desc":"Source of local subentity code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"MARC country code ","repeat":"R"},"b":{"desc":"Local subentity code ","repeat":"R"},"c":{"desc":"ISO country code ","repeat":"R"},"desc":"COUNTRY OF PUBLISHING/PRODUCING ENTITY CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"045":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Time period code ","repeat":"R"},"b":{"desc":"Formatted 9999 B.C. through C.E. time period ","repeat":"R"},"c":{"desc":"Formatted pre-9999 B.C. time period ","repeat":"R"},"desc":"TIME PERIOD OF CONTENT","ind1":{"allowed":" 012","desc":"Type of time period in subfield $b or $c"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"046":{"2":{"desc":"Source of date ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Type of date code ","repeat":"NR"},"b":{"desc":"Date 1 (B.C. date) ","repeat":"NR"},"c":{"desc":"Date 1 (C.E. date) ","repeat":"NR"},"d":{"desc":"Date 2 (B.C. date) ","repeat":"NR"},"desc":"SPECIAL CODED DATES","e":{"desc":"Date 2 (C.E. date) ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Date resource modified ","repeat":"NR"},"k":{"desc":"Beginning or single date created ","repeat":"NR"},"l":{"desc":"Ending date created ","repeat":"NR"},"m":{"desc":"Beginning of date valid ","repeat":"NR"},"n":{"desc":"End of date valid ","repeat":"NR"},"repeat":"R"},"047":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Form of musical composition code ","repeat":"R"},"desc":"FORM OF MUSICAL COMPOSITION CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"048":{"8":{"desc":"Field link and sequence number","repeat":"R"},"a":{"desc":"Performer or ensemble ","repeat":"R"},"b":{"desc":"Soloist ","repeat":"R"},"desc":"NUMBER OF MUSICAL INSTRUMENTS OR VOICES CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"050":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"LIBRARY OF CONGRESS CALL NUMBER","ind1":{"allowed":" 01","desc":"Existence in LC collection"},"ind2":{"allowed":"04","desc":"Source of call number"},"repeat":"R"},"051":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"NR"},"b":{"desc":"Item number ","repeat":"NR"},"c":{"desc":"Copy information ","repeat":"NR"},"desc":"LIBRARY OF CONGRESS COPY, ISSUE, OFFPRINT STATEMENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"052":{"2":{"desc":"Code source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Geographic classification area code ","repeat":"NR"},"b":{"desc":"Geographic classification subarea code ","repeat":"R"},"d":{"desc":"Populated place name ","repeat":"R"},"desc":"GEOGRAPHIC CLASSIFICATION","ind1":{"allowed":" 17","desc":"Code source"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"055":{"2":{"desc":"Source of call/class number ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"NR"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"CLASSIFICATION NUMBERS ASSIGNED IN CANADA","ind1":{"allowed":" 01","desc":"Existence in NLC collection"},"ind2":{"allowed":"0123456789","desc":"Type, completeness, source of class/call number"},"repeat":"R"},"060":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"NATIONAL LIBRARY OF MEDICINE CALL NUMBER","ind1":{"allowed":" 01","desc":"Existence in NLM collection"},"ind2":{"allowed":"04","desc":"Source of call number"},"repeat":"R"},"061":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"c":{"desc":"Copy information ","repeat":"NR"},"desc":"NATIONAL LIBRARY OF MEDICINE COPY STATEMENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"066":{"a":{"desc":"Primary G0 character set ","repeat":"NR"},"b":{"desc":"Primary G1 character set ","repeat":"NR"},"c":{"desc":"Alternate G0 or G1 character set ","repeat":"R"},"desc":"CHARACTER SETS PRESENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"070":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"NATIONAL AGRICULTURAL LIBRARY CALL NUMBER","ind1":{"allowed":"01","desc":"Existence in NAL collection"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"071":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"c":{"desc":"Copy information ","repeat":"NR"},"desc":"NATIONAL AGRICULTURAL LIBRARY COPY STATEMENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"072":{"2":{"desc":"Source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Subject category code ","repeat":"NR"},"desc":"SUBJECT CATEGORY CODE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"07","desc":"Source specified in subfield $2"},"repeat":"R","x":{"desc":"Subject category code subdivision ","repeat":"R"}},"074":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"GPO item number ","repeat":"NR"},"desc":"GPO ITEM NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid GPO item number ","repeat":"R"}},"080":{"2":{"desc":"Edition identifier ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Universal Decimal Classification number ","repeat":"NR"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"UNIVERSAL DECIMAL CLASSIFICATION NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","x":{"desc":"Common auxiliary subdivision ","repeat":"R"}},"082":{"2":{"desc":"Edition number ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"DEWEY DECIMAL CLASSIFICATION NUMBER","ind1":{"allowed":"01","desc":"Type of edition"},"ind2":{"allowed":" 04","desc":"Source of classification number"},"repeat":"R"},"084":{"2":{"desc":"Source of number ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"R"},"b":{"desc":"Item number ","repeat":"NR"},"desc":"OTHER CLASSIFICATION NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"086":{"2":{"desc":"Number source ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Classification number ","repeat":"NR"},"desc":"GOVERNMENT DOCUMENT CLASSIFICATION NUMBER","ind1":{"allowed":" 01","desc":"Number source"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid classification number ","repeat":"R"}},"088":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Report number ","repeat":"NR"},"desc":"REPORT NUMBER","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Canceled/invalid report number ","repeat":"R"}},"100":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Personal name ","repeat":"NR"},"b":{"desc":"Numeration ","repeat":"NR"},"c":{"desc":"Titles and other words associated with a name ","repeat":"R"},"d":{"desc":"Dates associated with a name ","repeat":"NR"},"desc":"MAIN ENTRY--PERSONAL NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"013","desc":"Type of personal name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Attribution qualifier ","repeat":"R"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Fuller form of name ","repeat":"NR"},"repeat":"NR","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"}},"110":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Corporate name or jurisdiction name as entry element ","repeat":"NR"},"b":{"desc":"Subordinate unit ","repeat":"R"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting or treaty signing ","repeat":"R"},"desc":"MAIN ENTRY--CORPORATE NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of corporate name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"NR","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"}},"111":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Meeting name or jurisdiction name as entry element ","repeat":"NR"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting ","repeat":"NR"},"desc":"MAIN ENTRY--MEETING NAME","e":{"desc":"Subordinate unit ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of meeting name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Name of meeting following jurisdiction name entry element ","repeat":"NR"},"repeat":"NR","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"}},"130":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"MAIN ENTRY--UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"0-9","desc":"Nonfiling characters"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"NR","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"}},"210":{"2":{"desc":"Source ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Abbreviated title ","repeat":"NR"},"b":{"desc":"Qualifying information ","repeat":"NR"},"desc":"ABBREVIATED TITLE","ind1":{"allowed":"01","desc":"Title added entry"},"ind2":{"allowed":" 0","desc":"Type"},"repeat":"R"},"222":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Key title ","repeat":"NR"},"b":{"desc":"Qualifying information ","repeat":"NR"},"desc":"KEY TITLE","ind1":{"allowed":" ","desc":"Specifies whether variant title and/or added entry is required"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"repeat":"R"},"240":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Uniform title printed or displayed"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"NR","s":{"desc":"Version ","repeat":"NR"}},"242":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Title ","repeat":"NR"},"b":{"desc":"Remainder of title ","repeat":"NR"},"c":{"desc":"Statement of responsibility, etc. ","repeat":"NR"},"desc":"TRANSLATION OF TITLE BY CATALOGING AGENCY","h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Title added entry"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R","y":{"desc":"Language code of translated title ","repeat":"NR"}},"243":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"COLLECTIVE UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Uniform title printed or displayed"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"NR","s":{"desc":"Version ","repeat":"NR"}},"245":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Title ","repeat":"NR"},"b":{"desc":"Remainder of title ","repeat":"NR"},"c":{"desc":"Statement of responsibility, etc. ","repeat":"NR"},"desc":"TITLE STATEMENT","f":{"desc":"Inclusive dates ","repeat":"NR"},"g":{"desc":"Bulk dates ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Title added entry"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"k":{"desc":"Form ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"NR","s":{"desc":"Version ","repeat":"NR"}},"246":{"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Title proper/short title ","repeat":"NR"},"b":{"desc":"Remainder of title ","repeat":"NR"},"desc":"VARYING FORM OF TITLE","f":{"desc":"Date or sequential designation ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"0123","desc":"Note/added entry controller"},"ind2":{"allowed":" 012345678","desc":"Type of title"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R"},"247":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Title ","repeat":"NR"},"b":{"desc":"Remainder of title ","repeat":"NR"},"desc":"FORMER TITLE","f":{"desc":"Date or sequential designation ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Title added entry"},"ind2":{"allowed":"01","desc":"Note controller"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R","x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"250":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Edition statement ","repeat":"NR"},"b":{"desc":"Remainder of edition statement ","repeat":"NR"},"desc":"EDITION STATEMENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"254":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Musical presentation statement ","repeat":"NR"},"desc":"MUSICAL PRESENTATION STATEMENT","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"255":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Statement of scale ","repeat":"NR"},"b":{"desc":"Statement of projection ","repeat":"NR"},"c":{"desc":"Statement of coordinates ","repeat":"NR"},"d":{"desc":"Statement of zone ","repeat":"NR"},"desc":"CARTOGRAPHIC MATHEMATICAL DATA","e":{"desc":"Statement of equinox ","repeat":"NR"},"f":{"desc":"Outer G-ring coordinate pairs ","repeat":"NR"},"g":{"desc":"Exclusion G-ring coordinate pairs ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"256":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Computer file characteristics ","repeat":"NR"},"desc":"COMPUTER FILE CHARACTERISTICS","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"257":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Country of producing entity ","repeat":"NR"},"desc":"COUNTRY OF PRODUCING ENTITY FOR ARCHIVAL FILMS","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"260":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Place of publication, distribution, etc. ","repeat":"R"},"b":{"desc":"Name of publisher, distributor, etc. ","repeat":"R"},"c":{"desc":"Date of publication, distribution, etc. ","repeat":"R"},"d":{"desc":"Plate or publisher's number for music (Pre-AACR 2) ","repeat":"NR"},"desc":"PUBLICATION, DISTRIBUTION, ETC. (IMPRINT)","e":{"desc":"Place of manufacture ","repeat":"NR"},"f":{"desc":"Manufacturer ","repeat":"NR"},"g":{"desc":"Date of manufacture ","repeat":"NR"},"ind1":{"allowed":" 23","desc":"Sequence of publishing statements"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"261":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Producing company ","repeat":"R"},"b":{"desc":"Releasing company (primary distributor) ","repeat":"R"},"d":{"desc":"Date of production, release, etc. ","repeat":"R"},"desc":"IMPRINT STATEMENT FOR FILMS (Pre-AACR 1 Revised)","e":{"desc":"Contractual producer ","repeat":"R"},"f":{"desc":"Place of production, release, etc. ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"262":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Place of production, release, etc. ","repeat":"NR"},"b":{"desc":"Publisher or trade name ","repeat":"NR"},"c":{"desc":"Date of production, release, etc. ","repeat":"NR"},"desc":"IMPRINT STATEMENT FOR SOUND RECORDINGS (Pre-AACR 2)","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Serial identification ","repeat":"NR"},"l":{"desc":"Matrix and/or take number ","repeat":"NR"},"repeat":"NR"},"263":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Projected publication date ","repeat":"NR"},"desc":"PROJECTED PUBLICATION DATE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"270":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Address ","repeat":"R"},"b":{"desc":"City ","repeat":"NR"},"c":{"desc":"State or province ","repeat":"NR"},"d":{"desc":"Country ","repeat":"NR"},"desc":"ADDRESS","e":{"desc":"Postal code ","repeat":"NR"},"f":{"desc":"Terms preceding attention name ","repeat":"NR"},"g":{"desc":"Attention name ","repeat":"NR"},"h":{"desc":"Attention position ","repeat":"NR"},"i":{"desc":"Type of address ","repeat":"NR"},"ind1":{"allowed":" 12","desc":"Level"},"ind2":{"allowed":" 07","desc":"Type of address"},"j":{"desc":"Specialized telephone number ","repeat":"R"},"k":{"desc":"Telephone number ","repeat":"R"},"l":{"desc":"Fax number ","repeat":"R"},"m":{"desc":"Electronic mail address ","repeat":"R"},"n":{"desc":"TDD or TTY number ","repeat":"R"},"p":{"desc":"Contact person ","repeat":"R"},"q":{"desc":"Title of contact person ","repeat":"R"},"r":{"desc":"Hours ","repeat":"R"},"repeat":"R","z":{"desc":"Public note ","repeat":"R"}},"300":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Extent ","repeat":"R"},"b":{"desc":"Other physical details ","repeat":"NR"},"c":{"desc":"Dimensions ","repeat":"R"},"desc":"PHYSICAL DESCRIPTION","e":{"desc":"Accompanying material ","repeat":"NR"},"f":{"desc":"Type of unit ","repeat":"R"},"g":{"desc":"Size of unit ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"306":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Playing time ","repeat":"R"},"desc":"PLAYING TIME","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"307":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Hours ","repeat":"NR"},"b":{"desc":"Additional information ","repeat":"NR"},"desc":"HOURS, ETC.","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"310":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Current publication frequency ","repeat":"NR"},"b":{"desc":"Date of current publication frequency ","repeat":"NR"},"desc":"CURRENT PUBLICATION FREQUENCY","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"321":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Former publication frequency ","repeat":"NR"},"b":{"desc":"Dates of former publication frequency ","repeat":"NR"},"desc":"FORMER PUBLICATION FREQUENCY","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"340":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Material base and configuration ","repeat":"R"},"b":{"desc":"Dimensions ","repeat":"R"},"c":{"desc":"Materials applied to surface ","repeat":"R"},"d":{"desc":"Information recording technique ","repeat":"R"},"desc":"PHYSICAL MEDIUM","e":{"desc":"Support ","repeat":"R"},"f":{"desc":"Production rate/ratio ","repeat":"R"},"h":{"desc":"Location within medium ","repeat":"R"},"i":{"desc":"Technical specifications of medium ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"342":{"2":{"desc":"Reference method used ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Name ","repeat":"NR"},"b":{"desc":"Coordinate or distance units ","repeat":"NR"},"c":{"desc":"Latitude resolution ","repeat":"NR"},"d":{"desc":"Longitude resolution ","repeat":"NR"},"desc":"GEOSPATIAL REFERENCE DATA","e":{"desc":"Standard parallel or oblique line latitude ","repeat":"R"},"f":{"desc":"Oblique line longitude ","repeat":"R"},"g":{"desc":"Longitude of central meridian or projection center ","repeat":"NR"},"h":{"desc":"Latitude of projection origin or projection center ","repeat":"NR"},"i":{"desc":"False easting ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Geospatial reference dimension"},"ind2":{"allowed":"012345678","desc":"Geospatial reference method"},"j":{"desc":"False northing ","repeat":"NR"},"k":{"desc":"Scale factor ","repeat":"NR"},"l":{"desc":"Height of perspective point above surface ","repeat":"NR"},"m":{"desc":"Azimuthal angle ","repeat":"NR"},"o":{"desc":"Landsat number and path number ","repeat":"NR"},"p":{"desc":"Zone identifier ","repeat":"NR"},"q":{"desc":"Ellipsoid name ","repeat":"NR"},"r":{"desc":"Semi-major axis ","repeat":"NR"},"repeat":"R","s":{"desc":"Denominator of flattening ratio ","repeat":"NR"},"t":{"desc":"Vertical resolution ","repeat":"NR"},"u":{"desc":"Vertical encoding method ","repeat":"NR"},"v":{"desc":"Local planar, local, or other projection or grid description ","repeat":"NR"},"w":{"desc":"Local planar or local georeference information ","repeat":"NR"}},"343":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Planar coordinate encoding method ","repeat":"NR"},"b":{"desc":"Planar distance units ","repeat":"NR"},"c":{"desc":"Abscissa resolution ","repeat":"NR"},"d":{"desc":"Ordinate resolution ","repeat":"NR"},"desc":"PLANAR COORDINATE DATA","e":{"desc":"Distance resolution ","repeat":"NR"},"f":{"desc":"Bearing resolution ","repeat":"NR"},"g":{"desc":"Bearing units ","repeat":"NR"},"h":{"desc":"Bearing reference direction ","repeat":"NR"},"i":{"desc":"Bearing reference meridian ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"351":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Organization ","repeat":"R"},"b":{"desc":"Arrangement ","repeat":"R"},"c":{"desc":"Hierarchical level ","repeat":"NR"},"desc":"ORGANIZATION AND ARRANGEMENT OF MATERIALS","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"352":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Direct reference method ","repeat":"NR"},"b":{"desc":"Object type ","repeat":"R"},"c":{"desc":"Object count ","repeat":"R"},"d":{"desc":"Row count ","repeat":"NR"},"desc":"DIGITAL GRAPHIC REPRESENTATION","e":{"desc":"Column count ","repeat":"NR"},"f":{"desc":"Vertical count ","repeat":"NR"},"g":{"desc":"VPF topology level ","repeat":"NR"},"i":{"desc":"Indirect reference description ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"q":{"desc":"Format of the digital image ","repeat":"R"},"repeat":"R"},"355":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Security classification ","repeat":"NR"},"b":{"desc":"Handling instructions ","repeat":"R"},"c":{"desc":"External dissemination information ","repeat":"R"},"d":{"desc":"Downgrading or declassification event ","repeat":"NR"},"desc":"SECURITY CLASSIFICATION CONTROL","e":{"desc":"Classification system ","repeat":"NR"},"f":{"desc":"Country of origin code ","repeat":"NR"},"g":{"desc":"Downgrading date ","repeat":"NR"},"h":{"desc":"Declassification date ","repeat":"NR"},"ind1":{"allowed":"0123458","desc":"Controlled element"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Authorization ","repeat":"R"},"repeat":"R"},"357":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Originator control term ","repeat":"NR"},"b":{"desc":"Originating agency ","repeat":"R"},"c":{"desc":"Authorized recipients of material ","repeat":"R"},"desc":"ORIGINATOR DISSEMINATION CONTROL","g":{"desc":"Other restrictions ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"362":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Dates of publication and/or sequential designation ","repeat":"NR"},"desc":"DATES OF PUBLICATION AND/OR SEQUENTIAL DESIGNATION","ind1":{"allowed":"01","desc":"Format of date"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"Source of information ","repeat":"NR"}},"365":{"2":{"desc":"Source of price type code ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Price type code ","repeat":"NR"},"b":{"desc":"Price amount ","repeat":"NR"},"c":{"desc":"Currency code ","repeat":"NR"},"d":{"desc":"Unit of pricing ","repeat":"NR"},"desc":"TRADE PRICE","e":{"desc":"Price note ","repeat":"NR"},"f":{"desc":"Price effective from ","repeat":"NR"},"g":{"desc":"Price effective until ","repeat":"NR"},"h":{"desc":"Tax rate 1 ","repeat":"NR"},"i":{"desc":"Tax rate 2 ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"ISO country code ","repeat":"NR"},"k":{"desc":"MARC country code ","repeat":"NR"},"m":{"desc":"Identification of pricing entity ","repeat":"NR"},"repeat":"R"},"366":{"2":{"desc":"Source of availability status code ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Publishers' compressed title identification ","repeat":"NR"},"b":{"desc":"Detailed date of publication ","repeat":"NR"},"c":{"desc":"Availability status code ","repeat":"NR"},"d":{"desc":"Expected next availability date ","repeat":"NR"},"desc":"TRADE AVAILABILITY INFORMATION","e":{"desc":"Note ","repeat":"NR"},"f":{"desc":"Publishers' discount category ","repeat":"NR"},"g":{"desc":"Date made out of print ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"ISO country code ","repeat":"NR"},"k":{"desc":"MARC country code ","repeat":"NR"},"m":{"desc":"Identification of agency ","repeat":"NR"},"repeat":"R"},"400":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Personal name ","repeat":"NR"},"b":{"desc":"Numeration ","repeat":"NR"},"c":{"desc":"Titles and other words associated with a name ","repeat":"R"},"d":{"desc":"Dates associated with a name ","repeat":"NR"},"desc":"SERIES STATEMENT/ADDED ENTRY--PERSONAL NAME ","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"013","desc":"Type of personal name entry element"},"ind2":{"allowed":"01","desc":"Pronoun represents main entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume number/sequential designation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"410":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Corporate name or jurisdiction name as entry element ","repeat":"NR"},"b":{"desc":"Subordinate unit ","repeat":"R"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting or treaty signing ","repeat":"R"},"desc":"SERIES STATEMENT/ADDED ENTRY--CORPORATE NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of corporate name entry element"},"ind2":{"allowed":"01","desc":"Pronoun represents main entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume number/sequential designation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"411":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Meeting name or jurisdiction name as entry element ","repeat":"NR"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting ","repeat":"NR"},"desc":"SERIES STATEMENT/ADDED ENTRY--MEETING NAME","e":{"desc":"Subordinate unit ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of meeting name entry element"},"ind2":{"allowed":"01","desc":"Pronoun represents main entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Name of meeting following jurisdiction name entry element ","repeat":"NR"},"repeat":"R","t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume number/sequential designation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"440":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Title ","repeat":"NR"},"desc":"SERIES STATEMENT/ADDED ENTRY--TITLE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R","v":{"desc":"Volume number/sequential designation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"490":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Series statement ","repeat":"R"},"desc":"SERIES STATEMENT","ind1":{"allowed":"01","desc":"Specifies whether series is traced"},"ind2":{"allowed":" ","desc":"Undefined"},"l":{"desc":"Library of Congress call number ","repeat":"NR"},"repeat":"R","v":{"desc":"Volume number/sequential designation ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"500":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"General note ","repeat":"NR"},"desc":"GENERAL NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"501":{"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"With note ","repeat":"NR"},"desc":"WITH NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"502":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Dissertation note ","repeat":"NR"},"desc":"DISSERTATION NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"504":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Bibliography, etc. note ","repeat":"NR"},"b":{"desc":"Number of references ","repeat":"NR"},"desc":"BIBLIOGRAPHY, ETC. NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"505":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Formatted contents note ","repeat":"NR"},"desc":"FORMATTED CONTENTS NOTE","g":{"desc":"Miscellaneous information ","repeat":"R"},"ind1":{"allowed":"0128","desc":"Display constant controller"},"ind2":{"allowed":" 0","desc":"Level of content designation"},"r":{"desc":"Statement of responsibility ","repeat":"R"},"repeat":"R","t":{"desc":"Title ","repeat":"R"},"u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"506":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Terms governing access ","repeat":"NR"},"b":{"desc":"Jurisdiction ","repeat":"R"},"c":{"desc":"Physical access provisions ","repeat":"R"},"d":{"desc":"Authorized users ","repeat":"R"},"desc":"RESTRICTIONS ON ACCESS NOTE","e":{"desc":"Authorization ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"507":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Representative fraction of scale note ","repeat":"NR"},"b":{"desc":"Remainder of scale note ","repeat":"NR"},"desc":"SCALE NOTE FOR GRAPHIC MATERIAL","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"NR"},"508":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Creation/production credits note ","repeat":"NR"},"desc":"CREATION/PRODUCTION CREDITS NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"510":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Name of source ","repeat":"NR"},"b":{"desc":"Coverage of source ","repeat":"NR"},"c":{"desc":"Location within source ","repeat":"NR"},"desc":"CITATION/REFERENCES NOTE","ind1":{"allowed":"01234","desc":"Coverage/location in source"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"511":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Participant or performer note ","repeat":"NR"},"desc":"PARTICIPANT OR PERFORMER NOTE","ind1":{"allowed":"01","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"513":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Type of report ","repeat":"NR"},"b":{"desc":"Period covered ","repeat":"NR"},"desc":"TYPE OF REPORT AND PERIOD COVERED NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"514":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Attribute accuracy report ","repeat":"NR"},"b":{"desc":"Attribute accuracy value ","repeat":"R"},"c":{"desc":"Attribute accuracy explanation ","repeat":"R"},"d":{"desc":"Logical consistency report ","repeat":"NR"},"desc":"DATA QUALITY NOTE","e":{"desc":"Completeness report ","repeat":"NR"},"f":{"desc":"Horizontal position accuracy report ","repeat":"NR"},"g":{"desc":"Horizontal position accuracy value ","repeat":"R"},"h":{"desc":"Horizontal position accuracy explanation ","repeat":"R"},"i":{"desc":"Vertical positional accuracy report ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Vertical positional accuracy value ","repeat":"R"},"k":{"desc":"Vertical positional accuracy explanation ","repeat":"R"},"m":{"desc":"Cloud cover ","repeat":"NR"},"repeat":"NR","u":{"desc":"Uniform Resource Identifier ","repeat":"R"},"z":{"desc":"Display note ","repeat":"R"}},"515":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Numbering peculiarities note ","repeat":"NR"},"desc":"NUMBERING PECULIARITIES NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"516":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Type of computer file or data note ","repeat":"NR"},"desc":"TYPE OF COMPUTER FILE OR DATA NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"518":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Date/time and place of an event note ","repeat":"NR"},"desc":"DATE/TIME AND PLACE OF AN EVENT NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"520":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Summary, etc. note ","repeat":"NR"},"b":{"desc":"Expansion of summary note ","repeat":"NR"},"desc":"SUMMARY, ETC.","ind1":{"allowed":" 01238","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"521":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Target audience note ","repeat":"R"},"b":{"desc":"Source ","repeat":"NR"},"desc":"TARGET AUDIENCE NOTE","ind1":{"allowed":" 012348","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"522":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Geographic coverage note ","repeat":"NR"},"desc":"GEOGRAPHIC COVERAGE NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"524":{"2":{"desc":"Source of schema used ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Preferred citation of described materials note ","repeat":"NR"},"desc":"PREFERRED CITATION OF DESCRIBED MATERIALS NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"525":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Supplement note ","repeat":"NR"},"desc":"SUPPLEMENT NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"526":{"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Program name ","repeat":"NR"},"b":{"desc":"Interest level ","repeat":"NR"},"c":{"desc":"Reading level ","repeat":"NR"},"d":{"desc":"Title point value ","repeat":"NR"},"desc":"STUDY PROGRAM INFORMATION NOTE","i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"08","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","x":{"desc":"Nonpublic note ","repeat":"R"},"z":{"desc":"Public note ","repeat":"R"}},"530":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Additional physical form available note ","repeat":"NR"},"b":{"desc":"Availability source ","repeat":"NR"},"c":{"desc":"Availability conditions ","repeat":"NR"},"d":{"desc":"Order number ","repeat":"NR"},"desc":"ADDITIONAL PHYSICAL FORM AVAILABLE NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"533":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Fixed-length data elements of reproduction ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Type of reproduction ","repeat":"NR"},"b":{"desc":"Place of reproduction ","repeat":"R"},"c":{"desc":"Agency responsible for reproduction ","repeat":"R"},"d":{"desc":"Date of reproduction ","repeat":"NR"},"desc":"REPRODUCTION NOTE","e":{"desc":"Physical description of reproduction ","repeat":"NR"},"f":{"desc":"Series statement of reproduction ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"m":{"desc":"Dates and/or sequential designation of issues reproduced ","repeat":"R"},"n":{"desc":"Note about reproduction ","repeat":"R"},"repeat":"R"},"534":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry of original ","repeat":"NR"},"b":{"desc":"Edition statement of original ","repeat":"NR"},"c":{"desc":"Publication, distribution, etc. of original ","repeat":"NR"},"desc":"ORIGINAL VERSION NOTE","e":{"desc":"Physical description, etc. of original ","repeat":"NR"},"f":{"desc":"Series statement of original ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Key title of original ","repeat":"R"},"l":{"desc":"Location of original ","repeat":"NR"},"m":{"desc":"Material specific details ","repeat":"NR"},"n":{"desc":"Note about original ","repeat":"R"},"p":{"desc":"Introductory phrase ","repeat":"NR"},"repeat":"R","t":{"desc":"Title statement of original ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"R"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"535":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Custodian ","repeat":"NR"},"b":{"desc":"Postal address ","repeat":"R"},"c":{"desc":"Country ","repeat":"R"},"d":{"desc":"Telecommunications address ","repeat":"R"},"desc":"LOCATION OF ORIGINALS/DUPLICATES NOTE","g":{"desc":"Repository location code ","repeat":"NR"},"ind1":{"allowed":"12","desc":"Additional information about custodian"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"536":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Text of note ","repeat":"NR"},"b":{"desc":"Contract number ","repeat":"R"},"c":{"desc":"Grant number ","repeat":"R"},"d":{"desc":"Undifferentiated number ","repeat":"R"},"desc":"FUNDING INFORMATION NOTE","e":{"desc":"Program element number ","repeat":"R"},"f":{"desc":"Project number ","repeat":"R"},"g":{"desc":"Task number ","repeat":"R"},"h":{"desc":"Work unit number ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"538":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"System details note ","repeat":"NR"},"desc":"SYSTEM DETAILS NOTE","i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"540":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Terms governing use and reproduction ","repeat":"NR"},"b":{"desc":"Jurisdiction ","repeat":"NR"},"c":{"desc":"Authorization ","repeat":"NR"},"d":{"desc":"Authorized users ","repeat":"NR"},"desc":"TERMS GOVERNING USE AND REPRODUCTION NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"541":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Source of acquisition ","repeat":"NR"},"b":{"desc":"Address ","repeat":"NR"},"c":{"desc":"Method of acquisition ","repeat":"NR"},"d":{"desc":"Date of acquisition ","repeat":"NR"},"desc":"IMMEDIATE SOURCE OF ACQUISITION NOTE","e":{"desc":"Accession number ","repeat":"NR"},"f":{"desc":"Owner ","repeat":"NR"},"h":{"desc":"Purchase price ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"n":{"desc":"Extent ","repeat":"R"},"o":{"desc":"Type of unit ","repeat":"R"},"repeat":"R"},"544":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Custodian ","repeat":"R"},"b":{"desc":"Address ","repeat":"R"},"c":{"desc":"Country ","repeat":"R"},"d":{"desc":"Title ","repeat":"R"},"desc":"LOCATION OF OTHER ARCHIVAL MATERIALS NOTE","e":{"desc":"Provenance ","repeat":"R"},"ind1":{"allowed":" 01","desc":"Relationship"},"ind2":{"allowed":" ","desc":"Undefined"},"n":{"desc":"Note ","repeat":"R"},"repeat":"R"},"545":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Biographical or historical note ","repeat":"NR"},"b":{"desc":"Expansion ","repeat":"NR"},"desc":"BIOGRAPHICAL OR HISTORICAL DATA","ind1":{"allowed":" 01","desc":"Type of data"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"546":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Language note ","repeat":"NR"},"b":{"desc":"Information code or alphabet ","repeat":"R"},"desc":"LANGUAGE NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"547":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Former title complexity note ","repeat":"NR"},"desc":"FORMER TITLE COMPLEXITY NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"550":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Issuing body note ","repeat":"NR"},"desc":"ISSUING BODY NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"552":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Entity type label ","repeat":"NR"},"b":{"desc":"Entity type definition and source ","repeat":"NR"},"c":{"desc":"Attribute label ","repeat":"NR"},"d":{"desc":"Attribute definition and source ","repeat":"NR"},"desc":"ENTITY AND ATTRIBUTE INFORMATION NOTE","e":{"desc":"Enumerated domain value ","repeat":"R"},"f":{"desc":"Enumerated domain value definition and source ","repeat":"R"},"g":{"desc":"Range domain minimum and maximum ","repeat":"NR"},"h":{"desc":"Codeset name and source ","repeat":"NR"},"i":{"desc":"Unrepresentable domain ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Attribute units of measurement and resolution ","repeat":"NR"},"k":{"desc":"Beginning date and ending date of attribute values ","repeat":"NR"},"l":{"desc":"Attribute value accuracy ","repeat":"NR"},"m":{"desc":"Attribute value accuracy explanation ","repeat":"NR"},"n":{"desc":"Attribute measurement frequency ","repeat":"NR"},"o":{"desc":"Entity and attribute overview ","repeat":"R"},"p":{"desc":"Entity and attribute detail citation ","repeat":"R"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"},"z":{"desc":"Display note ","repeat":"R"}},"555":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Cumulative index/finding aids note ","repeat":"NR"},"b":{"desc":"Availability source ","repeat":"R"},"c":{"desc":"Degree of control ","repeat":"NR"},"d":{"desc":"Bibliographic reference ","repeat":"NR"},"desc":"CUMULATIVE INDEX/FINDING AIDS NOTE","ind1":{"allowed":" 08","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"556":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Information about documentation note ","repeat":"NR"},"desc":"INFORMATION ABOUT DOCUMENTATION NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"International Standard Book Number ","repeat":"R"}},"561":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"History ","repeat":"NR"},"desc":"OWNERSHIP AND CUSTODIAL HISTORY","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"562":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Identifying markings ","repeat":"R"},"b":{"desc":"Copy identification ","repeat":"R"},"c":{"desc":"Version identification ","repeat":"R"},"d":{"desc":"Presentation format ","repeat":"R"},"desc":"COPY AND VERSION IDENTIFICATION NOTE","e":{"desc":"Number of copies ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"563":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Binding note ","repeat":"NR"},"desc":"BINDING INFORMATION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"}},"565":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Number of cases/variables ","repeat":"NR"},"b":{"desc":"Name of variable ","repeat":"R"},"c":{"desc":"Unit of analysis ","repeat":"R"},"d":{"desc":"Universe of data ","repeat":"R"},"desc":"CASE FILE CHARACTERISTICS NOTE","e":{"desc":"Filing scheme or code ","repeat":"R"},"ind1":{"allowed":" 08","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"567":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Methodology note ","repeat":"NR"},"desc":"METHODOLOGY NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"580":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Linking entry complexity note ","repeat":"NR"},"desc":"LINKING ENTRY COMPLEXITY NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"581":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Publications about described materials note","repeat":"NR"},"desc":"PUBLICATIONS ABOUT DESCRIBED MATERIALS NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","z":{"desc":"International Standard Book Number ","repeat":"R"}},"583":{"2":{"desc":"Source of term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Action ","repeat":"NR"},"b":{"desc":"Action identification ","repeat":"R"},"c":{"desc":"Time/date of action ","repeat":"R"},"d":{"desc":"Action interval ","repeat":"R"},"desc":"ACTION NOTE","e":{"desc":"Contingency for action ","repeat":"R"},"f":{"desc":"Authorization ","repeat":"R"},"h":{"desc":"Jurisdiction ","repeat":"R"},"i":{"desc":"Method of action ","repeat":"R"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Site of action ","repeat":"R"},"k":{"desc":"Action agent ","repeat":"R"},"l":{"desc":"Status ","repeat":"R"},"n":{"desc":"Extent ","repeat":"R"},"o":{"desc":"Type of unit ","repeat":"R"},"repeat":"R","u":{"desc":"Uniform Resource Identifier ","repeat":"R"},"x":{"desc":"Nonpublic note ","repeat":"R"},"z":{"desc":"Public note ","repeat":"R"}},"584":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Accumulation ","repeat":"R"},"b":{"desc":"Frequency of use ","repeat":"R"},"desc":"ACCUMULATION AND FREQUENCY OF USE NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"585":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Exhibitions note ","repeat":"NR"},"desc":"EXHIBITIONS NOTE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"586":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Awards note ","repeat":"NR"},"desc":"AWARDS NOTE","ind1":{"allowed":" 8","desc":"Display constant controller"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"600":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Personal name ","repeat":"NR"},"b":{"desc":"Numeration ","repeat":"NR"},"c":{"desc":"Titles and other words associated with a name","repeat":"R"},"d":{"desc":"Dates associated with a name ","repeat":"NR"},"desc":"SUBJECT ADDED ENTRY--PERSONAL NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"013","desc":"Type of personal name entry element"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"j":{"desc":"Attribution qualifier ","repeat":"R"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Fuller form of name ","repeat":"NR"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"610":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Corporate name or jurisdiction name as entry element ","repeat":"NR"},"b":{"desc":"Subordinate unit ","repeat":"R"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting or treaty signing ","repeat":"R"},"desc":"SUBJECT ADDED ENTRY--CORPORATE NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of corporate name entry element"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"611":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Meeting name or jurisdiction name as entry element ","repeat":"NR"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting ","repeat":"NR"},"desc":"SUBJECT ADDED ENTRY--MEETING NAME","e":{"desc":"Subordinate unit ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of meeting name entry element"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Name of meeting following jurisdiction name entry element ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"630":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"SUBJECT ADDED ENTRY--UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"0-9","desc":"Nonfiling characters"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"648":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Chronological term ","repeat":"NR"},"desc":"SUBJECT ADDED ENTRY--CHRONOLOGICAL TERM","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"650":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Topical term or geographic name as entry element ","repeat":"NR"},"b":{"desc":"Topical term following geographic name as entry element ","repeat":"NR"},"c":{"desc":"Location of event ","repeat":"NR"},"d":{"desc":"Active dates ","repeat":"NR"},"desc":"SUBJECT ADDED ENTRY--TOPICAL TERM","e":{"desc":"Relator term ","repeat":"NR"},"ind1":{"allowed":" 012","desc":"Level of subject"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"651":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Geographic name ","repeat":"NR"},"desc":"SUBJECT ADDED ENTRY--GEOGRAPHIC NAME","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"653":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uncontrolled term ","repeat":"R"},"desc":"INDEX TERM--UNCONTROLLED","ind1":{"allowed":" 012","desc":"Level of index term"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"654":{"2":{"desc":"Source of heading or term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Focus term ","repeat":"R"},"b":{"desc":"Non-focus term ","repeat":"R"},"c":{"desc":"Facet/hierarchy designation ","repeat":"R"},"desc":"SUBJECT ADDED ENTRY--FACETED TOPICAL TERMS","ind1":{"allowed":" 012","desc":"Level of subject"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"655":{"2":{"desc":"Source of term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Genre/form data or focus term ","repeat":"NR"},"b":{"desc":"Non-focus term ","repeat":"R"},"c":{"desc":"Facet/hierarchy designation ","repeat":"R"},"desc":"INDEX TERM--GENRE/FORM","ind1":{"allowed":" 0","desc":"Type of heading"},"ind2":{"allowed":"01234567","desc":"Thesaurus"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"656":{"2":{"desc":"Source of term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Occupation ","repeat":"NR"},"desc":"INDEX TERM--OCCUPATION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"7","desc":"Source of term"},"k":{"desc":"Form ","repeat":"NR"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"657":{"2":{"desc":"Source of term ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Function ","repeat":"NR"},"desc":"INDEX TERM--FUNCTION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"7","desc":"Source of term"},"repeat":"R","v":{"desc":"Form subdivision ","repeat":"R"},"x":{"desc":"General subdivision ","repeat":"R"},"y":{"desc":"Chronological subdivision ","repeat":"R"},"z":{"desc":"Geographic subdivision ","repeat":"R"}},"658":{"2":{"desc":"Source of term or code ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main curriculum objective ","repeat":"NR"},"b":{"desc":"Subordinate curriculum objective ","repeat":"R"},"c":{"desc":"Curriculum code ","repeat":"NR"},"d":{"desc":"Correlation factor ","repeat":"NR"},"desc":"INDEX TERM--CURRICULUM OBJECTIVE","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"700":{"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Personal name ","repeat":"NR"},"b":{"desc":"Numeration ","repeat":"NR"},"c":{"desc":"Titles and other words associated with a name ","repeat":"R"},"d":{"desc":"Dates associated with a name ","repeat":"NR"},"desc":"ADDED ENTRY--PERSONAL NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"013","desc":"Type of personal name entry element"},"ind2":{"allowed":" 2","desc":"Type of added entry"},"j":{"desc":"Attribution qualifier ","repeat":"R"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Fuller form of name ","repeat":"NR"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"710":{"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Corporate name or jurisdiction name as entry element ","repeat":"NR"},"b":{"desc":"Subordinate unit ","repeat":"R"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting or treaty signing ","repeat":"R"},"desc":"ADDED ENTRY--CORPORATE NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of corporate name entry element"},"ind2":{"allowed":" 2","desc":"Type of added entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"711":{"3":{"desc":"Materials specified ","repeat":"NR"},"4":{"desc":"Relator code ","repeat":"R"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Meeting name or jurisdiction name as entry element ","repeat":"NR"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting ","repeat":"NR"},"desc":"ADDED ENTRY--MEETING NAME","e":{"desc":"Subordinate unit ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of meeting name entry element"},"ind2":{"allowed":" 2","desc":"Type of added entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Name of meeting following jurisdiction name entry element ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"720":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Name ","repeat":"NR"},"desc":"ADDED ENTRY--UNCONTROLLED NAME","e":{"desc":"Relator term ","repeat":"R"},"ind1":{"allowed":" 12","desc":"Type of name"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"730":{"3":{"desc":"Materials specified ","repeat":"NR"},"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"ADDED ENTRY--UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"0-9","desc":"Nonfiling characters"},"ind2":{"allowed":" 2","desc":"Type of added entry"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"}},"740":{"5":{"desc":"Institution to which field applies ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uncontrolled related/analytical title ","repeat":"NR"},"desc":"ADDED ENTRY--UNCONTROLLED RELATED/ANALYTICAL TITLE","h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"0-9","desc":"Nonfiling characters"},"ind2":{"allowed":" 2","desc":"Type of added entry"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"repeat":"R"},"752":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Country ","repeat":"NR"},"b":{"desc":"State, province, territory ","repeat":"NR"},"c":{"desc":"County, region, islands area ","repeat":"NR"},"d":{"desc":"City ","repeat":"NR"},"desc":"ADDED ENTRY--HIERARCHICAL PLACE NAME","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"753":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Make and model of machine ","repeat":"NR"},"b":{"desc":"Programming language ","repeat":"NR"},"c":{"desc":"Operating system ","repeat":"NR"},"desc":"SYSTEM DETAILS ACCESS TO COMPUTER FILES","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"754":{"2":{"desc":"Source of taxonomic identification ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Taxonomic name ","repeat":"R"},"c":{"desc":"Taxonomic category ","repeat":"R"},"d":{"desc":"Common or alternative name ","repeat":"R"},"desc":"ADDED ENTRY--TAXONOMIC IDENTIFICATION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R","x":{"desc":"Non-public note ","repeat":"R"},"z":{"desc":"Public note ","repeat":"R"}},"760":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"MAIN SERIES ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"}},"762":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"SUBSERIES ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"}},"765":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"ORIGINAL LANGUAGE ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"767":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"TRANSLATION ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"770":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"SUPPLEMENT/SPECIAL ISSUE ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"772":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"SUPPLEMENT PARENT ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 08","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Stan dard Book Number ","repeat":"R"}},"773":{"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"HOST ITEM ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"p":{"desc":"Abbreviated title ","repeat":"NR"},"q":{"desc":"Enumeration and first page ","repeat":"NR"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"774":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"CONSTITUENT UNIT ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"775":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"OTHER EDITION ENTRY","e":{"desc":"Language code ","repeat":"NR"},"f":{"desc":"Country code ","repeat":"NR"},"g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"776":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"ADDITIONAL PHYSICAL FORM ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"777":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"ISSUED WITH ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"}},"780":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"PRECEDING ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":"01234567","desc":"Type of relationship"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"785":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"SUCCEEDING ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":"012345678","desc":"Type of relationship"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standa rd Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"786":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"DATA SOURCE ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"j":{"desc":"Period of content ","repeat":"NR"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"p":{"desc":"Abbreviated title ","repeat":"NR"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"v":{"desc":"Source Contribution ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"787":{"6":{"desc":"Linkage ","repeat":"NR"},"7":{"desc":"Control subfield ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Main entry heading ","repeat":"NR"},"b":{"desc":"Edition ","repeat":"NR"},"c":{"desc":"Qualifying information ","repeat":"NR"},"d":{"desc":"Place, publisher, and date of publication ","repeat":"NR"},"desc":"NONSPECIFIC RELATIONSHIP ENTRY","g":{"desc":"Relationship information ","repeat":"R"},"h":{"desc":"Physical description ","repeat":"NR"},"i":{"desc":"Display text ","repeat":"NR"},"ind1":{"allowed":"01","desc":"Note controller"},"ind2":{"allowed":" 8","desc":"Display constant controller"},"k":{"desc":"Series data for related item ","repeat":"R"},"m":{"desc":"Material-specific details ","repeat":"NR"},"n":{"desc":"Note ","repeat":"R"},"o":{"desc":"Other item identifier ","repeat":"R"},"r":{"desc":"Report number ","repeat":"R"},"repeat":"R","s":{"desc":"Uniform title ","repeat":"NR"},"t":{"desc":"Title ","repeat":"NR"},"u":{"desc":"Standard Technical Report Number ","repeat":"NR"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"International Standard Serial Number ","repeat":"NR"},"y":{"desc":"CODEN designation ","repeat":"NR"},"z":{"desc":"International Standard Book Number ","repeat":"R"}},"800":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Personal name ","repeat":"NR"},"b":{"desc":"Numeration ","repeat":"NR"},"c":{"desc":"Titles and other words associated with a name ","repeat":"R"},"d":{"desc":"Dates associated with a name ","repeat":"NR"},"desc":"SERIES ADDED ENTRY--PERSONAL NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"013","desc":"Type of personal name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Attribution qualifier ","repeat":"R"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Fuller form of name ","repeat":"NR"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume/sequential designation ","repeat":"NR"}},"810":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Corporate name or jurisdiction name as entry element ","repeat":"NR"},"b":{"desc":"Subordinate unit ","repeat":"R"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting or treaty signing ","repeat":"R"},"desc":"SERIES ADDED ENTRY--CORPORATE NAME","e":{"desc":"Relator term ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of corporate name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume/sequential designation ","repeat":"NR"}},"811":{"4":{"desc":"Relator code ","repeat":"R"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Meeting name or jurisdiction name as entry element ","repeat":"NR"},"c":{"desc":"Location of meeting ","repeat":"NR"},"d":{"desc":"Date of meeting ","repeat":"NR"},"desc":"SERIES ADDED ENTRY--MEETING NAME","e":{"desc":"Subordinate unit ","repeat":"R"},"f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of meeting name entry element"},"ind2":{"allowed":" ","desc":"Undefined"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"n":{"desc":"Number of part/section/meeting ","repeat":"R"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"q":{"desc":"Name of meeting following jurisdiction name entry element ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"u":{"desc":"Affiliation ","repeat":"NR"},"v":{"desc":"Volume/sequential designation ","repeat":"NR"}},"830":{"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Uniform title ","repeat":"NR"},"d":{"desc":"Date of treaty signing ","repeat":"R"},"desc":"SERIES ADDED ENTRY--UNIFORM TITLE","f":{"desc":"Date of a work ","repeat":"NR"},"g":{"desc":"Miscellaneous information ","repeat":"NR"},"h":{"desc":"Medium ","repeat":"NR"},"ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":"0-9","desc":"Nonfiling characters"},"k":{"desc":"Form subheading ","repeat":"R"},"l":{"desc":"Language of a work ","repeat":"NR"},"m":{"desc":"Medium of performance for music ","repeat":"R"},"n":{"desc":"Number of part/section of a work ","repeat":"R"},"o":{"desc":"Arranged statement for music ","repeat":"NR"},"p":{"desc":"Name of part/section of a work ","repeat":"R"},"r":{"desc":"Key for music ","repeat":"NR"},"repeat":"R","s":{"desc":"Version ","repeat":"NR"},"t":{"desc":"Title of a work ","repeat":"NR"},"v":{"desc":"Volume/sequential designation ","repeat":"NR"}},"841":{"desc":"HOLDINGS CODED DATA VALUES","repeat":"NR"},"842":{"desc":"TEXTUAL PHYSICAL FORM DESIGNATOR","repeat":"NR"},"843":{"desc":"REPRODUCTION NOTE","repeat":"R"},"844":{"desc":"NAME OF UNIT","repeat":"NR"},"845":{"desc":"TERMS GOVERNING USE AND REPRODUCTION NOTE","repeat":"R"},"850":{"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Holding institution ","repeat":"R"},"desc":"HOLDING INSTITUTION","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"},"852":{"2":{"desc":"Source of classification or shelving scheme ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Sequence number ","repeat":"NR"},"a":{"desc":"Location ","repeat":"NR"},"b":{"desc":"Sublocation or collection ","repeat":"R"},"c":{"desc":"Shelving location ","repeat":"R"},"desc":"LOCATION","e":{"desc":"Address ","repeat":"R"},"f":{"desc":"Coded location qualifier ","repeat":"R"},"g":{"desc":"Non-coded location qualifier ","repeat":"R"},"h":{"desc":"Classification part ","repeat":"NR"},"i":{"desc":"Item part ","repeat":"R"},"ind1":{"allowed":" 012345678","desc":"Shelving scheme"},"ind2":{"allowed":" 012","desc":"Shelving order"},"j":{"desc":"Shelving control number ","repeat":"NR"},"k":{"desc":"Call number prefix ","repeat":"R"},"l":{"desc":"Shelving form of title ","repeat":"NR"},"m":{"desc":"Call number suffix ","repeat":"R"},"n":{"desc":"Country code ","repeat":"NR"},"p":{"desc":"Piece designation ","repeat":"NR"},"q":{"desc":"Piece physical condition ","repeat":"NR"},"repeat":"R","s":{"desc":"Copyright article-fee code ","repeat":"R"},"t":{"desc":"Copy number ","repeat":"NR"},"x":{"desc":"Nonpublic note ","repeat":"R"},"z":{"desc":"Public note ","repeat":"R"}},"853":{"desc":"CAPTIONS AND PATTERN--BASIC BIBLIOGRAPHIC UNIT","repeat":"R"},"854":{"desc":"CAPTIONS AND PATTERN--SUPPLEMENTARY MATERIAL","repeat":"R"},"855":{"desc":"CAPTIONS AND PATTERN--INDEXES","repeat":"R"},"856":{"2":{"desc":"Access method ","repeat":"NR"},"3":{"desc":"Materials specified ","repeat":"NR"},"6":{"desc":"Linkage ","repeat":"NR"},"8":{"desc":"Field link and sequence number ","repeat":"R"},"a":{"desc":"Host name ","repeat":"R"},"b":{"desc":"Access number ","repeat":"R"},"c":{"desc":"Compression information ","repeat":"R"},"d":{"desc":"Path ","repeat":"R"},"desc":"ELECTRONIC LOCATION AND ACCESS","f":{"desc":"Electronic name ","repeat":"R"},"h":{"desc":"Processor of request ","repeat":"NR"},"i":{"desc":"Instruction ","repeat":"R"},"ind1":{"allowed":" 012347","desc":"Access method"},"ind2":{"allowed":" 0128","desc":"Relationship"},"j":{"desc":"Bits per second ","repeat":"NR"},"k":{"desc":"Password ","repeat":"NR"},"l":{"desc":"Logon ","repeat":"NR"},"m":{"desc":"Contact for access assistance ","repeat":"R"},"n":{"desc":"Name of location of host ","repeat":"NR"},"o":{"desc":"Operating system ","repeat":"NR"},"p":{"desc":"Port ","repeat":"NR"},"q":{"desc":"Electronic format type ","repeat":"NR"},"r":{"desc":"Settings ","repeat":"NR"},"repeat":"R","s":{"desc":"File size ","repeat":"R"},"t":{"desc":"Terminal emulation ","repeat":"R"},"u":{"desc":"Uniform Resource Identifier ","repeat":"R"},"v":{"desc":"Hours access method available ","repeat":"R"},"w":{"desc":"Record control number ","repeat":"R"},"x":{"desc":"Nonpublic note ","repeat":"R"},"y":{"desc":"Link text ","repeat":"R"},"z":{"desc":"Public note ","repeat":"R"}},"863":{"desc":"ENUMERATION AND CHRONOLOGY--BASIC BIBLIOGRAPHIC UNIT","repeat":"R"},"864":{"desc":"ENUMERATION AND CHRONOLOGY--SUPPLEMENTARY MATERIAL","repeat":"R"},"865":{"desc":"ENUMERATION AND CHRONOLOGY--INDEXES","repeat":"R"},"866":{"desc":"TEXTUAL HOLDINGS--BASIC BIBLIOGRAPHIC UNIT","repeat":"R"},"867":{"desc":"TEXTUAL HOLDINGS--SUPPLEMENTARY MATERIAL","repeat":"R"},"868":{"desc":"TEXTUAL HOLDINGS--INDEXES","repeat":"R"},"876":{"desc":"ITEM INFORMATION--BASIC BIBLIOGRAPHIC UNIT","repeat":"R"},"877":{"desc":"ITEM INFORMATION--SUPPLEMENTARY MATERIAL","repeat":"R"},"878":{"desc":"ITEM INFORMATION--INDEXES","repeat":"R"},"880":{"6":{"desc":"Linkage","repeat":"NR"},"desc":"ALTERNATE GRAPHIC REPRESENTATION","repeat":"R"},"886":{"0":{"desc":"Foreign MARC subfield","repeat":"NR"},"1":{"desc":"Foreign MARC subfield","repeat":"NR"},"2":{"desc":"Source of data","repeat":"NR"},"3":{"desc":"Source of data","repeat":"NR"},"4":{"desc":"Source of data","repeat":"NR"},"5":{"desc":"Source of data","repeat":"NR"},"6":{"desc":"Source of data","repeat":"NR"},"7":{"desc":"Source of data","repeat":"NR"},"8":{"desc":"Source of data","repeat":"NR"},"9":{"desc":"Source of data","repeat":"NR"},"a":{"desc":"Tag of the foreign MARC field","repeat":"NR"},"b":{"desc":"Content of the foreign MARC field","repeat":"NR"},"c":{"desc":"Foreign MARC subfield","repeat":"NR"},"d":{"desc":"Foreign MARC subfield","repeat":"NR"},"desc":"FOREIGN MARC INFORMATION FIELD","e":{"desc":"Foreign MARC subfield","repeat":"NR"},"f":{"desc":"Foreign MARC subfield","repeat":"NR"},"g":{"desc":"Foreign MARC subfield","repeat":"NR"},"h":{"desc":"Foreign MARC subfield","repeat":"NR"},"i":{"desc":"Foreign MARC subfield","repeat":"NR"},"ind1":{"allowed":"012","desc":"Type of field"},"ind2":{"allowed":" ","desc":"Undefined"},"j":{"desc":"Foreign MARC subfield","repeat":"NR"},"k":{"desc":"Foreign MARC subfield","repeat":"NR"},"l":{"desc":"Foreign MARC subfield","repeat":"NR"},"m":{"desc":"Foreign MARC subfield","repeat":"NR"},"n":{"desc":"Foreign MARC subfield","repeat":"NR"},"o":{"desc":"Foreign MARC subfield","repeat":"NR"},"p":{"desc":"Foreign MARC subfield","repeat":"NR"},"q":{"desc":"Foreign MARC subfield","repeat":"NR"},"r":{"desc":"Foreign MARC subfield","repeat":"NR"},"repeat":"R","s":{"desc":"Foreign MARC subfield","repeat":"NR"},"t":{"desc":"Foreign MARC subfield","repeat":"NR"},"u":{"desc":"Foreign MARC subfield","repeat":"NR"},"v":{"desc":"Foreign MARC subfield","repeat":"NR"},"w":{"desc":"Foreign MARC subfield","repeat":"NR"},"x":{"desc":"Foreign MARC subfield","repeat":"NR"},"y":{"desc":"Foreign MARC subfield","repeat":"NR"},"z":{"desc":"Foreign MARC subfield","repeat":"NR"}},"887":{"2":{"desc":"Source of data","repeat":"NR"},"a":{"desc":"Content of non-MARC field","repeat":"NR"},"desc":"NON-MARC INFORMATION FIELD","ind1":{"allowed":" ","desc":"Undefined"},"ind2":{"allowed":" ","desc":"Undefined"},"repeat":"R"}};
--- /dev/null
+var rule_warnings = [];
+var tag_seen;
+
+function explain_marc() {
+ var s = '';
+ for (var w in rule_warnings) {
+ s = s + rule_warnings[w];
+ }
+ alert(s);
+}
+
+function legend_marc() {
+ var s = '';
+ var rows = document.getElementById('ctrl_rows').childNodes;
+ for (var r in rows) {
+ if ( (typeof(rows[r]) == 'object') &&
+ (rows[r].tagName == 'row') &&
+ (rows[r].getAttribute('hidden') != 'true')
+ ) {
+ var tagnumber = rows[r].firstChild.firstChild.value;
+ if ((marc_rules[tagnumber])&&(marc_rules[tagnumber].desc)) {
+ s = s + tagnumber + '\t' + marc_rules[tagnumber].desc + '\n';
+ } else {
+ s = s + tagnumber + '\n';
+ }
+ }
+ }
+ rows = document.getElementById('data_rows').childNodes;
+ for (var r in rows) {
+ if ( (typeof(rows[r]) == 'object') &&
+ (rows[r].tagName == 'row') &&
+ (rows[r].getAttribute('hidden') != 'true')
+ ) {
+ var tagnumber = rows[r].firstChild.firstChild.value;
+ if ((marc_rules[tagnumber])&&(marc_rules[tagnumber].desc)) {
+ s = s + tagnumber + '\t' + marc_rules[tagnumber].desc + '\n';
+ } else {
+ s = s + tagnumber + '\n';
+ }
+ }
+ }
+ alert(s);
+
+}
+
+function handle_tag_change(ev) {
+ dump('Entering handle_tag_change: ' + timer_elapsed('cat') + '\n');
+ rule_warnings = []; disable_widgets('explain_marc');
+ tag_seen = {};
+ var rows = document.getElementById('ctrl_rows').childNodes;
+ for (var r in rows) {
+ if ((typeof(rows[r]) == 'object')&&(rows[r].tagName == 'row')) {
+ test_tagnumber_rule(rows[r]);
+ }
+ }
+ rows = document.getElementById('data_rows').childNodes;
+ for (var r in rows) {
+ if ( (typeof(rows[r]) == 'object') &&
+ (rows[r].tagName == 'row') &&
+ (rows[r].getAttribute('hidden') != 'true')
+ ) {
+ test_tagnumber_rule(rows[r]);
+ test_ind1_rule(rows[r]);
+ test_ind2_rule(rows[r]);
+ test_subfield_rule(rows[r]);
+ }
+ }
+ if (rule_warnings.length > 0) { enable_widgets('explain_marc'); }
+ dump('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;
+ if (t.value.length > 3) {
+ t.value = t.value.substr(0,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;
+ }
+ }
+ remove_css_class(t,'invalid');
+ if (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 ( (rule.repeat == 'NR') && (tag_seen[t.value] > 1) ) {
+ add_css_class(t,'invalid');
+ var s = 'Tag ' + t.value + ' should be Non-Repeating\n';
+ rule_warnings.push(s); dump(s);
+ }
+ } else if (t.value != 'LDR') {
+ add_css_class(t,'invalid');
+ var s = 'Tag ' + t.value + ' is unknown.\n';
+ rule_warnings.push(s); dump(s);
+ }
+}
+
+function test_ind1_rule(r) {
+ // rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
+ var tagnumber = r.childNodes[0].firstChild.value;
+ var ind1 = r.childNodes[1].firstChild;
+ remove_css_class(ind1,'invalid');
+ if ((marc_rules[tagnumber]) && (marc_rules[tagnumber].ind1)) {
+ var regex = '/^[' + marc_rules[tagnumber].ind1.allowed + ']$/';
+ if (! ind1.value.match(eval(regex)) ) {
+ add_css_class(ind1,'invalid');
+ var s = 'Tag ' + tagnumber + ' Indicator 1 should be one of these characters: "' + marc_rules[tagnumber].ind1.allowed + '"\n';
+ rule_warnings.push(s); dump(s);
+ }
+ }
+}
+
+function test_ind2_rule(r) {
+ // rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
+ var tagnumber = r.childNodes[0].firstChild.value;
+ var ind2 = r.childNodes[2].firstChild;
+ remove_css_class(ind2,'invalid');
+ if ((marc_rules[tagnumber]) && (marc_rules[tagnumber].ind2)) {
+ var regex = '/^[' + marc_rules[tagnumber].ind2.allowed + ']$/';
+ if (! ind2.value.match(eval(regex)) ) {
+ add_css_class(ind2,'invalid');
+ var s = 'Tag ' + tagnumber + ' Indicator 2 should be one of these characters: "' + marc_rules[tagnumber].ind2.allowed + '"\n';
+ rule_warnings.push(s); dump(s);
+ }
+ }
+}
+
+function test_subfield_rule(r) {
+ // rows (rows) -> row (r) -> wrapper (w) -> textbox (t)
+ var tagnumber = r.childNodes[0].firstChild.value;
+ var data = r.childNodes[3].firstChild;
+ remove_css_class(data,'invalid');
+ if (marc_rules[tagnumber]) {
+ var datastring = data.value.replace(/^\s+/,'').replace(/\s+$/,'');
+ var subf_array = datastring.split(String.fromCharCode(8225));
+ if ( (subf_array[0] == '')||(subf_array[0] == null) ) {
+ subf_array.shift();
+ } else {
+ add_css_class(data,'invalid');
+ var s = 'DEBUG: Need to add code to make an implicit subfield-a\n';
+ rule_warnings.push(s); dump(s);
+ subf_array.shift();
+ }
+ var subf_seen = {};
+ for (var i in subf_array) {
+ if ((subf_array[i]=='')||(subf_array==null)) {
+ add_css_class(data,'invalid');
+ var s = 'You have incomplete subfield delimiters.\n';
+ rule_warnings.push(s); dump(s);
+ continue;
+ }
+ var s_ind = subf_array[i].substr(0,1);
+ if (subf_seen[s_ind]) { subf_seen[s_ind]++; } else { subf_seen[s_ind] = 1; }
+ var rule = marc_rules[tagnumber][s_ind];
+ if (rule) {
+ if ( (rule.repeat == 'NR') && (subf_seen[s_ind]>1) ) {
+ add_css_class(data,'invalid');
+ var s = 'Tag ' + tagnumber + ' subfield-' + s_ind + ' should be Non-Repeating\n';
+ rule_warnings.push(s); dump(s);
+ }
+ } else {
+ add_css_class(data,'invalid');
+ var s = 'Tag ' + tagnumber + ' does not have a subfield-' + s_ind + '\n';
+ rule_warnings.push(s); dump(s);
+ }
+ }
+ }
+}
--- /dev/null
+dump('Parsing record_list.js\n');
+
+var test_hash = { 'a' : '123' } ;
+
+function my_init() {
+ timer_init('cat');
+ dump('TESTING: record_list.js: ' + mw.G['main_test_variable'] + '\n');
+ dump('test_hash = ' + js2JSON(test_hash) + '\n');
+ dump('search_term = ' + search_term + ' search_type = ' + search_type + ' search_order = ' + search_order + ' search_location = ' + search_location + '\n');
+ var b = document.getElementById('count_copy_toggle');
+ b.setAttribute('label','Click to Show Records for All Libraries');
+ b.setAttribute('alt_label','Click to Show Only Records with Copies at ' + find_ou(mw.G['org_tree'],search_location).name());
+ b.setAttribute('value','-1');
+ b.setAttribute('oncommand','toggle_view(event);');
+
+ search();
+}
+
+function toggle_view(ev) {
+ var b = ev.target;
+ var value = b.getAttribute('value');
+ var label = b.getAttribute('label');
+ var alt_label = b.getAttribute('alt_label');
+ var temp = label; label = alt_label; alt_label = temp;
+ b.setAttribute('label',label); b.setAttribute('alt_label',alt_label);
+ b.setAttribute('value',-value);
+ var rows = document.getElementById('record_list_tree_children');
+ var nl = rows.getElementsByTagName('treeitem');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ var treeitem = nl[i];
+ var treerow = treeitem.firstChild;
+ var copy_count_cell = treerow.lastChild;
+ var copy_count = copy_count_cell.getAttribute('label');
+ if (value == '-1') {
+ treeitem.setAttribute('hidden','false');
+ } else {
+ if (copy_count == '0') {
+ treeitem.setAttribute('hidden','true');
+ }
+ }
+ }
+ }
+}
+
+function search() {
+ var result;
+ dump('search_type = ' + search_type + ' search_order = ' + search_order + ' search_term = ' + search_term + '\n');
+ switch(search_type) {
+ case 'tcn':
+ result = user_request(
+ 'open-ils.search',
+ 'open-ils.search.cat.biblio.tcn',
+ [ search_term ]
+ );
+ break;
+ default:
+ result = user_request(
+ 'open-ils.search',
+ 'open-ils.search.cat.biblio.class',
+ [ search_location, search_type, search_order, search_term ]
+ );
+ break;
+ }
+ // populate record_list with results
+ //dump( js2JSON( result ) + '\n');
+ var tc = document.getElementById('record_list_tree_children');
+ for (var i in result) {
+ if (typeof(result[i])=='object') {
+ var data = result[i];
+ var item = make_treeitem(data['doc_id']);
+ var row = make_treerow(
+ data['title'],
+ data['author'],
+ data['tcn'],
+ data['publisher'],
+ data['pubdate'],
+ data['isbn'],
+ data['isbn'],
+ data['copy_count']
+ );
+ if (data['copy_count'] == 0) {
+ item.setAttribute('hidden','true');
+ }
+ item.appendChild( row );
+ tc.appendChild( item );
+ } else {
+ //dump('unexpected typeof(result['+i+']) = ' + typeof(result[i]) + ' : ' + result[i] + '\n');
+ }
+ }
+}
+
+function make_treeitem(owner_doc) {
+ var treeitem = document.createElement('treeitem');
+ treeitem.setAttribute('id',owner_doc);
+ //dump('treeitem = ' + treeitem + '\n');
+ return treeitem;
+}
+
+function make_treerow() {
+ var treerow = document.createElement('treerow');
+ //dump('treerow = ' + treerow + '\n');
+ //dump('arguments.length = ' + arguments.length + ' arguments = ' + js2JSON(arguments) + '\n');
+ for (var i = 0; i < arguments.length; i++) {
+ //dump(i + ' : ' + arguments[i] + '\n');
+ var treecell = document.createElement('treecell');
+ //dump('treecell = ' + treecell + '\n');
+ var text = '';
+ if (typeof(arguments[i])=='object') {
+ for (var j in arguments[i]) {
+ text = text + arguments[i][j] + ' / ';
+ }
+ } else {
+ text = arguments[i];
+ }
+ treecell.setAttribute('label',text);
+ treerow.appendChild(treecell);
+ }
+ return treerow;
+}
+
+function spawn_editors(tab) {
+ var hitlist = document.getElementById('record_list_tree');
+ var start = new Object();
+ var end = new Object();
+ var numRanges = hitlist.view.selection.getRangeCount();
+ for (var t=0; t<numRanges; t++){
+ hitlist.view.selection.getRangeAt(t,start,end);
+ for (var v=start.value; v<=end.value; v++){
+ var i = hitlist.contentView.getItemAtIndex(v);
+ dump(i.tagName + '\n');
+ var params = [
+ i.getAttribute('id'),
+ i.firstChild.childNodes[0].getAttribute('label'),
+ i.firstChild.childNodes[1].getAttribute('label'),
+ i.firstChild.childNodes[2].getAttribute('label'),
+ i.firstChild.childNodes[3].getAttribute('label'),
+ i.firstChild.childNodes[4].getAttribute('label'),
+ i.firstChild.childNodes[5].getAttribute('label'),
+ i.firstChild.childNodes[6].getAttribute('label')
+ ];
+ spawn_marc_editor(tab,params);
+ }
+ }
+}
+
+function spawn_browsers(tab) {
+ var hitlist = document.getElementById('record_list_tree');
+ var start = new Object();
+ var end = new Object();
+ var numRanges = hitlist.view.selection.getRangeCount();
+ for (var t=0; t<numRanges; t++){
+ hitlist.view.selection.getRangeAt(t,start,end);
+ for (var v=start.value; v<=end.value; v++){
+ var i = hitlist.contentView.getItemAtIndex(v);
+ dump(i.tagName + '\n');
+ var params = [ i.getAttribute('id') ];
+ spawn_copy_browser(tab,params);
+ }
+ }
+}
+
+/*
+function spawn_copy_browser(tab,params) {
+ dump('trying to spawn_marc_editor('+params[0]+')\n');
+ var w;
+ var chrome = 'chrome://evergreen/content/cat/browse_list.xul';
+ if (tab) {
+ tabWindow.new_tab('main_tabbox');
+ w = tabWindow.replace_tab('main_tabbox','COPIES',chrome);
+ } else {
+ w = mw.new_window( chrome );
+ }
+ w.find_this_id = params[0];
+ w.record_columns = params;
+}
+
+
+function spawn_marc_editor(tab,params) {
+ dump('trying to spawn_marc_editor('+params[0]+')\n');
+ var w;
+ var chrome = 'chrome://evergreen/content/cat/marc.xul';
+ if (tab) {
+ tabWindow.new_tab('main_tabbox');
+ w = tabWindow.replace_tab('main_tabbox','MARC',chrome);
+ } else {
+ w = mw.new_window( chrome );
+ }
+ w.find_this_id = params[0];
+ w.record_columns = params;
+}
+*/
+
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Cataloger's Search Result Screen -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/cat.css" type="text/css"?>
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/cat.dtd">
+
+<page id="record_list_win" title="&record_list.win_title;"
+ orient="vertical" style="overflow: scroll"
+ onload="my_init();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/record_list_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="record_list_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="record_list_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="record_list_keys" />
+
+ <!-- Context menus -->
+ <popupset id="record_list_popupset" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <vbox id="record_list_vbox" class="test_class"/>
+
+</page>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="record_list_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="record_list_js">
+ <!--<script src="chrome://evergreen/content/evergreen/fieldmapper.js" />-->
+ <util id="util_js"/>
+ <script src="record_list.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="record_list_cmds">
+ <command id="cmd_edit_record" oncommand="spawn_editors(false);"/>
+ <command id="cmd_edit_record_tab" oncommand="spawn_editors(true);"/>
+ <command id="cmd_browse_record" oncommand="spawn_browsers(false);"/>
+ <command id="cmd_browse_record_tab" oncommand="spawn_browsers(true);"/>
+ <command id="cmd_alert" oncommand="alert('Not Yet Implemented');"/>
+</commandset>
+
+<!-- Context menus -->
+<popupset id="record_list_popupset">
+ <popup id="record_menu">
+ <menuitem label="&cat.popup.edit_record.tab;" command="cmd_edit_record_tab"/>
+ <menuitem label="&cat.popup.edit_record.window;" command="cmd_edit_record"/>
+ <menuitem label="&cat.popup.browse_record.tab;" command="cmd_browse_record_tab"/>
+ <menuitem label="&cat.popup.browse_record.window;" command="cmd_browse_record"/>
+ <menuitem label="&cat.popup.add_to_bucket;" oncommand="
+ alert('Not Yet Implemented');
+ "/>
+ </popup>
+</popupset>
+
+<!-- The top level widget for the cat client -->
+<vbox id="record_list_vbox" flex="1">
+ <button id="count_copy_toggle" label="Show Results For All Libraries"/>
+ <tree id="record_list_tree"/>
+</vbox>
+
+<tree id="record_list_tree" enableColumnDrag="true" flex="1">
+ <treecols>
+ <treecol id="record_list_title" label="&record_list.title;" flex="2"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_author" label="&record_list.author;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_tcn" label="&record_list.tcn;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_publisher" label="&record_list.publisher;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_pubyear" label="&record_list.pubyear;" flex="1"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_isbn" label="&record_list.isbn;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_issn" label="&record_list.issn;" flex="1" hidden="true"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="record_list_copy_count" label="&record_list.copy_count;" flex="1" hidden="true"/>
+ </treecols>
+ <treechildren id="record_list_tree_children" context="record_menu"/>
+</tree>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="record_list_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+var data = {}; var data_backup; var cn_list = [];
+var new_id = -1;
+
+function my_init() {
+ dump('entering my_init for volume.js\n');
+ dump('TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
+ dump('record_id = ' + record_id + '\n');
+ dump('tree_items: ' + tree_items + '\n');
+ if (params.shortcut == 'volume_add') {
+ build_page_one();
+ } else if (params.shortcut == 'copy_add') {
+ build_page_two();
+ } else {
+ dump('broken\n');
+ }
+ listen_for_enter('volume_add');
+ dump('exiting my_init for volume.js\n');
+}
+
+function listen_for_enter(w) {
+ if (typeof(w) != 'object') {
+ w = document.getElementById(w);
+ }
+ w.addEventListener('keypress',
+ function (ev) {
+ dump('wizard: ev.target.tagName = ' + ev.target.tagName + '\n');
+ dump('\tev.keyCode = ' + ev.keyCode + '\n');
+ dump('\tev.charCode = ' + ev.charCode + '\n');
+ if ((ev.target.tagName == 'textbox') && (ev.keyCode == 13)) {
+ ev.preventDefault();
+ ev.stopPropagation(); // XBL bindings? bleh
+ fake_tab_for_textboxes(w,ev.target);
+ return true;
+ }
+ },
+ true
+ );
+}
+
+function page1_add_volume_row(ou) {
+ var row = document.createElement('row');
+ row.setAttribute('id','p1_' + ou.id());
+ document.getElementById('page1_rows').appendChild(row);
+ var label = document.createElement('label');
+ label.setAttribute('value',ou.name());
+ row.appendChild(label);
+ var textbox = document.createElement('textbox');
+ textbox.setAttribute('size','1');
+ textbox.setAttribute('value','0');
+ row.appendChild(textbox);
+}
+
+function page2_add_volume_row(ou,ti) {
+ dump('page2_add_volume_row...\n');
+ var desired_volumes =
+ document.getElementById('p1_' + ou.id()).lastChild.value;
+ dump('ou = ' + ou.name() + ' desired = ' + desired_volumes + '\n');
+ if (desired_volumes > 0) { } else { return; }
+ var rows = document.getElementById('page2_rows');
+ var row = document.createElement('row');
+ rows.appendChild(row);
+ var label = document.createElement('label');
+ label.setAttribute('value',ou.name());
+ row.appendChild(label);
+ for (var i = 0; i < desired_volumes; i++) {
+ var cn_row = document.createElement('row');
+ //cn_row.setAttribute('id','p2_'+ou.id());
+ cn_row.setAttribute('ou_name',ou.name());
+ cn_row.setAttribute('ou_id',ou.id());
+ rows.appendChild(cn_row);
+ cn_row.appendChild( document.createElement('label') );
+ var cn_text1 = document.createElement('textbox');
+ cn_text1.setAttribute('size','20');
+ cn_text1.setAttribute('value','A Call Number');
+ cn_row.appendChild( cn_text1 );
+ var cn_text2 = document.createElement('textbox');
+ cn_text2.setAttribute('size','4');
+ cn_text2.setAttribute('value','0');
+ cn_row.appendChild( cn_text2 );
+ }
+}
+
+function copy_add_page2_add_volume_row(ou,ti) {
+ dump('copy_add_page2_add_volume_row...\n');
+ var rows = document.getElementById('page2_rows');
+ var row = document.getElementById('page2_row_cn_' + ou.id() );
+ if (!row) {
+ row = document.createElement('row');
+ row.setAttribute('id','page2_row_cn' + ou.id() );
+ rows.appendChild(row);
+ }
+ var label = document.createElement('label');
+ label.setAttribute('value',ou.name());
+ row.appendChild(label);
+ var cn_row = document.createElement('row');
+ //cn_row.setAttribute('id','p2_'+ou.id());
+ cn_row.setAttribute('ou_name',ou.name());
+ cn_row.setAttribute('ou_id',ou.id());
+ cn_row.setAttribute('volume_id',ti.getAttribute('volume_id'));
+ rows.appendChild(cn_row);
+ cn_row.appendChild( document.createElement('label') );
+ var cn_text1 = document.createElement('textbox');
+ cn_text1.setAttribute('size','20');
+ cn_text1.setAttribute('volume_id',ti.getAttribute('volume_id'));
+ cn_text1.setAttribute('value',ti.getAttribute('callnumber'));
+ cn_row.appendChild( cn_text1 );
+ cn_text1.disabled = true;
+ var cn_text2 = document.createElement('textbox');
+ cn_text2.setAttribute('size','4');
+ cn_text2.setAttribute('value','0');
+ cn_row.appendChild( cn_text2 );
+}
+
+function page3_add_volume_row(id,data) {
+ if (data.length>0) { } else { return; }
+ var rows = document.getElementById('page3_rows');
+ var org_row = document.createElement('row');
+ rows.appendChild(org_row);
+ var org_label = document.createElement('label');
+ org_label.setAttribute('value',data[0].name);
+ org_row.appendChild(org_label);
+ for (var i in data) {
+ var callnumber = data[i].callnumber;
+ var desired_copies = data[i].copies;
+ var cn_row = document.createElement('row');
+ rows.appendChild(cn_row);
+ var cn_box = document.createElement('hbox');
+ cn_row.appendChild(cn_box);
+ cn_box.appendChild( document.createElement('spacer') );
+ var cn_label = document.createElement('label');
+ cn_label.setAttribute('value',callnumber);
+ cn_box.appendChild(cn_label);
+ for (var c = 0; c < desired_copies; c++) {
+ var bc_row = document.createElement('row');
+ rows.appendChild(bc_row);
+ bc_row.appendChild( document.createElement('label') );
+ var bc_text = document.createElement('textbox');
+ bc_text.setAttribute('size','15');
+ bc_text.setAttribute('ou_name',data[i].name);
+ bc_text.setAttribute('ou_id',id);
+ bc_text.setAttribute('volume_id',data[i].volume_id);
+ bc_text.setAttribute('callnumber',callnumber);
+ bc_row.appendChild(bc_text);
+ }
+ }
+}
+
+function page_four_add_volume_row(name,callnumber,barcode) {
+ dump('xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
+ var listbox = document.getElementById('ephemeral_listbox');
+ var listitem = document.createElement('listitem');
+ listbox.appendChild(listitem);
+ var listcell1 = document.createElement('listcell');
+ listcell1.setAttribute('label',name);
+ listitem.appendChild(listcell1);
+ var listcell2 = document.createElement('listcell');
+ listcell2.setAttribute('label',callnumber);
+ listitem.appendChild(listcell2);
+ var listcell3 = document.createElement('listcell');
+ listcell3.setAttribute('label',barcode);
+ listitem.appendChild(listcell3);
+
+}
+
+function build_page_one() {
+ dump('build_page_one\n');
+ for (var i in tree_items) {
+ var ti = tree_items[i];
+ switch( ti.getAttribute('object_type') ) {
+ case 'org_unit' :
+ if (params.shortcut == 'volume_add') {
+ var shortname = ti.getAttribute('id').split('_')[2];
+ var ou = find_ou_by_shortname(mw.G['org_tree'],shortname);
+ var check_ou = check_volume_ou_perm( shortname );
+ if ( check_ou ) {
+ page1_add_volume_row( check_ou );
+ }
+ }
+ break;
+ }
+ }
+}
+
+function build_page_two() {
+ dump('build_page_two\n');
+ for (var i in tree_items) {
+ var ti = tree_items[i];
+ dump('Considering item with object_type = ' + ti.getAttribute('object_type') + '\n');
+ switch( ti.getAttribute('object_type') ) {
+ case 'org_unit' :
+ var shortname = ti.getAttribute('id').split('_')[2];
+ var ou = find_ou_by_shortname(mw.G['org_tree'],shortname);
+ var check_ou = check_volume_ou_perm( shortname );
+ if ( check_ou ) {
+ page2_add_volume_row( check_ou, ti );
+ }
+ break;
+ case 'volume' :
+ if (params.shortcut == 'copy_add') {
+ var check_ou = find_ou( mw.G.user_ou , ti.getAttribute('ou_id') );
+ if (check_ou) {
+ copy_add_page2_add_volume_row( check_ou, ti );
+ }
+ }
+ break;
+ }
+ }
+}
+
+function build_page_three() {
+ dump('build_page_three\n');
+ var rows = document.getElementById('page2_rows');
+ for (var i = 0; i < rows.childNodes.length; i++) {
+ var row = rows.childNodes[i];
+ dump(row + '\n');
+ var ou_id = row.getAttribute('ou_id');
+ var ou_name = row.getAttribute('ou_name');
+ var volume_id = row.getAttribute('volume_id');
+ if (ou_id) {
+ var call_number = row.childNodes[1].value;
+ if (!call_number) { continue; }
+ var desired_copies = row.childNodes[2].value;
+ if (!data[ou_id]) { data[ou_id] = []; }
+ data[ou_id].push(
+ {
+ 'callnumber' : call_number,
+ 'copies' : desired_copies,
+ 'name' : ou_name,
+ 'volume_id' : volume_id
+ }
+ );
+ }
+ }
+ for (var i in data) {
+ dump('i: ' + i + ' data[i]: ' + js2JSON(data[i]) + '\n');
+ page3_add_volume_row( i, data[i]);
+ }
+}
+
+function build_page_four() {
+ dump('build page four\n');
+ document.getElementById('volume_add').canAdvance = false;
+ var new_data = [];
+ var rows = document.getElementById('page3_rows');
+ var nl = rows.getElementsByTagName('textbox');
+ for (var i in nl) {
+ if (typeof(nl[i])=='object') {
+ var t = nl[i];
+ var ou_id = t.getAttribute('ou_id');
+ var ou_name = t.getAttribute('ou_name');
+ var callnumber = t.getAttribute('callnumber');
+ var volume_id = t.getAttribute('volume_id');
+ var barcode = t.value;
+ //page_four_add_volume_row(ou_name,callnumber,barcode);
+ dump('t.tagName = ' + t.tagName + ' ou_id = ' + ou_id + ' cn = ' + callnumber + ' volume_id = ' + volume_id + ' bc = ' + barcode + '\n');
+ if (! new_data[ou_id] ) { new_data[ou_id] = {}; }
+ if (! new_data[ou_id][callnumber] ) {
+ new_data[ou_id][callnumber] = [];
+ }
+ if (! new_data[ou_id][callnumber]['barcode'] ) {
+ new_data[ou_id][callnumber]['barcode'] = [];
+ }
+ new_data[ou_id][callnumber].barcode.push(barcode);
+ if (params.shortcut == 'copy_add') {
+ new_data[ou_id][callnumber].volume_id = volume_id;
+ }
+ }
+ }
+ cn_list = [];
+ for (var ou_id in new_data) {
+ for (var cnum in new_data[ou_id]) {
+ //var ou_shortname = find_ou(mw.G['org_tree'],ou_id).shortname();
+ var ou_shortname = mw.G.org_tree_hash[ou_id].shortname();
+ var cn = new acn();
+ cn.label(cnum);
+ cn.owning_lib(ou_id);
+ cn.record(record_id);
+ if (params.shortcut == 'volume_add') {
+ cn.isnew(1);
+ cn.id(new_id--);
+ } else if (params.shortcut == 'copy_add') {
+ cn.id( new_data[ou_id][cnum].volume_id );
+ }
+ cn.copies([]);
+
+ for (var c in new_data[ou_id][cnum].barcode) {
+ var cp = new acp();
+ cp.id(new_id--);
+ cp.isnew(1);
+ cp.barcode(new_data[ou_id][cnum].barcode[c]);
+ cp.circ_lib( mw.G.org_tree_hash[ ou_id ]);
+ cn.copies().push(cp);
+ cp.stat_cat_entries( [] );
+ }
+
+ cn_list.push(cn);
+ }
+ }
+ dump('Final data object: ' + js2JSON(cn_list) + '\n');
+ dump('Final data object: ' + cn_list + '\n');
+ spawn_copy_editor();
+}
+
+function send_to_bill() {
+ var result = user_request(
+ 'open-ils.cat',
+ 'open-ils.cat.asset.volume_tree.fleshed.batch.update',
+ [ mw.G['auth_ses'][0], cn_list]
+ );
+ dump('volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n');
+ refresh_spawning_browse_list();
+}
+
+function refresh_spawning_browse_list() {
+ try {
+ params.refresh_func();
+ } catch(E) {
+ dump('refresh_spawning_browse_list error: ' + js2JSON(E) + '\n');
+ }
+}
+
+function spawn_copy_editor(tab) {
+ dump('trying to spawn_copy_editor()\n');
+ var params = { 'select_all' : true };
+ var chrome = 'chrome://evergreen/content/cat/copy.xul';
+ var frame = document.getElementById('page4_iframe');
+ frame.setAttribute('src',chrome);
+ frame.setAttribute('flex','1');
+ frame.contentWindow.cn_list = cn_list;
+ frame.contentWindow.mw = mw;
+ frame.contentWindow.real_parentWindow = this;
+ frame.contentWindow.parentWindow = parentWindow;
+ frame.contentWindow.params = params;
+}
+
+function backup_data() {
+ data_backup = data;
+}
+
+function restore_data() {
+ data = data_backup;
+}
+
+function check_volume_ou_perm(shortname) {
+ var top_ou = find_ou(mw.G['org_tree'],mw.G.user_ou.id());
+ var check_ou = find_ou_by_shortname(top_ou, shortname);
+ return check_ou;
+}
+
+// ***************************************************** Batch Volume Edit
+
+function volume_edit_init() {
+ dump('TESTING: volume.js: ' + mw.G['main_test_variable'] + '\n');
+ build_batch_edit_page1();
+ listen_for_enter('volume_edit');
+}
+
+function build_batch_edit_page1() {
+ var rows = document.getElementById('page1_rows');
+
+ var org = {};
+
+ for (var i = 0; i < tree_items.length; i++) {
+ var volume = tree_items[i];
+ if (! org[ volume.getAttribute('ou_id') ] ) {
+ org[ volume.getAttribute('ou_id') ] = new Array();
+ }
+ org[ volume.getAttribute('ou_id') ].push( volume );
+ }
+
+ for (var i in org) {
+ var row = document.createElement('row');
+ rows.appendChild(row);
+ var lib = document.createElement('label');
+ row.appendChild(lib);
+ lib.setAttribute( 'value', mw.G.org_tree_hash[i].shortname() );
+
+ for (var j = 0; j < org[i].length; j++) {
+ var volume = org[i][j];
+
+ var vrow = document.createElement('row');
+ rows.appendChild(vrow);
+ vrow.appendChild( document.createElement('label') );
+
+ var t = document.createElement('textbox');
+ vrow.appendChild( t );
+ t.value = volume.getAttribute('callnumber');
+ t.setAttribute( 'original', volume.getAttribute('callnumber') );
+ t.setAttribute( 'volume_id', volume.getAttribute('volume_id') );
+ }
+ }
+}
+
+function submit_edited_volumes() {
+ var nl = document.getElementsByTagName('textbox');
+ for (var i = 0; i < nl.length; i++) {
+ var t = nl[i];
+ if (t.getAttribute('original') == t.value) continue;
+ var cn = new acn();
+ cn.id( t.getAttribute('volume_id') );
+ cn.label( t.value );
+ cn.ischanged('1');
+ cn_list.push( cn );
+ }
+ send_to_bill();
+}
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="volume_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="volume_js">
+ <!--<script src="chrome://evergreen/content/evergreen/fieldmapper.js" />-->
+ <util id="util_js"/>
+ <script src="volume.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="volume_cmds">
+ <command id="cmd_alert" oncommand="
+ alert('Feature Not Yet Implemented');
+ "/>
+ <command id="cmd_batch_edit" oncommand="
+ spawn_copy_editor();
+ "/>
+</commandset>
+
+<wizardpage id="page1" description="&volume.wizard.page1;" onpageadvanced="build_page_two();">
+ <groupbox>
+ <caption label="How many volumes?"/>
+ <grid>
+ <columns> <column flex="0"/> <column flex="0"/> </columns>
+ <rows id="page1_rows"/>
+ </grid>
+ </groupbox>
+</wizardpage>
+
+<wizardpage id="page2" description="&volume.wizard.page2;" onpageadvanced="build_page_three()" onpagerewound="var rows = document.getElementById('page2_rows'); while (rows.childNodes.length > 1) { rows.removeChild(rows.lastChild); }">
+ <groupbox>
+ <caption label="What call numbers and how many copies?"/>
+ <grid>
+ <columns>
+ <column flex="0"/>
+ <column flex="0"/>
+ <column flex="0"/>
+ </columns>
+ <rows id="page2_rows">
+ <row>
+ <label />
+ <label value="Call Number" />
+ <label value="# of Copies" />
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+</wizardpage>
+
+<wizardpage id="page3" description="&volume.wizard.page3;" onpageadvanced="backup_data(); build_page_four()" onpagerewound="var rows = document.getElementById('page3_rows'); while (rows.childNodes.length > 1) { rows.removeChild(rows.lastChild); }">
+ <groupbox>
+ <caption label="What are the barcodes?"/>
+ <grid>
+ <columns>
+ <column flex="0"/> <column flex="0"/>
+ </columns>
+ <rows id="page3_rows">
+ <row>
+ <label value="" />
+ <label value="Barcode" />
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+</wizardpage>
+
+<wizardpage id="page4" description="something" onpagerewound="restore_data();" flex="1">
+ <iframe id="page4_iframe" flex="1"/>
+</wizardpage>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="volume_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- This DTD declaration needs to be fixed for Mozilla locales -->
+<!DOCTYPE wizard SYSTEM "chrome://evergreen/locale/cat.dtd">
+<wizard id="volume_add" title="&volume.wizard.title;"
+ orient="vertical" style="overflow: auto"
+ onload="my_init();" width="800" height="600"
+ onwizardfinish="send_to_bill();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/volume_copy_add_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="volume_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="volume_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="volume_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <wizardpage id="page1"/>
+ <wizardpage id="page2"/>
+ <wizardpage id="page3"/>
+ <wizardpage id="page4"/>
+
+</wizard>
+
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/cat.dtd">
+<overlay id="volume_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- The javascript logic for the staff client -->
+<Evergreen id="volume_js">
+ <!--<script src="chrome://evergreen/content/evergreen/fieldmapper.js" />-->
+ <util id="util_js"/>
+ <script src="volume.js" />
+</Evergreen>
+
+<!-- Some logic abstracted a bit. Sort of like an API list -->
+<commandset id="volume_cmds">
+ <command id="cmd_alert" oncommand="
+ alert('Feature Not Yet Implemented');
+ "/>
+</commandset>
+
+<wizardpage id="page1" description="Entering Call Numbers" onpageadvanced="">
+ <groupbox>
+ <caption label="Modify Call Numbers?"/>
+ <grid>
+ <columns> <column flex="0"/> <column flex="0"/> </columns>
+ <rows id="page1_rows"/>
+ </grid>
+ </groupbox>
+</wizardpage>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="volume_keys">
+ <key id="" modifiers="accel" key="A" command="cmd_"/>
+</keyset>
+
+</overlay>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- This DTD declaration needs to be fixed for Mozilla locales -->
+<!DOCTYPE wizard SYSTEM "chrome://evergreen/locale/cat.dtd">
+<wizard id="volume_edit" title="Batch Volume Editor"
+ orient="vertical" style="overflow: auto"
+ onload="volume_edit_init();" width="800" height="600"
+ onwizardfinish="submit_edited_volumes();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- Overlays for this XUL file -->
+ <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/util/util.xul"?>
+ <?xul-overlay href="chrome://evergreen/content/cat/volume_edit_overlay.xul"?>
+
+ <!-- OpenSRF -->
+ <script>var myPackageDir = "evergreen";</script>
+ <OpenSRF id="OpenSRF_js" />
+
+ <!-- The logic for this app -->
+ <Evergreen id="volume_js" />
+
+ <!-- XUL'ified abstraction for logic to attach to widgets -->
+ <commandset id="volume_cmds" />
+
+ <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+ <keyset id="volume_keys" />
+
+ <!-- Layout to be filled in by overlays and javascript -->
+ <wizardpage id="page1"/>
+
+</wizard>
+