Ignore:
Timestamp:
Aug 6, 2009, 11:21:29 PM (15 years ago)
Author:
KOBAYASHI, Shinji
Message:

adjust hierarchy

Location:
ruby/branches/0.5
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ruby/branches/0.5/public/javascripts/dragdrop.js

    r164 r169  
    11// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
    2 //           (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
    3 // 
     2//           (c) 2005-2008 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
     3//
    44// script.aculo.us is freely distributable under the terms of an MIT-style license.
    55// For details, see the script.aculo.us web site: http://script.aculo.us/
     
    3333      }
    3434    }
    35    
     35
    3636    if(options.accept) options.accept = [options.accept].flatten();
    3737
     
    4141    this.drops.push(options);
    4242  },
    43  
     43
    4444  findDeepestChild: function(drops) {
    4545    deepest = drops[0];
    46      
     46
    4747    for (i = 1; i < drops.length; ++i)
    4848      if (Element.isParent(drops[i].element, deepest.element))
    4949        deepest = drops[i];
    50    
     50
    5151    return deepest;
    5252  },
     
    5555    var containmentNode;
    5656    if(drop.tree) {
    57       containmentNode = element.treeNode; 
     57      containmentNode = element.treeNode;
    5858    } else {
    5959      containmentNode = element.parentNode;
     
    6161    return drop._containers.detect(function(c) { return containmentNode == c });
    6262  },
    63  
     63
    6464  isAffected: function(point, element, drop) {
    6565    return (
     
    6868        this.isContained(element, drop)) &&
    6969      ((!drop.accept) ||
    70         (Element.classNames(element).detect( 
     70        (Element.classNames(element).detect(
    7171          function(v) { return drop.accept.include(v) } ) )) &&
    7272      Position.within(drop.element, point[0], point[1]) );
     
    8888    if(!this.drops.length) return;
    8989    var drop, affected = [];
    90    
     90
    9191    this.drops.each( function(drop) {
    9292      if(Droppables.isAffected(point, element, drop))
    9393        affected.push(drop);
    9494    });
    95        
     95
    9696    if(affected.length>0)
    9797      drop = Droppables.findDeepestChild(affected);
     
    102102      if(drop.onHover)
    103103        drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
    104      
     104
    105105      if (drop != this.last_active) Droppables.activate(drop);
    106106    }
     
    113113    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
    114114      if (this.last_active.onDrop) {
    115         this.last_active.onDrop(element, this.last_active.element, event); 
    116         return true; 
     115        this.last_active.onDrop(element, this.last_active.element, event);
     116        return true;
    117117      }
    118118  },
     
    122122      this.deactivate(this.last_active);
    123123  }
    124 }
     124};
    125125
    126126var Draggables = {
    127127  drags: [],
    128128  observers: [],
    129  
     129
    130130  register: function(draggable) {
    131131    if(this.drags.length == 0) {
     
    133133      this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
    134134      this.eventKeypress  = this.keyPress.bindAsEventListener(this);
    135      
     135
    136136      Event.observe(document, "mouseup", this.eventMouseUp);
    137137      Event.observe(document, "mousemove", this.eventMouseMove);
     
    140140    this.drags.push(draggable);
    141141  },
    142  
     142
    143143  unregister: function(draggable) {
    144144    this.drags = this.drags.reject(function(d) { return d==draggable });
     
    149149    }
    150150  },
    151  
     151
    152152  activate: function(draggable) {
    153     if(draggable.options.delay) { 
    154       this._timeout = setTimeout(function() { 
    155         Draggables._timeout = null; 
    156         window.focus(); 
    157         Draggables.activeDraggable = draggable; 
    158       }.bind(this), draggable.options.delay); 
     153    if(draggable.options.delay) {
     154      this._timeout = setTimeout(function() {
     155        Draggables._timeout = null;
     156        window.focus();
     157        Draggables.activeDraggable = draggable;
     158      }.bind(this), draggable.options.delay);
    159159    } else {
    160160      window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
     
    162162    }
    163163  },
    164  
     164
    165165  deactivate: function() {
    166166    this.activeDraggable = null;
    167167  },
    168  
     168
    169169  updateDrag: function(event) {
    170170    if(!this.activeDraggable) return;
     
    174174    if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
    175175    this._lastPointer = pointer;
    176    
     176
    177177    this.activeDraggable.updateDrag(event, pointer);
    178178  },
    179  
     179
    180180  endDrag: function(event) {
    181     if(this._timeout) { 
    182       clearTimeout(this._timeout); 
    183       this._timeout = null; 
     181    if(this._timeout) {
     182      clearTimeout(this._timeout);
     183      this._timeout = null;
    184184    }
    185185    if(!this.activeDraggable) return;
     
    188188    this.activeDraggable = null;
    189189  },
    190  
     190
    191191  keyPress: function(event) {
    192192    if(this.activeDraggable)
    193193      this.activeDraggable.keyPress(event);
    194194  },
    195  
     195
    196196  addObserver: function(observer) {
    197197    this.observers.push(observer);
    198198    this._cacheObserverCallbacks();
    199199  },
    200  
     200
    201201  removeObserver: function(element) {  // element instead of observer fixes mem leaks
    202202    this.observers = this.observers.reject( function(o) { return o.element==element });
    203203    this._cacheObserverCallbacks();
    204204  },
    205  
     205
    206206  notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'
    207207    if(this[eventName+'Count'] > 0)
     
    211211    if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
    212212  },
    213  
     213
    214214  _cacheObserverCallbacks: function() {
    215215    ['onStart','onEnd','onDrag'].each( function(eventName) {
     
    219219    });
    220220  }
    221 }
     221};
    222222
    223223/*--------------------------------------------------------------------------*/
     
    235235      endeffect: function(element) {
    236236        var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
    237         new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, 
     237        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
    238238          queue: {scope:'_draggable', position:'end'},
    239           afterFinish: function(){ 
    240             Draggable._dragging[element] = false 
     239          afterFinish: function(){
     240            Draggable._dragging[element] = false
    241241          }
    242         }); 
     242        });
    243243      },
    244244      zindex: 1000,
     
    251251      delay: 0
    252252    };
    253    
     253
    254254    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
    255255      Object.extend(defaults, {
     
    257257          element._opacity = Element.getOpacity(element);
    258258          Draggable._dragging[element] = true;
    259           new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); 
     259          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
    260260        }
    261261      });
    262    
     262
    263263    var options = Object.extend(defaults, arguments[1] || { });
    264264
    265265    this.element = $(element);
    266    
     266
    267267    if(options.handle && Object.isString(options.handle))
    268268      this.handle = this.element.down('.'+options.handle, 0);
    269    
     269
    270270    if(!this.handle) this.handle = $(options.handle);
    271271    if(!this.handle) this.handle = this.element;
    272    
     272
    273273    if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
    274274      options.scroll = $(options.scroll);
     
    276276    }
    277277
    278     Element.makePositioned(this.element); // fix IE   
     278    Element.makePositioned(this.element); // fix IE
    279279
    280280    this.options  = options;
    281     this.dragging = false;   
     281    this.dragging = false;
    282282
    283283    this.eventMouseDown = this.initDrag.bindAsEventListener(this);
    284284    Event.observe(this.handle, "mousedown", this.eventMouseDown);
    285    
     285
    286286    Draggables.register(this);
    287287  },
    288  
     288
    289289  destroy: function() {
    290290    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
    291291    Draggables.unregister(this);
    292292  },
    293  
     293
    294294  currentDelta: function() {
    295295    return([
     
    297297      parseInt(Element.getStyle(this.element,'top') || '0')]);
    298298  },
    299  
     299
    300300  initDrag: function(event) {
    301301    if(!Object.isUndefined(Draggable._dragging[this.element]) &&
    302302      Draggable._dragging[this.element]) return;
    303     if(Event.isLeftClick(event)) {   
     303    if(Event.isLeftClick(event)) {
    304304      // abort on form elements, fixes a Firefox issue
    305305      var src = Event.element(event);
     
    310310        tag_name=='BUTTON' ||
    311311        tag_name=='TEXTAREA')) return;
    312        
     312
    313313      var pointer = [Event.pointerX(event), Event.pointerY(event)];
    314314      var pos     = Position.cumulativeOffset(this.element);
    315315      this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
    316      
     316
    317317      Draggables.activate(this);
    318318      Event.stop(event);
    319319    }
    320320  },
    321  
     321
    322322  startDrag: function(event) {
    323323    this.dragging = true;
    324324    if(!this.delta)
    325325      this.delta = this.currentDelta();
    326    
     326
    327327    if(this.options.zindex) {
    328328      this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
    329329      this.element.style.zIndex = this.options.zindex;
    330330    }
    331    
     331
    332332    if(this.options.ghosting) {
    333333      this._clone = this.element.cloneNode(true);
    334       this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
    335       if (!this.element._originallyAbsolute)
     334      this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
     335      if (!this._originallyAbsolute)
    336336        Position.absolutize(this.element);
    337337      this.element.parentNode.insertBefore(this._clone, this.element);
    338338    }
    339    
     339
    340340    if(this.options.scroll) {
    341341      if (this.options.scroll == window) {
     
    348348      }
    349349    }
    350    
     350
    351351    Draggables.notify('onStart', this, event);
    352        
     352
    353353    if(this.options.starteffect) this.options.starteffect(this.element);
    354354  },
    355  
     355
    356356  updateDrag: function(event, pointer) {
    357357    if(!this.dragging) this.startDrag(event);
    358    
     358
    359359    if(!this.options.quiet){
    360360      Position.prepare();
    361361      Droppables.show(pointer, this.element);
    362362    }
    363    
     363
    364364    Draggables.notify('onDrag', this, event);
    365    
     365
    366366    this.draw(pointer);
    367367    if(this.options.change) this.options.change(this);
    368    
     368
    369369    if(this.options.scroll) {
    370370      this.stopScrolling();
    371      
     371
    372372      var p;
    373373      if (this.options.scroll == window) {
     
    387387      this.startScrolling(speed);
    388388    }
    389    
     389
    390390    // fix AppleWebKit rendering
    391391    if(Prototype.Browser.WebKit) window.scrollBy(0,0);
    392    
     392
    393393    Event.stop(event);
    394394  },
    395  
     395
    396396  finishDrag: function(event, success) {
    397397    this.dragging = false;
    398    
     398
    399399    if(this.options.quiet){
    400400      Position.prepare();
     
    404404
    405405    if(this.options.ghosting) {
    406       if (!this.element._originallyAbsolute)
     406      if (!this._originallyAbsolute)
    407407        Position.relativize(this.element);
    408       delete this.element._originallyAbsolute;
     408      delete this._originallyAbsolute;
    409409      Element.remove(this._clone);
    410410      this._clone = null;
    411411    }
    412412
    413     var dropped = false; 
    414     if(success) { 
    415       dropped = Droppables.fire(event, this.element); 
    416       if (!dropped) dropped = false; 
     413    var dropped = false;
     414    if(success) {
     415      dropped = Droppables.fire(event, this.element);
     416      if (!dropped) dropped = false;
    417417    }
    418418    if(dropped && this.options.onDropped) this.options.onDropped(this.element);
     
    421421    var revert = this.options.revert;
    422422    if(revert && Object.isFunction(revert)) revert = revert(this.element);
    423    
     423
    424424    var d = this.currentDelta();
    425425    if(revert && this.options.reverteffect) {
     
    434434      this.element.style.zIndex = this.originalZ;
    435435
    436     if(this.options.endeffect) 
     436    if(this.options.endeffect)
    437437      this.options.endeffect(this.element);
    438      
     438
    439439    Draggables.deactivate(this);
    440440    Droppables.reset();
    441441  },
    442  
     442
    443443  keyPress: function(event) {
    444444    if(event.keyCode!=Event.KEY_ESC) return;
     
    446446    Event.stop(event);
    447447  },
    448  
     448
    449449  endDrag: function(event) {
    450450    if(!this.dragging) return;
     
    453453    Event.stop(event);
    454454  },
    455  
     455
    456456  draw: function(point) {
    457457    var pos = Position.cumulativeOffset(this.element);
     
    460460      pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
    461461    }
    462    
     462
    463463    var d = this.currentDelta();
    464464    pos[0] -= d[0]; pos[1] -= d[1];
    465    
     465
    466466    if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
    467467      pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
    468468      pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
    469469    }
    470    
    471     var p = [0,1].map(function(i){ 
    472       return (point[i]-pos[i]-this.offset[i]) 
     470
     471    var p = [0,1].map(function(i){
     472      return (point[i]-pos[i]-this.offset[i])
    473473    }.bind(this));
    474    
     474
    475475    if(this.options.snap) {
    476476      if(Object.isFunction(this.options.snap)) {
     
    479479      if(Object.isArray(this.options.snap)) {
    480480        p = p.map( function(v, i) {
    481           return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this))
     481          return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this));
    482482      } else {
    483483        p = p.map( function(v) {
    484           return (v/this.options.snap).round()*this.options.snap }.bind(this))
     484          return (v/this.options.snap).round()*this.options.snap }.bind(this));
    485485      }
    486486    }}
    487    
     487
    488488    var style = this.element.style;
    489489    if((!this.options.constraint) || (this.options.constraint=='horizontal'))
     
    491491    if((!this.options.constraint) || (this.options.constraint=='vertical'))
    492492      style.top  = p[1] + "px";
    493    
     493
    494494    if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
    495495  },
    496  
     496
    497497  stopScrolling: function() {
    498498    if(this.scrollInterval) {
     
    502502    }
    503503  },
    504  
     504
    505505  startScrolling: function(speed) {
    506506    if(!(speed[0] || speed[1])) return;
     
    509509    this.scrollInterval = setInterval(this.scroll.bind(this), 10);
    510510  },
    511  
     511
    512512  scroll: function() {
    513513    var current = new Date();
     
    525525      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;
    526526    }
    527    
     527
    528528    Position.prepare();
    529529    Droppables.show(Draggables._lastPointer, this.element);
     
    539539      this.draw(Draggables._lastScrollPointer);
    540540    }
    541    
     541
    542542    if(this.options.change) this.options.change(this);
    543543  },
    544  
     544
    545545  _getWindowScroll: function(w) {
    546546    var T, L, W, H;
     
    561561      } else {
    562562        W = body.offsetWidth;
    563         H = body.offsetHeight
     563        H = body.offsetHeight;
    564564      }
    565565    }
     
    578578    this.lastValue = Sortable.serialize(this.element);
    579579  },
    580  
     580
    581581  onStart: function() {
    582582    this.lastValue = Sortable.serialize(this.element);
    583583  },
    584  
     584
    585585  onEnd: function() {
    586586    Sortable.unmark();
     
    592592var Sortable = {
    593593  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
    594  
     594
    595595  sortables: { },
    596  
     596
    597597  _findRootElement: function(element) {
    598     while (element.tagName.toUpperCase() != "BODY") { 
     598    while (element.tagName.toUpperCase() != "BODY") {
    599599      if(element.id && Sortable.sortables[element.id]) return element;
    600600      element = element.parentNode;
     
    607607    return Sortable.sortables[element.id];
    608608  },
    609  
     609
    610610  destroy: function(element){
    611     var s = Sortable.options(element);
    612    
     611    element = $(element);
     612    var s = Sortable.sortables[element.id];
     613
    613614    if(s) {
    614615      Draggables.removeObserver(s.element);
    615616      s.droppables.each(function(d){ Droppables.remove(d) });
    616617      s.draggables.invoke('destroy');
    617      
     618
    618619      delete Sortable.sortables[s.element.id];
    619620    }
     
    622623  create: function(element) {
    623624    element = $(element);
    624     var options = Object.extend({ 
     625    var options = Object.extend({
    625626      element:     element,
    626627      tag:         'li',       // assumes li children, override with tag: 'tagname'
     
    636637      hoverclass:  null,
    637638      ghosting:    false,
    638       quiet:       false, 
     639      quiet:       false,
    639640      scroll:      false,
    640641      scrollSensitivity: 20,
    641642      scrollSpeed: 15,
    642643      format:      this.SERIALIZE_RULE,
    643      
    644       // these take arrays of elements or ids and can be 
     644
     645      // these take arrays of elements or ids and can be
    645646      // used for better initialization performance
    646647      elements:    false,
    647648      handles:     false,
    648      
     649
    649650      onChange:    Prototype.emptyFunction,
    650651      onUpdate:    Prototype.emptyFunction
     
    683684      options_for_draggable.zindex = options.zindex;
    684685
    685     // build options for the droppables 
     686    // build options for the droppables
    686687    var options_for_droppable = {
    687688      overlap:     options.overlap,
     
    690691      hoverclass:  options.hoverclass,
    691692      onHover:     Sortable.onHover
    692     }
    693    
     693    };
     694
    694695    var options_for_tree = {
    695696      onHover:      Sortable.onEmptyHover,
     
    697698      containment:  options.containment,
    698699      hoverclass:   options.hoverclass
    699     }
     700    };
    700701
    701702    // fix for gecko engine
    702     Element.cleanWhitespace(element); 
     703    Element.cleanWhitespace(element);
    703704
    704705    options.draggables = [];
     
    713714    (options.elements || this.findElements(element, options) || []).each( function(e,i) {
    714715      var handle = options.handles ? $(options.handles[i]) :
    715         (options.handle ? $(e).select('.' + options.handle)[0] : e); 
     716        (options.handle ? $(e).select('.' + options.handle)[0] : e);
    716717      options.draggables.push(
    717718        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
    718719      Droppables.add(e, options_for_droppable);
    719720      if(options.tree) e.treeNode = element;
    720       options.droppables.push(e);     
     721      options.droppables.push(e);
    721722    });
    722    
     723
    723724    if(options.tree) {
    724725      (Sortable.findTreeElements(element, options) || []).each( function(e) {
     
    742743      element, options.only, options.tree ? true : false, options.tag);
    743744  },
    744  
     745
    745746  findTreeElements: function(element, options) {
    746747    return Element.findChildren(
     
    759760        element.style.visibility = "hidden"; // fix gecko rendering
    760761        dropon.parentNode.insertBefore(element, dropon);
    761         if(dropon.parentNode!=oldParentNode) 
     762        if(dropon.parentNode!=oldParentNode)
    762763          Sortable.options(oldParentNode).onChange(element);
    763764        Sortable.options(dropon.parentNode).onChange(element);
     
    770771        element.style.visibility = "hidden"; // fix gecko rendering
    771772        dropon.parentNode.insertBefore(element, nextElement);
    772         if(dropon.parentNode!=oldParentNode) 
     773        if(dropon.parentNode!=oldParentNode)
    773774          Sortable.options(oldParentNode).onChange(element);
    774775        Sortable.options(dropon.parentNode).onChange(element);
     
    776777    }
    777778  },
    778  
     779
    779780  onEmptyHover: function(element, dropon, overlap) {
    780781    var oldParentNode = element.parentNode;
    781782    var droponOptions = Sortable.options(dropon);
    782        
     783
    783784    if(!Element.isParent(dropon, element)) {
    784785      var index;
    785      
     786
    786787      var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
    787788      var child = null;
    788            
     789
    789790      if(children) {
    790791        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
    791        
     792
    792793        for (index = 0; index < children.length; index += 1) {
    793794          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
     
    802803        }
    803804      }
    804      
     805
    805806      dropon.insertBefore(element, child);
    806      
     807
    807808      Sortable.options(oldParentNode).onChange(element);
    808809      droponOptions.onChange(element);
     
    817818    // mark on ghosting only
    818819    var sortable = Sortable.options(dropon.parentNode);
    819     if(sortable && !sortable.ghosting) return; 
     820    if(sortable && !sortable.ghosting) return;
    820821
    821822    if(!Sortable._marker) {
    822       Sortable._marker = 
     823      Sortable._marker =
    823824        ($('dropmarker') || Element.extend(document.createElement('DIV'))).
    824825          hide().addClassName('dropmarker').setStyle({position:'absolute'});
    825826      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
    826     }   
     827    }
    827828    var offsets = Position.cumulativeOffset(dropon);
    828829    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
    829    
     830
    830831    if(position=='after')
    831       if(sortable.overlap == 'horizontal') 
     832      if(sortable.overlap == 'horizontal')
    832833        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
    833834      else
    834835        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
    835    
     836
    836837    Sortable._marker.show();
    837838  },
    838  
     839
    839840  _tree: function(element, options, parent) {
    840841    var children = Sortable.findElements(element, options) || [];
    841  
     842
    842843    for (var i = 0; i < children.length; ++i) {
    843844      var match = children[i].id.match(options.format);
    844845
    845846      if (!match) continue;
    846      
     847
    847848      var child = {
    848849        id: encodeURIComponent(match ? match[1] : null),
     
    852853        position: parent.children.length,
    853854        container: $(children[i]).down(options.treeTag)
    854       }
    855      
     855      };
     856
    856857      /* Get the element containing the children and recurse over it */
    857858      if (child.container)
    858         this._tree(child.container, options, child)
    859      
     859        this._tree(child.container, options, child);
     860
    860861      parent.children.push (child);
    861862    }
    862863
    863     return parent; 
     864    return parent;
    864865  },
    865866
     
    874875      format: sortableOptions.format
    875876    }, arguments[1] || { });
    876    
     877
    877878    var root = {
    878879      id: null,
     
    881882      container: element,
    882883      position: 0
    883     }
    884    
     884    };
     885
    885886    return Sortable._tree(element, options, root);
    886887  },
     
    898899    element = $(element);
    899900    var options = Object.extend(this.options(element), arguments[1] || { });
    900    
     901
    901902    return $(this.findElements(element, options) || []).map( function(item) {
    902903      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
     
    907908    element = $(element);
    908909    var options = Object.extend(this.options(element), arguments[2] || { });
    909    
     910
    910911    var nodeMap = { };
    911912    this.findElements(element, options).each( function(n) {
     
    914915        n.parentNode.removeChild(n);
    915916    });
    916    
     917
    917918    new_sequence.each(function(ident) {
    918919      var n = nodeMap[ident];
     
    923924    });
    924925  },
    925  
     926
    926927  serialize: function(element) {
    927928    element = $(element);
     
    929930    var name = encodeURIComponent(
    930931      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
    931    
     932
    932933    if (options.tree) {
    933934      return Sortable.tree(element, arguments[1]).children.map( function (item) {
    934         return [name + Sortable._constructIndex(item) + "[id]=" + 
     935        return [name + Sortable._constructIndex(item) + "[id]=" +
    935936                encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
    936937      }).flatten().join('&');
     
    941942    }
    942943  }
    943 }
     944};
    944945
    945946// Returns true if child is contained within element
     
    948949  if (child.parentNode == element) return true;
    949950  return Element.isParent(child.parentNode, element);
    950 }
    951 
    952 Element.findChildren = function(element, only, recursive, tagName) {   
     951};
     952
     953Element.findChildren = function(element, only, recursive, tagName) {
    953954  if(!element.hasChildNodes()) return null;
    954955  tagName = tagName.toUpperCase();
     
    966967
    967968  return (elements.length>0 ? elements.flatten() : []);
    968 }
     969};
    969970
    970971Element.offsetSize = function (element, type) {
    971972  return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
    972 }
     973};
Note: See TracChangeset for help on using the changeset viewer.