1 dump('Loading util.js\n');
16 function sdump(level,msg) {
18 if (sdump_levels[level])
24 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/redalert.wav') );
27 function snd_really_bad() {
28 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/die.wav') );
32 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/turn.wav') );
35 function snd_circ_good() {
36 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/clicked.wav') );
39 function snd_circ_bad() {
40 mw.G.sound.play( xp_url_init('chrome://evergreen/content/media/cow.wav') );
43 function snd_logon() {
47 function snd_logoff() {
55 function handle_error(E) {
57 if (instanceOf(E,ex)) {
59 //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
60 //s += 'This error was anticipated.\n\n';
61 //s += js2JSON(E).substr(0,200) + '...\n\n';
64 s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
65 s += 'This is a bug that we will fix later.\n\n';
66 s += js2JSON(E).substr(0,200) + '\n\n';
72 function string_to_array(s) {
74 for (var i = 0; i < s.length; i++ ) {
75 my_array.push( s.charAt(i) );
80 function textbox_checkdigit(ev) {
81 if ( check_checkdigit( ev.target.value ) ) {
82 sdump('D_UTIL', 'success\n');
85 sdump('D_UTIL', 'failure\n');
92 function check_checkdigit(barcode) {
94 var stripped_barcode = barcode.slice(0,-1);
95 var checkdigit = barcode.slice(-1);
97 sdump('D_UTIL', '\n\n=-=***=-=\n\ncheck_checkdigit: barcode = ' + barcode + ' barcode stripped = ' + stripped_barcode + ' checkdigit = ' + checkdigit + '\n');
99 var sum = 0; var mul = 2;
101 var b_array = string_to_array( stripped_barcode ).reverse();
102 sdump('D_UTIL', '\tb_array = ' + b_array + '\n');
104 for (var i in b_array) {
105 var digit = parseInt( b_array[i] );
106 sdump('D_UTIL', '\t\tdigit = ' + digit + '\n');
108 var product = digit * mul;
109 if (mul == 2) { mul = 1; } else { mul = 2; }
111 var p_array = string_to_array( product.toString() );
112 sdump('D_UTIL', '\t\tp_array = ' + p_array + '\n');
114 for (var j in p_array) {
115 var n = parseInt( p_array[j] );
116 sdump('D_UTIL', '\t\t\tn = ' + n + '\n');
121 sdump('D_UTIL', '\tsum = ' + sum + '\n');
123 var s_array = string_to_array( sum.toString() );
124 var calculated_checkdigit = s_array.pop();
125 if (calculated_checkdigit > 0) calculated_checkdigit = 10 - calculated_checkdigit;
126 sdump('D_UTIL', '\tcalculated checkdigit = ' + calculated_checkdigit + '\n\n=-=***=-=\n\n');
128 return ( calculated_checkdigit == checkdigit );
131 function fake_tab_for_textboxes(w,current) {
132 var flag = false; var next_one;
133 if (typeof(w)!='object') {
134 w = document.getElementById(w);
136 sdump('D_UTIL', 'fake_tab_for_textboxes: Current ' + current + '\n');
137 var nl = w.getElementsByTagName('textbox');
138 //var nl = document.getElementsByTagName('textbox');
139 sdump('D_UTIL', 'fake_tab_for_textboxes: nl.length = ' + nl.length + '\n');
140 for (var i = 0; i < nl.length; i++) {
141 sdump('D_UTIL', 'fake_tab_for_textboxes: Considering ' + nl[i] + '...\n');
142 if (flag && !next_one) {
143 sdump('D_UTIL', 'fake_tab_for_textboxes: Setting next_one ' + nl[i] + '\n');
146 if (nl[i] === current) {
147 sdump('D_UTIL','fake_tab_for_textboxes: Found current\n');
152 sdump('D_UTIL','fake_tab_for_textboxes: Out of loop, Setting next_one ' + nl[0] + '\n');
156 next_one.focus(); next_one.select();
158 sdump('D_UTIL','fake_tab_for_textboxes: next_one not set\n');
162 function get_list_from_tree_selection(tree_w) {
163 sdump('D_UTIL','entering get_list_from_tree...\n');
165 if (typeof(tree_w) != 'object') {
166 hitlist = document.getElementById(tree_w);
171 var start = new Object();
172 var end = new Object();
173 var numRanges = hitlist.view.selection.getRangeCount();
174 for (var t=0; t<numRanges; t++){
175 hitlist.view.selection.getRangeAt(t,start,end);
176 for (var v=start.value; v<=end.value; v++){
177 var i = hitlist.contentView.getItemAtIndex(v);
178 //sdump('D_UTIL',i.tagName + '\n');
182 sdump('D_UTIL','leaving get_list_from_tree...\n');
186 function yesno(value) {
188 case true: case 'true': case '1': case 'on':
195 function formatted_date(date,format) {
196 // pass in a Date object or epoch seconds
197 if (typeof(date) == 'string') {
198 date = new Date( parseInt( date + '000' ) );
200 var mm = date.getMonth() + 1;
202 if (mm.length == 1) mm = '0' +mm;
203 var dd = date.getDate().toString();
204 if (dd.length == 1) dd = '0' +dd;
205 var yyyy = date.getFullYear().toString();
206 var s = format.replace( /%m/g, mm );
207 s = s.replace( /%d/g, dd );
208 s = s.replace( /%Y/g, yyyy );
212 function interval_to_seconds ( $interval ) {
214 $interval = $interval.replace( /and/, ',' );
215 $interval = $interval.replace( /,/, ' ' );
218 var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);
219 for (var i in results) {
220 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
221 if (result[2] == 's') $amount += result[1] ;
222 if (result[2] == 'm') $amount += 60 * result[1] ;
223 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
224 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
225 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
226 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
227 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
235 for (var i = 0; i < arguments.length; i++) {
236 s = s + arguments[i];
238 //sdump('D_UTIL','debug:' + s + '\n');
242 function counter_init(id) {
246 function counter_incr(id) {
247 if (! counter[id]) { counter_init(id); }
248 return ++counter[id];
251 function counter_peek(id) {
252 if (! counter[id]) { return 0; }
256 function timer_init(id) {
257 timer[id] = (new Date).getTime();
260 function timer_elapsed(id) {
261 if (! timer[id]) { timer_init(id); }
262 var ms = (new Date).getTime() - timer[id];
263 return( ms + 'ms (' + ms/1000 + 's)' );
266 function dump_ns_node( node ) {
269 node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position]
271 node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
273 node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
275 node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
276 + '> parent_node=<' +
277 node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
282 function nodeset2tree(ns) {
284 if (ns[i].parent_node) {
295 function ns_addChild(ns,p,c) {
296 if (! ns[p].children ) { ns[p].children = []; }
297 ns[p].children.push(ns[c]);
300 function print_tabs(t) {
302 for (var j = 0; j < t; j++ ) { r = r + "\t"; }
306 function pretty_print(s) {
307 var r = ''; var t = 0;
310 r = r + "\n" + print_tabs(t) + s[i]; t++;
311 r = r + "\n" + print_tabs(t);
312 } else if (s[i] == '[') {
313 r = r + "\n" + print_tabs(t) + s[i]; t++;
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] == ']') {
319 t--; r = r + "\n" + print_tabs(t) + s[i];
320 r = r + "\n" + print_tabs(t);
321 } else if (s[i] == ',') {
323 r = r + "\n" + print_tabs(t);
331 function enable_widgets() {
332 for (var i = 0; i < arguments.length; i++) {
333 if (typeof(arguments[i]) == 'object') {
334 sdump('D_UTIL',arguments[i] + '.disabled = false;\n');
335 arguments[i].disabled = false;
337 var w = document.getElementById( arguments[i] );
339 sdump('D_UTIL',w + '.disabled = false;\n');
346 function disable_widgets() {
347 for (var i = 0; i < arguments.length; i++) {
348 if (typeof(arguments[i]) == 'object') {
349 sdump('D_UTIL',arguments[i] + '.disabled = true;\n');
350 arguments[i].disabled = true;
352 var w = document.getElementById( arguments[i] );
354 sdump('D_UTIL',w + '.disabled = true;\n');
361 function focus_widget(e) {
362 if (typeof(e) == 'object') {
365 var w = document.getElementById(e);
366 if (w) { w.focus(); }
370 function empty_widget(e) {
371 if (typeof(e) != 'object') { e = document.getElementById(e); }
372 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on empty_widget\n'); return; }
373 while (e.lastChild) { e.removeChild(e.lastChild); }
376 function empty_listbox(e) {
377 if (typeof(e) != 'object') { e = document.getElementById(e); }
378 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on empty_listbox\n'); return; }
379 var nl = e.getElementsByTagName('listitem');
380 for (var i = 0; i < nl.length; i++) {
381 e.removeChild(nl[i]);
385 function swap_attributes(e,a1,a2) {
386 if (typeof(e) != 'object') { e = document.getElementById(e); }
387 if (typeof(e) != 'object') { sdump('D_UTIL','Failed on swap_attributes\n'); return; }
388 var a1_v = e.getAttribute(a1);
389 var a2_v = e.getAttribute(a2);
390 e.setAttribute(a1,a2_v);
391 e.setAttribute(a2, a1_v);
392 sdump('D_UTIL','before: a1 = ' + a1_v + ' a2 = ' + a2_v + ' and ');
393 sdump('D_UTIL','after: a1 = ' + a2_v + ' a2 = ' + a1_v + '\n');
396 function cycle_attribute(e,a,v) {
398 if (typeof(e) != 'object') { e = document.getElementById(e); }
399 if (typeof(e) != 'object') { throw('typeof e != object : typeof e = ' + typeof(e)); }
400 if (!a) { throw('!a : a = ' + a); }
401 if (! e.getAttribute(a) ) { throw(' ! e.getAttribute(a) : a = ' + a); }
402 if (typeof(v) != 'object') { throw('typeof v != object : typeof v = ' + typeof(v)); }
404 var toggle = e.getAttribute(a);
405 var next_one = false;
406 sdump('D_UTIL','cycling ' + a + ' on ' + e.getAttribute('id') + ' to ');
407 for (var i = 0; i < v.length; i++) {
409 e.setAttribute(a,v[i]);
410 sdump('D_UTIL',v[i] + '\n');
413 if (toggle == v[i]) {
418 e.setAttribute(a,v[0]);
419 sdump('D_UTIL',v[0] + '\n');
422 throw('current value not in list');
425 sdump('D_UTIL','cycle_attribute error: ' + js2JSON(E) + '\n');
426 sdump('D_UTIL','null\n');
432 function radio_checkbox(ev) {
433 var target = ev.target;
434 var group = target.getAttribute('group');
436 var nl = document.getElementsByTagName('checkbox');
438 if (typeof(nl[i])=='object') {
440 var cgroup = c.getAttribute('group');
441 if (cgroup == group) {
446 target.checked = true;
448 sdump('D_UTIL','radio_checkbox: Checkbox must have a group attribute to find peers');
452 function toggle_hidden_grid_rows(grid) {
453 if (typeof(grid) != 'object') {
454 grid = document.getElementById(grid);
456 if (!grid) { return; }
457 var rows = grid.lastChild; if (!rows) { return; }
458 for (var r = 0; r < rows.childNodes.length; r++ ) {
459 var row = rows.childNodes[r];
460 if (typeof(row) == 'object') {
461 //sdump('D_UTIL','toggle row = ' + row + '\n');
462 var hidden = row.getAttribute('hidden');
463 if (hidden == 'true') {
464 row.setAttribute('hidden','false');
466 row.setAttribute('hidden','true');
472 /* 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 */
473 function xul_setAttributes(el,attrs) {
474 if (typeof(el) == 'object') {
476 var w = document.getElementById(e);
477 for (var a in attrs) {
478 w.setAttribute(a,attrs[a]);
482 var w = document.getElementById(el);
483 for (var a in attrs) {
484 w.setAttribute(a,attrs[a]);
489 function append_treeitem() {
490 var id = arguments[0];
491 var treechildren = document.getElementById(id);
492 if (!treechildren) { sdump('D_UTIL','No ' + id + ' to append to\n'); return; }
493 var treeitem = document.createElement('treeitem'); treechildren.appendChild(treeitem);
494 var treerow = document.createElement('treerow'); treeitem.appendChild(treerow);
495 for (var i = 1; i < arguments.length ; i++ ) {
496 var treecell = document.createElement('treecell'); treerow.appendChild(treecell);
497 treecell.setAttribute('label',arguments[i]);
498 treecell.setAttribute('id', 'treeitem_' + treeitem_id + '_' + i);
499 //sdump('D_UTIL','treecell.label = ' + arguments[i] + '\n');
501 return treeitem_id++;
504 function set_decks(params) {
505 for (var deck_id in params) {
506 var deck = document.getElementById( deck_id )
507 if (deck) deck.setAttribute( 'selectedIndex', params[deck_id] );
511 function super_dump(o,t) {
513 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
515 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
516 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
517 s = s + "typeof = " + typeof(o) + "\n";
519 var string = new XMLSerializer().serializeToString(o);
520 return( string + "\n" );
527 s = s + super_dump(i,t+1);
531 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
532 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
533 if (typeof(value) == 'object') {
534 value = super_dump(value,t+1);
536 s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
544 function super_dump_norecurse(o,t) {
546 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
548 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
549 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
550 s = s + "typeof = " + typeof(o) + "\n";
552 var string = new XMLSerializer().serializeToString(o);
553 return( string + "\n" );
561 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
562 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
563 s = s + "\ttoString:" + i.toString() + "\n";
571 function get_my_orgs(user_ou) {
573 // self and ancestors
574 var current_item_id = user_ou.id();
575 //sdump('D_UTIL','mw.G[user_ou] = ' + js2JSON(mw.G['user_ou']) + '\n');
576 //sdump('D_UTIL','current_item_id = ' + current_item_id + '\n');
577 var item_ou; var my_orgs = {}; var other_orgs = {};
578 while( item_ou = find_ou(mw.G['org_tree'],current_item_id) ) {
579 //sdump('D_UTIL','\titem_ou = ' + js2JSON(item_ou) + '\n');
580 my_orgs[ item_ou.id() ] = item_ou;
581 current_item_id = item_ou.parent_ou();
582 if (!current_item_id) { break; }
585 current_item_id = user_ou.id();
586 //sdump('D_UTIL','self & ancestors : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
589 var find_ou_result = find_ou(mw.G['org_tree'],current_item_id);
590 if (find_ou_result) {
591 my_children = find_ou_result.children() }
593 sdump('D_UTIL','ERROR: find_ou(org_tree,'+current_item_id+') returned with no properties\n');
595 //sdump('D_UTIL','my_children: ' + my_children + ' : ' + js2JSON(my_children) + '\n');
597 for (var i = 0; i < my_children.length; i++) {
598 var my_child = my_children[i];
599 my_orgs[ my_child.id() ] = my_child;
600 //sdump('D_UTIL','my_child.children(): ' + my_child.children() + ' : ' + js2JSON(my_child.children()) + '\n');
601 if (my_child.children() != null) {
602 for (var j = 0; j < my_child.children().length; j++) {
603 var my_gchild = my_child.children()[j];
604 my_orgs[ my_gchild.id() ] = my_gchild;
609 //sdump('D_UTIL','& descendants : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n');
613 function get_other_orgs(org,other_orgs) {
616 function flatten_ou_branch(branch) {
617 //sdump('D_UTIL','flatten: branch = ' + js2JSON(branch) + '\n');
618 var my_array = new Array();
619 my_array.push( branch );
620 for (var i in branch.children() ) {
621 var child = branch.children()[i];
623 var temp_array = flatten_ou_branch(child);
624 for (var j in temp_array) {
625 my_array.push( temp_array[j] );
632 function find_ou(tree,id) {
633 if (typeof(id)=='object') { id = id.id(); }
637 for (var i in tree.children()) {
638 var child = tree.children()[i];
639 ou = find_ou( child, id );
640 if (ou) { return ou; }
645 function find_tree_via_children(tree,children_func,find_func) {
646 if (typeof(tree)!='object') tree = document.getElementById(tree);
648 var t = find_func(tree); if (t) return t;
650 var c = children_func(tree);
652 for (var i = 0; i < c.length; i++) {
653 t = find_func( c[i] );
658 function filter_list(list,f) {
660 for (var i in list) {
661 var t = f( list[i] );
662 if (t) new_list.push( list[i] );
667 function find_list(list,f) {
668 for (var i in list) {
669 var t = f( list[i] );
670 if (t) return list[i];
675 function map_list(list,f) {
677 for (var i in list) {
678 new_list.push( f( list[i] ) );
683 function map_object_to_list(obj,f) {
686 new_list.push( f( obj, i ) );
691 function convert_object_list_to_hash(list) {
692 var my_hash = new Object();
694 for (var i = 0; i < list.length; i++) {
695 my_hash[ list[i].id() ] = list[i];
701 function find_id_object_in_list(list,id) {
702 //sdump('D_UTIL','find_id_object_in_list(' + js2JSON(list).substr(0,20) + '... ,' + id + ')\n');
704 for (var i = 0; i < list.length; i++ ) {
706 if ( list[i].id() == id ) {
710 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');
714 //sdump('D_UTIL','not found\n');
718 function find_attr_object_in_list(list,attr,value) {
720 for (var i = 0; i < list.length; i++ ) {
721 sdump('D_UTIL','find_attr_object_in_list: i = ' + i + ' id = ' + list[i].id() + '\n');
723 var command = 'list[' + i + '].'+attr+'() == ' + value;
724 if ( eval(command) ) {
728 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');
735 function find_ou_by_shortname(tree,sn) {
737 if (tree.shortname()==sn) {
740 for (var i in tree.children()) {
741 var child = tree.children()[i];
742 ou = find_ou_by_shortname( child, sn );
743 if (ou) { return ou; }
748 function populate_listbox_with_local_stat_cats_myself(local_stat_cats,local_cat_entries,listbox,libs,app,method,editable) {
749 sdump('D_UTIL','populate_local_stat_cats: pertinent libs = ' + js2JSON(libs) + '\n');
751 local_stat_cats = user_request(
754 [ mw.G.auth_ses[0], libs ]
756 //sdump('D_UTIL','local_stat_cats = ' + pretty_print( js2JSON( local_stat_cats ) ) + '\n');
759 if (typeof list != 'object') list = document.getElementById(list);
761 for (var i in local_stat_cats) {
763 var stat_cat = local_stat_cats[i];
765 var listitem = document.createElement('listitem');
766 list.appendChild(listitem);
767 listitem.setAttribute('allowevents','true');
768 sdump('D_UTIL','listitem = ' + listitem + '\n');
770 var label = document.createElement('listcell');
771 listitem.appendChild(label);
772 label.setAttribute('label',stat_cat.name() );
773 sdump('D_UTIL','\tlistcell = ' + label + '\n');
775 var menucell = document.createElement('listcell');
776 listitem.appendChild(menucell);
777 sdump('D_UTIL','\tlistcell = ' + menucell + '\n');
779 var menulist = document.createElement('menulist');
780 menucell.appendChild(menulist);
781 if (editable) { menulist.setAttribute('editable','true'); }
782 menulist.setAttribute('id','menulist_stat_cat_'+stat_cat.id());
783 sdump('D_UTIL','\tmenulist = ' + menulist + '\n');
785 var menupopup = document.createElement('menupopup');
786 menulist.appendChild(menupopup);
787 menupopup.setAttribute('stat_cat',stat_cat.id());
788 menupopup.setAttribute('oncommand','apply_attribute(event);');
789 sdump('D_UTIL','\t\tmenupopup = ' + menupopup + '\n');
791 for (var j in stat_cat.entries() ) {
793 var stat_entry = stat_cat.entries()[j];
794 local_stat_cat_entries[stat_entry.id()] = stat_entry;
796 var menuitem = document.createElement('menuitem');
797 menupopup.appendChild(menuitem);
798 menuitem.setAttribute('label',stat_entry.value());
800 menuitem.setAttribute('value',stat_entry.value());
802 menuitem.setAttribute('value',stat_entry.id());
804 menuitem.setAttribute('stat_cat',stat_cat.id());
805 menuitem.setAttribute('id','menuitem_stat_cat_entry_' + stat_entry.id());
806 sdump('D_UTIL','\t\t\tmenuitem = ' + menuitem + '\n');
812 //sdump('D_UTIL','local_stat_cat_entries = ' + pretty_print( js2JSON( local_stat_cat_entries ) ) + '\n');
816 function populate_rows_with_local_stat_cats(local_stat_cats,local_stat_cat_entries,rows,editable) {
817 //sdump('D_UTIL','populate_local_stat_cats: pertinent libs = ' + js2JSON(libs) + '\n');
819 /*local_stat_cats = user_request(
822 [ mw.G.auth_ses[0], libs ]
824 //sdump('D_UTIL','local_stat_cats = ' + pretty_print( js2JSON( local_stat_cats ) ) + '\n');
826 if (typeof rows != 'object') rows = document.getElementById(rows);
828 for (var i in local_stat_cats) {
830 var stat_cat = local_stat_cats[i];
832 var row = document.createElement('row');
833 rows.appendChild(row);
835 var label = document.createElement('label');
836 label.setAttribute('value',stat_cat.name());
837 row.appendChild(label);
839 var menulist = document.createElement('menulist');
840 row.appendChild(menulist);
841 if (editable) { menulist.setAttribute('editable','true'); }
842 menulist.setAttribute('id','menulist_stat_cat_'+stat_cat.id());
843 menulist.setAttribute('stat_cat_id',stat_cat.id());
844 sdump('D_UTIL','\tmenulist = ' + menulist + '\n');
846 var menupopup = document.createElement('menupopup');
847 menulist.appendChild(menupopup);
848 menupopup.setAttribute('stat_cat',stat_cat.id());
849 menupopup.setAttribute('command','cmd_apply');
850 sdump('D_UTIL','\t\tmenupopup = ' + menupopup + '\n');
852 for (var j in stat_cat.entries() ) {
854 var stat_entry = stat_cat.entries()[j];
855 local_stat_cat_entries[stat_entry.id()] = stat_entry;
857 var menuitem = document.createElement('menuitem');
858 menupopup.appendChild(menuitem);
859 menuitem.setAttribute('label',stat_entry.value());
861 menuitem.setAttribute('value',stat_entry.value());
863 menuitem.setAttribute('value',stat_entry.id());
865 menuitem.setAttribute('stat_cat',stat_cat.id());
866 menuitem.setAttribute('id','menuitem_stat_cat_entry_' + stat_entry.id());
867 sdump('D_UTIL','\t\t\tmenuitem = ' + menuitem + '\n');
873 //sdump('D_UTIL','local_stat_cat_entries = ' + pretty_print( js2JSON( local_stat_cat_entries ) ) + '\n');
877 function populate_copy_status_list(menulist,menupopup,defaultccs) {
878 sdump('D_UTIL','populate_copy_status_list\n');
879 var popup = document.getElementById(menupopup);
883 for (var i in mw.G.ccs_list) {
884 var menuitem = document.createElement('menuitem');
885 menuitem.setAttribute('label', mw.G.ccs_list[i].name());
886 menuitem.setAttribute('value', mw.G.ccs_list[i].id());
887 menuitem.setAttribute('id', 'ccsitem' + mw.G.ccs_list[i].id());
888 //sdump('D_UTIL','pop_ccs_list: i = ' + i + ' ccs = ' + mw.G.ccs_list[i] + ' = ' + js2JSON(mw.G.ccs_list[i]) + '\n');
889 popup.appendChild(menuitem);
891 var list = document.getElementById(menulist);
892 if (list && defaultccs) {
893 if (typeof defaultccs == 'object') {
894 defaultccs = defaultccs.id();
896 var menuitem_id = 'ccsitem' + defaultccs;
897 var menuitem = document.getElementById(
900 var menulist_e = document.getElementById(menulist);
901 if (menulist_e && menuitem) {
902 sdump('D_UTIL','Setting default ccs\n');
903 menulist_e.selectedItem = menuitem;
905 sdump('D_UTIL','Not Setting default ccs\n');
909 sdump('D_UTIL','populate_copy_status_list: Could not find menupopup: ' + menupopup + '\n');
910 throw('populate_copy_status_list: Could not find menupopup: ' + menupopup + '\n');
915 function populate_copy_location_list(menulist,menupopup,defaultacpl) {
916 sdump('D_UTIL','populate_copy_location_list\n');
917 var popup = document.getElementById(menupopup);
921 for (var i in mw.G.acpl_my_orgs) {
922 var menuitem = document.createElement('menuitem');
923 menuitem.setAttribute('label', mw.G.acpl_my_orgs[i].name());
924 menuitem.setAttribute('value', mw.G.acpl_my_orgs[i].id());
925 menuitem.setAttribute('id', 'acplitem' + mw.G.acpl_my_orgs[i].id());
926 //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');
927 popup.appendChild(menuitem);
929 var list = document.getElementById(menulist);
930 if (list && defaultacpl) {
931 if (typeof defaultacpl == 'object') {
932 defaultacpl = defaultacpl.id();
934 var menuitem_id = 'acplitem' + defaultacpl;
935 var menuitem = document.getElementById(
938 var menulist_e = document.getElementById(menulist);
939 if (menulist_e && menuitem) { menulist_e.selectedItem = menuitem; }
942 sdump('D_UTIL','populate_copy_location_list: Could not find menupopup: ' + menupopup + '\n');
943 throw('populate_copy_location_list: Could not find menupopup: ' + menupopup + '\n');
948 function populate_lib_list(menulist,menupopup,defaultlib,id_flag) {
949 sdump('D_UTIL','populate_lib_list\n');
950 var default_menuitem;
951 if (typeof defaultlib == 'object') {
952 defaultlib = defaultlib.id();
954 var popup = menupopup;
955 if (typeof(popup)!='object') { popup = document.getElementById(menupopup); }
957 //sdump('D_UTIL','found popup\n');
959 var padding_flag = false;
960 for (var ou in mw.G.my_orgs) {
961 //sdump('D_UTIL','\tlooping on my_orgs: ' + js2JSON(mw.G.my_orgs[ou]) + '\n');
962 //sdump('D_UTIL','\tlooping on my_orgs: ou = ' + ou + '\n');
963 var menuitem = document.createElement('menuitem');
964 popup.appendChild(menuitem);
965 //sdump('D_UTIL','\t\tmenuitem = ' + menuitem + '\n');
967 //var depth = find_id_object_in_list( mw.G.aout_list, mw.G.my_orgs[ou].ou_type() ).depth();
968 var depth = mw.G.aout_hash[ mw.G.my_orgs[ou].ou_type() ].depth();
969 if (depth == '0') { padding_flag = true; }
971 for (var i = 0; i < depth; i++) {
972 padding = padding + ' ';
975 menuitem.setAttribute('label', padding + mw.G.my_orgs[ou].name() );
976 menuitem.setAttribute('value', mw.G.my_orgs[ou].id() );
977 if (id_flag) menuitem.setAttribute('id', 'libitem' + mw.G.my_orgs[ou].id() );
978 //sdump('D_UTIL','\tname = ' + mw.G.my_orgs[ou].name() + ' id = ' + mw.G.my_orgs[ou].id() + '\n');
979 if (defaultlib == mw.G.my_orgs[ou].id()) {
980 default_menuitem = menuitem;
981 sdump('D_UTIL','Setting defaultlib = ' + defaultlib + '\n');
985 if (typeof(list)!='object') { list = document.getElementById(menulist); }
986 if (list && defaultlib && default_menuitem) {
987 //sdump('D_UTIL','default_menuitem = ' + default_menuitem + '\n');
988 if (list) { list.selectedItem = default_menuitem; }
991 sdump('D_UTIL','populate_lib_list: Could not find ' + menupopup + '\n');
992 throw('populate_lib_list: Could not find ' + menupopup + '\n');
996 function populate_lib_list_with_branch(menulist,menupopup,defaultlib,branch,id_flag) {
997 sdump('D_UTIL','populate_lib_list_with_branch\n');
998 var default_menuitem;
999 if (typeof defaultlib == 'object') {
1000 defaultlib = defaultlib.id();
1002 var popup = menupopup;
1003 if (typeof(popup)!='object') popup = document.getElementById(menupopup);
1005 empty_widget(popup);
1006 var padding_flag = true;
1007 var flat_branch = flatten_ou_branch( branch );
1008 //sdump('D_UTIL','\n\nflat_branch = ' + js2JSON(flat_branch) + '\n');
1009 for (var i in flat_branch) {
1010 //sdump('D_UTIL','i = ' + js2JSON(i) + ' flat_branch[i] = ' + js2JSON(flat_branch[i]) + '\n');
1011 var menuitem = document.createElement('menuitem');
1013 //if (flat_branch[i].ou_type().depth() == '0') { padding_flag = true; }
1014 var depth = mw.G.aout_hash[ flat_branch[i].ou_type() ].depth();
1016 for (var j = 0; j < depth; j++) {
1017 padding = padding + ' ';
1020 menuitem.setAttribute('label', padding + flat_branch[i].name() );
1021 menuitem.setAttribute('value', flat_branch[i].id() );
1022 if (id_flag) menuitem.setAttribute('id', 'libitem' + flat_branch[i].id() );
1023 if (defaultlib == flat_branch[i].id()) {
1024 default_menuitem = menuitem;
1025 sdump('D_UTIL','i = ' + i + ' Setting defaultlib = ' + defaultlib + ' menuitem = ' + default_menuitem + ' value = ' + default_menuitem.getAttribute('value') + '\n');
1027 popup.appendChild(menuitem);
1029 var list = menulist;
1030 if (typeof(list)!='object') { list = document.getElementById(menulist); }
1031 if (list && defaultlib && default_menuitem) {
1032 //sdump('D_UTIL','default_menuitem = ' + default_menuitem + ' value = ' + default_menuitem.getAttribute('value') + '\n');
1033 if (list) { list.selectedItem = default_menuitem; }
1036 sdump('D_UTIL','populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
1037 throw('populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
1039 sdump('D_UTIL','\tleaving populate_lib_list_with_branch\n');
1042 function populate_user_profile(menulist,menupopup,defaultap) {
1043 sdump('D_TRACE','Entering populate_user_profile\n');
1044 var popup = document.getElementById(menupopup);
1046 empty_widget(popup);
1047 for (var i in mw.G.ap_list) {
1048 var menuitem = document.createElement('menuitem');
1049 menuitem.setAttribute('label', mw.G.ap_list[i].name());
1050 menuitem.setAttribute('value', mw.G.ap_list[i].id());
1051 menuitem.setAttribute('id', 'apitem' + mw.G.ap_list[i].id());
1052 //sdump('D_UTIL','pop_ap_list: i = ' + i + ' ap = ' + mw.G.ap_list[i] + ' = ' + js2JSON(mw.G.ap_list[i]) + '\n');
1053 popup.appendChild(menuitem);
1055 var list = document.getElementById(menulist);
1056 if (list && defaultap) {
1057 if (typeof defaultap == 'object') {
1058 defaultap = defaultap.id();
1060 var menuitem_id = 'apitem' + defaultap;
1061 var menuitem = document.getElementById(
1064 var menulist_e = document.getElementById(menulist);
1065 if (menulist_e) { menulist_e.selectedItem = menuitem; }
1068 sdump('D_UTIL','populate_user_profile: Could not find menupopup: ' + menupopup + '\n');
1069 throw('populate_user_profile: Could not find menupopup: ' + menupopup + '\n');
1073 function populate_ident_types(menulist,menupopup,repeatid,defaultcit) {
1074 sdump('D_TRACE','Entering populate_ident_types\n');
1075 var popup = document.getElementById(menupopup);
1077 empty_widget(popup);
1078 for (var i in mw.G.cit_list) {
1079 var menuitem = document.createElement('menuitem');
1080 menuitem.setAttribute('label', mw.G.cit_list[i].name());
1081 menuitem.setAttribute('value', mw.G.cit_list[i].id());
1082 menuitem.setAttribute('id', 'cit' + repeatid + 'item' + mw.G.cit_list[i].id());
1083 //sdump('D_UTIL','pop_cit_list: i = ' + i + ' cit = ' + mw.G.cit_list[i] + ' = ' + js2JSON(mw.G.cit_list[i]) + '\n');
1084 popup.appendChild(menuitem);
1086 if (list && defaultcit) {
1087 if (typeof defaultcit == 'object') {
1088 defaultcit = defaultcit.id();
1090 var menuitem_id = 'cit' + repeatid + 'item' + defaultcit;
1091 var menuitem = document.getElementById(
1094 var menulist_e = document.getElementById(menulist);
1095 if (menulist_e) { menulist_e.selectedItem = menuitem; }
1098 sdump('D_UTIL','populate_ident_types: Could not find menupopup: ' + menupopup + '\n');
1099 throw('populate_ident_types: Could not find menupopup: ' + menupopup + '\n');
1105 function populate_name_prefix(menulist,menupopup,defaultvalue) {
1106 var popup = document.getElementById(menupopup);
1108 empty_widget(popup);
1110 'Mr','Mrs','Ms','Miss', 'Dr',
1183 for (var i in prefix_list) {
1184 var menuitem = document.createElement('menuitem');
1185 menuitem.setAttribute('label', prefix_list[i]);
1186 menuitem.setAttribute('value', prefix_list[i]);
1187 popup.appendChild(menuitem);
1189 var list = document.getElementById(menulist);
1192 list.value = defaultvalue;
1195 sdump('D_UTIL','populate_name_prefix: Could not find menulist: ' + menulist + '\n');
1196 throw('populate_name_prefix: Could not find menulist: ' + menulist + '\n');
1199 sdump('D_UTIL','populate_name_prefix: Could not find menupopup: ' + menupopup + '\n');
1200 throw('populate_name_prefix: Could not find menupopup: ' + menupopup + '\n');
1205 function populate_name_suffix(menulist,menupopup,defaultvalue) {
1206 var popup = document.getElementById(menupopup);
1208 empty_widget(popup);
1210 'Jr','Sr','II','III',
1246 for (var i in suffix_list) {
1247 var menuitem = document.createElement('menuitem');
1248 menuitem.setAttribute('label', suffix_list[i]);
1249 menuitem.setAttribute('value', suffix_list[i]);
1250 popup.appendChild(menuitem);
1252 var list = document.getElementById(menulist);
1255 list.value = defaultvalue;
1258 sdump('D_UTIL','populate_name_suffix: Could not find ' + menulist + '\n');
1259 throw('populate_name_suffix: Could not find ' + menulist + '\n');
1262 sdump('D_UTIL','populate_name_suffix: Could not find ' + menupopup + '\n');
1263 throw('populate_name_suffix: Could not find ' + menupopup + '\n');