code: function(r, n) {
      var label = r.text(0, 30, n.label).attr({ opacity: 0 })
      //the Raphael set is obligatory, containing all you want to display
      var set = r.set()
        .push(
          r.rect(-30, -13, 62, 86)
            .attr({ fill: '#fa8', 'stroke-width': 2, r: 9 })
        )
        .push(label)
  
      // make the label show only on hover
      set.hover(
        function mouseIn() {
          label.animate({ opacity: 1, 'fill-opacity': 1 }, 500)
        },
        function mouseOut() {
          label.animate({ opacity: 0 }, 300)
        }
      )
  
      // TODO currently not implemented
      // var tooltip = r.set()
      //   .push(
      //     r.rect(0, 0, 90, 30).attr({ fill: '#fec', 'stroke-width': 1, r: 9 })
      //   ).push(
      //     r.text(25, 15, 'overlay').attr({ fill: '#000000' })
      //   );
      // for(var i in set.items) {
      //   set.items[i].tooltip(tooltip);
      // }
      //            set.tooltip(r.set().push(r.rect(0, 0, 30, 30).attr({"fill": "#fec", "stroke-width": 1, r : "9px"})).hide());
      return set
    }
docs: /* add a node with a customized shape
  (the Raphael graph drawing implementation can draw this shape, please
  consult the RaphaelJS reference for details http://raphaeljs.com/)