Also to explain why I used that:
Chain.index is the order of the objects in the chain. 0 on one end up to say 10 on the other.
Used with "for each ordered" it will loop over the objects from one end to the other.
We can also make it loop backwards by multiplying chain.index by -1.
I used the "dir" variable to specify what direction to use. In the first capx the direction is chosen so the end being dragged is first.
For the fixed end version it loops twice. Once one direction, then once the other. You could just as well duplicate the loop event and use this instead if that helps.
For each chain ordered chain.index*dir
--- do stuff
For each chain ordered chain.index*-dir
--- do stuff
I used equations to cram it all together. It probably would be more readable utilizing functions. Maybe.