anchor.diff:              google.visualization.events.addListener(scatter, 'ready', function(e){
                   csObs.subscribe('scatter-plot',function(caseId) {
                       var ix = caseMap[caseId];
  -                    // this is not working due to a google bug
  -                    // http://goo.gl/dXvDN
                       scatter.setSelection(ix==null?null:[{'row': ix}]);
                   });
               });
  
positive.code:                     else {low = i + 1;}
                  }
                  count[low] = count[low]+1;
              }
              
              hist.push(['<='+bins[0],count[0]]);
  
negative.code:             vAxis: {title: '# of Patients'},
              legend: {position: 'none'}
          }
          google.visualization.events.addListener(column, 'ready', function(e){
              csObs.subscribe(div.id,function(caseId) {
                  var ix = hist[1][caseId];
                  column.setSelection(ix==null?null:[{'row': ix}]);
              });
          });
          column.draw(google.visualization.arrayToDataTable(hist[0]),options);
      }
      
      function plotPieChart(div,dt,col) {
          var hist = calcHistogram(dt,col);
          var column = new google.visualization.PieChart(div);
          google.visualization.events.addListener(column, 'ready', function(e){
              csObs.subscribe(div.id,function(caseId) {
                  var ix = hist[1][caseId];
                  column.setSelection(ix==null?null:[{'row': ix}]);
              });
          });
          column.draw(google.visualization.arrayToDataTable(hist[0]));
      }
      
      function calcHistogram(dt,col,bins) {
          var hist = [[dt.getColumnLabel(col),'# patients']];
          var caseIdHistMap = {};
          var rows = dt.getNumberOfRows();
          var t = dt.getColumnType(col);
          if (t=="number") {
  