Cufon.replace('.avenir,#sidebar h2,.post-banner,.post-date,.post-title');

$(document).ready(function() {
  $('.post-twitter .tweets li').css('display','block').hide();
  
  //Twitter button hover
  $('.post-twitter .button-down')
    .click(function() {return false;})
    .hover(
      function() {
        if($('.tweets li').length>0)
          $('.tweets li',$(this).parent()).addClass('faux-hr').slideDown({duration:500,easing:'easeOutCirc'});
      },
      function() {}
    );
  
  //Mouse leaves the twitter zone
  $('.post-twitter')
    .hover(
      function() {},
      function() {
        $('.tweets li',$(this).parent()).removeClass('faux-hr').not('.alpha').slideUp({duration:250,easing:'easeOutCirc'});
      }
    );

  getTweets();
});

function getTweets() {
  $('.tweets li.alpha').html($.cookies.get('latest_tweet'));
  
  $.getJSON(site_url+'wp-content/themes/StevenFurtick/twitter_feed.php',function(data) {
    var results='';
    
    var alpha=true;
    var c=data.results.length;
    $.each(data.results,function(i,row) {
      var title=makeLinksClickable(row.text);
      if(alpha)
        tweet='<li class="alpha">';
      else if(i==c-1)
        tweet='<li class="omega">';
      else
        tweet='<li>';
      alpha=false;
      
      tweet+='<p>'+title+' <span class="timestamp">';
      tweet+=relativeTime(row.created_at)+'</span></p></li>'
      
      //First tweet gets stored
      if(i==0)
        $.cookies.set('latest_tweet',tweet);
      
      //Add thet weet to the list of tweets
      results+=tweet;
    });
    
    $('.post-twitter .tweets').html(results);
    $('.post-twitter .tweets li p').hide().fadeIn({duration:500,easing:'easeInOutSine'});
  });
}

function makeLinksClickable(str) {
  var exp=/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
  return str.replace(exp,'<a href="$1" target="_blank" rel="external">$1</a>'); 
}

function relativeTime(time_value) {
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  if(delta < 60) {
  return 'Less than a minute ago';
  } else if(delta < 120) {
  return 'About a minute ago';
  } else if(delta < (45*60)) {
  return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (90*60)) {
  return 'About an hour ago';
  } else if(delta < (24*60*60)) {
  return 'About ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
  return '1 day ago';
  } else {
  return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}
