]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/adv_global.js
trying to appease IE
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / adv_global.js
1
2 attachEvt("common", "run", advgInit);
3
4 function advgInit() {
5
6         $n($('adv_global_tbody'), 'term').focus();
7
8         var extras = [ 
9                 FETCH_LIT_FORMS, 
10                 FETCH_ITEM_FORMS, 
11                 FETCH_ITEM_TYPES, 
12                 FETCH_AUDIENCES ];
13
14         for( var x in extras ) {
15
16                 var req = new Request(extras[x]);
17
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');
22
23                 req.callback(advDrawBibExtras);
24                 req.send();
25         }
26
27         var input = $n($('adv_global_trow'), 'term');
28         input.focus();
29         setEnterFunc(input, advSubmitGlobal);
30 }
31
32 function advDrawBibExtras(r) {
33         var data = r.getResultObject();
34         var sel = r.sel;
35
36         data = data.sort( /* sort alphabetically */
37                 function(a,b) { 
38                         if( a.value() < b.value() ) return -1;
39                         if( a.value() > b.value() ) return 1;
40                         return 0;
41                 }
42         );
43
44         for( var d = 0; d < data.length; d++ ) {
45                 var thing = data[d];
46                 var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );
47                 opt.setAttribute('title', thing.value());
48         }
49 }
50
51 function advSelToStringList(sel) {
52         var list = getSelectedList(sel);
53         var vals = [];
54         for( var i = 0; i < list.length; i++ ) {
55                 var str = list[i];
56                 for( var j = 0; j < str.length; j++ ) {
57                         if(str.charAt(j) == ' ') continue;
58                         vals.push(str.charAt(j));
59                 }
60         }
61         return vals.toString();
62 }
63
64 function advGetVisSelectorVals(id) {
65         var basic = id + '_basic';
66         if(! $(id).className.match(/hide_me/)) 
67                 return advSelToStringList($(id));
68         return advSelToStringList($(basic));
69 }
70
71 function advSubmitGlobal() {
72         
73         var sortdir = getSelectorVal($('adv_global_sort_dir'));
74         var sortby  = getSelectorVal($('adv_global_sort_by'));
75
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')) + '';     
81
82         var searches = advBuildSearchBlob();
83         if(!searches) return;
84
85         clearSearchParams();
86
87         var args = {};
88         args.page = MRESULT;
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]                = "";
102
103         /* pubdate sorting causes a record (not metarecord) search */
104         if( sortby == SORT_TYPE_PUBDATE ) {
105                 args.page = RRESULT;
106                 args[PARAM_RTYPE] = RTYPE_MULTI;
107         }
108
109         goTo(buildOPACLink(args));
110 }
111
112
113 function advBuildSearchBlob() {
114
115         var searches;
116         var tbody    = $('adv_global_tbody');
117         var rows     = tbody.getElementsByTagName('tr');
118
119         for( var i = 0; i < rows.length; i++ ) {
120
121                 var row = rows[i];
122                 if(!(row && typeof row == 'object')) continue;
123                 if(!row.getAttribute('type')) continue;
124                 
125                 var stype        = getSelectorVal($n(row, 'type'));
126                 var contains = getSelectorVal($n(row, 'contains'));
127                 var term                 = $n(row, 'term').value;
128                 if(!term) continue;
129
130                 var string = "";
131                 if(!searches) searches = {};
132                 if(searches[stype]) 
133                         string = searches[stype].term;
134                 else searches[stype] = {};
135
136                 switch(contains) {
137                         case 'contains' : 
138                                 string += " " + term; 
139                                 break;
140
141                         case 'nocontains' : {
142                                 var words = term.split(" ");
143                                         for( var i in words ) 
144                                                 string += " -" + words[i];
145                                 }
146                                 break;
147
148                         case 'exact' : 
149                                 if(term.indexOf('"') > -1) string += " " + term;
150                                 else string += " \"" + term + "\"";
151                                 break;
152                 }
153                 if(string) searches[stype].term = string;
154         }
155
156         return searches;
157 }
158
159
160
161