         $target = $ @
         options = $target.data().drop
 
-        $scrollParent = $target.scrollParent()
+        $scrollParent = scrollParent($target)
 
         scrollPending = false
         position = -> $target.drop 'positionDrop' if $target.drop 'isOpened'

        options = $target.data().drop

        targetOffset = $target.offset()
        $scrollParent = $target.scrollParent()
        scrollParentOffset = $scrollParent.offset()

        targetOuterHeight = $target.outerHeight()


# Extracted from jQuery UI Core (to remove dependency)
# https://github.com/jquery/jquery-ui/blob/24756a978a977d7abbef5e5bce403837a01d964f/ui/jquery.ui.core.js#L60
scrollParent = ($el) ->
    position = $el.css('position')

    if position is 'fixed'
        return true

    scrollParent = undefined

    if position is 'absolute' or (isIE and position in ['static', 'relative'])
        scrollParent = $el.parents().filter(->
            $.css(@, 'position') in ['relative', 'absolute', 'fixed'] and /(auto|scroll)/.test($.css(@, 'overflow') + $.css(@, 'overflow-y') + $.css(@, 'overflow-x'))
        ).first()
    else
        scrollParent = $el.parents().filter(->
            /(auto|scroll)/.test($.css(@, 'overflow') + $.css(@, 'overflow-y') + $.css(@, 'overflow-x'))
        ).first()

    if scrollParent.length
        return scrollParent
    else
        return $('html')

$.fn.removeClassPrefix = (prefix) ->
    $(@).attr 'class', (index, className) ->
