/*--------------------------------------------------------------------------*/
/*  feedjuggler Content Loader
 *  2009 Tim Igoe (tim@timigoe.co.uk)
 *
/*--------------------------------------------------------------------------*/

var feedjuggler = new Object();
feedjuggler.started = true;
feedjuggler.lastCheck = new Date().getTime();
feedjuggler.loadedArticles = 0;

feedjuggler.startup = function()
{
  jQuery(window).scroll(function() {
    if (jQuery(window).scrollTop() == jQuery(document).height() - jQuery(window).height()) {
      jQuery('#loadMore').click();
    }
  }); 
  
  jQuery('#quicksearchForm').submit(function () {
     feedjuggler.loadArticles('search', jQuery('#quicksearchForm input#Search').val());
     
     return false;
  });
}

feedjuggler.loading = function(div)
{
  jQuery(div).html('<div class="loading"><img src="/images/loading.gif" alt="Loading..." /></div>');
}

feedjuggler.about = function()
{
  this.loading('#mainarea');
  jQuery.getJSON('/data/about/', function(data) {jQuery('#mainarea').html(data.html);} );
}

feedjuggler.home = function()
{
  this.loading('#mainarea');
  jQuery.getJSON('/data/welcome/', function(data) {jQuery('#mainarea').html(data.html);} );
}

feedjuggler.updateTime = function()
{
  feedjuggler.lastCheck = new Date().getTime();
}

// Find the subscription options and set them up to be clickable and containing subscription information already
feedjuggler.checkSubscription = function()
{

  
}

// Check for new articles in the feed
feedjuggler.newArticles = function(type, query)
{
}

// Load articles for the search / query that aren't what we've got already
feedjuggler.loadArticles = function(type, what, addition)
{
  if (addition)
    feedjuggler.loading('#loadMore');
  else
  {
    feedjuggler.loadedArticles = 0;
    feedjuggler.loading('#mainarea');
  }
  
  jQuery.getJSON('/data/' + type + '/', 
    {query: what, start: feedjuggler.loadedArticles},
    function(data) { 
      if (!jQuery('#articlelist').length)
      {
        jQuery('#mainarea').html('<ul id="articlelist"></ul>');
      }
      jQuery('#loadMore').remove();
      feedjuggler.parseArticles(data);
    }
  );
}

feedjuggler.parseArticle = function(item)
{ 
  jQuery('#articlelist').append(
    '<li>' + 
      '<h2><a href="' + item.url + '">' + item.title + '</a></h2>' + 
      '<p class="content">' + item.content + '</p>' +
      '<p class="info">' + item.posted + ' from ' + item.feed + '</p>' + 
    '</li>'
  );
    
  feedjuggler.loadedArticles++;
}

feedjuggler.parseArticles = function(data)
{
  if (!feedjuggler.loadedArticles)
    jQuery('#articlelist').append(
      '<li>' + 
        '<h1>' + data.title + '</h1>' + 
      '</li>');

  jQuery.each(data.articles, function(i, item) { feedjuggler.parseArticle(item); });
  
  jQuery('#articlelist').append('<li id="loadMore" onclick="feedjuggler.loadArticles(\'' + data.type + '\', \'' + data.what + '\', true);">Load More</li>');
}

feedjuggler.subscriptions = function()
{
  //feedjuggler.loading('#subscriptions');
  feedjuggler.loading('#infocol');
  
  jQuery.getJSON('/data/subscriptions/', 
    {startup: feedjuggler.started},
    function(data) { 
      
      if (!jQuery('#subscriptionlist').length)
        jQuery('#infocol').html('<ul id="subscriptionlist"></ul>');

      if (data.feeds.length)
      {
        jQuery.each(data.feeds, function(i, item) { 
          jQuery('#subscriptionlist').append(
              '<li><a onclick="feedjuggler.loadArticles(\'feed\', \'' + item.url + '\')">' + item.title + '</a></li>'
            );
        });
      } else { 
        jQuery('#subscriptionlist').append(
            '<li>Add Feeds</li>'
          );
      }
    }
  );
}

jQuery(document).ready(function() {
  feedjuggler.startup();
  
  feedjuggler.home();
  
  feedjuggler.subscriptions();
  
  feedjuggler.started = false;
}
);
