
nr.home = new NR_HOME();
$(document).ready(nr.home.init);

function NR_HOME() {
  var banners, bannersDom, bannerHeight, bannerIndex=0, bannerInterval=8000;
  
  this.init = init;
  function init() {
    nr.onTemplateLoad(function() {
      getInterests(3);
      getPhotos(3);
    });
  }
  
  this.getInterests = getInterests;
  function getInterests(count) {
    var list = $('#interests-content').empty();
    if (typeof count != 'number' || count < 0) count = 10;
    $.getJSON('http://feeds.delicious.com/v2/json/nrutman?count=' + count + '&callback=?', function (data, textStatus) {
      var html = [];
      var template = nr.getTemplate().find('#interests-template').html();
      $.each(data, function(i, item) {
        var interestData = {
          'date': nr.parseDate(item.dt),
          'title': item.d,
          'url': item.u
        };
        html.push(String(nr.parseTemplate(template, interestData)).replace(/http\:\/\/nathanrutman.com\/http\:/g, 'http:'));
      });
      list.append(html.join(''));
    });
  }
  
  this.getPhotos = getPhotos;
  function getPhotos(count) {
    var list = $('#photos-content').empty();
    if (typeof count != 'number' || count < 0) count = 10;
    $.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?id=45596226@N00&tags=featured&lang=en-us&format=json&jsoncallback=?', function (data, textStatus) {
      if (data && data.items && data.items.length) {
        var html = [];
        var template = nr.getTemplate().find('#photos-template').html();
        if (count > data.items.length) count = data.items.length;
        var photosUsed = [];
        for (var i=0; i<data.items.length-1; i++) {
          photosUsed[i] = false;
        }
        for (var i=0; i<count; i++) {
          var randomIndex = Math.floor(Math.random() * data.items.length);
          for (var j=0; j<data.items.length; j++) {
            randomIndex = (randomIndex + j) % 20;
            if (photosUsed[randomIndex] == false) {
              photosUsed[randomIndex] = true;
              break;
            }
          }
          var photo = data.items[randomIndex];  // now we have our random photo
          var photoUrl = String(photo.media.m).replace(/_m\.jpg$/g, '_s.jpg');
          var photoData = {
            'date': nr.parseDate(photo.date_taken),
            'img': photoUrl,
            'title': photo.title,
            'url': photo.link
          };
          html.push(String(nr.parseTemplate(template, photoData)).replace(/http\:\/\/nathanrutman.com\/http\:/g, 'http:'));
        }
        list.append(html.join(''));  // insert the html
      }
    });
  }
  
  this.loadBannerImages = loadBannerImages;
  function loadBannerImages(urls) {
    var currentBanner = 1;
    var bannerCount = urls.length;
    var images = urls.slice(0);
    for (var i=0; i<urls.length; i++) {
      setTimeout(function() {
        $('#banner-' + currentBanner++).find('img').attr('src', images.shift());
      }, (bannerInterval / 3 * i) + 10);
    }
  }
  
  this.loadBanners = loadBanners;
  function loadBanners() {
    bannersDom = $('#banners');
    banners = $('#banners > .banner');
    if (banners.length) bannerHeight = banners.eq(0).height();
    if (banners.length > 1) {
      setTimeout(function() {nextBanner(true);}, (bannerInterval / 2));
    }
  }
  
  this.nextBanner = nextBanner;
  function nextBanner(firstRun) {
    if (firstRun == true) {
      setInterval(nextBanner, bannerInterval);
    }
    bannerIndex = (bannerIndex + 1) % banners.length;
    var newTop = ((bannerHeight + 1) * bannerIndex) * (-1);
    if (newTop == 0) {
      bannersDom.fadeOut(500, function() {
        bannersDom.css('top', '-1px');
        bannersDom.fadeIn(500);
      });
    } else {
      bannersDom.animate({top: newTop + 'px'}, {duration: 800, easing: 'swing'});
    }
  }
  
}







