class Backbone.HandlebarsHelpers

is: (block) ->
  hash = block.hash
  block() if this[hash.property] == hash.value

stripe: (collection, block) ->
  item_contents = for index in [0...collection.length]
    collection[index].stripeClass = if ((index % 2) == 0) then "even" else "odd"
    block collection[index]
  item_contents.join("\n")

formatNumber: (number) ->
  $.formatNumber number, {format: "#,###"}

formatCurrency: (number) ->
  $.formatNumber number, {format: "$#,###.00"}

formatPercentage: (number) ->
  formatted = $.formatNumber number, {format: "#,###.0000"}
  "#{formatted}%"

get: (property)->
  @get(property)

helperMissing: -> ""

eachProperty: (property, block)->
  block(object) for object in @get(property)

view: (block) ->
  params = block.hash
  view = block.data.view
  viewClass = eval(params.viewClass)
  if params.modelClass
    modelClass = eval(params.modelClass)
    model = new modelClass(this)
  else
    model = this
  childView = new viewClass(model: model, parent: view)
  view.subViews.push childView
  block(model)

@registerHelpers: (helpers)->
  helpers or= new HandlebarsHelpers()
  Handlebars.registerHelper name, helper for name, helper of helpers