2 attachEvt("common", "run", advgInit);
4 var COOKIE_NOGROUP_RECORDS = 'grpt';
9 if( cookieManager.read(COOKIE_NOGROUP_RECORDS) || SHOW_MR_DEFAULT )
10 $('adv_group_titles').checked = true;
12 $n($('adv_global_tbody'), 'term').focus();
20 for( var x in extras ) {
22 var req = new Request(extras[x]);
24 if(x == 0) req.request.sel = $('adv_global_lit_form');
25 if(x == 1) req.request.sel = $('adv_global_item_form');
26 if(x == 2) req.request.sel = $('adv_global_item_type');
27 if(x == 3) req.request.sel = $('adv_global_audience');
29 req.callback(advDrawBibExtras);
33 var input = $n($('adv_global_trow'), 'term');
35 setEnterFunc(input, advSubmitGlobal);
37 if(getSort() && getSortDir()) {
38 setSelector($('adv_global_sort_by'), getSort());
39 setSelector($('adv_global_sort_dir'), getSortDir());
40 if(getSort() != 'rel')
41 $('adv_global_sort_dir').disabled = false;
45 $('opac.result.limit2avail').checked = true;
48 function advAddGblRow() {
49 var tbody = $("adv_global_tbody");
50 var newrow = $("adv_global_trow").cloneNode(true);
51 tbody.insertBefore(newrow, $("adv_global_addrow"));
52 var input = $n(newrow, "term");
54 setEnterFunc(input, advSubmitGlobal);
55 $n(newrow, 'type').focus();
58 function advDrawBibExtras(r) {
59 var data = r.getResultObject();
62 data = data.sort( /* sort alphabetically */
64 if( a.value() < b.value() ) return -1;
65 if( a.value() > b.value() ) return 1;
70 for( var d = 0; d < data.length; d++ ) {
72 var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );
73 opt.setAttribute('title', thing.value());
77 function advSelToStringList(sel) {
78 var list = getSelectedList(sel);
80 for( var i = 0; i < list.length; i++ ) {
82 for( var j = 0; j < str.length; j++ ) {
83 //if(str.charAt(j) == ' ') continue;
84 vals.push(str.charAt(j));
87 return vals.toString();
90 function advGetVisSelectorVals(id) {
91 var basic = id + '_basic';
92 if(! $(id).className.match(/hide_me/))
93 return advSelToStringList($(id));
94 return advSelToStringList($(basic));
97 function advSubmitGlobal() {
99 var sortdir = getSelectorVal($('adv_global_sort_dir'));
100 var sortby = getSelectorVal($('adv_global_sort_by'));
102 var litforms = advGetVisSelectorVals('adv_global_lit_form');
103 var itemforms = advGetVisSelectorVals('adv_global_item_form');
104 var itemtypes = advGetVisSelectorVals('adv_global_item_type');
105 var audiences = advGetVisSelectorVals('adv_global_audience');
106 var languages = getSelectedList($('adv_global_lang')) + '';
107 var limit2avail = $('opac.result.limit2avail').checked ? 1 : ''
109 var searches = advBuildSearchBlob();
110 if(!searches) return;
116 args[PARAM_ITEMFORM] = itemforms;
117 args[PARAM_ITEMTYPE] = itemtypes;
118 args[PARAM_LITFORM] = litforms;
119 args[PARAM_AUDIENCE] = audiences;
120 args[PARAM_LANGUAGE] = languages;
121 //args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */
122 args[PARAM_DEPTH] = depthSelGetDepth();
123 args[PARAM_LOCATION] = depthSelGetNewLoc();
124 args[PARAM_SORT] = sortby;
125 args[PARAM_SORT_DIR] = sortdir;
126 args[PARAM_ADVTYPE] = ADVTYPE_MULTI;
127 args[PARAM_STYPE] = "";
128 args[PARAM_TERM] = searches;
129 args[PARAM_AVAIL] = limit2avail;
131 /* pubdate sorting causes a record (not metarecord) search */
132 if( sortby == SORT_TYPE_PUBDATE || !$('adv_group_titles').checked ) {
134 args[PARAM_RTYPE] = RTYPE_MULTI;
137 if($('adv_group_titles').checked )
138 cookieManager.write(COOKIE_NOGROUP_RECORDS,'1',-1);
140 cookieManager.write(COOKIE_NOGROUP_RECORDS,'');
143 goTo(buildOPACLink(args));
147 function advBuildSearchBlob() {
150 var tbody = $('adv_global_tbody');
151 var rows = tbody.getElementsByTagName('tr');
153 for( var i = 0; i < rows.length; i++ ) {
156 if(!(row && typeof row == 'object')) continue;
157 if(!row.getAttribute('type')) continue;
159 var stype = getSelectorVal($n(row, 'type'));
160 var contains = getSelectorVal($n(row, 'contains'));
161 var term = $n(row, 'term').value;
167 string += " " + term;
170 case 'nocontains' : {
171 var words = term.split(" ");
172 for( var j in words )
173 string += " -" + words[j];
178 if(term.indexOf('"') > -1) string += " " + term;
179 else string += " \"" + term + "\"";
183 string = string.replace(/'/g,' ');
184 string = string.replace(/\\/g,' ');
185 string = string.replace(/^\s*/,'');
186 string = string.replace(/\s*$/,'');
187 //searches[stype].term = string;
188 if(searches) searches += ' ';
189 searches += stype + ':'+ string;
193 _debug("created search query " + searches);