(function(a){a.fn.dragsort=function(c){if(c=="destroy"){a(this.selector).trigger("dragsort-uninit");return;}var d=a.extend({},a.fn.dragsort.defaults,c); var b=[];var f=null,e=null;this.each(function(h,g){if(a(g).is("table")&&a(g).children().size()==1&&a(g).children().is("tbody")){g=a(g).children().get(0); }var j={draggedItem:null,placeHolderItem:null,pos:null,offset:null,offsetLimit:null,scroll:null,container:g,init:function(){var i=a(this.container).children().size()==0?"li":a(this.container).children(":first").get(0).tagName.toLowerCase(); if(d.itemSelector==""){d.itemSelector=i;}if(d.dragSelector==""){d.dragSelector=i;}if(d.placeHolderTemplate==""){d.placeHolderTemplate="<"+i+"> "; }a(this.container).attr("data-listidx",h).mousedown(this.grabItem).bind("dragsort-uninit",this.uninit);this.styleDragHandlers(true);},uninit:function(){var i=b[a(this).attr("data-listidx")]; a(i.container).unbind("mousedown",i.grabItem).unbind("dragsort-uninit");i.styleDragHandlers(false);},getItems:function(){return a(this.container).children(d.itemSelector); },styleDragHandlers:function(i){this.getItems().map(function(){return a(this).is(d.dragSelector)?this:a(this).find(d.dragSelector).get();}).css("cursor",i?"pointer":""); },grabItem:function(n){if(n.which!=1||a(n.target).is(d.dragSelectorExclude)||a(n.target).closest(d.dragSelectorExclude).size()>0||a(n.target).closest(d.itemSelector).size()==0){return; }n.preventDefault();var i=n.target;while(!a(i).is(d.dragSelector)){if(i==this){return;}i=i.parentNode;}a(i).attr("data-cursor",a(i).css("cursor"));a(i).css("cursor","move"); var m=b[a(this).attr("data-listidx")];var l=this;var k=function(){m.dragStart.call(l,n);a(m.container).unbind("mousemove",k);};a(m.container).mousemove(k).mouseup(function(){a(m.container).unbind("mousemove",k); a(i).css("cursor",a(i).attr("data-cursor"));});},dragStart:function(o){if(f!=null&&f.draggedItem!=null){f.dropItem();}f=b[a(this).attr("data-listidx")]; f.draggedItem=a(o.target).closest(d.itemSelector);f.draggedItem.attr("data-origpos",a(this).attr("data-listidx")+"-"+f.getItems().index(f.draggedItem)); var l=parseInt(f.draggedItem.css("marginTop"));var q=parseInt(f.draggedItem.css("marginLeft"));f.offset=f.draggedItem.offset();f.offset.top=o.pageY-f.offset.top+(isNaN(l)?0:l)-1; f.offset.left=o.pageX-f.offset.left+(isNaN(q)?0:q)-1;if(!d.dragBetween){var n=a(f.container).outerHeight()==0?Math.max(1,Math.round(0.5+f.getItems().size()*f.draggedItem.outerWidth()/a(f.container).outerWidth()))*f.draggedItem.outerHeight():a(f.container).outerHeight(); f.offsetLimit=a(f.container).offset();f.offsetLimit.right=f.offsetLimit.left+a(f.container).outerWidth()-f.draggedItem.outerWidth();f.offsetLimit.bottom=f.offsetLimit.top+n-f.draggedItem.outerHeight(); }var m=f.draggedItem.height();var k=f.draggedItem.width()-2;if(d.itemSelector=="tr"){f.draggedItem.children().each(function(){a(this).width(a(this).width()); });f.placeHolderItem=f.draggedItem.clone().attr("data-placeholder",true);f.draggedItem.after(f.placeHolderItem);f.placeHolderItem.children().each(function(){a(this).css({borderWidth:0,width:a(this).width()+1,height:a(this).height()+1}).html(" "); });}else{f.draggedItem.after(d.placeHolderTemplate);f.placeHolderItem=f.draggedItem.next().css({height:m,width:k}).attr("data-placeholder",true);}if(d.itemSelector=="td"){var i=f.draggedItem.closest("table").get(0); a("
").appendTo("body").children().append(f.draggedItem); }var p=f.draggedItem.attr("style");f.draggedItem.attr("data-origstyle",p?p:"");f.draggedItem.css({position:"absolute",opacity:0.8,"z-index":999,height:m,width:k}); f.scroll={moveX:0,moveY:0,maxX:a(document).width()-a(window).width(),maxY:a(document).height()-a(window).height()};f.scroll.scrollY=window.setInterval(function(){if(d.scrollContainer!=window){a(d.scrollContainer).scrollTop(a(d.scrollContainer).scrollTop()+f.scroll.moveY); return;}var r=a(d.scrollContainer).scrollTop();if(f.scroll.moveY>0&&r0){a(d.scrollContainer).scrollTop(r+f.scroll.moveY); f.draggedItem.css("top",f.draggedItem.offset().top+f.scroll.moveY+1);}},10);f.scroll.scrollX=window.setInterval(function(){if(d.scrollContainer!=window){a(d.scrollContainer).scrollLeft(a(d.scrollContainer).scrollLeft()+f.scroll.moveX); return;}var r=a(d.scrollContainer).scrollLeft();if(f.scroll.moveX>0&&r0){a(d.scrollContainer).scrollLeft(r+f.scroll.moveX); f.draggedItem.css("left",f.draggedItem.offset().left+f.scroll.moveX+1);}},10);a(b).each(function(s,r){r.createDropTargets();r.buildPositionTable();});f.setPos(o.pageX,o.pageY); a(document).bind("mousemove",f.swapItems);a(document).bind("mouseup",f.dropItem);if(d.scrollContainer!=window){a(window).bind("DOMMouseScroll mousewheel",f.wheel); }},setPos:function(k,o){var m=o-this.offset.top;var l=k-this.offset.left;if(!d.dragBetween){m=Math.min(this.offsetLimit.bottom,Math.max(m,this.offsetLimit.top)); l=Math.min(this.offsetLimit.right,Math.max(l,this.offsetLimit.left));}this.draggedItem.parents().each(function(){if(a(this).css("position")!="static"&&(!a.browser.mozilla||a(this).css("display")!="table")){var p=a(this).offset(); m-=p.top;l-=p.left;return false;}});if(d.scrollContainer==window){o-=a(window).scrollTop();k-=a(window).scrollLeft();o=Math.max(0,o-a(window).height()+5)+Math.min(0,o-5); k=Math.max(0,k-a(window).width()+5)+Math.min(0,k-5);}else{var i=a(d.scrollContainer);var n=i.offset();o=Math.max(0,o-i.height()-n.top)+Math.min(0,o-n.top); k=Math.max(0,k-i.width()-n.left)+Math.min(0,k-n.left);}f.scroll.moveX=k==0?0:k*d.scrollSpeed/Math.abs(k);f.scroll.moveY=o==0?0:o*d.scrollSpeed/Math.abs(o); this.draggedItem.css({top:m,left:l});},wheel:function(k){if((a.browser.safari||a.browser.mozilla)&&f&&d.scrollContainer!=window){var i=a(d.scrollContainer); var l=i.offset();if(k.pageX>l.left&&k.pageXl.top&&k.pageYf.draggedItem.offset().top||e.left>f.draggedItem.offset().left){a(n.pos[o].elm).before(f.placeHolderItem); }else{a(n.pos[o].elm).after(f.placeHolderItem);}m.each(function(){var i=k().eq(this.idx).get(0);if(this!=i&&k().index(this)k&&this.pos[l].topm){return l; }}return -1;},createDropTargets:function(){if(!d.dragBetween){return;}a(b).each(function(){var k=a(this.container).find("[data-placeholder]");var i=a(this.container).find("[data-droptarget]"); if(k.size()>0&&i.size()>0){i.remove();}else{if(k.size()==0&&i.size()==0){if(d.itemSelector=="td"){a(d.placeHolderTemplate).attr("data-droptarget",true).appendTo(this.container); }else{a(this.container).append(f.placeHolderItem.removeAttr("data-placeholder").clone().attr("data-droptarget",true));}f.placeHolderItem.attr("data-placeholder",true); }}});}};j.init();b.push(j);});return this;};a.fn.dragsort.defaults={itemSelector:"",dragSelector:"",dragSelectorExclude:"input, textarea",dragEnd:function(){},dragBetween:false,placeHolderTemplate:"",scrollContainer:window,scrollSpeed:5}; })(joms.jQuery);