(function($) {
  $.billboard = function(options) {
    init(options);
  };
  
  $.extend($.billboard, {
    settings: {
      billboard: "#billboard",
      slider:    "#billboard_thumbs",
      pages:     "#billboard_pages",
      set_size:  4
    }
  });
  
  /*
    Private Initialization Method
  */
  function init(options) {
    // Make sure we only set things up once
    if ($.billboard.settings.inited) {
      return true;
    } else {
      $.billboard.settings.inited = true; 
    }
    
    // Suck in any changes to our default settings
    $.extend($.billboard.settings, options);
    
    $.billboard.settings.billboard_elem = $($.billboard.settings.billboard);
    $.billboard.settings.slider_elem = $($.billboard.settings.slider);
    $.billboard.settings.pages_elem = $($.billboard.settings.pages);
    
    $.billboard.settings.sets = new Array();
    $.billboard.settings.set_position = 0;
    $.billboard.settings.slide_position = 0;
    
    var slides_num = $.billboard.settings.slider_elem.children().length;
    var slide_pos = 1;
    var sets_num = Math.round(slides_num / settings.set_size);
  
    var set = 0;
    while (set < sets_num) {
      $.billboard.settings.sets[set] = new Array();
    
      var slide = 0;
      while (slide < settings.set_size && slide_pos <= slides_num) {
        $.billboard.settings.sets[set][slide] = $.billboard.settings.slider_elem.contents.filter(':eq('+ slide_pos +')');
      
        slid_pos++;
        slide++;
      }
    
      set++;
    }
  };
})(jQuery);

$(document).ready(function () {
	var billboard = $('#billboard');
	var billboard_slider = $('#billboard_thumbs');
  var billboard_slides = billboard_slider.children();
	var billboard_pages = $('#billboard_pages');
	var current_billboard = billboard_slider.contents().filter('li:first');
	var enable_slide = true;
	
	current_billboard.addClass('current');
	
  var pages = Math.round(billboard_slides.length / 4);
  for (i = pages; i > 0; i -= 1) {
    billboard_pages.append("<li>&#160;</li>");
  }
	
	nextBillboard = function(next_billboard, repeat) {
	  if (!next_billboard) {
	    if (!current_billboard.is(':last-child')) {
	      var next_billboard = current_billboard.next();
	    } else {
	      var next_billboard = current_billboard.parent().contents().filter('li:first');
	      enable_slide = true;
	    }
	  }
	  
	  current_billboard.removeClass('current');
    current_billboard = next_billboard;
    current_billboard.addClass('current');
    
    if (enable_slide) {
      scroll_position = current_billboard.offset().top - billboard_slider.offset().top;
      billboard_slider.animate({scrollTop: '+=' + scroll_position + 'px'}, 1000);
    }
    
    billboard.css('background-image', "url(" + next_billboard.contents().filter('a').contents().filter('img').attr('src') + ")");
    billboard.parent().attr('href', current_billboard.contents().filter('a').attr('href'));

    if (repeat) {
      setTimeout(function() {
        nextBillboard(null, true);
      }, 5000);
    }
	}
	
	billboard_slider.contents().filter('li').each(function(i) {
	  $(this).contents().filter('a').click(function (e) {
	    var next_billboard = $(this).parent();
      nextBillboard(next_billboard);
	    e.preventDefault();
	  });
	});
	
  setTimeout(function() {
    nextBillboard(null, true);
  }, 5000);
  
  $("#billboard_scroll_up").click(function (e) {
    enable_slide = false;
    billboard_slider.animate({scrollTop: '-=' + current_billboard.height() + 'px'}, 500);
  });
  
  $("#billboard_scroll_down").click(function (e) {
    enable_slide = false;
    billboard_slider.animate({scrollTop: '+=' + current_billboard.height() + 'px'}, 500);
  });
});
