+ // do we need to restart the search?
+ var searchTrigger = false;
+ // shallow copy of state so we can see what changed.
+ var oldState = $.extend({}, mkdru.state);
+ mkdru.stateFromHash();
+ // only have to compare values since all keys are initialised
+ for (key in mkdru.state) {
+ var changed = (mkdru.state[key] != oldState[key]);
+ if (key.substring(0,5) === 'limit' && changed)
+ searchTrigger = true;
+ if (key === 'page' && changed)
+ mkdru.pz2.showPage(mkdru.state.page-1);
+ if (key === 'query' && changed)
+ searchTrigger = true;
+ }
+ if (searchTrigger)
+ mkdru.search();
+ // request for record detail
+ if (mkdru.state.recid && (mkdru.state.recid != oldState.recid)) {
+ mkdru.pz2.record(mkdru.state.recid);
+ }
+ else {
+ $('.mkdru-detail').hide();
+ $('.mkdru-results').show();
+ }
+};
+
+// return link to limit facet
+mkdru.addLimit = function (facet, limit) {
+ var newHash = $.deparam.fragment();
+ delete newHash['page'];
+ if ((typeof(newHash['limit_' + facet]) === 'undefined')
+ || !mkdru.facets[facet].multiLimit) {
+ newHash['limit_' + facet] = limit;
+ }
+ else {
+ newHash['limit_' + facet] += ';' + limit;
+ }
+ return $.param.fragment("#", newHash);