d982b1eff331e41fd267a132f7ee473b173e73c2
tdreszer
  Tue Feb 8 16:52:51 2011 -0800
Got dropdownchecklist to work within hgTracks popup cfg
diff --git src/hg/js/utils.js src/hg/js/utils.js
index a29d915..b607a58 100644
--- src/hg/js/utils.js
+++ src/hg/js/utils.js
@@ -551,33 +551,37 @@
             urlData[name] = val;
         }
     });
     $(sel).filter('[name]:enabled').each(function (i) {
         var name  = $(this).attr('name');
         var val = $(this).val();
         if(name != undefined && val != undefined) {
             if(subtrackName != undefined && name == subtrackName) {
                 if(val == 'hide') {
                    urlData[name+"_sel"] = 0;    // Can't delete "_sel" because default takes over
                    urlData[name]        = "[]";  // can delete vis because subtrack vis should be inherited.
                 } else {
                     urlData[name+"_sel"] = 1;
                     urlData[name]        = val;
                 }
+            } else {
+                if ($.isArray( val ) && val.length > 1) {
+                    urlData[name] = "[" + val.toString() + "]";
             } else
                 urlData[name] = val;
         }
+        }
     });
     return urlData;
 }
 
 function setIdRemoveName(obj)
 { // This function removes the name of an obj and sets it as the id.  This is very useful
   // to override forms submitting named inputs and instead setCartVarFromObjId() can be used selectively
     var id = $(obj).attr('name');
     if(id != undefined) {
         $(obj).attr('id',id);
         $(obj).removeAttr('name');
     }
     //warn($(obj).attr('id')+'='+$(obj).val()+" name:"+$(obj).attr('name'));
 }
 
@@ -590,32 +594,41 @@
         if(oldVars[newVar] == null || oldVars[newVar] != newVars[newVar])
             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 ?
-        retVal += aVar + "=" + varHash[aVar];
+        if (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;
+            });
+        } else
+            retVal += aVar + "=" + 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.