2 attachEvt("common", "run", advgInit);
6 $n($('adv_global_tbody'), 'term').focus();
14 for( var x in extras ) {
16 var req = new Request(extras[x]);
18 if(x == 0) req.request.sel = $('adv_global_lit_form');
19 if(x == 1) req.request.sel = $('adv_global_item_form');
20 if(x == 2) req.request.sel = $('adv_global_item_type');
21 if(x == 3) req.request.sel = $('adv_global_audience');
23 req.callback(advDrawBibExtras);
27 var input = $n($('adv_global_trow'), 'term');
29 setEnterFunc(input, advSubmitGlobal);
32 function advDrawBibExtras(r) {
33 var data = r.getResultObject();
36 data = data.sort( /* sort alphabetically */
38 if( a.value() < b.value() ) return -1;
39 if( a.value() > b.value() ) return 1;
44 for( var d = 0; d < data.length; d++ ) {
46 var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );
47 opt.setAttribute('title', thing.value());
51 function advSelToStringList(sel) {
52 var list = getSelectedList(sel);
54 for( var i = 0; i < list.length; i++ ) {
56 for( var j = 0; j < str.length; j++ ) {
57 if(str.charAt(j) == ' ') continue;
58 vals.push(str.charAt(j));
61 return vals.toString();
64 function advGetVisSelectorVals(id) {
65 var basic = id + '_basic';
66 if(! $(id).className.match(/hide_me/))
67 return advSelToStringList($(id));
68 return advSelToStringList($(basic));
71 function advSubmitGlobal() {
73 var sortdir = getSelectorVal($('adv_global_sort_dir'));
74 var sortby = getSelectorVal($('adv_global_sort_by'));
76 var litforms = advGetVisSelectorVals('adv_global_lit_form');
77 var itemforms = advGetVisSelectorVals('adv_global_item_form');
78 var itemtypes = advGetVisSelectorVals('adv_global_item_type');
79 var audiences = advGetVisSelectorVals('adv_global_audience');
80 var languages = getSelectedList($('adv_global_lang')) + '';
82 var searches = advBuildSearchBlob();
89 args[PARAM_ITEMFORM] = itemforms;
90 args[PARAM_ITEMTYPE] = itemtypes;
91 args[PARAM_LITFORM] = litforms;
92 args[PARAM_AUDIENCE] = audiences;
93 args[PARAM_LANGUAGE] = languages;
94 args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */
95 args[PARAM_DEPTH] = depthSelGetDepth();
96 args[PARAM_LOCATION] = depthSelGetNewLoc();
97 args[PARAM_SORT] = sortby;
98 args[PARAM_SORT_DIR] = sortdir;
99 args[PARAM_ADVTYPE] = ADVTYPE_MULTI;
100 args[PARAM_STYPE] = "";
101 args[PARAM_TERM] = "";
103 /* pubdate sorting causes a record (not metarecord) search */
104 if( sortby == SORT_TYPE_PUBDATE ) {
106 args[PARAM_RTYPE] = RTYPE_MULTI;
109 goTo(buildOPACLink(args));
113 function advBuildSearchBlob() {
116 var tbody = $('adv_global_tbody');
117 var rows = tbody.getElementsByTagName('tr');
119 for( var i = 0; i < rows.length; i++ ) {
122 if(!(row && typeof row == 'object')) continue;
123 if(!row.getAttribute('type')) continue;
125 var stype = getSelectorVal($n(row, 'type'));
126 var contains = getSelectorVal($n(row, 'contains'));
127 var term = $n(row, 'term').value;
131 if(!searches) searches = {};
133 string = searches[stype].term;
134 else searches[stype] = {};
138 string += " " + term;
141 case 'nocontains' : {
142 var words = term.split(" ");
143 for( var i in words )
144 string += " -" + words[i];
149 if(term.indexOf('"') > -1) string += " " + term;
150 else string += " \"" + term + "\"";
153 if(string) searches[stype].term = string;