/*
jQuery plugin template
v1.0

USAGE
-----

SETTINGS
--------
setting: type (description; default)
*/

jQuery.fn.bannerPlugin = function (settings) {
  // if the selector does not contain any elements, return the jQuery object
  if (this.length == 0) return this;

  // default settings
  var functionSettings = new Object();
  functionSettings.slideType = "leftRight";
  functionSettings.delay = 1000;

  // overwrite settings if supplied
  if (settings != undefined) {
    if (settings.slideType != undefined) functionSettings.slideType = settings.slideType;
    if (settings.delay != undefined) functionSettings.delay = settings.delay;
  } // if

  // Variables
  var banner = $(this);
  var listItemCount = $(this).children().length;
  var allowSlide = true;
  var bannerCount = 1;
  var listItemImgWidth, listItemImgHeight, listImgWidth, listImgHeight, linkNameOne, linkNameTwo;

  // If a side scrolling banner then...
  if (settings.slideType == "leftRight") {
    linkNameOne = "Left Control";
    linkNameTwo = "Right Control";
    listItemImgWidth = $(this).children().width();
    listImgWidth = listItemCount * listItemImgWidth;
    $(this).css({
      "width": listImgWidth,
      "position": "relative",
      "z-index": 103,
      "top": 0,
      "left": 0
    });
  }

  // If an up scrolling banner then...
  else if (settings.slideType == "upDown") {
    linkNameOne = "Down Control";
    linkNameTwo = "Up Control";
    listItemImgHeight = $(this).children().height();
    listImgHeight = listItemCount * listItemImgHeight;
    $(this).css({
      "height": listImgHeight,
      "position": "relative",
      "z-index": 103,
      "top": 0,
      "left": 0
    });
  }

  // appending controls
  this.parent().parent().append("<div class='controlsWrapperLeft'><a href='#' class='leftControl'>" + linkNameOne + "</a></div><div class='controlsWrapperRight'><a href='#' class='rightControl'>" + linkNameTwo + "</a></div>");

  // linkNameOne click
  $("a.rightControl").live("click", function () {
    // Execute if more than two banners and not already animating
    if (allowSlide && (bannerCount < listItemCount)) {
      if (settings.slideType == "leftRight") {
        $(banner).animate({
          left: '-=' + listItemImgWidth
        }, functionSettings.delay, function () { allowSlide = true; bannerCount++; disableButtons(); });
      }
      else if (settings.slideType == "upDown") {
        $(banner).animate({
          top: '-=' + listItemImgHeight
        }, functionSettings.delay, function () { allowSlide = true; bannerCount++; });
      }
    }
    allowSlide = false;
    if (bannerCount == listItemCount) {
      allowSlide = true;
    }
    return false;
  });

  // linkNameTwo click
  $("a.leftControl").live("click", function () {
    if (allowSlide && (bannerCount != 1)) {
      if (settings.slideType == "leftRight") {
        $(banner).animate({
          left: '+=' + listItemImgWidth
        }, functionSettings.delay, function () { allowSlide = true; bannerCount--; disableButtons(); });
      }
      else if (settings.slideType == "upDown") {
        $(banner).animate({
          top: '+=' + listItemImgHeight
        }, functionSettings.delay, function () { allowSlide = true; bannerCount--; });
      }
    }
    allowSlide = false;
    if (bannerCount == 1) {
      allowSlide = true;
    }
    return false;
  });



  disableButtons();
  // Disables buttons once min and max panels are reached
  function disableButtons() {
    if (bannerCount == 1) { $("a.leftControl").addClass("disabled"); }
    else if (bannerCount == listItemCount) { $("a.rightControl").addClass("disabled"); }
    else {
      $("a.leftControl").removeClass("disabled");
      $("a.rightControl").removeClass("disabled");
    }
  }
  // return the jQuery object
  return this;
}
            
