b471c09f7749c2a04f8e3485f2797ca55944c9fb
tdreszer
  Thu Jul 24 16:13:09 2014 -0700
Fixed many of the problems with IE version 11 going undetected. Redmine #13422.
diff --git src/hg/js/hui.js src/hg/js/hui.js
index 42adb31..9aa4d8f 100644
--- src/hg/js/hui.js
+++ src/hg/js/hui.js
@@ -935,31 +935,31 @@
         $(obj).one('done',filterCompositeDone);
         return;
     } else
         filterCompositeTrigger();
 }
 
 function filterCompositeExcludeOptions(multiSelect)
 { // Will mark all options in one filterComposite boxes that are inconsistent with the current
   // selections in other filterComposite boxes.  Mark is class ".excluded"
     // Compare to the list of all trs
     var allSubCBs = $("input.subCB");
     if (allSubCBs.length === 0)
         return false;
 
     // IE takes tooo long, so this should be called only when leaving the filterBy box
-    if ($.browser.msie && $(allSubCBs).filter(":checked").length > 300) 
+    if (theClient.isIePre11() && $(allSubCBs).filter(":checked").length > 300) 
         return false;
 
     var filterClass = filterCompFilterVar(multiSelect);
     if (!filterClass || filterClass.length === 0)
         return false;
 
     // Look at list of CBs that would be selected if all were selected for this filter
     var subCbsSelected = filterCompSubCBsSurviving(filterClass);
     if (subCbsSelected.length === 0)
         return false;
 
     if (allSubCBs.length === subCbsSelected.length) {
         $(multiSelect).children('option.excluded').removeClass('excluded');
         return true;
     }
@@ -1075,36 +1075,36 @@
 { // Special ONLY for hgTrackUi sorting.  Others use utils.js::tableSortOnButtonPress()
     var table = $( anchor ).parents("table.sortable");
     if (table) {
         subtrackCfgHideAll(table);
         waitOnFunction( sortTable._sortOnButtonPress, anchor, tagId);
     }
     return false;  // called by link so return false means don't try to go anywhere
 }
 
 function fauxDisable(obj,disable,title)
 {// Makes an obj appear disabled, but it isn't
  //  span.disabled & input.disabled is opacity 0.5
  //   div.disabled is border-color: gray; color: gray;
     if ($(obj).hasClass('subCB') === false || typeof(subCfg) === "object") { // subCfg.js ?
         if (disable) {
-            if ($.browser.msie)
+            if (theClient.isIePre11())
                 $(obj).css('opacity', '0.5');
             $(obj).addClass('disabled');
         } else {
             // For some reason IE<9 accepts direct change but isn't happy with simply adding class!
-            if ($.browser.msie)
+            if (theClient.isIePre11())
                 $(obj).css('opacity', '1'); 
             $(obj).removeClass('disabled');
         }
     } else {
         obj.disabled = disable;
     }
     if (arguments.length > 2)
         $(obj).attr("title",title);
 }
 
 function isFauxDisabled(obj,orReallyDisabled)
 {// Is object [faux] disabled?
     if (orReallyDisabled && obj.disabled)
         return true;
 
@@ -1265,31 +1265,31 @@
             $(up45).show();
             var dn45 = $('div.dn45');
             if (dn45 && dn45.length > 0) {
                 $(dn45).first().parent('th').css('height',newHeight + 'px');
                 $(dn45).show();
             }
             $(noShow).remove();
         }
     },
 
     init: function ()
     {
         mat.matrix = $('table.matrix');
         if (mat.matrix && mat.matrix.length === 1) {
             mat.resizeAngleLabels();
-            if (!$.browser.msie) { // IE can't handle the hover!
+            if (theClient.isIePre11() === false) { // IE pre v11 can't handle the hover!
                 var cells = $('td.matCell');
                 if (cells && cells.length > 0) {
                     var classList = $( cells[0] ).attr("class").split(" ");
                     classList = aryRemove(classList,["matCell"]);
                     mat.dimensions = classList.length;
                     if (mat.dimensions > 1) { // No need unless this is a 2D matrix
                         $('.matCell').hover(
                             function (e) {mat.cellHover(this,true);},
                             function (e) {mat.cellHover(this,false);}
                         );
                         // blur doesn't work because the screen isn't repainted
                         $(mat.matrix).blur(mat.clearGhostHilites());
                         $(window).bind('focus',function (e) {mat.clearGhostHilites();});
                     }
                 }