if(!window.console) console = {};
console.log = console.log || function(){};
console.warn = console.warn || function(){};
console.error = console.error || function(){};
console.info = console.info || function(){};

var newTweetsLoaded = false;

var K = function(){
  var a = navigator.userAgent;
  return {
    ie: a.match(/MSIE\s([^;]*)/)
  }
}();
 
var H = function(a){
  var b = new Date();
  var c = new Date(a);
  if(K.ie){
    c = Date.parse(a.replace(/( \+)/, ' UTC$1'))
  }
  var d = b - c;
  var e = 1000, minute = e * 60, hour = minute * 60, day = hour * 24, week = day * 7;
  if(isNaN(d) || d < 0){
    return ""
  }
  if(d < e * 7){
    return "Pas geleden";
  }
  if(d < minute){
    //return Math.floor(d / e) + " seconden geleden";
    return "Een aantal seconden geleden";          
  }
  if(d < minute * 2){
    return "Ongeveer 1 minuut geleden";
  }
  if(d < hour){
    return Math.floor(d / minute) + " minuten geleden";
  }
  /*if(d < hour * 2){
    return "Ongeveer 1 uur geleden";
  }*/
  if(d < day){
    return Math.floor(d / hour) + " uur geleden";
  }
  if(d > day && d < day * 2){
    return "Gisteren" ;
  }
  if(d < day * 365){
    return Math.floor(d / day) + " dagen geleden";
  } else {
    return "Meer dan een jaar geleden";
  }
};
function currentTime(){
  var currentTime = new Date()
  return currentTime.toLocaleTimeString();
}

function loadTweets(tweetSwitch){
  newTweetsLoaded = false;
  console.log(' ');
  console.log('(' + currentTime() + ') Tweetbox > Loading tweets');
  setTimeout("checkTweets()", 30000);
  var tweetCount = 0;
  $.jTwitter('dylian94', 5, function(data){
    $('#tweetbox p .post').fadeOut('slow', function(){
      $('#tweetbox p').empty();
      $.each(data, function(i, post){
        var tweet = post.text;
        tweet = tweet.replace(/(http:\/\/\S+)/g, '<a href="$1" rel="external">$1</a>');
        tweet = tweet.replace(/[#]+[A-Za-z0-9-_]+/g, function(t){
          return '<a href="http://twitter.com/search?q=' + t.replace("#","%23") + '" rel="external">' + t + '</a>';
        });
        tweet = tweet.replace(/[RT]+[\s]+[@]+[A-Za-z0-9-_]+[:]+[\s]+/g, function(u){
          return '<span class="rt">' + u.replace('RT ', '').replace(': ', '') + '</span>';
        });
        tweet = tweet.replace(/[@]+[A-Za-z0-9-_]+/g, function(u){
          return '<a href="http://twitter.com/' + u.replace('@', '') + '" rel="external">' + u + '</a>';
        });
        $('#tweetbox p').append('<span class="post">' + tweet + '<span class="time"><a href="http://twitter.com/Dylian94/status/'+post.id_str+'" rel="external">' + H(post.created_at) + '</a></span></span>');
        tweetCount = tweetCount + 1;
        if(parseInt(data.length) == (tweetCount)){
          newTweetsLoaded = true;
          $('#tweetbox p .post:first').fadeIn('slow', function(){
            if(tweetSwitch){
              setTimeout("tweetSwitch()", 7000);
            }else{
              $('#tweetbox p .post:first').addClass('active');              
            }
            console.log('(' + currentTime() + ') Tweetbox > Loaded ' + parseInt(data.length) + ' tweets');
            setTimeout('loadTweets()', (820*parseInt(data.length)*15));
            console.log('(' + currentTime() + ') Tweetbox > Next check in ' + ((82*parseInt(data.length)*15)/100) + ' seconds');
          });
        }
      });
    });
  });
}
function tweetSwitch(){
  var $active = $('#tweetbox span.post.active');
  if( $active.length == 0 ) $active = $('#tweetbox span.post:last');
  var $next =  $active.next().length ? $active.next() : $('#tweetbox span.post:first');
  $active.addClass('last-active');
  $active.fadeOut('slow', function(){
    $active.removeClass('active last-active');
    $next.fadeIn('slow', function(){
      $next.addClass('active');
    });
  });
  setTimeout("tweetSwitch()", 7000);
}
function checkTweets(){
  if(newTweetsLoaded == false){
    console.warn('(' + currentTime() + ') Tweetbox > Connection with Twitter API failed (Limit reached or Twitter over capacity)');
    $('#tweetbox p .post').fadeOut('slow', function(){
      $('#tweetbox p .post').html('Er kan geen verbinding met de Twitter API gemaakt worden...');
      $('#tweetbox p .post').fadeIn('slow', function(){
        console.log(' ');
        console.log('(' + currentTime() + ') Tweetbox > Retrying...');
        loadTweets(true);
      });
    });
  }
}
$(document).ready(function(a){
  $("a[rel=external]").live('click', function(){
    window.open($(this).attr('href'), "_blank");
    return false;
  });
  $(".slide").click(function(){
    document.location.href = $(this).find("a").attr("href");
  });
  $("#site-menu ul").find("a").addClass("vtip");
  $("#site-menu ul li ul li:last-child").addClass("bottom");
  $("#site-menu ul li ul li").append('<span class="right"></span>');
  $("#site-menu ul li ul").each(function(i){
    i++;
    var minWidth     = $(this).parent().width();
    var currentWidth = $(this).width();
    console.log(' ');
    console.log('(' + currentTime() + ') Sub-menu ' + i + ' > minWidth     = ' + minWidth + 'px');
    console.log('(' + currentTime() + ') Sub-menu ' + i + ' > currentWidth = ' + currentWidth + 'px');
    if(currentWidth > minWidth){
      $(this).children("li").width(currentWidth + 'px');
      $(this).find("li a").css("paddingRight", "0px");
      $(this).find("li a").width((currentWidth - 24) + 'px');
      console.log('(' + currentTime() + ') Sub-menu ' + i + ' > currentWidth applied to all menu items');
    }else{
      $(this).children("li").width(minWidth + 'px');
      $(this).find("li a").css("paddingRight", "0px");
      $(this).find("li a").width((minWidth - 24) + 'px');
      console.log('(' + currentTime() + ') Sub-menu ' + i + ' > minWidth applied to all menu items');
    }
  });
  $("#site-menu ul li ul").parent().mouseover(function(){
    if($(this).find("ul").is(":hidden")){
      $(this).find("ul").slideDown("fast",function(){
        $(this).parent().mouseleave(function(){
          if($(this).find("ul").is(":visible")){
            $(this).find("ul").slideUp('fast');
          }
        });
      });
    }
  });
  $('#tweetbox p .post').html('Tweets worden geladen...');
  loadTweets(true);
  vtip();
});
