No problem - line by line...
if (getTimer()>_root.returnTime && !_root.dragmenu.dragging && _root.dragmenu._x != startX) {
checks to see if enough time has elapsed before returning the menu back to its start point. There are three things to check
1) The time elapsed, (getTimer is a global function returning time since the movie started in milliseconds)
2) Whether the menu is still being dragged(set by the rollover states of the button)
3) If the menu is back in place (set by the onClipEvent(load) portion of the control clip)
'&&' is shorthand for 'and' linking the statements together and '!' is shorthand for 'not' so the condition would read as...
if time has elapsed and menu is not being dragged and menu is not back in place
...if it was in plain English.
The code inside the curly braces will not execute unless all three conditions are met.
The line..
_root.dragmenu._x += (startX-_root.dragmenu._x)/2;
(and the corresponding _y line) work out where the dragmenu clip currently is and then move it halfway back to its start point every frame:
startX-_root.dragmenu._x gives the distance between the two points, this is divided by two and added to the current position. It gives a cool decelerating effect as the distance gets shorter between the two points. Dividing by a different number will speed up or slow down the effect so you can tune it to taste.
The _y line is actually redundant in this example because you can only drag the menu horizontally but it's in there in case you want to adapt things.
Slainte