jQuery(function(){
	
	jQuery.fn.d_drag= function(opt){
		var helper = jQuery("<span/>").addClass("d_drag_helper").css("border","1 px dotted orange");
		
		var help=false;
		
		document.d_dragging=new Array();
		document.getDragging=function(){			
				return document.d_dragging;
		}
		document.addDragging=function(el){
			return document.d_dragging.push(el);
		}
		return this.each(function(){
			var i=jQuery(this);
			var p=jQuery(i.parent());
			var active=false;
			i.css("cursor","move");
			i.mousedown(function(ev){
			ev.preventDefault();
			if(document.getDragging.length==0){
			var j= this;
			active=true;
			help=true;document.addDragging.push(j);j.addClass('d_dragging');
			
			}
			
			
			
			jQuery().mousemove(function(e){				
				if(document.getDragging.length==1){	
					jQuery(".d_drag_helper").css("display","");
				document.getDragging[0].style.position="absolute";
				document.getDragging[0].style.zIndex ='99999999';
			jQuery("body").append(jQuery(dragging[0]));
			document.getDragging[0].style.left = e.pageX+ "px";		
			document.getDragging[0].style.top = e.pageY+ "px";
			if(jQuery(".d_accepting").is("table")){			
			jQuery(".d_accepting").children("tbody").children("tr").mousemove(function(){
				if(jQuery(".d_accepting").size()>0){
				jQuery(helper).insertBefore(jQuery(this));
			}
			});
			}else if(jQuery(".d_accepting").size()>0){
				jQuery(".d_accepting").children().mousemove(function(){
					if(jQuery(".d_accepting").size()>0){
						if(jQuery(".d_accepting").children().size()>0 && jQuery()){
					jQuery(helper).insertBefore(jQuery(this));
						}else{
							jQuery(".d_accepting").append(helper)
						}
					}
				});	
			}else{
			jQuery(".d_drag_helper").css("display","none");	
			}
				}else{
					jQuery(".d_drag_helper").css("display","none");
				}
				
			});

			jQuery().mouseup(function(){
				active=false;
				if(document.getDragging.length==1 && help==true){
					
					help=false;
					
					document.getDragging[0].style.zIndex = "";
					if(opt != undefined){
				if("revert" in opt){
					if(opt["revert"].indexOf("true")!=-1){	
						if(jQuery(".d_accepting").size()==0){
						p.append(document.getDragging[0]);
						jQuery(document.getDragging[0]).css("position","");
						}else{
							jQuery(document.getDragging[0]).remove();
								
						}
						
						}						
				}
				if("helper" in opt){
					if(opt["helper"].indexOf("true")!=-1){
						try{
						if(jQuery(".d_accepting").size()>0){
//						jQuery(dragging[0]).insertBefore(jQuery(helper));
						}
						}catch(er){
						}
						setTimeout(function(){jQuery(".d_drag_helper").css("display","none");},100);
						
				}
		}}	
			jQuery("body").trigger("d_drag_end",document.getDragging);
			setTimeout(function(){for(i=0;i<document.getDragging.length;i++){jQuery(document.getDragging[i]).removeClass("d_dragging");}},300);
			i=null;
			j=null;
			document.getDragging=new Array();
				}
			});
			
			});
			

			});
		
		};
});
