App.CssObject = Ember.Object.extend
  pixel_fields: ['width', 'height', 'left', 'top', 'line-height']
  isNumeric: /^[-+]?(\d+|\d+\.\d+)$/
  toString: ->
    ret = ""
    for k, v of JSON.parse(JSON.stringify(@))
      if @pixel_fields.indexOf(k) > -1
        v = "#{v}px" if @isNumeric.test(v)
      ret += "#{k}:#{v};"
    ret.htmlSafe()
App.CssObject.reopenClass
  rgb_to_numeric: (rgb_hex)->
    #http://stackoverflow.com/questions/12043187/how-to-check-if-hex-color-is-too-black
    rgb_hex = rgb_hex.substring(1)
    rgb = parseInt(rgb_hex, 16)
    r = (rgb >> 16) & 0xff
    g = (rgb >>  8) & 0xff
    b = (rgb >>  0) & 0xff
    [r, g, b]

  isColorDark: (rgb_hex)->
    return false unless rgb_hex?.match /#[0-9a-zA-Z]{6}/
    [r, g, b] = @rgb_to_numeric rgb_hex
    luma = 0.2126 * r + 0.7152 * g + 0.0722 * b # per ITU-R BT.709
    luma < 40
