var qlStatus=false;
var tf = null;

var textEffects = Class.create({
	initialize : function(){
	   //Cufon.set('fontFamily', 'Avenir Next LT Pro').replace('#nav > ul > li > a');
	   Cufon.set('fontFamily', 'AvenirBlack').replace('h1')('h2');
	   Cufon.set('fontFamily', 'Georgia').replace('#blog h1')('#blog #blogpost-date')('#banner .bodyimagedesc');
	  //Cufon.set('fontFamily', 'AvenirNext').replace('h3');
	}
});



// Hover Behaviour for Nav etc.
var HoverBehavior = Class.create();
HoverBehavior.prototype = {
   initialize: function() {
       $A(document.styleSheets).each( function(stylesheet) {
       $A(stylesheet.rules).each( function(rule) {
       if( rule.selectorText.match(/:hover/i) ) {
           stylesheet.addRule( rule.selectorText.replace(/:hover/ig, '.hover'), rule.style.cssText );
       }
       });
   });

   $A(arguments).each( function(arg) {
       $$(arg).each( function(tag) {
           Event.observe(tag, 'mouseenter', function() { Element.addClassName(tag, 'hover'); }, true);
           Event.observe(tag, 'mouseleave', function() { Element.removeClassName(tag, 'hover'); }, true);
           });
       });
   }
};

var BlogScraper = Class.create({
  initialize: function(){
    //check to see if this is home page
    if($('page-1')){
      this.getLatestBlogEntry();
    }
  },
  formatDate : function(unformatted_date){
    var re = /(([0-1][0-9]|[2][0-3])(:([0-5][0-9])){2} (.[0-9]{4}))/;
    return(unformatted_date.replace(re,""))
  //  return(unformatted_date.replace("+0000","").replace(re,""))
  },
  getLatestBlogEntry : function(){
    var t = this;
    new Ajax.Request('/blog/feed',
      {
        method:'get',
        onLoading : function(){
          $('blog').update('<img src="/images/layout/ajax-loader.gif" alt="loading..." />');
        },
        onSuccess: function(transport){

          var response = transport.responseText || "no response text";
          var items = transport.responseXML.getElementsByTagName( 'item' );
          var title = items[0].getElementsByTagName("title")[0].childNodes[0].nodeValue;
          var post_date = items[0].getElementsByTagName("pubDate")[0].childNodes[0].nodeValue;
          var post_content = items[0].getElementsByTagName("description")[0].childNodes[0].nodeValue;
          $('blog').update('<div id="blogpost-date">'+t.formatDate(post_date)+'</div><h1>'+title+'</h1><p>'+post_content+'</p>');

        },
        onFailure: function(){ alert('Unable to retreive blog post, please try again...') }
      });
    
  }
});

var TwitterFeed = Class.create({
  initialize : function(){
    
  },
  parseTweets : function(twitters){
  
    var statusHTML = [];
    for (var i=0; i<twitters.length; i++){
      var username = twitters[i].user.screen_name;
      var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
        return '<a href="'+url+'" target="_blank">'+url+'</a>';
      }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
        return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'" target="_blank">'+reply.substring(1)+'</a>';
      });
      statusHTML.push('<li><span>'+status+'</span> <a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'" target="_blank">'+relative_time(twitters[i].created_at)+'</a></li>');
    }
    document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
  }
  
  
})

function twitterCallback(twitters) {
  tf = new TwitterFeed();
  tf.parseTweets(twitters)
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  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);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*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';
  }
}




Event.observe(window, 'load', function() {
	new textEffects();
  if(Prototype.Browser.IE){
	  new HoverBehavior("#nav li");
	  new HoverBehavior("#search-overlay");
  }
	new BlogScraper();
});	