anchor.diff:  <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
   <script>
     HeatMap = {};
  -  HeatMap.state = {
  -    bounds: [0, 0, 0, 0],
  -    filters: [295,304,5],
  -    colours: [[255,0,0],[0,255,0],[0,0,255]],
  -    dirty: false,
  -    viewing: "Australia"
  +  HeatMap.dirty = false;
  +  HeatMap.instances = [];
  +
  +  if (!_.isUndefined(localStorage.heatmap)) {
  +    localStorage.heatmap = "{}";
  +  }
  +
  +  HeatMap.state = JSON.parse(localStorage.heatmap);
  +
  +  if (_.isUndefined(HeatMap.state.bounds)) {
  +    HeatMap.state.bounds = [0, 0, 0, 0];
  +  }
  +  if (_.isUndefined(HeatMap.state.zoom)) {
  +    HeatMap.state.zoom = 5;
  +  }
  +  if (_.isUndefined(HeatMap.state.view)) {
  +    HeatMap.state.view = "Australia";
  +  }
  +  if (_.isUndefined(HeatMap.state.welcomed)) {
  +    HeatMap.state.welcomed = false;
  +  }
  +  if (_.isUndefined(HeatMap.state.filters)) {
  +    HeatMap.state.filters = [
  +      {
  +        id: 295,
  +        colour: [255, 0, 0],
  +        visible: true
  +      },
  +      {
  +        id: 304,
  +        colour: [0, 255, 0],
  +        visible: true
  +      },
  +      {
  +        id: 5,
  +        colour: [0, 0, 255],
  +        visible: true
  +      }
  +    ];
     };
  -  HeatMap.instances = [];
   
     ZOOMS = {
       "Australia": {
  
positive.code:     streetViewControl: false,
      overviewMapControl: false,
      scrollwheel: false,
      center: ZOOMS[HeatMap.state.viewing].center,
      zoom: ZOOMS[HeatMap.state.viewing].zoom
    };
  
    function update_bounds() {
      if (!HeatMap.state.dirty) {
        return;
      }
      HeatMap.state.dirty = false;
      HeatMap.state.bounds[0] = map.getBounds().getSouthWest().lat();
      HeatMap.state.bounds[1] = map.getBounds().getSouthWest().lng();
      HeatMap.state.bounds[2] = map.getBounds().getNorthEast().lat();
  
negative.code:   }
  
    function redraw_heatmaps() {
      localStorage.heatmap = JSON.stringify(HeatMap.state);
      if (HeatMap.state.filters.length > 0) {
        params = {
          bounds: HeatMap.state.bounds,
          filters: _.map(HeatMap.state.filters, function(f){ return f.id; })
        };
        $.getJSON("heatmaps/points", params, function(data){
          HeatMap.points = data;
          display_heatmaps();
        });
        $.getJSON("heatmaps/comments", params, function(data){
          HeatMap.comments = data;
          display_comments();
        });
  