define([

  'Backbone',

  //Template
  'text!templates/project-page/taskDetailTemplate.html'
], function(

  Backbone,

  taskDetailTemplate
){
  var TaskDetail = Backbone.View.extend({

    template: _.template(taskDetailTemplate),

    events: {
      'click .card'      : 'play',
      'click .js-save'   : 'save',
      'click .js-cancel' : 'cancel'
    },

    initialize: function(){
      this.collection.bind('change:selected', this.render, this);
    },

    play: function(event){
      event.preventDefault();
      this.$('.selected').removeClass('selected');
      $(event.currentTarget).addClass('selected');
    },

    cancel: function(event){
      event.preventDefault();
    },

    save: function(event){
      event.preventDefault();
      var card = this.$('.selected');

      if(card[0]){
        var estimated = this.selectedTask.get('estimated') || [];
        var player    = this.options.router.account.get('user');
        var num       = card.find('a')[0] ? card.find('a').text() : card.find('input').val();

        estimated.push({
          player: player,
          card: num
        });

        this.selectedTask.save({estimated: estimated});
      }
    },

    render: function(){
      this.selectedTask = this.collection.where({selected: true}).pop();

      //Clean up collection
      _.each(this.collection.models, function(model){
        model.set({selected: false}, {silent: true});
      });

      var task = this.selectedTask.toJSON();
      task.labels = task.labels ? task.labels[0].split(',') : [];
      task.description = typeof task.description === 'string' ? task.description : 'No description';
      task.estimated = task.estimated || [];

      this.$el.html(this.template(task));
    }

  });

  return TaskDetail;
});

@@ -450,16 +450,94 @@
  this);%0A
+      this.collection.bind('change:estimated', this.updateEstimations, this);%0A
     %7D,%0A%0A
@@ -947,24 +947,77 @@
 ed') %7C%7C %5B%5D;%0A
+        var task      = this.selectedTask.get('id');%0A
         var 
@@ -1176,35 +1176,63 @@
     
-estimated.push(%7B%0A          
+var me  = _.findWhere(estimated, %7Bplayer: player%7D) %7C%7C %7B
 play
@@ -1241,17 +1241,18 @@
 : player
-,
+%7D;
 %0A       
@@ -1256,19 +1256,22 @@
     
-  
+me.
 card
-:
+ =
  num
+;
 %0A   
@@ -1279,65 +1279,398 @@
     
-%7D);%0A%0A        this.selectedTask.save(%7Bestimated: estimated
+socket.emit('estimate', task, _.union(estimated, me));%0A      %7D%0A    %7D,%0A%0A    updateEstimations: function()%7B%0A      if(this.selectedTask)%7B%0A        var estimations = this.selectedTask.get('estimated');%0A        var list = this.$('.players');%0A        list.html('');%0A%0A        _.each(estimations, function(estimation)%7B%0A          list.append('%3Cli class=%22player%22%3E'+estimation.player+'%3C/li%3E');%0A        
 %7D);%0A

Update players on estimation