window.TodoViewModel = (model) ->
ENTER_KEY = 13
ESCAPE_KEY = 27
@editing = ko.observable(false)
@completed = kb.observable(model, {key: 'completed', read: (-> return model.completed()), write: ((completed) -> model.completed(completed)) }, @)
@title = kb.observable(model, {
key: 'title'
write: ((title) =>
if $.trim(title) then model.save(title: $.trim(title)) else _.defer(->model.destroy())
@editing(false)
)
}, @)
@onDestroyTodo = => model.destroy()
@onCheckEditBegin = =>
if not @editing()
@editing(true)
$('.todo-input').focus()
@onCheckEditEnd = (view_model, event) =>
if (event.keyCode == ESCAPE_KEY)
@editing(false)
if (event.keyCode == ENTER_KEY) or (event.type == 'blur')
$('.todo-input').blur()
@editing(false)
return