+// Set up namespace and some state.
+var mkdru = {
+ // Settings to pass to pz2.js
+ usesessions: true,
+ showResponseType: '',
+ // Variables
+ curPage: 1,
+ recPerPage: 20,
+ totalRec: 0,
+ curSort: 'relevance',
+ curFilter: null,
+ submitted: false,
+ sourceMax: 16, // facets
+ subjectMax: 10,
+ authorMax: 10,
+ pz2: null,
+ pazpar2Path: '/pazpar2/search.pz2',
+};
+
+
+
+// pz2.js event handlers:
+mkdru.pz2Init = function () {
+ mkdru.pz2.stat();
+ mkdru.pz2.bytarget();
+};
+
+mkdru.pz2Show = function (data) {
+ mkdru.totalRec = data.merged;
+ $('#mkdru-pager').html(Drupal.theme('mkdruPager', data, mkdru.curPage,
+ Math.ceil(mkdru.totalRec / mkdru.recPerPage)));
+ $('.mkdru-next').bind('click', mkdru.nextPage);
+ $('.mkdru-prev').bind('click', mkdru.prevPage);
+
+ var html = "";
+ for (var i = 0; i < data.hits.length; i++) {
+ html += Drupal.theme('mkdruResult', data.hits[i],
+ i + 1 + mkdru.recPerPage *
+ (mkdru.curPage - 1));
+ }
+ $('#mkdru-results').html(html);
+};
+
+mkdru.pz2Status = function (data) {
+};
+
+mkdru.pz2Term = function (data) {
+ var html = "";
+ for (var i = 0; i < data.xtargets.length && i < mkdru.SourceMax; i++ ) {
+ html += Drupal.theme('mkdruTerm', data.xtargets[i].name, data.xtargets[i].freq,
+ 'mkdru-facet-link-source', data.xtargets[i].id);
+ }
+ $('#mkdru-sources').html(html);
+
+ html = "";
+ for (var i = 0; i < data.subject.length && i < mkdru.SubjectMax; i++ ) {
+ html += Drupal.theme('mkdruTerm', data.subject[i].name, data.subject[i].freq,
+ 'mkdru-facet-link-subject', data.subject[i].id);
+ }
+ $('#mkdru-subjects').html(html);
+
+ html = "";
+ for (var i = 0; i < data.author.length && i < mkdru.AuthorMax; i++ ) {
+ html += Drupal.theme('mkdruTerm', data.author[i].name, data.author[i].freq,
+ 'mkdru-facet-link-author', data.author[i].id);
+ }
+ $('#mkdru-authors').html(html);
+};
+
+mkdru.pz2ByTarget = function (data) {
+
+};
+
+
+
+// UI functions:
+mkdru.submitQuery = function () {
+ mkdru.submitted = true;
+// mkdru.resetPage();
+// mkdru.pollDropDowns();
+ mkdru.search();
+};
+
+mkdru.search = function () {
+ mkdru.pz2.search($('.mkdru-search input:text').attr('value'),
+ mkdru.recPerPage, mkdru.curSort, mkdru.curFilter);
+};
+
+mkdru.pollDropDowns = function () {
+ mkdru.recPerPage = $('#mkdru-perpage').value;
+ mkdru.curSort = $('#mkdru-sort').value;
+ if (!mkdru.submitted) return false;
+ mkdru.resetPage();
+ mkdru.pz2.show(0, mkdru.recPerPage, mkdru.curSort);
+};
+
+mkdru.limitQuery = function (field, value) {
+
+};
+
+mkdru.resetPage = function () {
+ mkdru.curPage = 1;
+ mkdru.totalRec = 0;
+};
+
+mkdru.showPage = function (pageNum) {
+ mkdru.curPage = pageNum;
+ mkdru.pz2.showPage(pageNum-1);
+};
+
+mkdru.nextPage = function () {
+ if (mkdru.totalRec - mkdru.recPerPage * mkdru.curPage > 0) {
+ mkdru.pz2.showNext();
+ mkdru.curPage++;
+ }
+};
+
+mkdru.prevPage = function () {
+ if (mkdru.pz2.showPrev() != false) {
+ mkdru.curPage--;
+ }
+};
+
+
+// wait until the DOM is ready, bind events
+// and instantiate pz2 library
+$(document).ready(function () {
+ $('.mkdru-search input:button').bind('click', mkdru.submitQuery);
+ $('.mkdru-search input:text').attr('value', '');
+ $('#mkdru-perpage').bind('change', function () { mkdru.pollDropDowns() });
+ $('#mkdru-sort').bind('change', function () { mkdru.pollDropDowns() });
+ mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
+ "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
+ "pazpar2path": mkdru.pazpar2path,
+ "oninit": mkdru.pz2Init,
+ "onstat": mkdru.pz2Status,
+ "onterm": mkdru.pz2Term,
+ "termlist": "xtargets,subject,author",
+ "onbytarget": mkdru.pz2ByTarget,
+ "usesessions" : mkdru.usesessions,
+ "showResponseType": mkdru.showResponseType,
+ "onrecord": mkdru.pz2Record } );
+});
\ No newline at end of file