implement a pazpar2 jQuery plugin
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index cad3ede..fb5e751 100644 (file)
@@ -3,17 +3,24 @@
 
 "use strict"; // HTML5: disable for debug >= 2
 
-// global config object mkws_config 
+/* 
+ * global config object: mkws_config 
+ * 
+ * needs to be defined in the HTML header before 
+ * including this JS file
+ */
+
 if (!mkws_config)
     var mkws_config = {}; // for the guys who forgot to define mkws_config...
 
+var mkws_debug = 1;
+
 var pazpar2_url = mkws_config.pazpar2_url ? mkws_config.pazpar2_url : "/pazpar2/search.pz2";
 var service_proxy_url = mkws_config.service_proxy_url ? mkws_config.service_proxy_url : "/service-proxy/";
 
 var pazpar2path = mkws_config.use_service_proxy ? service_proxy_url : pazpar2_url;
 var usesessions = mkws_config.use_service_proxy ? false : true;
 
-var mkws_debug = 1;
 
 var mkws_locale_lang = {
     "de": {
@@ -442,10 +449,10 @@ function renderDetails(data, marker)
  * All the HTML stuff to render the search forms and
  * result pages.
  */
-function mkws_html_all(data) {
+function mkws_html_all(config) {
 
-    /* default config */
-    var config = {
+    /* default mkws config */
+    var mkws_config_default = {
        sort: [["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
        perpage: [10, 20, 30, 50],
        sort_default: "relevance",
@@ -461,17 +468,19 @@ function mkws_html_all(data) {
     };
 
     /* set global debug flag early */
-    if (data.debug !== 'undefined') {
-       mkws_debug = data.debug;
-    } else if (config.debug !== 'undefined') {
+    if (config.debug !== 'undefined') {
        mkws_debug = config.debug;
+    } else if (mkws_config_default.debug !== 'undefined') {
+       mkws_debug = mkws_config_default.debug;
     }
     
     /* override standard config values by function parameters */
-    for (var k in data) {
-       config[k] = data[k];
-       debug("Set config: " + k + ' => ' + data[k]);
+    for (var k in mkws_config_default) {
+       if (typeof config[k] === 'undefined')
+          mkws_config[k] = mkws_config_default[k];
+       debug("Set config: " + k + ' => ' + mkws_config[k]);
     }
+
     if (mkws_config.query_width < 5 || mkws_config.query_width > 150) {
        debug("Reset query width: " + mkws_config.query_width);
        mkws_config.query_width = 50;
@@ -637,13 +646,15 @@ function mkws_html_lang(mkws_config) {
        hash[lang_display[i]] = 1;
     }
     
-    if (hash[lang_default] == 1)
-       list.push(lang_default);
-
     for (var k in mkws_locale_lang) {
        if (hash[k] == 1 || lang_display.length == 0)
            list.push(k);
     }
+
+    // add english link
+    if (lang_display.length == 0 || hash[lang_default] == 1)
+        list.push(lang_default);
+
     debug("Language menu for: " + list.join(", "));
 
     /* the HTML part */
@@ -657,7 +668,7 @@ function mkws_html_lang(mkws_config) {
        if (lang == l) {
            data += l;
        } else {
-           data += ' <a href="/?lang=' + l + '">' + l + '</a> '
+           data += ' <a href="?lang=' + l + '">' + l + '</a> '
        }
     }
     
@@ -676,7 +687,7 @@ function M(word) {
 
 /* implement jQuery.parseQuerystring() for parsing URL parameters */
 jQuery.extend({
-    parseQuerystring: function() {
+  parseQuerystring: function() {
     var nvpair = {};
     var qs = window.location.search.replace('?', '');
     var pairs = qs.split('&');
@@ -685,14 +696,27 @@ jQuery.extend({
        nvpair[pair[0]] = pair[1];
     });
     return nvpair;
-} });
+  }, 
+  pazpar2: function(data) {
+       document.write('<div id="mkwsSwitch"></div>\
+    <div id="mkwsLang"></div>\
+    <div id="mkwsSearch"></div>\
+    <div id="mkwsRecords"></div>\
+    <div id="mkwsTargets"></div>\
+    <div id="footer">\
+      <div id="mkwsStat"></div>\
+      <span>Powered by MKWS &copy; 2013 <a href="http://www.indexdata.com">Index Data</a></span>\
+    </div>');
+
+    mkws_html_all(mkws_config);
+  }
+});
 
 function debug(string) {
     if (!mkws_debug)
        return;
-   
-    var console; // IE8 quirks 
-    if (!console) { /* ARGH!!! */
+
+    if (typeof console === "undefined" || typeof console.log === "undefined") { /* ARGH!!! old IE */
        return;
     }