(function() {
  var $, currentSlide, methods, settings;
  $ = jQuery;
  currentSlide = 0;
  settings = {
    speed: '300'
  };
  methods = {
    init: function(options) {
      return this.hover(function() {
        this.self = $(this);
        return methods.open(this.self);
      }, function() {
        return methods.close(this.self);
      });
    },
    open: function(element) {
      currentSlide = 0;
      element.addClass('act');
      element.animate({
        'height': '142px'
      }, settings.speed, 'swing', function() {
        return methods.slide(element);
      });
      element.find('.arrow').fadeOut();
      if (!element.hasClass('surftipp')) {
        element.find('.image').fadeOut();
      }
      return this.interval = setInterval(function() {
        return methods.slide(element);
      }, 3000);
    },
    close: function(element) {
      element.removeClass('act');
      element.stop().find('.layer').fadeOut(function() {
        return element.animate({
          'height': '45px'
        }, settings.speed, 'swing');
      });
      element.find('.arrow').fadeIn();
      if (!element.hasClass('surftipp')) {
        element.find('.image').fadeIn();
      }
      return clearInterval(this.interval);
    },
    slide: function(element) {
      if (element.hasClass('act')) {
        if (element.find('.layer:visible').length > 0 && element.find('.elements').children().length > 1) {
          return element.find('.layer:visible').fadeOut(function() {
            return element.find('.elements').children().eq(currentSlide).fadeIn(function() {
              return methods.iterate(element);
            });
          });
        } else {
          return element.find('.elements').children().eq(0).fadeIn(function() {
            return methods.iterate(element);
          });
        }
      }
    },
    iterate: function(element) {
      if (currentSlide < element.find('.elements').children().length - 1) {
        return currentSlide++;
      } else {
        return currentSlide = 0;
      }
    }
  };
  $.fn.slidebox = function(method) {
    if (method in methods) {
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
    }
    if (typeof method === 'object' || !method) {
      return methods.init.apply(this, arguments);
    }
    return $.error("Method " + method + " does not exist on jQuery.slidebox");
  };
}).call(this);

