f0958c22f5dca692bce772179ab48fe8a8744049
kate
  Tue Apr 17 22:14:47 2012 -0700
Search needs to clear first three fields in Advanced Tab.  Taking this opportunity to generalize generation of search url and move to encodeMatrix lib
diff --git src/hg/js/encodeMatrix.js src/hg/js/encodeMatrix.js
index b168f7a..522aacc 100644
--- src/hg/js/encodeMatrix.js
+++ src/hg/js/encodeMatrix.js
@@ -26,50 +26,67 @@
     return {
 
         // UI panel for search: select tracks or files
 
         setFileSearch: function (isFile) {
             // Set search type cookie to retain user choice
             document.cookie = "encodeMatrix.search=" + (isFile ? "file" : "track");
         },
 
         isFileSearch: function () {
             // Check search type cookie to retain user choice
             // Defaults to track search if no cookie set
             return document.cookie.match(/encodeMatrix.search=file/);
         },
 
-        getSearchUrl: function (assembly) {
-            // Return URL for search of type requested in search panel
+        getSearchUrl: function () {
+            // Format a URL for search of type requested in search panel
+            // Args are objects having mdbVar/mdbVal properties
+            // Set each arg mdbValN to mdbVarN, empty out remaining vals to a total of 6
+            // (cheaper than querying for actual number)
+
+            var prog, cartVar, url, i, j;
+            var argsLen = arguments.length;
+            var mdbVals = [];
 
-            var prog, cartVar, url;
             if ($('input:radio[name=searchType]:checked').val() === "tracks") {
                 prog = 'hgTracks';
                 cartVar = 'hgt_tSearch';
             } else {
                 prog = "hgFileSearch";
                 cartVar = "fsFileType=Any&hgfs_Search";
             }
-             url = '/cgi-bin/' + prog + '?db=' + assembly + '&' + cartVar + '=search' +
-                    '&tsCurTab=advancedTab&hgt_tsPage=';
+             url = '/cgi-bin/' + prog + '?db=' + encodeProject.getAssembly() + 
+                '&' + cartVar + '=search' + '&tsCurTab=advancedTab&hgt_tsPage=' +
+                '&tsName=&tsDescr=&tsGroup=Any';
+            for (i = 0; i < argsLen; i += 1) {
+                url += '&hgt_mdbVar' + (i + 1) + '=' + arguments[i].mdbVar;
+                // can pass an array or a single string -- so force to array for uniform handling
+                // Search sees multiple mdbValN= variables for the same mdbVarN as a list of vals
+                mdbVals = [].concat(arguments[i].mdbVal);
+                for (j = 0; j < mdbVals.length; j++) {
+                    url += '&hgt_mdbVal' + (i + 1) + '=' + mdbVals[j];
+                }
+            }
+            url += '&hgt_mdbVar' + (argsLen + 1) + '=view' +
+                    '&hgt_mdbVal' + (argsLen + 1) + '=Any';
+            for (i = argsLen + 1; i < 6; i += 1) {
+                url += '&hgt_mdbVar' + (i + 1) + '=[]';
+            }
             return (url);
         },
 
-        getSearchType: function () {
-            return $('input:radio[name=searchType]:checked').val();
-        },
-
         // General purpose functions
 
         start: function ($el) {
             // Initialize application. Caller passes in jQuery selector object to hide/show
 
             // get server from calling web page (e.g. can sub in genome-preview)
             if ('encodeMatrix_server' in window) {
                 server = encodeMatrix_server;
             } else {
                 server = document.location.hostname;
                 // or document.domain ?
             }
             // variables from calling page
             organism = encodeMatrix_organism;
             assembly = encodeMatrix_assembly;