card_height = 0
state = null
server_url = null
+top_card_z = 0 # css z-index of front-most card
show_message = (txt) -> txt
# FIXME implement chat box or something
return y unless state.agent is 'p2'
return table_height - card_height - y
+next_card_z = -> return top_card_z += 1
+
+bring_card_to_front = (card) ->
+ card.view.css "z-index": next_card_z()
+
instantiate_card = (card) ->
text = card.text
- view = $ $ "<div class=\"card\" style=\"left: #{transform_x(card.x)}px; top: #{transform_y(card.y)}px\"><span class=\"cardtext\">#{text}</span></div>"
+ view = $ $ "<div class=\"card\" style=\"left: #{transform_x(card.x)}px; top: #{transform_y(card.y)}px; z-index: #{next_card_z()}\"><span class=\"cardtext\">#{text}</span></div>"
button_box = $ $ '<div/>'
flip_button = new_button "flip over"
mark_button = new_button "mark"
$table.append view
view.draggable stack: '.card'
view.bind 'dragstop', (event, ui) ->
+ top_card_z = parseInt view.css 'z-index'
p = view.position()
state.move state.agent, card.number, transform_x(p.left), transform_y(p.top)
card.view = view
if agent is me
tell_server ['move', agent, card, x, y]
else
+ bring_card_to_front state.cards[card]
state.cards[card].view.animate { left: "#{transform_x x}px", top: "#{transform_y y}px"}, 800
state.on 'mark', (agent, card, state) ->
@cards[card].view.toggleClass 'marked', state