48269a38f1e536f3d25924bf96c09ac48284dd9a
larrym
  Thu May 26 11:32:57 2011 -0700
fix an encoding related bug (see redmine 4051)
diff --git src/hg/js/utils.js src/hg/js/utils.js
index fb4102e..876b7a6 100644
--- src/hg/js/utils.js
+++ src/hg/js/utils.js
@@ -603,43 +603,43 @@
             changedVars[newVar] = newVars[newVar];
     }
     return changedVars;
 }
 
 function varHashToQueryString(varHash)
 {
 // return a CGI QUERY_STRING for name/vals in given object
     var retVal = "";
     var count = 0;
     for (var aVar in varHash) {
         if(count++ > 0) {
             retVal += "&";
         }
         var val = varHash[aVar];
-        // XXXX encode var=val ?
         if (typeof(val) == 'string'
         && val.length >= 2
         && val.indexOf('[') == 0
         && val.lastIndexOf(']') == (val.length - 1)) {
             var vals = val.substr(1,val.length - 2).split(',');
             $(vals).each(function (ix) {
                 if (ix > 0)
                     retVal += "&";
-                retVal += aVar + "=" + this;
+                retVal += aVar + "=" + encodeURIComponent(this);
             });
-        } else
-            retVal += aVar + "=" + val;
+        } else {
+            retVal += aVar + "=" + encodeURIComponent(val);
+        }
     }
     return retVal;
 }
 
 function getAllVarsAsUrlData(obj)
 {
 // Returns a string in the form of var1=val1&var2=val2... for all inputs and selects in an obj
 // If obj is undefined then obj is document!
     return varHashToQueryString(getAllVars(obj));
 }
 
 /*
 function popupBox(popit, content, popTitle)
 {
 // Kicks off a Modal Dialog for the provided content.