8cf47d3a9907d12655c55d21478a998884e6afd9
tdreszer
  Wed Jul 6 13:51:23 2011 -0700
IE was creating 2 rows instead of 1 when the plus button was pressed in trackSearch.
diff --git src/hg/js/utils.js src/hg/js/utils.js
index 0882f5a..da31e3d 100644
--- src/hg/js/utils.js
+++ src/hg/js/utils.js
@@ -2144,91 +2144,96 @@
 {// Called when configuring a composite or superTrack
     var thisForm =  $('form#searchResults');
     $(thisForm).attr('action',"../cgi-bin/hgTrackUi?hgt_tSearch=Search&g="+name);
     $(thisForm).find('input.viewBtn').click();
 }
 
 function findTracksMdbSelectPlusMinus(obj, rowNum)
 { // Now [+][-] mdb var rows with javascript rather than cgi roundtrip
   // Will remove row or clone new one.  Complication is that 'advanced' and 'files' tab duplicate the tables!
 
     var objId = $(obj).attr('id');
     rowNum = objId.substring(objId.length - 1);
     if ($(obj).val() == '+') {
         var buttons = $("input#plusButton"+rowNum);  // Two tabs may have the exact same buttons!
         if (buttons.length > 0) {
+            var table = null;
             $(buttons).each(function (i) {
                 var tr = $(this).parents('tr.mdbSelect')[0];
                 if (tr != undefined) {
+                    table = $(tr).parents('table')[0];
                     if(newJQuery) {
                         var newTr = $(tr).clone();
                         var element = $(newTr).find("select.mdbVar")[0];
                         if (element != undefined)
                             $(element).attr('selectedIndex',-1);
 
                         element = $(newTr).find("td[id^='hgt_mdbVal']")[0];
                         if (element != undefined)
                             $(element).empty();
                         element = $(newTr).find("td[id^='isLike']")[0];
                         if (element != undefined)
                             $(element).empty();
                         $(tr).after( newTr );
                     } else
                         $(tr).after( $(tr).clone() );
                 }
-                findTracksMdbSelectRowsNormalize($(tr).parents('table')[0]); // magic is in this function
             });
+            if (table)
+                findTracksMdbSelectRowsNormalize(table); // magic is in this function
             return false;
         }
     } else { // == '-'
         var buttons = $("input#minusButton"+rowNum);  // Two tabs may have the exact same buttons!
         if (buttons.length > 0) {
             var remaining = 0;
             $(buttons).each(function (i) {
                 var tr = $(this).parents('tr')[0];
                 var table = $(tr).parents('table')[0];
                 if (tr != undefined)
                     $(tr).remove();
                 remaining = findTracksMdbSelectRowsNormalize(table);  // Must renormalize since 2nd of 3 rows may have been removed
             });
             if (remaining > 0) {
                 removeNum = remaining + 1;  // Got to remove the cart vars, though it doesn't matter which as count must not be too many.
                 setCartVars( [ "hgt_mdbVar"+removeNum, "hgt_mdbVal"+removeNum ], [ "[]","[]" ] );
             }
 
             findTracksClearFound();  // Changing values so abandon what has been found
             return false;
         }
     }
     return true;
 }
 
 function findTracksMdbSelectRowsNormalize(table)
 { // Called when [-][+] buttons changed the number of mdbSelects in findTracks\
   // Will walk through each row and get the numberings of addressable elements correct.
+    //var table = $('table#'+tableId);
     if (table != undefined) {
         var mdbSelectRows = $(table).find('tr.mdbSelect');
         var needMinus = (mdbSelectRows.length > 2);
         $(table).find('tr.mdbSelect').each( function (ix) {
             var rowNum = ix + 1;  // Each [-][+] and mdb var=val pair of selects must be numbered
 
             // First the [-][+] buttons
             var plusButton = $(this).find("input[value='+']")[0];
             if (plusButton != undefined) {
                 $(plusButton).attr('id',"plusButton"+rowNum);
-                $(plusButton).unbind('click')
-                $(plusButton).click(function() { return findTracksMdbSelectPlusMinus($(plusButton), rowNum); });
+                // rebinding click appears to be not needed and screws up IE as well.
+                //$(plusButton).unbind('click')
+                //$(plusButton).click(function() { return findTracksMdbSelectPlusMinus($(plusButton), rowNum); });
                 var minusButton = $(this).find("input[value='-']")[0];
                 if (needMinus) {
                     if (minusButton == undefined) {
                         $(plusButton).before("<input type='button' id='minusButton"+rowNum+"' value='-' style='font-size:.7em;' title='delete this row' onclick='return findTracksMdbSelectPlusMinus(this,"+rowNum+");'>");
                         minusButton = $(this).find("input[value='-']")[0];
                     } else {
                         $(minusButton).attr('id',"minusButton"+rowNum);
                         $(minusButton).unbind('click');
                         $(minusButton).click(function() { return findTracksMdbSelectPlusMinus($(minusButton), rowNum); });
                     }
                 } else if (minusButton != undefined)
                     $(minusButton).remove();
             }
             // Now the mdb var=val pair of selects
             var element = $(this).find("select[name^='hgt_mdbVar']")[0];