2 attachEvt("common", "run", advgInit);
4 var COOKIE_NOGROUP_RECORDS = 'grpt';
8 if( cookieManager.read(COOKIE_NOGROUP_RECORDS) )
9 $('adv_group_titles').checked = false;
11 $n($('adv_global_tbody'), 'term').focus();
19 for( var x in extras ) {
21 var req = new Request(extras[x]);
23 if(x == 0) req.request.sel = $('adv_global_lit_form');
24 if(x == 1) req.request.sel = $('adv_global_item_form');
25 if(x == 2) req.request.sel = $('adv_global_item_type');
26 if(x == 3) req.request.sel = $('adv_global_audience');
28 req.callback(advDrawBibExtras);
32 var input = $n($('adv_global_trow'), 'term');
34 setEnterFunc(input, advSubmitGlobal);
37 function advAddGblRow() {
38 var tbody = $("adv_global_tbody");
39 var newrow = $("adv_global_trow").cloneNode(true);
40 tbody.insertBefore(newrow, $("adv_global_addrow"));
41 var input = $n(newrow, "term");
43 setEnterFunc(input, advSubmitGlobal);
44 $n(newrow, 'type').focus();
47 function advDrawBibExtras(r) {
48 var data = r.getResultObject();
51 data = data.sort( /* sort alphabetically */
53 if( a.value() < b.value() ) return -1;
54 if( a.value() > b.value() ) return 1;
59 for( var d = 0; d < data.length; d++ ) {
61 var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );
62 opt.setAttribute('title', thing.value());
66 function advSelToStringList(sel) {
67 var list = getSelectedList(sel);
69 for( var i = 0; i < list.length; i++ ) {
71 for( var j = 0; j < str.length; j++ ) {
72 if(str.charAt(j) == ' ') continue;
73 vals.push(str.charAt(j));
76 return vals.toString();
79 function advGetVisSelectorVals(id) {
80 var basic = id + '_basic';
81 if(! $(id).className.match(/hide_me/))
82 return advSelToStringList($(id));
83 return advSelToStringList($(basic));
86 function advSubmitGlobal() {
88 var sortdir = getSelectorVal($('adv_global_sort_dir'));
89 var sortby = getSelectorVal($('adv_global_sort_by'));
91 var litforms = advGetVisSelectorVals('adv_global_lit_form');
92 var itemforms = advGetVisSelectorVals('adv_global_item_form');
93 var itemtypes = advGetVisSelectorVals('adv_global_item_type');
94 var audiences = advGetVisSelectorVals('adv_global_audience');
95 var languages = getSelectedList($('adv_global_lang')) + '';
97 var searches = advBuildSearchBlob();
104 args[PARAM_ITEMFORM] = itemforms;
105 args[PARAM_ITEMTYPE] = itemtypes;
106 args[PARAM_LITFORM] = litforms;
107 args[PARAM_AUDIENCE] = audiences;
108 args[PARAM_LANGUAGE] = languages;
109 args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */
110 args[PARAM_DEPTH] = depthSelGetDepth();
111 args[PARAM_LOCATION] = depthSelGetNewLoc();
112 args[PARAM_SORT] = sortby;
113 args[PARAM_SORT_DIR] = sortdir;
114 args[PARAM_ADVTYPE] = ADVTYPE_MULTI;
115 args[PARAM_STYPE] = "";
116 args[PARAM_TERM] = "";
118 /* pubdate sorting causes a record (not metarecord) search */
119 if( sortby == SORT_TYPE_PUBDATE || !$('adv_group_titles').checked ) {
121 args[PARAM_RTYPE] = RTYPE_MULTI;
124 if($('adv_group_titles').checked )
125 cookieManager.write(COOKIE_NOGROUP_RECORDS,'');
127 cookieManager.write(COOKIE_NOGROUP_RECORDS,'1', '+10m');
130 goTo(buildOPACLink(args));
134 function advBuildSearchBlob() {
137 var tbody = $('adv_global_tbody');
138 var rows = tbody.getElementsByTagName('tr');
140 for( var i = 0; i < rows.length; i++ ) {
143 if(!(row && typeof row == 'object')) continue;
144 if(!row.getAttribute('type')) continue;
146 var stype = getSelectorVal($n(row, 'type'));
147 var contains = getSelectorVal($n(row, 'contains'));
148 var term = $n(row, 'term').value;
153 if(!searches) searches = {};
156 string = searches[stype].term;
158 searches[stype] = { term : "" };
162 string += " " + term;
165 case 'nocontains' : {
166 var words = term.split(" ");
167 for( var j in words )
168 string += " -" + words[j];
173 if(term.indexOf('"') > -1) string += " " + term;
174 else string += " \"" + term + "\"";
178 string = string.replace(/'/,'');
179 searches[stype].term = string;