diff --git a/lib/raphael.draggable.js b/lib/raphael.draggable.js index a73966c..d67c79c 100644 --- a/lib/raphael.draggable.js +++ b/lib/raphael.draggable.js @@ -49,13 +49,14 @@ } } - function overrideElementFunc(paper, elementType) { - var oldFunc = paper[elementType]; - paper[elementType] = function() { - var element = oldFunc.apply(paper, arguments); - element.draggable = new DraggableExtension(element); - return element; - }; + function overrideElementFunc(paper, elementType) { + paper[elementType] = function(oldFunc) { + return function() { + var element = oldFunc.apply(paper, arguments); + element.draggable = new DraggableExtension(element); + return element; + }; + }(paper[elementType]); } var lastDragX, @@ -102,29 +103,31 @@ /* Raphael set extensions */ function overrideSet(paper) { - var oldFunc = paper.set; - paper.set = function() { - var set = oldFunc.apply(paper, arguments); - set.paper = paper; - set.draggable = new DraggableSetExtension(set); + paper.set = function(oldFunc) { + return function() { + var set = oldFunc.apply(paper, arguments); + set.paper = paper; + set.draggable = new DraggableSetExtension(set); - overrideSetFunctions(set); - return set; - }; + overrideSetFunctions(set); + return set; + }; + }(paper.set); } function overrideSetFunctions(set) { - var oldPushFunc = set.push; - set.push = function(element) { - oldPushFunc.apply(set, arguments); - if (element.draggable) { - element.draggable.parent = set; + set.push = function(oldFunc) { + return function(element) { + oldFunc.apply(set, arguments); + if (element.draggable) { + element.draggable.parent = set; - if (set.draggable.enabled) { - element.draggable.enable(); + if (set.draggable.enabled) { + element.draggable.enable(); + } } - } - } + }; + }(set.push); } DraggableSetExtension = function(set) {