Move facet container set-up to onload
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index f6188ea..47e5da9 100644 (file)
@@ -137,16 +137,12 @@ mkdru.contains = function (hash, key, value) {
 }
 
 mkdru.pz2Term = function (data) {
-  // if signaled, prepare container client-side
-  if (mkdru.facetContainerSelector) {
-    $(mkdru.facetContainerSelector).html(Drupal.theme('mkdruFacetContainer',
-      data, mkdru.facets));
-  }
   // map all facets against selected, for simple rendering 
   var hash = $.deparam.fragment();
   for (var key in hash) {
-    if (key.indexOf('limit') == 0) //always wrap in array
-      hash[key.substr(6)] = hash[key].split(';');
+    if (key.indexOf('limit') == 0 && hash[key]) 
+      //always wrap in array
+      hash[key.substr(6)] = hash[key].split(/;+/);
     delete hash[key];
   }
   for (var facet in mkdru.facets) {
@@ -163,7 +159,8 @@ mkdru.pz2Term = function (data) {
       }
     }
     $('.mkdru-facet-' + facet).html(
-        Drupal.theme('mkdruFacet', terms, facet, mkdru.facets[facet].max, hash));
+        Drupal.theme('mkdruFacet', terms, facet, mkdru.facets[facet].max, 
+          hash[facet]));
   }
 };
 
@@ -272,7 +269,8 @@ mkdru.addLimit = function (facet, limit) {
 mkdru.removeLimit = function (facet, limit) {
   var newHash = $.deparam.fragment();
   delete newHash['page'];
-  if (!newHash['limit_' + facet].indexOf(';') || !mkdru.facets[facet].multiLimit) { 
+  if (!newHash['limit_' + facet].indexOf(';')
+      || !mkdru.facets[facet].multiLimit) {
     delete newHash['limit_' + facet];
   }
   else {
@@ -280,7 +278,10 @@ mkdru.removeLimit = function (facet, limit) {
     for (var i = 0; i < limits.length; i++) {
       if (limits[i] == limit) {
         limits.splice(i, 1);
-        newHash['limit_' + facet] = limits.join(';');
+        if (limits.length < 1)
+          delete newHash['limit_' + facet];
+        else
+          newHash['limit_' + facet] = limits.join(';');
         break;
       }
     }
@@ -395,6 +396,12 @@ $(document).ready(function () {
     mkdru.defaultState['limit_' + key] = null;
   }
 
+  // if signaled, prepare facet container client-side
+  if (mkdru.facetContainerSelector) {
+    $(mkdru.facetContainerSelector).html(Drupal.theme('mkdruFacetContainer',
+      mkdru.facets));
+  }
+
   mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
               "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
               "pazpar2path": mkdru.pazpar2Path,