+++ /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