(function($){
$.fn.jDrag = function(options){
if (typeof options == 'string') {
if (options == 'destroy')
return this.each(function(){
$(this).unbind('mousedown', $.rwdrag.start);
$.data(this, 'pp-rwdrag', null);
});
}
return this.each(function(){
var el = $(this);
$.data($.rwdrag, 'pp-rwdrag', {
options: $.extend({
el: el,
obj: el
}, options)
});
if (options.event)
$.rwdrag.start(options.event);
else {
var select = options.selector;
$(select, obj).bind('mousedown', $.rwdrag.start);
}
});
};
$.rwdrag = {
start: function(e){
var data = $.data(this, 'pp-rwdrag');
var el = data.options.el[0];
$.data(el, 'pp-rwdrag', {
options: data.options
});
if (!$.rwdrag.current) {
$.rwdrag.current = {
el: el,
oleft: parseInt(el.style.left) || 0,
otop: parseInt(el.style.top) || 0,
ox: e.pageX || e.screenX,
oy: e.pageY || e.screenY
};
$(document).bind("mouseup", $.rwdrag.stop);
$(document).bind("mousemove", $.rwdrag.drag);
}
},
stop: function(e){
var current = $.rwdrag.current;
var data = $.data(current.el, 'pp-rwdrag');
$(document).unbind('mousemove', $.rwdrag.drag);
$(document).unbind('mouseup', $.rwdrag.stop);
if (data.options.stop) {
data.options.stop.apply(current.el, [current.el]);
}
$.rwdrag.current = null;
return $.rwdrag.preventEvent(e);
},