View file Mememaker 2.0/ragecomic/scripts/jquery.imgDrop.js

File size: 3.38Kb
jQuery(function () {
    jQuery('head').append('<style type="text/css">[draggable=true] {-webkit-user-drag: element; -webkit-user-select: none; -moz-user-select: none;}</style>');
});
(function ($) {
    $.fn.imgDrop = function (options) {
        return this.each(function () {
            var self = $(this);
            var settings = new Object;
            settings.imageHandler = function (file) {
                self.reader = new FileReader();
                var img = $('<img/>');
                self.reader.onload = function (event) {
                    img.attr('src', event.target.result);
                    settings.afterDrop(img, self);
                };
                self.reader.onerror = function (event) {
                    switch (event.target.error.code) {
                    case event.target.error.NOT_FOUND_ERR:
                        alert('File Not Found!');
                        break;
                    case event.target.error.NOT_READABLE_ERR:
                        alert('File is not readable');
                        break;
                    case event.target.error.ABORT_ERR:
                        break;
                    default:
                        alert('An error occurred reading this file.');
                    }
                };
                self.reader.onabort = function (event) {
                    alert('File read cancelled');
                };
                self.reader.readAsDataURL(file);
            }, settings.afterDrop = function (element, dropTarget) {
                $(element).appendTo(dropTarget);
            }, settings.accepts = {
                'image': settings.imageHandler
            };
            if (typeof options.beforeDrop == 'function') {
                settings.beforeDrop = options.beforeDrop;
            }
            if (typeof options.afterDrop == 'function') {
                settings.afterDrop = options.afterDrop;
            }
            if (typeof options.afterAllDrop == 'function') {
                settings.afterAllDrop = options.afterAllDrop;
            }
            self.bind('dragover dragenter', function (event) {
                if (event.preventDefault) {
                    event.preventDefault();
                }
                return false;
            });
            self.bind('drop', function (event) {
                if (event.preventDefault) {
                    event.preventDefault();
                }
                var dataTransfer = event.originalEvent.dataTransfer;
                if (!dataTransfer) return false;
                if (!dataTransfer.files || dataTransfer.files.length == 0) return false;
                settings.beforeDrop();
                for (var i = 0; i < dataTransfer.files.length; i++) {
                    var file = dataTransfer.files[i];
                    var handler = null;
                    for (var type in settings.accepts) {
                        if (file.type.match(type)) {
                            handler = settings.accepts[type];
                            break;
                        }
                    }
                    if (!handler) {
                        continue;
                    }
                    handler(file);
                }
                settings.afterAllDrop();
                return false;
            });
        });
    };
})(jQuery);