anchor.diff:  <script src="http://d3js.org/d3.v3.min.js"></script>
   <script>
   
  -    var width = window.innerWidth,
  -            height = window.innerHeight,
  +    var min_zoom = 0.1;
  +    var max_zoom = 7;
  +    var zoom = d3.behavior.zoom().scaleExtent([min_zoom,max_zoom]);
  +
  +    var width = 900,
  +            height = 500,
               root;
   
       var force = d3.layout.force()
               .linkDistance(80)
  -            .charge(-120)
  +            .charge(-300)
               .gravity(.05)
               .size([width, height])
               .on("tick", tick);
   
       var svg = d3.select(".main").append("svg")
               .attr("width", width)
  -            .attr("height", height);
  +            .attr("height", height)
  +            .style("cursor","move");
   
  -    var min_zoom = 0.1;
  -    var max_zoom = 7;
  -    var zoom = d3.behavior.zoom().scaleExtent([min_zoom,max_zoom]);
  -
  -    svg.style("cursor","move");
  -
  -    var link = svg.selectAll(".link"),
  -            node = svg.selectAll(".node");
  +    var g = svg.append("g");
  +    var link = g.selectAll(".link");
  +    var node = g.selectAll(".node");
   
       d3.json("/especies/<%= @especie.id %>/json_d3", function(error, json) {
           if (error) throw error;
  
positive.code:         var nodeEnter = node.enter().append("g")
                  .attr("class", "node")
                  .on("click", click)
                  .call(force.drag);
  
          nodeEnter.on("dblclick.zoom", function(d) { d3.event.stopPropagation();
              var dcx = (window.innerWidth/2-d.x*zoom.scale());
              var dcy = (window.innerHeight/2-d.y*zoom.scale());
              zoom.translate([dcx,dcy]);
              node.attr("transform", "translate("+ dcx + "," + dcy  + ")scale(" + zoom.scale() + ")");
  
  
          });
  
          nodeEnter.append("circle")
                  .attr("r", 10);
  
negative.code:         update();
      });
  
      zoom.on("zoom", function() {
          g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
      });
  
      svg.call(zoom);
  
      resize();
  
      function update() {
          //console.log(root);
          var nodes = flatten(root),
                  links = d3.layout.tree().links(nodes);
  
          //console.log(nodes);
          // Restart the force layout.
          force
                  .nodes(nodes)
  