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>"
+ if card.owner is state.agent
+ card_class = 'my_card'
+ else
+ card_class = 'your_card'
+
+ view = $ $ "<div class=\"card #{card_class}\" 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"
if card.flipped
view.addClass 'flipped'
$table.append view
- view.draggable stack: '.card'
+ view.draggable containment: '#table', grid: [20, 20]
+ view.bind 'dragstart', (event, ui) ->
+ view.css 'z-index': card.z = next_card_z()
view.bind 'dragstop', (event, ui) ->
p = view.position()
state.move state.agent, card.number, transform_x(p.left), transform_y(p.top)
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