1 dump('Loading util.js\n');
7 function sdump(level,msg) {
11 var D_EXPLODE = false;
21 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/redalert.wav') );
24 function snd_really_bad() {
25 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/die.wav') );
29 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/turn.wav') );
32 function snd_circ_good() {
33 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/clicked.wav') );
36 function snd_circ_bad() {
37 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/cow.wav') );
40 function snd_logon() {
44 function snd_logoff() {
52 function handle_error(E) {
54 if (instanceOf(E,ex)) {
56 //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
57 //s += 'This error was anticipated.\n\n';
58 //s += js2JSON(E).substr(0,200) + '...\n\n';
61 s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
62 s += 'This is a bug that we will fix later.\n\n';
63 s += js2JSON(E).substr(0,200) + '\n\n';
69 function string_to_array(s) {
71 for (var i = 0; i < s.length; i++ ) {
72 my_array.push( s.charAt(i) );
77 function textbox_checkdigit(ev) {
78 if ( check_checkdigit( ev.target.value ) ) {
79 sdump('D_UTIL', 'success\n');
82 sdump('D_UTIL', 'failure\n');
89 function check_checkdigit(barcode) {
91 var stripped_barcode = barcode.slice(0,-1);
92 var checkdigit = barcode.slice(-1);
94 sdump('D_UTIL', '\n\n=-=***=-=\n\ncheck_checkdigit: barcode = ' + barcode + ' barcode stripped = ' + stripped_barcode + ' checkdigit = ' + checkdigit + '\n');
96 var sum = 0; var mul = 2;
98 var b_array = string_to_array( stripped_barcode ).reverse();
99 sdump('D_UTIL', '\tb_array = ' + b_array + '\n');
101 for (var i in b_array) {
102 var digit = parseInt( b_array[i] );
103 sdump('D_UTIL', '\t\tdigit = ' + digit + '\n');
105 var product = digit * mul;
106 if (mul == 2) { mul = 1; } else { mul = 2; }
108 var p_array = string_to_array( product.toString() );
109 sdump('D_UTIL', '\t\tp_array = ' + p_array + '\n');
111 for (var j in p_array) {
112 var n = parseInt( p_array[j] );
113 sdump('D_UTIL', '\t\t\tn = ' + n + '\n');
118 sdump('D_UTIL', '\tsum = ' + sum + '\n');
120 var s_array = string_to_array( sum.toString() );
121 var calculated_checkdigit = s_array.pop();
122 if (calculated_checkdigit > 0) calculated_checkdigit = 10 - calculated_checkdigit;
123 sdump('D_UTIL', '\tcalculated checkdigit = ' + calculated_checkdigit + '\n\n=-=***=-=\n\n');
125 return ( calculated_checkdigit == checkdigit );
128 function fake_tab_for_textboxes(w,current) {
129 var flag = false; var next_one;
130 if (typeof(w)!='object') {
131 w = document.getElementById(w);
133 sdump('D_UTIL', 'fake_tab_for_textboxes: Current ' + current + '\n');
134 var nl = w.getElementsByTagName('textbox');
135 //var nl = document.getElementsByTagName('textbox');
136 sdump('D_UTIL', 'fake_tab_for_textboxes: nl.length = ' + nl.length + '\n');
137 for (var i = 0; i < nl.length; i++) {
138 sdump('D_UTIL', 'fake_tab_for_textboxes: Considering ' + nl[i] + '...\n');
139 if (flag && !next_one) {
140 sdump('D_UTIL', 'fake_tab_for_textboxes: Setting next_one ' + nl[i] + '\n');
143 if (nl[i] === current) {
144 sdump('D_UTIL','fake_tab_for_textboxes: Found current\n');
149 sdump('D_UTIL','fake_tab_for_textboxes: Out of loop, Setting next_one ' + nl[0] + '\n');
153 next_one.focus(); next_one.select();
155 sdump('D_UTIL','fake_tab_for_textboxes: next_one not set\n');
159 function get_list_from_tree_selection(tree_w) {
160 sdump('D_UTIL','entering get_list_from_tree...\n');
162 if (typeof(tree_w) != 'object') {
163 hitlist = document.getElementById(tree_w);
168 var start = new Object();
169 var end = new Object();
170 var numRanges = hitlist.view.selection.getRangeCount();
171 for (var t=0; t<numRanges; t++){
172 hitlist.view.selection.getRangeAt(t,start,end);
173 for (var v=start.value; v<=end.value; v++){
174 var i = hitlist.contentView.getItemAtIndex(v);
175 //sdump('D_UTIL',i.tagName + '\n');
179 sdump('D_UTIL','leaving get_list_from_tree...\n');
183 function yesno(value) {
185 case true: case 'true': case '1': case 'on':
192 function formatted_date(date,format) {
193 // pass in a Date object or epoch seconds
194 if (typeof(date) == 'string') {
195 date = new Date( parseInt( date + '000' ) );
197 var mm = date.getMonth() + 1;
199 if (mm.length == 1) mm = '0' +mm;
200 var dd = date.getDate().toString();
201 if (dd.length == 1) dd = '0' +dd;
202 var yyyy = date.getFullYear().toString();
203 var s = format.replace( /%m/g, mm );
204 s = s.replace( /%d/g, dd );
205 s = s.replace( /%Y/g, yyyy );
209 function interval_to_seconds ( $interval ) {
211 $interval = $interval.replace( /and/, ',' );
212 $interval = $interval.replace( /,/, ' ' );
215 var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);
216 for (var i in results) {
217 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
218 if (result[2] == 's') $amount += result[1] ;
219 if (result[2] == 'm') $amount += 60 * result[1] ;
220 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
221 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
222 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
223 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
224 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
232 for (var i = 0; i < arguments.length; i++) {
233 s = s + arguments[i];
235 //sdump('D_UTIL','debug:' + s + '\n');
239 function counter_init(id) {
243 function counter_incr(id) {
244 if (! counter[id]) { counter_init(id); }
245 return ++counter[id];
248 function counter_peek(id) {
249 if (! counter[id]) { return 0; }
253 function timer_init(id) {
254 timer[id] = (new Date).getTime();
257 function timer_elapsed(id) {
258 if (! timer[id]) { timer_init(id); }
259 var ms = (new Date).getTime() - timer[id];
260 return( ms + 'ms (' + ms/1000 + 's)' );
263 function dump_ns_node( node ) {
266 node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position]
268 node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
270 node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
272 node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
273 + '> parent_node=<' +
274 node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
279 function nodeset2tree(ns) {
281 if (ns[i].parent_node) {
292 function ns_addChild(ns,p,c) {
293 if (! ns[p].children ) { ns[p].children = []; }
294 ns[p].children.push(ns[c]);
297 function print_tabs(t) {
299 for (var j = 0; j < t; j++ ) { r = r + "\t"; }
303 function pretty_print(s) {
304 var r = ''; var t = 0;
307 r = r + "\n" + print_tabs(t) + s[i]; t++;
308 r = r + "\n" + print_tabs(t);
309 } else if (s[i] == '[') {
310 r = r + "\n" + print_tabs(t) + s[i]; t++;
311 r = r + "\n" + print_tabs(t);
312 } else if (s[i] == '}') {
313 t--; r = r + "\n" + print_tabs(t) + s[i];
314 r = r + "\n" + print_tabs(t);
315 } else if (s[i] == ']') {
316 t--; r = r + "\n" + print_tabs(t) + s[i];
317 r = r + "\n" + print_tabs(t);
318 } else if (s[i] == ',') {
320 r = r + "\n" + print_tabs(t);
328 function enable_widgets() {
329 for (var i = 0; i < arguments.length; i++) {
330 if (typeof(arguments[i]) == 'object') {
331 sdump('D_UTIL',arguments[i] + '.disabled = false;\n');
332 arguments[i].disabled = false;
334 var w = document.getElementById( arguments[i] );
336 sdump('D_UTIL',w + '.disabled = false;\n');
343 function disable_widgets() {
344 for (var i = 0; i < arguments.length; i++) {
345 if (typeof(arguments[i]) == 'object') {
346 sdump('D_UTIL',arguments[i] + '.disabled = true;\n');
347 arguments[i].disabled = true;
349 var w = document.getElementById( arguments[i] );
351 sdump('D_UTIL',w + '.disabled = true;\n');
358 function focus_widget(e) {
359 if (typeof(e) == 'object') {
362 var w = document.getElementById(e);
363 if (w) { w.focus(); }
367 function empty_widget(e) {
368 if (typeof(e) != 'object') { e = document.getElementById(e); }
369 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on empty_widget\n'); return; }
370 while (e.lastChild) { e.removeChild(e.lastChild); }
373 function empty_listbox(e) {
374 if (typeof(e) != 'object') { e = document.getElementById(e); }
375 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on empty_listbox\n'); return; }
376 var nl = e.getElementsByTagName('listitem');
377 for (var i = 0; i < nl.length; i++) {
378 e.removeChild(nl[i]);
382 function swap_attributes(e,a1,a2) {
383 if (typeof(e) != 'object') { e = document.getElementById(e); }
384 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on swap_attributes\n'); return; }
385 var a1_v = e.getAttribute(a1);
386 var a2_v = e.getAttribute(a2);
387 e.setAttribute(a1,a2_v);
388 e.setAttribute(a2, a1_v);
389 sdump('D_UTIL','before: a1 = ' + a1_v + ' a2 = ' + a2_v + ' and ');
390 sdump('D_UTIL','after: a1 = ' + a2_v + ' a2 = ' + a1_v + '\n');
393 function cycle_attribute(e,a,v) {
395 if (typeof(e) != 'object') { e = document.getElementById(e); }
396 if (typeof(e) != 'object') { throw('typeof e != object : typeof e = ' + typeof(e)); }
397 if (!a) { throw('!a : a = ' + a); }
398 if (! e.getAttribute(a) ) { throw(' ! e.getAttribute(a) : a = ' + a); }
399 if (typeof(v) != 'object') { throw('typeof v != object : typeof v = ' + typeof(v)); }
401 var toggle = e.getAttribute(a);
402 var next_one = false;
403 sdump('D_UTIL','cycling ' + a + ' on ' + e.getAttribute('id') + ' to ');
404 for (var i = 0; i < v.length; i++) {
406 e.setAttribute(a,v[i]);
407 sdump('D_UTIL',v[i] + '\n');
410 if (toggle == v[i]) {
415 e.setAttribute(a,v[0]);
416 sdump('D_UTIL',v[0] + '\n');
419 throw('current value not in list');
422 sdump('D_UTIL','cycle_attribute error: ' + js2JSON(E) + '\n');
423 sdump('D_UTIL','null\n');
429 function radio_checkbox(ev) {
430 var target = ev.target;
431 var group = target.getAttribute('group');
433 var nl = document.getElementsByTagName('checkbox');
435 if (typeof(nl[i])=='object') {
437 var cgroup = c.getAttribute('group');
438 if (cgroup == group) {
443 target.checked = true;
445 sdump('D_UTIL','radio_checkbox: Checkbox must have a group attribute to find peers');
449 function toggle_hidden_grid_rows(grid) {
450 if (typeof(grid) != 'object') {
451 grid = document.getElementById(grid);
453 if (!grid) { return; }
454 var rows = grid.lastChild; if (!rows) { return; }
455 for (var r = 0; r < rows.childNodes.length; r++ ) {
456 var row = rows.childNodes[r];
457 if (typeof(row) == 'object') {
458 //sdump('D_UTIL','toggle row = ' + row + '\n');
459 var hidden = row.getAttribute('hidden');
460 if (hidden == 'true') {
461 row.setAttribute('hidden','false');
463 row.setAttribute('hidden','true');
469 /* The first parameter is the id of the element to set, or an array of ids for elements to set in batch. The second parameter is an object containing the attribute/value pairs to assign to the element or elements */
470 function xul_setAttributes(el,attrs) {
471 if (typeof(el) == 'object') {
473 var w = document.getElementById(e);
474 for (var a in attrs) {
475 w.setAttribute(a,attrs[a]);
479 var w = document.getElementById(el);
480 for (var a in attrs) {
481 w.setAttribute(a,attrs[a]);
486 function append_treeitem() {
487 var id = arguments[0];
488 var treechildren = document.getElementById(id);
489 if (!treechildren) { sdump('D_UTIL','No ' + id + ' to append to\n'); return; }
490 var treeitem = document.createElement('treeitem'); treechildren.appendChild(treeitem);
491 var treerow = document.createElement('treerow'); treeitem.appendChild(treerow);
492 for (var i = 1; i < arguments.length ; i++ ) {
493 var treecell = document.createElement('treecell'); treerow.appendChild(treecell);
494 treecell.setAttribute('label',arguments[i]);
495 treecell.setAttribute('id', 'treeitem_' + treeitem_id + '_' + i);
496 //sdump('D_UTIL','treecell.label = ' + arguments[i] + '\n');
498 return treeitem_id++;
501 function set_decks(params) {
502 for (var deck_id in params) {
503 var deck = document.getElementById( deck_id )
504 if (deck) deck.setAttribute( 'selectedIndex', params[deck_id] );
508 function super_dump(o,t) {
510 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
512 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
513 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
514 s = s + "typeof = " + typeof(o) + "\n";
516 var string = new XMLSerializer().serializeToString(o);
517 return( string + "\n" );
524 s = s + super_dump(i,t+1);
528 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
529 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
530 if (typeof(value) == 'object') {
531 value = super_dump(value,t+1);
533 s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
541 function super_dump_norecurse(o,t) {
543 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
545 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
546 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
547 s = s + "typeof = " + typeof(o) + "\n";
549 var string = new XMLSerializer().serializeToString(o);
550 return( string + "\n" );
558 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
559 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
560 s = s + "\ttoString:" + i.toString() + "\n";
568 function get_my_orgs(user_ou) {
570 // self and ancestors
571 var current_item_id = user_ou.id();
572 //sdump('D_UTIL','mw.G[user_ou] = ' + js2JSON(mw.G['user_ou']) + '\n');
573 //sdump('D_UTIL','current_item_id = ' + current_item_id + '\n');
574 var item_ou; var my_orgs = {}; var other_orgs = {};
575 while( item_ou = find_ou(mw.G['org_tree'],current_item_id) ) {
576 //sdump('D_UTIL','\titem_ou = ' + js2JSON(item_ou) + '\n');
577 my_orgs[ item_ou.id() ] = item_ou;
578 current_item_id = item_ou.parent_ou();
579 if (!current_item_id) { break; }
582 current_item_id = user_ou.id();
583 //sdump('D_UTIL','self & ancestors : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
586 var find_ou_result = find_ou(mw.G['org_tree'],current_item_id);
587 if (find_ou_result) {
588 my_children = find_ou_result.children() }
590 sdump('D_UTIL','ERROR: find_ou(org_tree,'+current_item_id+') returned with no properties\n');
592 //sdump('D_UTIL','my_children: ' + my_children + ' : ' + js2JSON(my_children) + '\n');
594 for (var i = 0; i < my_children.length; i++) {
595 var my_child = my_children[i];
596 my_orgs[ my_child.id() ] = my_child;
597 //sdump('D_UTIL','my_child.children(): ' + my_child.children() + ' : ' + js2JSON(my_child.children()) + '\n');
598 if (my_child.children() != null) {
599 for (var j = 0; j < my_child.children().length; j++) {
600 var my_gchild = my_child.children()[j];
601 my_orgs[ my_gchild.id() ] = my_gchild;
606 //sdump('D_UTIL','& descendants : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
610 function get_other_orgs(org,other_orgs) {
613 function flatten_ou_branch(branch) {
614 //sdump('D_UTIL','flatten: branch = ' + js2JSON(branch) + '\n');
615 var my_array = new Array();
616 my_array.push( branch );
617 for (var i in branch.children() ) {
618 var child = branch.children()[i];
620 var temp_array = flatten_ou_branch(child);
621 for (var j in temp_array) {
622 my_array.push( temp_array[j] );
629 function find_ou(tree,id) {
630 if (typeof(id)=='object') { id = id.id(); }
634 for (var i in tree.children()) {
635 var child = tree.children()[i];
636 ou = find_ou( child, id );
637 if (ou) { return ou; }
642 function find_tree_via_children(tree,children_func,find_func) {
643 if (typeof(tree)!='object') tree = document.getElementById(tree);
645 var t = find_func(tree); if (t) return t;
647 var c = children_func(tree);
649 for (var i = 0; i < c.length; i++) {
650 t = find_func( c[i] );
655 function filter_list(list,f) {
657 for (var i in list) {
658 var t = f( list[i] );
659 if (t) new_list.push( list[i] );
664 function find_list(list,f) {
665 for (var i in list) {
666 var t = f( list[i] );
667 if (t) return list[i];
672 function map_list(list,f) {
674 for (var i in list) {
675 new_list.push( f( list[i] ) );
680 function map_object_to_list(obj,f) {
683 new_list.push( f( obj, i ) );
688 function convert_object_list_to_hash(list) {
689 var my_hash = new Object();
691 for (var i = 0; i < list.length; i++) {
692 my_hash[ list[i].id() ] = list[i];
698 function find_id_object_in_list(list,id) {
699 //sdump('D_UTIL','find_id_object_in_list(' + js2JSON(list).substr(0,20) + '... ,' + id + ')\n');
701 for (var i = 0; i < list.length; i++ ) {
703 if ( list[i].id() == id ) {
707 sdump('D_UTIL','find_id_object_in_list error, i = ' + i + ' typeof(list[i]) = ' + typeof(list[i]) + ' list[i] = ' + js2JSON(list[i]) + ' : ' + js2JSON(E) + '\n');
711 //sdump('D_UTIL','not found\n');
715 function find_attr_object_in_list(list,attr,value) {
717 for (var i = 0; i < list.length; i++ ) {
718 sdump('D_UTIL','find_attr_object_in_list: i = ' + i + ' id = ' + list[i].id() + '\n');
720 var command = 'list[' + i + '].'+attr+'() == ' + value;
721 if ( eval(command) ) {
725 sdump('D_UTIL','find_attr_object_in_list error, i = ' + i + ' typeof(list[i]) = ' + typeof(list[i]) + ' list[i] = ' + js2JSON(list[i]) + ' : list = ' + js2JSON(list) + ' : ' + js2JSON(E) + '\n');
732 function find_ou_by_shortname(tree,sn) {
734 if (tree.shortname()==sn) {
737 for (var i in tree.children()) {
738 var child = tree.children()[i];
739 ou = find_ou_by_shortname( child, sn );
740 if (ou) { return ou; }
745 function populate_listbox_with_local_stat_cats_myself(local_stat_cats,local_cat_entries,listbox,libs,app,method,editable) {
746 sdump('D_UTIL','populate_local_stat_cats: pertinent libs = ' + js2JSON(libs) + '\n');
748 local_stat_cats = user_request(
751 [ mw.G.auth_ses[0], libs ]
753 //sdump('D_UTIL','local_stat_cats = ' + pretty_print( js2JSON( local_stat_cats ) ) + '\n');
756 if (typeof list != 'object') list = document.getElementById(list);
758 for (var i in local_stat_cats) {
760 var stat_cat = local_stat_cats[i];
762 var listitem = document.createElement('listitem');
763 list.appendChild(listitem);
764 listitem.setAttribute('allowevents','true');
765 sdump('D_UTIL','listitem = ' + listitem + '\n');
767 var label = document.createElement('listcell');
768 listitem.appendChild(label);
769 label.setAttribute('label',stat_cat.name() );
770 sdump('D_UTIL','\tlistcell = ' + label + '\n');
772 var menucell = document.createElement('listcell');
773 listitem.appendChild(menucell);
774 sdump('D_UTIL','\tlistcell = ' + menucell + '\n');
776 var menulist = document.createElement('menulist');
777 menucell.appendChild(menulist);
778 if (editable) { menulist.setAttribute('editable','true'); }
779 menulist.setAttribute('id','menulist_stat_cat_'+stat_cat.id());
780 sdump('D_UTIL','\tmenulist = ' + menulist + '\n');
782 var menupopup = document.createElement('menupopup');
783 menulist.appendChild(menupopup);
784 menupopup.setAttribute('stat_cat',stat_cat.id());
785 menupopup.setAttribute('oncommand','apply_attribute(event);');
786 sdump('D_UTIL','\t\tmenupopup = ' + menupopup + '\n');
788 for (var j in stat_cat.entries() ) {
790 var stat_entry = stat_cat.entries()[j];
791 local_stat_cat_entries[stat_entry.id()] = stat_entry;
793 var menuitem = document.createElement('menuitem');
794 menupopup.appendChild(menuitem);
795 menuitem.setAttribute('label',stat_entry.value());
797 menuitem.setAttribute('value',stat_entry.value());
799 menuitem.setAttribute('value',stat_entry.id());
801 menuitem.setAttribute('stat_cat',stat_cat.id());
802 menuitem.setAttribute('id','menuitem_stat_cat_entry_' + stat_entry.id());
803 sdump('D_UTIL','\t\t\tmenuitem = ' + menuitem + '\n');
809 //sdump('D_UTIL','local_stat_cat_entries = ' + pretty_print( js2JSON( local_stat_cat_entries ) ) + '\n');
813 function populate_rows_with_local_stat_cats(local_stat_cats,local_stat_cat_entries,rows,editable) {
814 //sdump('D_UTIL','populate_local_stat_cats: pertinent libs = ' + js2JSON(libs) + '\n');
816 /*local_stat_cats = user_request(
819 [ mw.G.auth_ses[0], libs ]
821 //sdump('D_UTIL','local_stat_cats = ' + pretty_print( js2JSON( local_stat_cats ) ) + '\n');
823 if (typeof rows != 'object') rows = document.getElementById(rows);
825 for (var i in local_stat_cats) {
827 var stat_cat = local_stat_cats[i];
829 var row = document.createElement('row');
830 rows.appendChild(row);
832 var label = document.createElement('label');
833 label.setAttribute('value',stat_cat.name());
834 row.appendChild(label);
836 var menulist = document.createElement('menulist');
837 row.appendChild(menulist);
838 if (editable) { menulist.setAttribute('editable','true'); }
839 menulist.setAttribute('id','menulist_stat_cat_'+stat_cat.id());
840 menulist.setAttribute('stat_cat_id',stat_cat.id());
841 sdump('D_UTIL','\tmenulist = ' + menulist + '\n');
843 var menupopup = document.createElement('menupopup');
844 menulist.appendChild(menupopup);
845 menupopup.setAttribute('stat_cat',stat_cat.id());
846 menupopup.setAttribute('command','cmd_apply');
847 sdump('D_UTIL','\t\tmenupopup = ' + menupopup + '\n');
849 for (var j in stat_cat.entries() ) {
851 var stat_entry = stat_cat.entries()[j];
852 local_stat_cat_entries[stat_entry.id()] = stat_entry;
854 var menuitem = document.createElement('menuitem');
855 menupopup.appendChild(menuitem);
856 menuitem.setAttribute('label',stat_entry.value());
858 menuitem.setAttribute('value',stat_entry.value());
860 menuitem.setAttribute('value',stat_entry.id());
862 menuitem.setAttribute('stat_cat',stat_cat.id());
863 menuitem.setAttribute('id','menuitem_stat_cat_entry_' + stat_entry.id());
864 sdump('D_UTIL','\t\t\tmenuitem = ' + menuitem + '\n');
870 //sdump('D_UTIL','local_stat_cat_entries = ' + pretty_print( js2JSON( local_stat_cat_entries ) ) + '\n');
874 function populate_copy_status_list(menulist,menupopup,defaultccs) {
875 sdump('D_UTIL','populate_copy_status_list\n');
876 var popup = document.getElementById(menupopup);
880 for (var i in mw.G.ccs_list) {
881 var menuitem = document.createElement('menuitem');
882 menuitem.setAttribute('label', mw.G.ccs_list[i].name());
883 menuitem.setAttribute('value', mw.G.ccs_list[i].id());
884 menuitem.setAttribute('id', 'ccsitem' + mw.G.ccs_list[i].id());
885 //sdump('D_UTIL','pop_ccs_list: i = ' + i + ' ccs = ' + mw.G.ccs_list[i] + ' = ' + js2JSON(mw.G.ccs_list[i]) + '\n');
886 popup.appendChild(menuitem);
888 var list = document.getElementById(menulist);
889 if (list && defaultccs) {
890 if (typeof defaultccs == 'object') {
891 defaultccs = defaultccs.id();
893 var menuitem_id = 'ccsitem' + defaultccs;
894 var menuitem = document.getElementById(
897 var menulist_e = document.getElementById(menulist);
898 if (menulist_e && menuitem) {
899 sdump('D_UTIL','Setting default ccs\n');
900 menulist_e.selectedItem = menuitem;
902 sdump('D_UTIL','Not Setting default ccs\n');
906 sdump('D_UTIL','populate_copy_status_list: Could not find menupopup: ' + menupopup + '\n');
907 throw('populate_copy_status_list: Could not find menupopup: ' + menupopup + '\n');
912 function populate_copy_location_list(menulist,menupopup,defaultacpl) {
913 sdump('D_UTIL','populate_copy_location_list\n');
914 var popup = document.getElementById(menupopup);
918 for (var i in mw.G.acpl_my_orgs) {
919 var menuitem = document.createElement('menuitem');
920 menuitem.setAttribute('label', mw.G.acpl_my_orgs[i].name());
921 menuitem.setAttribute('value', mw.G.acpl_my_orgs[i].id());
922 menuitem.setAttribute('id', 'acplitem' + mw.G.acpl_my_orgs[i].id());
923 //sdump('D_UTIL','populate_copy_location_list: i = ' + i + ' acpl_my_orgs = ' + mw.G.acpl_my_orgs[i] + ' = ' + js2JSON(mw.G.acpl_my_orgs[i]) + '\n');
924 popup.appendChild(menuitem);
926 var list = document.getElementById(menulist);
927 if (list && defaultacpl) {
928 if (typeof defaultacpl == 'object') {
929 defaultacpl = defaultacpl.id();
931 var menuitem_id = 'acplitem' + defaultacpl;
932 var menuitem = document.getElementById(
935 var menulist_e = document.getElementById(menulist);
936 if (menulist_e && menuitem) { menulist_e.selectedItem = menuitem; }
939 sdump('D_UTIL','populate_copy_location_list: Could not find menupopup: ' + menupopup + '\n');
940 throw('populate_copy_location_list: Could not find menupopup: ' + menupopup + '\n');
945 function populate_lib_list(menulist,menupopup,defaultlib,id_flag) {
946 sdump('D_UTIL','populate_lib_list\n');
947 var default_menuitem;
948 if (typeof defaultlib == 'object') {
949 defaultlib = defaultlib.id();
951 var popup = menupopup;
952 if (typeof(popup)!='object') { popup = document.getElementById(menupopup); }
954 //sdump('D_UTIL','found popup\n');
956 var padding_flag = false;
957 for (var ou in mw.G.my_orgs) {
958 //sdump('D_UTIL','\tlooping on my_orgs: ' + js2JSON(mw.G.my_orgs[ou]) + '\n');
959 //sdump('D_UTIL','\tlooping on my_orgs: ou = ' + ou + '\n');
960 var menuitem = document.createElement('menuitem');
961 popup.appendChild(menuitem);
962 //sdump('D_UTIL','\t\tmenuitem = ' + menuitem + '\n');
964 //var depth = find_id_object_in_list( mw.G.aout_list, mw.G.my_orgs[ou].ou_type() ).depth();
965 var depth = mw.G.aout_hash[ mw.G.my_orgs[ou].ou_type() ].depth();
966 if (depth == '0') { padding_flag = true; }
968 for (var i = 0; i < depth; i++) {
969 padding = padding + ' ';
972 menuitem.setAttribute('label', padding + mw.G.my_orgs[ou].name() );
973 menuitem.setAttribute('value', mw.G.my_orgs[ou].id() );
974 if (id_flag) menuitem.setAttribute('id', 'libitem' + mw.G.my_orgs[ou].id() );
975 //sdump('D_UTIL','\tname = ' + mw.G.my_orgs[ou].name() + ' id = ' + mw.G.my_orgs[ou].id() + '\n');
976 if (defaultlib == mw.G.my_orgs[ou].id()) {
977 default_menuitem = menuitem;
978 sdump('D_UTIL','Setting defaultlib = ' + defaultlib + '\n');
982 if (typeof(list)!='object') { list = document.getElementById(menulist); }
983 if (list && defaultlib && default_menuitem) {
984 //sdump('D_UTIL','default_menuitem = ' + default_menuitem + '\n');
985 if (list) { list.selectedItem = default_menuitem; }
988 sdump('D_UTIL','populate_lib_list: Could not find ' + menupopup + '\n');
989 throw('populate_lib_list: Could not find ' + menupopup + '\n');
993 function populate_lib_list_with_branch(menulist,menupopup,defaultlib,branch,id_flag) {
994 sdump('D_UTIL','populate_lib_list_with_branch\n');
995 var default_menuitem;
996 if (typeof defaultlib == 'object') {
997 defaultlib = defaultlib.id();
999 var popup = menupopup;
1000 if (typeof(popup)!='object') popup = document.getElementById(menupopup);
1002 empty_widget(popup);
1003 var padding_flag = true;
1004 var flat_branch = flatten_ou_branch( branch );
1005 //sdump('D_UTIL','\n\nflat_branch = ' + js2JSON(flat_branch) + '\n');
1006 for (var i in flat_branch) {
1007 //sdump('D_UTIL','i = ' + js2JSON(i) + ' flat_branch[i] = ' + js2JSON(flat_branch[i]) + '\n');
1008 var menuitem = document.createElement('menuitem');
1010 //if (flat_branch[i].ou_type().depth() == '0') { padding_flag = true; }
1011 var depth = mw.G.aout_hash[ flat_branch[i].ou_type() ].depth();
1013 for (var j = 0; j < depth; j++) {
1014 padding = padding + ' ';
1017 menuitem.setAttribute('label', padding + flat_branch[i].name() );
1018 menuitem.setAttribute('value', flat_branch[i].id() );
1019 if (id_flag) menuitem.setAttribute('id', 'libitem' + flat_branch[i].id() );
1020 if (defaultlib == flat_branch[i].id()) {
1021 default_menuitem = menuitem;
1022 sdump('D_UTIL','i = ' + i + ' Setting defaultlib = ' + defaultlib + ' menuitem = ' + default_menuitem + ' value = ' + default_menuitem.getAttribute('value') + '\n');
1024 popup.appendChild(menuitem);
1026 var list = menulist;
1027 if (typeof(list)!='object') { list = document.getElementById(menulist); }
1028 if (list && defaultlib && default_menuitem) {
1029 //sdump('D_UTIL','default_menuitem = ' + default_menuitem + ' value = ' + default_menuitem.getAttribute('value') + '\n');
1030 if (list) { list.selectedItem = default_menuitem; }
1033 sdump('D_UTIL','populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
1034 throw('populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
1036 sdump('D_UTIL','\tleaving populate_lib_list_with_branch\n');
1039 function populate_user_profile(menulist,menupopup,defaultap) {
1040 sdump('D_TRACE','Entering populate_user_profile\n');
1041 var popup = document.getElementById(menupopup);
1043 empty_widget(popup);
1044 for (var i in mw.G.ap_list) {
1045 var menuitem = document.createElement('menuitem');
1046 menuitem.setAttribute('label', mw.G.ap_list[i].name());
1047 menuitem.setAttribute('value', mw.G.ap_list[i].id());
1048 menuitem.setAttribute('id', 'apitem' + mw.G.ap_list[i].id());
1049 //sdump('D_UTIL','pop_ap_list: i = ' + i + ' ap = ' + mw.G.ap_list[i] + ' = ' + js2JSON(mw.G.ap_list[i]) + '\n');
1050 popup.appendChild(menuitem);
1052 var list = document.getElementById(menulist);
1053 if (list && defaultap) {
1054 if (typeof defaultap == 'object') {
1055 defaultap = defaultap.id();
1057 var menuitem_id = 'apitem' + defaultap;
1058 var menuitem = document.getElementById(
1061 var menulist_e = document.getElementById(menulist);
1062 if (menulist_e) { menulist_e.selectedItem = menuitem; }
1065 sdump('D_UTIL','populate_user_profile: Could not find menupopup: ' + menupopup + '\n');
1066 throw('populate_user_profile: Could not find menupopup: ' + menupopup + '\n');
1070 function populate_ident_types(menulist,menupopup,repeatid,defaultcit) {
1071 sdump('D_TRACE','Entering populate_ident_types\n');
1072 var popup = document.getElementById(menupopup);
1074 empty_widget(popup);
1075 for (var i in mw.G.cit_list) {
1076 var menuitem = document.createElement('menuitem');
1077 menuitem.setAttribute('label', mw.G.cit_list[i].name());
1078 menuitem.setAttribute('value', mw.G.cit_list[i].id());
1079 menuitem.setAttribute('id', 'cit' + repeatid + 'item' + mw.G.cit_list[i].id());
1080 //sdump('D_UTIL','pop_cit_list: i = ' + i + ' cit = ' + mw.G.cit_list[i] + ' = ' + js2JSON(mw.G.cit_list[i]) + '\n');
1081 popup.appendChild(menuitem);
1083 if (list && defaultcit) {
1084 if (typeof defaultcit == 'object') {
1085 defaultcit = defaultcit.id();
1087 var menuitem_id = 'cit' + repeatid + 'item' + defaultcit;
1088 var menuitem = document.getElementById(
1091 var menulist_e = document.getElementById(menulist);
1092 if (menulist_e) { menulist_e.selectedItem = menuitem; }
1095 sdump('D_UTIL','populate_ident_types: Could not find menupopup: ' + menupopup + '\n');
1096 throw('populate_ident_types: Could not find menupopup: ' + menupopup + '\n');
1102 function populate_name_prefix(menulist,menupopup,defaultvalue) {
1103 var popup = document.getElementById(menupopup);
1105 empty_widget(popup);
1107 'Mr','Mrs','Ms','Miss', 'Dr',
1180 for (var i in prefix_list) {
1181 var menuitem = document.createElement('menuitem');
1182 menuitem.setAttribute('label', prefix_list[i]);
1183 menuitem.setAttribute('value', prefix_list[i]);
1184 popup.appendChild(menuitem);
1186 var list = document.getElementById(menulist);
1189 list.value = defaultvalue;
1192 sdump('D_UTIL','populate_name_prefix: Could not find menulist: ' + menulist + '\n');
1193 throw('populate_name_prefix: Could not find menulist: ' + menulist + '\n');
1196 sdump('D_UTIL','populate_name_prefix: Could not find menupopup: ' + menupopup + '\n');
1197 throw('populate_name_prefix: Could not find menupopup: ' + menupopup + '\n');
1202 function populate_name_suffix(menulist,menupopup,defaultvalue) {
1203 var popup = document.getElementById(menupopup);
1205 empty_widget(popup);
1207 'Jr','Sr','II','III',
1243 for (var i in suffix_list) {
1244 var menuitem = document.createElement('menuitem');
1245 menuitem.setAttribute('label', suffix_list[i]);
1246 menuitem.setAttribute('value', suffix_list[i]);
1247 popup.appendChild(menuitem);
1249 var list = document.getElementById(menulist);
1252 list.value = defaultvalue;
1255 sdump('D_UTIL','populate_name_suffix: Could not find ' + menulist + '\n');
1256 throw('populate_name_suffix: Could not find ' + menulist + '\n');
1259 sdump('D_UTIL','populate_name_suffix: Could not find ' + menupopup + '\n');
1260 throw('populate_name_suffix: Could not find ' + menupopup + '\n');