class @UseBlock

constructor: -> nil

class @ZTimeHeaderDayUseBlock extends UseBlock

constructor: -> nil

@process: (block) ->
  @label       block
  @css_classes block
  block

@label: (block) ->
  block.label  = block.title

@css_classes: (block) ->
  # Could just as well come from server.
  classes = 'ZTimeHeaderDayRow '
  block.css_classes = classes

class @ZTimeHeaderHourUseBlock extends UseBlock

constructor: -> nil

@process: (block) ->
  @label       block
  @css_classes block
  block

@label: (block) ->
  block.label  = block.title

@css_classes: (block) ->
  # Could just as well come from server.
  # classes = 'ZTimeHeaderHourRow '
  # block.css_classes = classes

# Uses these fields of block: title, subtitle, category, category_type, # Sets these fields of block: label, css_classes class @StationUseBlock extends UseBlock

constructor: -> nil

@process: (block) ->
  @css_classes block
  @label       block
  block

@label: (block) ->
  block.label  = block.title
  block.label += ":<br> #{block.subtitle}" if block.subtitle
  block.label += "<span class='flags'>#{@flags(block)}</span>"

@flags: (block) ->
  flags  = ''
  flags += '  hd'  if block.hdtv
  flags += '  new' unless block.previouslyshown
  flags

@css_classes: (block) ->
  block.css_classes = @ct_name(block) + " " + @to_css_class(block.category)

@ct_name: (block) ->
  ct = block.category_type || ''
  return '' if /unknown/i.test ct
  "type_#{ct.replace /[^a-z0-9\-_]+/gi, '_'}"

@to_css_class: (category, clss = null) ->
  return clss if (clss = @memo[ category ])
  @memo[ category ] = @css_class_search category

@css_class_search: (category) ->
  for key, regex of @categories
    return ('cat_' + key) if regex.test category
  'cat_Unknown'

@memo: {}

@categories:
  Action:           /\b(action|adven)/i
  Adult:            /\b(adult|erot)/i
  Animals:          /\b(animal|tiere)/i
  Art_Music:        /\b(art|dance|music|cultur)/i
  Business:         /\b(biz|busine)/i
  Children:         /\b(child|infan|animation)/i
  Comedy:           /\b(comed|entertain|sitcom)/i
  Crime_Mystery:    /\b(crim|myster)/i
  Documentary:      /\b(doc)/i
  Drama:            /\b(drama)/i
  Educational:      /\b(edu|interests)/i
  Food:             /\b(food|cook|drink)/i
  Game:             /\b(game)/i
  Health_Medical:   /\b(health|medic)/i
  History:          /\b(hist)/i
  Horror:           /\b(horror)/i
  HowTo:            /\b(how|home|house|garden)/i
  Misc:             /\b(special|variety|info|collect)/i
  News:             /\b(news|current)/i
  Reality:          /\b(reality)/i
  Romance:          /\b(romance)/i
  SciFi_Fantasy:    /\b(fantasy|sci\\w*\\W*fi)/i
  Science_Nature:   /\b(science|nature|environm)/i
  Shopping:         /\b(shop)/i
  Soaps:            /\b(soaps)/i
  Spiritual:        /\b(spirit|relig)/i
  Sports:           /\b(sport)/i
  Talk:             /\b(talk)/i
  Travel:           /\b(travel)/i
  War:              /\b(war)/i
  Western:          /\b(west)/i

# console.log ChannelUseBlock.css_class_search(‘action’) # console.log ChannelUseBlock.to_css_class(‘action’)

# block = # category_type: ‘series’ # category: ‘adventure’

# block = {“airdate”:0,“category”:“Reality”,“category_type”:“series”,“chanid”:1791,“description”:“Alexia enlists Troy’s help to find her father.”,“endtime”:“2013-03-04T12:00:00-08:00”,“first”:true,“generic”:false,“hdtv”:false,“last”:true,“listingsource”:0,“manualid”:0,“originalairdate”:“2009-03-28”,“partnumber”:0,“parttotal”:0,“pid”:“”,“previouslyshown”:1,“programid”:“EP010679340014”,“seriesid”:“EP01067934”,“showtype”:“Series”,“stars”:0.0,“starttime”:“2013-03-04T11:30:00-08:00”,“stereo”:false,“subtitle”:“A Daughter’s Mission”,“subtitled”:false,“syndicatedepisodenumber”:“204”,“title”:“The Locator”}

# console.log ChannelUseBlock.ct_name block # console.log ChannelUseBlock.css_classes block