373fab2020528e4b488dffce555dc7cba02cc5a3
kate
  Sat Oct 29 20:38:01 2011 -0700
1. Add panel of radiobuttons to select track or file search  2.  Extensive cleanup
diff --git src/hg/js/encodeProject.js src/hg/js/encodeProject.js
index e61ab10..91f7fed 100644
--- src/hg/js/encodeProject.js
+++ src/hg/js/encodeProject.js
@@ -15,56 +15,81 @@
         // Helper function for case-insensitive sort
         var A, B;
         A = a.toUpperCase();
         B = b.toUpperCase();
         if (A < B) {
             return -1;
         }
         if (A > B) {
             return 1;
         }
         return 0;
     }
 
     // TODO: modularize by extending Array.sort ?
 
-
     function cmpCV(a, b) {
         // Helper function for case-insensitive sort of CV objects
         //  Use label if any, otherwise the term
         A = (a.label !== undefined ? a.label.toUpperCase() : a.term.toUpperCase());
         B = (b.label !== undefined ? b.label.toUpperCase() : b.term.toUpperCase());
         if (A < B) {
             return -1;
         }
         if (A > B) {
             return 1;
         }
         return 0;
     }
 
     return {
         setup: function (settings) {
             // Change defaults
             if (settings.server) {
                 server = settings.server;
             }
             if (settings.assembly) {
                 server = settings.assembly;
             }
         },
 
+        addSearchPanel: function (divId) {
+            // Create panel of radio buttons for user to select search type
+            // Add to passed in HTML div ID; e.g. #searchTypePanel
+            return $(divId).append('<span id="searchPanelTitle"><strong>Search for:</strong></span><input type="radio" name="searchType" id="searchTracks" value="tracks" checked="checked">Tracks<input type="radio" name="searchType" id="searchFiles" value="files">Files');
+        },
+
+        getSearchUrl: function (assembly, vars) {
+            // Return URL for search of type requested in search panel
+
+            var prog, cartVar, url;
+            if ($('input:radio[name=searchType]:checked').val() === "tracks") {
+                prog = 'hgTracks';
+                cartVar = 'hgt_tSearch';
+            } else {
+                prog = "hgFileSearch";
+                cartVar = "hgfs_Search";
+            }
+             url = '/cgi-bin/' + prog + '?db=' + assembly + '&' + cartVar + '=search' +
+                    '&tsCurTab=advancedTab&hgt_tsPage=';
+            return (url);
+        },
+
+        getSearchType: function () {
+            return $('input:radio[name=searchType]:checked').val();
+        },
+
         getServer: function () {
             // Get currently set server 
             return server;
         },
 
         getDataGroups: function (dataTypes) {
             // Return sorted array of dataGroup objects each having a .label,
             // .dataTypes, 
             // and an array of dataTypes, alphasorted, with 'Other' last
             var dataGroupHash = {},
                 dataGroups = [],
                 otherGroup, group;
             $.each(dataTypes, function (i, dataType) {
                 group = dataType.dataGroup;
                 if (!group) {