docs: function (container, images, options) {
      this.options = $.extend({}, $.fn.backstretch.defaults, options || {});
  
      this.firstShow = true;
  
      // Process options
      processOptions(this.options, true);
  
      /* In its simplest form, we allow Backstretch to be called on an image path.
       * e.g. $.backstretch('/path/to/image.jpg')
       * So, we need to turn this back into an array.
       */
      this.images = processImagesArray($.isArray(images) ? images : [images]);
  
      /**
       * Paused-Option
       */
      if (this.options.paused) {
        this.paused = true;
      }
  
      /**
       * Start-Option (Index)
       */
      if (this.options.start >= this.images.length) {
        this.options.start = this.images.length - 1;
      }
      if (this.options.start < 0) {
        this.options.start = 0;
      }
  
      // Convenience reference to know if the container is body.
      this.isBody = container === document.body;
  
      /* We're keeping track of a few different elements
       *
       * Container: the element that Backstretch was called on.
       * Wrap: a DIV that we place the image into, so we can hide the overflow.
       * Root: Convenience reference to help calculate the correct height.
       */
      var $window = $(window);
      this.$container = $(container);
      this.$root = this.isBody ? supportsFixedPosition ? $window : $(document) : this.$container;
  
      this.originalImages = this.images;
      this.images = optimalSizeImages(
        this.options.alwaysTestWindowResolution ? $window : this.$root,
        this.originalImages);
  
      /**
       * Pre-Loading.
       * This is the first image, so we will preload a minimum of 1 images.
       */
      preload(this.images, this.options.start || 0, this.options.preload || 1);
  
      // Don't create a new wrap if one already exists (from a previous instance of Backstretch)
      var $existing = this.$container.children(".backstretch").first();
      this.$wrap = $existing.length ? $existing :
        $('<div class="backstretch"></div>')
          .css(this.options.bypassCss ? {} : styles.wrap)
          .appendTo(this.$container);
  
      if (!this.options.bypassCss) {
  
        // Non-body elements need some style adjustments
        if (!this.isBody) {
          // If the container is statically positioned, we need to make it relative,
          // and if no zIndex is defined, we should set it to zero.
          var position = this.$container.css('position')
            , zIndex = this.$container.css('zIndex');
  
          this.$container.css({
            position: position === 'static' ? 'relative' : position
            , zIndex: zIndex === 'auto' ? 0 : zIndex
          });
  
          // Needs a higher z-index
          this.$wrap.css({zIndex: -999998});
        }
  
        // Fixed or absolute positioning?
        this.$wrap.css({
          position: this.isBody && supportsFixedPosition ? 'fixed' : 'absolute'
        });
  
      }
  
      // Set the first image
      this.index = this.options.start;
      this.show(this.index);
  
      // Listen for resize
      $window.on('resize.backstretch', $.proxy(this.resize, this))
             .on('orientationchange.backstretch', $.proxy(function () {
               // Need to do this in order to get the right window height
               if (this.isBody && window.pageYOffset === 0) {
                 window.scrollTo(0, 1);
                 this.resize();
               }
             }, this));
    }