fs       = require 'fs'
md       = require("node-markdown").Markdown

# load article data at start
fs.readdir 'blogPosts/published/', (err, files) ->
  global.articleList = files.sort().reverse()
  fs.readFile 'blogPosts/published/' + global.articleList[0], (err,data) -> 
    global.firstArticleData = md new String data

# a helper method for viewing a single article
renderArticle = (req, res, isPublished) ->
  path = if isPublished then 'blogPosts/published/' else 'blogPosts/drafts/'
  articleUrl = [req.params.year, req.params.month, req.params.day, req.params.title].join('-')
  fs.readFile path + articleUrl + '.markdown', (err,data) ->
    res.render 'blog/index', { locals: { article: md(new String(data)) , list: global.articleList } }

exports.renderBlog = (res)->
  res.render 'blog/index', { locals: { article: global.firstArticleData, list: global.articleList } }

exports.createBlog = (app) ->
  app.get '/blog', (req,res) -> 
    res.render 'blog/index', { locals: { article: global.firstArticleData, list: global.articleList } }

  app.get '/blog/:year/:month/:day/:title', (req,res) -> 
    renderArticle req, res, true

  app.get '/blog/drafts/:year/:month/:day/:title', (req,res) -> 
    renderArticle req, res, false

  # View Helpers
  app.helpers {
    blogPostUrl: (fileName) ->
      '/blog/' + fileName.replace('-','/').replace('-','/').replace('-','/').replace('.markdown','')
    ,
    blogPostTitle: (fileName) ->
      fileName.replace(fileName[0..10],'').replace('.markdown','').replace(/-/gi,' ')
    ,
    blogPostDate: (fileName) ->
      new Date(fileName.split('-')[0], fileName.split('-')[1] - 1, fileName.split('-')[2])
    ,  
    calendarMonth: (date) ->
      date.toDateString().split(' ')[1]
    ,
    calendarDay: (date) ->
      date.getDate()
    ,
    calendarYear: (date) ->
      date.getFullYear()
      
  }
  