rem: onHover:     Sortable.onHover, greedy:      !options.dropOnEmpty 
add: onHover:     Sortable.onHover  }  var options_for_tree = { onHover:      Sortable.onEmptyHover, overlap:      options.overlap, containment:  options.containment, hoverclass:   options.hoverclass 
context:   create: function(element) {    element = $(element);    var options = Object.extend({       element:     element,      tag:         'li',       // assumes li children, override with tag: 'tagname'      dropOnEmpty: false,      tree:        false,      // fixme: unimplemented      overlap:     'vertical', // one of 'vertical', 'horizontal'      constraint:  'vertical', // one of 'vertical', 'horizontal', false      containment: element,    // also takes array of elements (or id's); or false      handle:      false,      // or a CSS class      only:        false,      hoverclass:  null,      ghosting:    false,      scroll:      false,      scrollSensitivity: 20,      scrollSpeed: 15,      format:      /^[^_]*_(.*)$/,      onChange:    Prototype.emptyFunction,      onUpdate:    Prototype.emptyFunction    }, arguments[1] || {});    // clear any old sortable with same element    this.destroy(element);    // build options for the draggables    var options_for_draggable = {      revert:      true,      scroll:      options.scroll,      scrollSpeed: options.scrollSpeed,      scrollSensitivity: options.scrollSensitivity,      ghosting:    options.ghosting,      constraint:  options.constraint,      handle:      options.handle };    if(options.starteffect)      options_for_draggable.starteffect = options.starteffect;    if(options.reverteffect)      options_for_draggable.reverteffect = options.reverteffect;    else      if(options.ghosting) options_for_draggable.reverteffect = function(element) {        element.style.top  = 0;        element.style.left = 0;      };    if(options.endeffect)      options_for_draggable.endeffect = options.endeffect;    if(options.zindex)      options_for_draggable.zindex = options.zindex;    // build options for the droppables      var options_for_droppable = {      overlap:     options.overlap,      containment: options.containment,      hoverclass:  options.hoverclass,      onHover:     Sortable.onHover,      greedy:      !options.dropOnEmpty    }    // fix for gecko engine    Element.cleanWhitespace(element);     options.draggables = [];    options.droppables = [];    // make it so    // drop on empty handling    if(options.dropOnEmpty) {      Droppables.add(element,        {containment: options.containment, onHover: Sortable.onEmptyHover, greedy: false});      options.droppables.push(element);    }    (this.findElements(element, options) || []).each( function(e) {      // handles are per-draggable      var handle = options.handle ?         Element.childrenWithClassName(e, options.handle)[0] : e;          options.draggables.push(        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));      Droppables.add(e, options_for_droppable);      options.droppables.push(e);          });    // keep reference    this.sortables.push(options);    // for onupdate    Draggables.addObserver(new SortableObserver(element, options.onUpdate));  },
meta: 287	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/287/bb2276098a5a21c35e5ee72b3097bd9d7caa919f/dragdrop.js/clean/railties/html/javascripts/dragdrop.js