// MILESTONES
function Milestone(sTitle, sDescription, sURL, sImageSrc) {
  this.sTitle = sTitle;
  this.sDescription = sDescription;
  this.sURL = sURL;
  this.sImageSrc = sImageSrc;
}

function getRandomIndex(nLength) {
  var n = Math.floor(Math.random() * nLength);
  return n == nLength ? 0 : n;
}

function showMilestone() {
  var $milestone = $('#milestone');
  if(window.aMilestones == undefined || !aMilestones.length || !$milestone.length) return;
  oMilestone = aMilestones[getRandomIndex(aMilestones.length)];
  $milestone.find('a').attr('href', oMilestone.sURL);
  $('#milestone_image').attr({src: oMilestone.sImageSrc, alt: oMilestone.sTitle});
  $('#milestone_description').html(oMilestone.sDescription);
  $milestone.find('h5').html(oMilestone.sTitle);
}


// EXTERNAL LINKS
function initExternalLinks() {
  $("a[href][rel='external']").attr('target', '_blank');
}


// LINK ARROWS
function addLinkArrows() {
  $links = $('a:not(:has(img), .link)');
  $links.append('<span style="visibility:hidden">&nbsp;&gt;</span>');
  $links.hover(showArrow, hideArrow);
}
function showArrow() { $(this).find('span').css('visibility', 'visible'); }
function hideArrow() { $(this).find('span').css('visibility', 'hidden');  }


// DOCUMENT READY
function documentReadyHandler() {
  showMilestone();
  addLinkArrows();
  initExternalLinks();
}
$(document).ready(documentReadyHandler);