anchor.diff:        arest.csrf(current_user.csrf)
       return R.span null, ''
   
  +Media = ReactiveComponent
  +  # This doesn't actually render anything.  It just tracks data
  +  # useful for responsive layouts.
  +  displayName: 'Media'
  +  
  +  componentWillMount : ->
  +    @registerCallbacks() 
  +    @updateMeasurements()
  +
  +  registerCallbacks : -> 
  +    $(window).on "resize.plugin_stickytopbottom-#{@my_id}", => @updateMeasurements()
  +
  +  updateMeasurements : ->
  +    media = @data()
  +    media.height = $(window).height()
  +    media.width = $(window).width()
  +    save media
  +
  +  render : ->
  +    media = @data()
  +
  +    return R.span null, ''  
  +
  +
   Header = ReactiveComponent
     displayName: 'Header'
     logout : -> 
  
positive.code:           Proposal key: @page.proposal.key
        Footer()
        Computer() # Doesn't actually render anything
  
  Computer = ReactiveComponent
    # This doesn't actually render anything.  It just processes state
  
negative.code: 
    render : ->
      root = @data('root')
      current_user = @data('/current_user')
      your_opinion = @data(your_opinion_key)
  
  