POST_TEMPLATE =  '<article class="news_post">'
    + '<h1><a href="$link">$title</a></h1>'
    + '<p class="meta">$pubDate</p>'
    + '<p>$description</p>'
    + '<p class="read_more">'
    + '<a href="$link">READ MORE...</a></p>'
    + '<hr class="dashed">'
    + '</article>';

MONTHS = ['January', 'February', 'March', 'April', 'May', 
          'June', 'July', 'August', 'September', 'October', 
          'November', 'December'];


function render(template, data) {
    for (var key in data) {
        var re = new RegExp('\\$' + key, 'g');
        template = template.replace(re, data[key]);
    }
    $('#news_posts').append($(template));
}

function formatDate(dateStr) {
    try {
        var date = new Date(dateStr);
        date = MONTHS[date.getMonth()] + ' ' 
            + date.getDate() + ', ' 
            + date.getFullYear();
        return date;
    } catch (x) {
        return dateStr;
    }
}

function processItem() {
    var item = $(this);
    var itemObj = {
        'title': item.find('title').text(),
        'description': item.find('description').text(),
        'pubDate': formatDate(item.find('pubDate').text()),
        'link': item.find('link').text()
    };
    render(POST_TEMPLATE, itemObj);
}

function getRss(blog) {
    if (blog) {
        blog = blog + '/';
    }
    $.ajax({
        type: 'GET',
        url:  blog + 'feed/',
        dataType: 'xml',
        beforeSend: function() {
            $('#throbber').show();
            $('#news_posts .news_post').remove();
        },
        success: function(xml) {
            $(xml).find('item').each(processItem);
            $('#throbber').hide();
        },
        error: function() {
            var msg = 'An error occurred, please try again';
            $('#news_posts').text(msg);
        }
    });
}

function selectBlog() {
    var link = $(this);
    var href = $.trim(link.attr('href'));
    if (href.substr(-1) == '/') {
        href = href.substring(0, href.length - 1);
    }
    try {
        if (href == '#') {
            var blog = '';
        } else {
            var blog = href.substring(href.lastIndexOf('/') + 1);
        }
    } catch (x) {
        console.log(x);
    }

    $('#city_news_tabs ul li.selected').removeClass('selected');
    link.parent('li').addClass('selected');
    getRss(blog);
    
    return false;
}

$(function() {
    $('#city_news_tabs ul li a').click(selectBlog);
});
