old_contents:   prototype.build = function () {
      var $this = this.$element,
          $clone = this.$clone,
          options = this.options,
          $cropper,
          $cropBox;
  
      if (!this.ready) {
        return;
      }
  
      if (this.built) {
        this.unbuild();
      }
  
      // Create cropper elements
      this.$cropper = $cropper = $(Cropper.TEMPLATE);
  
      // Hide the original image
      $this.addClass(CLASS_HIDDEN);
  
      // Show the clone iamge
      $clone.removeClass(CLASS_HIDE);
  
      this.$container = $this.parent().append($cropper);
      this.$canvas = $cropper.find('.cropper-canvas').append($clone);
      this.$dragBox = $cropper.find('.cropper-drag-box');
      this.$cropBox = $cropBox = $cropper.find('.cropper-crop-box');
      this.$viewBox = $cropper.find('.cropper-view-box');
  
      this.addListeners();
      this.initPreview();
  
      // Format aspect ratio
      options.aspectRatio = num(options.aspectRatio) || NaN; // 0 -> NaN, 'auto' -> NaN
  
      if (options.autoCrop) {
        this.cropped = true;
  
        if (options.modal) {
          this.$dragBox.addClass(CLASS_MODAL);
        }
      } else {
        $cropBox.addClass(CLASS_HIDDEN);
      }
  
      if (options.background) {
        $cropper.addClass(CLASS_BG);
      }
  
      if (!options.highlight) {
        $cropBox.find('.cropper-face').addClass(CLASS_INVISIBLE);
      }
  
      if (!options.guides) {
        $cropBox.find('.cropper-dashed').addClass(CLASS_HIDDEN);
      }
  
      if (!options.movable) {
        $cropBox.find('.cropper-face').data('drag', 'move');
      }
  
      if (!options.resizable) {
        $cropBox.find('.cropper-line, .cropper-point').addClass(CLASS_HIDDEN);
      }
  
      this.setDragMode(options.dragCrop ? 'crop' : 'move');
  
      this.built = true;
      this.render();
      $this.one(EVENT_BUILT, options.built).trigger(EVENT_BUILT); // Only trigger once
    };
  
    prototype.unbuild = function () {
      if (!this.built) {
        return;
      }
  
      this.built = false;
      this.removeListeners();
  
      this.resetPreview();
      this.$preview = null;
  
      this.$viewBox = null;
      this.$cropBox = null;
      this.$dragBox = null;
      this.$canvas = null;
      this.$container = null;
  
      this.$cropper.remove();
      this.$cropper = null;
    };
  
new_contents:   prototype.build = function () {
      var $this = this.$element,
          $clone = this.$clone,
          options = this.options,
          $cropper,
          $cropBox;
  
      if (!this.ready) {
        return;
      }
  
      if (this.built) {
        this.unbuild();
      }
  
      // Create cropper elements
      this.$cropper = $cropper = $(Cropper.TEMPLATE);
  
      // Hide the original image
      $this.addClass(CLASS_HIDDEN);
  
      // Show the clone iamge
      $clone.removeClass(CLASS_HIDE);
  
      this.$container = $this.parent().append($cropper);
      this.$canvas = $cropper.find('.cropper-canvas').append($clone);
      this.$dragBox = $cropper.find('.cropper-drag-box');
      this.$cropBox = $cropBox = $cropper.find('.cropper-crop-box');
      this.$viewBox = $cropper.find('.cropper-view-box');
  
      this.addListeners();
      this.initPreview();
  
      // Format aspect ratio
      options.aspectRatio = num(options.aspectRatio) || NaN; // 0 -> NaN, 'auto' -> NaN
  
      if (options.autoCrop) {
        this.cropped = true;
  
        if (options.modal) {
          this.$dragBox.addClass(CLASS_MODAL);
        }
      } else {
        $cropBox.addClass(CLASS_HIDDEN);
      }
  
      if (options.background) {
        $cropper.addClass(CLASS_BG);
      }
  
      if (!options.highlight) {
        $cropBox.find('.cropper-face').addClass(CLASS_INVISIBLE);
      }
  
      if (!options.guides) {
        $cropBox.find('.cropper-dashed').addClass(CLASS_HIDDEN);
      }
  
      if (!options.movable) {
        $cropBox.find('.cropper-face').data('drag', 'move');
      }
  
      if (!options.resizable) {
        $cropBox.find('.cropper-line, .cropper-point').addClass(CLASS_HIDDEN);
      }
  
      this.setDragMode(options.dragCrop ? 'crop' : 'move');
  
      this.built = true;
      this.render();
      $this.one(EVENT_BUILT, options.built).trigger(EVENT_BUILT); // Only trigger once
    };
  
    prototype.unbuild = function () {
      if (!this.built) {
        return;
      }
  
      this.built = false;
      this.container = null;
      this.canvas = null;
      this.cropBox = null; // This is necessary when replace
      this.removeListeners();
  
      this.resetPreview();
      this.$preview = null;
  
      this.$viewBox = null;
      this.$cropBox = null;
      this.$dragBox = null;
      this.$canvas = null;
      this.$container = null;
  
      this.$cropper.remove();
      this.$cropper = null;
    };
  
subject: Reset main objects when unbuild