rem: for (var i = 0; i < elements.length; i++) {  var handle = options.handle ? Element.Class.childrenWith(elements[i], options.handle)[0] : elements[i]; options.draggables.push(new Draggable(elements[i], Object.extend(options_for_draggable, { handle: handle }))); Droppables.add(elements[i], options_for_droppable);  options.droppables.push(elements[i]); 
add: if(elements) { for (var i = 0; i < elements.length; i++) {  var handle = options.handle ? Element.Class.childrenWith(elements[i], options.handle)[0] : elements[i]; options.draggables.push(new Draggable(elements[i], Object.extend(options_for_draggable, { handle: handle }))); Droppables.add(elements[i], options_for_droppable);  options.droppables.push(elements[i]); } 
context:   create: function(element) {    var 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,      onChange:    function() {},      onUpdate:    function() {}    }, arguments[1] || {});        // clear any old sortable with same element    this.destroy(element);        // build options for the draggables    var options_for_draggable = {      revert:      true,      ghosting:    options.ghosting,      constraint:  options.constraint,      handle:      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);    }         var elements = this.findElements(element, options);    for (var i = 0; i < elements.length; i++) {      // handles are per-draggable      var handle = options.handle ?         Element.Class.childrenWith(elements[i], options.handle)[0] : elements[i];          options.draggables.push(new Draggable(elements[i], Object.extend(options_for_draggable, { handle: handle })));          Droppables.add(elements[i], options_for_droppable);            options.droppables.push(elements[i]);    }       // keep reference    this.sortables.push(options);        // for onupdate    Draggables.addObserver(new SortableObserver(element, options.onUpdate));  },
meta: 4053	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/4053/cb25bf7acc696df021e590fb479c6b594aec1ec0/dragdrop.js/clean/src/dragdrop.js