anchor.diff:                  }.bind(this)
               });
           },
  -        showOptions: function ($vms, $pools, $folders) {
  -            this
  -                ._displayImagesSelect($vms)
  -                ._displayPoolsSelect($pools)
  -                ._displayFoldersSelect($folders);
  -
  -            this.$options.show();
  +        clearErrors: function (target) {
  +            (target || this.$fetchOptionsError).empty();
  +        },
  +        addError: function (errorHTML, target) {
  +            (target || this.$fetchOptionsError)
  +                    .append($j("<div>").html(errorHTML));
  +        },
  +        _initImagesData: function () {
  +            var self = this,
  +                    rawImagesData = this.$imagesDataElem.val() || '',
  +                    imagesData = rawImagesData && rawImagesData.split(';X;:') || [];
  +
  +            this.imagesData = imagesData.reduce(function (accumulator, imageDataStr) {
  +                var props = imageDataStr.split(';'),
  +                        id;
  +
  +                // drop images without vmName
  +                if (props[0].length) {
  +                    id = self._lastImageId++;
  +                    accumulator[id] = {};
  +                    self._dataKeys.forEach(function(key, index) {
  +                        accumulator[id][key] = props[index];
  +                    });
  +                    self._imagesDataLength++;
  +                }
  +                return accumulator;
  +            }, {});
           },
           _bindHandlers: function () {
               var self = this;
   
               this.$fetchOptionsButton.on('click', this._fetchOptionsClickHandler.bind(this));
               this.$addImageButtons.on('click', this.addImage.bind(this));
  -            this.$image.on('change', this.fetchSnapshots.bind(this));
  -            $j("[name=cloneBehaviour]").on('change', this.toggleCloneOptions.bind(this));
  +            this.$options.on('change', this.selectors.imagesSelect, this.fetchSnapshots.bind(this));
  +            $j("[name=cloneBehaviour]").on('change', function () {
  +                var isClone = $j(this.selectors.activeCloneBehaviour).val() !== 'START',
  +                    $elementsToToggle = $j('.cloneOptionsRow');
  +
  +                $elementsToToggle.toggle(isClone);
  +            }.bind(this));
               this.$image.add(this.$snapshot).on('change', this.validateOptions.bind(this));
               this.$imagesTable.on('click', '.removeVmImageLink', function () {
                   if (confirm('Are you sure?')) {
  
positive.code:             this.$imagesTable.append($row);
          },
          _toggleImagesTable: function (show) {
              this.$imagesTableWrapper.toggle(show);
          },
          _displayImagesSelect: function ($vms) {
              var self = this;
  
              this.$image
                      .find('option, optgroup').remove().end()
                      .append($j('<option>').val('').text('--Please select a VM--'))
                      .append($j('<optgroup>').attr('label', 'Virtual machines'));
  
              $vms.each(function () {
                  if ($j(this).attr('template') == 'false') {
                      self._appendOption(self.$image.find("optgroup[label='Virtual machines']"), $j(this).attr('name'));
                  }
              });
  
              this.$image.append($j("<optgroup>").attr("label", "Templates"));
  
              $vms.each(function () {
                  if ($j(this).attr('template') == 'true') {
                      self._appendOption(self.$image.find("optgroup[label='Templates']"), $j(this).attr('name'));
                  }
              });
  
              return this;
          },
  
negative.code:           </td>
          </tr>
          </table>
      </td>
  </tr>
  <script type="text/javascript">
      BS.Clouds.VMWareVSphere.init();
  </script>
  