--- /dev/null
+\r
+attachEvt("common", "run", advgInit);\r
+attachEvt("common", "locationChanged", advSyncCopyLocLink );\r
+\r
+var COOKIE_NOGROUP_RECORDS = 'grpt';\r
+var advSelectedOrg = null;\r
+\r
+function advgInit() {\r
+\r
+ /* XXX */\r
+ if( cookieManager.read(COOKIE_NOGROUP_RECORDS) || SHOW_MR_DEFAULT )\r
+ $('adv_group_titles').checked = true;\r
+\r
+ try{$n($('adv_global_tbody'), 'term').focus();} catch(e){}\r
+\r
+ var extras = [ \r
+ FETCH_LIT_FORMS, \r
+ FETCH_ITEM_FORMS, \r
+ FETCH_ITEM_TYPES, \r
+ FETCH_AUDIENCES,\r
+ FETCH_BIB_LEVELS \r
+ ];\r
+\r
+ for( var x in extras ) {\r
+\r
+ var req = new Request(extras[x]);\r
+\r
+ if(x == 0) req.request.sel = $('adv_global_lit_form');\r
+ if(x == 1) req.request.sel = $('adv_global_item_form');\r
+ if(x == 2) req.request.sel = $('adv_global_item_type');\r
+ if(x == 3) req.request.sel = $('adv_global_audience');\r
+ if(x == 4) req.request.sel = $('adv_global_bib_level');\r
+\r
+ req.callback(advDrawBibExtras);\r
+ req.send();\r
+ }\r
+\r
+ var input = $n($('adv_global_trow'), 'term');\r
+ try {input.focus();} catch(e){}\r
+ setEnterFunc(input, advSubmitGlobal);\r
+\r
+ if(getSort() && getSortDir()) {\r
+ setSelector($('adv_global_sort_by'), getSort());\r
+ setSelector($('adv_global_sort_dir'), getSortDir());\r
+ if(getSort() != 'rel')\r
+ $('adv_global_sort_dir').disabled = false;\r
+ }\r
+\r
+ if(getAvail())\r
+ $('opac.result.limit2avail').checked = true;\r
+\r
+ // not sure we want to propogate the pubdate filter, \r
+ // since other filters are not propogated\r
+ //advInitPubFilter();\r
+\r
+ if(!new CGI().param(PARAM_NOPERSIST_SEARCH))\r
+ initSearchBoxes();\r
+ advSyncCopyLocLink(getLocation());\r
+ //if(findCurrentPage()=="advanced") { hideMe(G.ui.login.box); /*unHideMe(G.ui.login.box);*/ }\r
+}\r
+\r
+function advInitPubFilter() {\r
+ var i1 = $('adv_global_pub_date_1');\r
+ var i2 = $('adv_global_pub_date_2');\r
+ var sel = $('adv_global_pub_date_type');\r
+ if(getPubdBefore()) {\r
+ i1.value = getPubdBefore();\r
+ setSelector(sel, 'before');\r
+ } else if(getPubdAfter()) {\r
+ i1.value = getPubdAfter();\r
+ setSelector(sel, 'after');\r
+ } else if(getPubdBetween()) {\r
+ var values = getPubdBetween().split(','); \r
+ i1.value = values[0]\r
+ if(values[0] == values[1]) {\r
+ setSelector(sel, 'equals');\r
+ } else {\r
+ setSelector(sel, 'between');\r
+ i2.value = values[1];\r
+ }\r
+ }\r
+}\r
+\r
+function advSyncCopyLocLink(org) {\r
+ // display the option to filter by copy location\r
+ advLocationsLoaded = false;\r
+ advSelectedOrg = org;\r
+ removeChildren($('adv_copy_location_filter_select'));\r
+\r
+ if(isTrue(findOrgType(findOrgUnit(org).ou_type()).can_have_vols())) {\r
+ unHideMe($('adv_copy_location_filter_row'));\r
+ advLoadCopyLocations(org); \r
+ } else {\r
+ hideMe($('adv_copy_location_filter_row'));\r
+ }\r
+}\r
+\r
+function clearSearchBoxes() {\r
+ var rows = $('adv_global_tbody').getElementsByTagName('tr');\r
+ for(var t = 0; t < rows.length; t++) {\r
+ if($n(rows[t], 'term')) {\r
+ $n(rows[t], 'term').value = '';\r
+ setSelector($n(rows[t], 'contains'), 'contains');\r
+ setSelector($n(rows[t], 'type'), 'keyword');\r
+ }\r
+ }\r
+ try{$n(rows[0], 'term').focus();} catch(e){}\r
+}\r
+\r
+\r
+function initSearchBoxes() {\r
+ /* loads the compiled search from the search cookie \r
+ and sets the widgets accordingly */\r
+\r
+ search = cookieManager.read(COOKIE_SEARCH);\r
+ if(!search) return;\r
+ _debug("loaded compiled search cookie: " + search);\r
+\r
+ search = JSON2js(search);\r
+ if(!search) return;\r
+\r
+ var types = getObjectKeys(search.searches);\r
+\r
+ // if we have browser cached data, clear it before populating from cookie\r
+ if (search.searches[types[0]].term)\r
+ clearSearchBoxes();\r
+\r
+ /* pre-add the needed rows */\r
+ while($('adv_global_tbody').getElementsByTagName('tr').length - 1 < types.length)\r
+ advAddGblRow();\r
+\r
+ var rows = $('adv_global_tbody').getElementsByTagName('tr');\r
+\r
+ for(var t = 0; t < types.length; t++) {\r
+ var row = rows[t];\r
+ setSelector($n(row, 'type'), types[t]);\r
+ var term = search.searches[types[t]].term;\r
+\r
+ /* if this is a single -<term> search, set the selector to nocontains */\r
+ if(match = term.match(/^-(\w+)$/)) {\r
+ term = match[1];\r
+ setSelector($n(row, 'contains'), 'nocontains');\r
+ }\r
+ $n(row, 'term').value = term;\r
+ }\r
+}\r
+\r
+function advAddGblRow() {\r
+ var tbody = $("adv_global_tbody");\r
+ var newrow = $("adv_global_trow").cloneNode(true);\r
+ tbody.insertBefore(newrow, $("adv_global_addrow"));\r
+ var input = $n(newrow, "term");\r
+ input.value = "";\r
+ setEnterFunc(input, advSubmitGlobal);\r
+ $n(newrow, 'type').focus();\r
+}\r
+\r
+function advDrawBibExtras(r) {\r
+ var data = r.getResultObject();\r
+ var sel = r.sel;\r
+\r
+ data = data.sort( /* sort alphabetically */\r
+ function(a,b) { \r
+ if( a.value() < b.value() ) return -1;\r
+ if( a.value() > b.value() ) return 1;\r
+ return 0;\r
+ }\r
+ );\r
+\r
+ for( var d = 0; d < data.length; d++ ) {\r
+ var thing = data[d];\r
+ var opt = insertSelectorVal( sel, -1, thing.value(), thing.code() );\r
+ opt.setAttribute('title', thing.value());\r
+ }\r
+}\r
+\r
+function advSelToStringList(sel) {\r
+ var list = getSelectedList(sel);\r
+ var vals = [];\r
+ for( var i = 0; i < list.length; i++ ) {\r
+ var str = list[i];\r
+ for( var j = 0; j < str.length; j++ ) {\r
+ //if(str.charAt(j) == ' ') continue;\r
+ vals.push(str.charAt(j));\r
+ }\r
+ }\r
+ return vals.toString();\r
+}\r
+\r
+function advGetVisSelectorVals(id) {\r
+ var basic = id + '_basic';\r
+ if(! $(id).className.match(/hide_me/)) \r
+ return advSelToStringList($(id));\r
+ return advSelToStringList($(basic));\r
+}\r
+\r
+function advSubmitGlobal() {\r
+ \r
+ var sortdir = getSelectorVal($('adv_global_sort_dir'));\r
+ var sortby = getSelectorVal($('adv_global_sort_by'));\r
+\r
+ var litforms = advGetVisSelectorVals('adv_global_lit_form');\r
+ var itemforms = advGetVisSelectorVals('adv_global_item_form');\r
+ var itemtypes = advGetVisSelectorVals('adv_global_item_type');\r
+ var audiences = advGetVisSelectorVals('adv_global_audience');\r
+ var biblevels = advGetVisSelectorVals('adv_global_bib_level');\r
+ var locations = getSelectedList($('adv_copy_location_filter_select')) + '';\r
+ var languages = getSelectedList($('adv_global_lang')) + ''; \r
+ var limit2avail = $('opac.result.limit2avail').checked ? 1 : ''\r
+\r
+ var searches = advBuildSearchBlob();\r
+ if(!searches) return;\r
+\r
+ clearSearchParams();\r
+\r
+ var args = {};\r
+ args.page = MRESULT;\r
+ args[PARAM_ITEMFORM] = itemforms;\r
+ args[PARAM_ITEMTYPE] = itemtypes;\r
+ args[PARAM_BIBLEVEL] = biblevels;\r
+ args[PARAM_LITFORM] = litforms;\r
+ args[PARAM_AUDIENCE] = audiences;\r
+ args[PARAM_LANGUAGE] = languages;\r
+ args[PARAM_COPYLOCS] = locations;\r
+ //args[PARAM_SEARCHES] = js2JSON(searches); /* break these out */\r
+ args[PARAM_DEPTH] = depthSelGetDepth();\r
+ args[PARAM_LOCATION] = depthSelGetNewLoc();\r
+ args[PARAM_SORT] = sortby;\r
+ args[PARAM_SORT_DIR] = sortdir;\r
+ args[PARAM_ADVTYPE] = ADVTYPE_MULTI;\r
+ args[PARAM_STYPE] = "";\r
+ args[PARAM_TERM] = searches;\r
+ args[PARAM_AVAIL] = limit2avail;\r
+ args[PARAM_FORM] = itemtypes[0];\r
+ args[PARAM_FACET] = itemtypes==''?'':"identifier|mattype["+itemtypes.replace(/[,]/, function(a){switch(a){case ",": return "#";}})+"]";\r
+\r
+ // publicate year filtering\r
+ var pub1;\r
+ if( (pub1 = $('adv_global_pub_date_1').value) && (''+pub1).match(/\d{4}/)) {\r
+ switch(getSelectorVal($('adv_global_pub_date_type'))) {\r
+ case 'equals':\r
+ args[PARAM_PUBD_BETWEEN] = pub1+','+pub1;\r
+ break;\r
+ case 'before':\r
+ args[PARAM_PUBD_BEFORE] = pub1;\r
+ break;\r
+ case 'after':\r
+ args[PARAM_PUBD_AFTER] = pub1;\r
+ break;\r
+ case 'between':\r
+ var pub2 = $('adv_global_pub_date_2').value;\r
+ if((''+pub2).match(/\d{4}/))\r
+ args[PARAM_PUBD_BETWEEN] = pub1+','+pub2;\r
+ break;\r
+ }\r
+ }\r
+\r
+ /* pubdate sorting causes a record (not metarecord) search */\r
+ if( sortby == SORT_TYPE_PUBDATE || !$('adv_group_titles').checked ) {\r
+ args.page = RRESULT;\r
+ args[PARAM_RTYPE] = RTYPE_MULTI;\r
+ }\r
+\r
+ if($('adv_group_titles').checked ) \r
+ cookieManager.write(COOKIE_NOGROUP_RECORDS,'1',-1);\r
+ else\r
+ cookieManager.write(COOKIE_NOGROUP_RECORDS,'');\r
+\r
+ goTo(buildOPACLink(args));\r
+}\r
+\r
+\r
+function advBuildSearchBlob() {\r
+\r
+ var searches = '';\r
+ var tbody = $('adv_global_tbody');\r
+ var rows = tbody.getElementsByTagName('tr');\r
+\r
+ for( var i = 0; i < rows.length; i++ ) {\r
+\r
+ var row = rows[i];\r
+ if(!(row && typeof row == 'object')) continue;\r
+ if(!row.getAttribute('type')) continue;\r
+ \r
+ var stype = getSelectorVal($n(row, 'type'));\r
+ var contains = getSelectorVal($n(row, 'contains'));\r
+ var term = $n(row, 'term').value;\r
+ if(!term) continue;\r
+\r
+ var string = "";\r
+ switch(contains) {\r
+ case 'contains' : \r
+ string += " " + term; \r
+ break;\r
+\r
+ case 'nocontains' : {\r
+ var words = term.split(" ");\r
+ for( var j in words ) \r
+ string += " -" + words[j];\r
+ }\r
+ break;\r
+\r
+ case 'exact' : \r
+ if(term.indexOf('"') > -1) string += " " + term;\r
+ else string += " \"" + term + "\"";\r
+ break;\r
+ }\r
+ if(string) {\r
+ string = string.replace(/'/g,' ');\r
+ string = string.replace(/\\/g,' ');\r
+ string = string.replace(/^\s*/,'');\r
+ string = string.replace(/\s*$/,'');\r
+ //searches[stype].term = string;\r
+ if(searches) searches += ' ';\r
+ searches += stype + ':'+ string;\r
+ }\r
+ }\r
+\r
+ _debug("created search query " + searches);\r
+ return searches;\r
+}\r
+\r
+\r
+// retrieves the shelving locations\r
+var advLocationsLoaded = false;\r
+function advLoadCopyLocations(org) {\r
+ if(org == null) \r
+ org = advSelectedOrg;\r
+ var req = new Request(FETCH_COPY_LOCATIONS, org);\r
+ req.callback(advShowCopyLocations);\r
+ req.send();\r
+ advLocationsLoaded = true;\r
+}\r
+\r
+// inserts the shelving locations into the multi-select\r
+function advShowCopyLocations(r) {\r
+ var locations = r.getResultObject();\r
+ var sel = $('adv_copy_location_filter_select');\r
+ for(var i = 0; i < locations.length; i++) \r
+ insertSelectorVal(sel, -1, locations[i].name(), locations[i].id());\r
+}\r
+\r
+\r