/*
Copyright (c) 2007, PMP Concept
version: 1
*/


// include des classes requises
if(typeof PMP != "undefined")
{
	PMP.include("event.js");
}


/*****************************************************************************
 *
 * 								Classe pmpDragDrop
 *
 *	Fonction : 	gestion des glisser déposer
 *
 *  Paramètres
 *  	- element	: (string / object) l'objet à gérer
 *
*****************************************************************************/

PMP.util.pmpDragDrop = function(element) 
{
	this.setDragDrop(element);
}


PMP.util.pmpDragDrop.prototype = {
	
	 setDragDrop : function(element) 
	 {
		 
		this.element = typeof(element)=="string" ? document.getElementById(element) : element;
		if(!this.element)
			this.element = false;
		else
		{
			// active le glisser
			this.element.onmousedown = this._mousedown.bind(this);
			
		}
	},
	
	_mousedown : function(evt) 
	{
		this.drag = true;
		this.element.style.cursor = "move";	
		document.getElementById('debug').innerHTML = "drag : " + this.drag;
		
		this.mousemove = PMP.common.truebody().onmousemove;
		this.mouseup = PMP.common.truebody().onmouseup;
		
		var pmpEvt = new PMP.util.pmpEvent();
		pmpEvt.getEvent(evt);
		
		//var coord = pmpEvt.getCoordinate();
		//this.mouseOffsetX =  coord.x - PMP.common.getElementLeft(this.element);
		//this.mouseOffsetY =  coord.y - PMP.common.getElementTop(this.element);
		
		this.mouseOffsetX = 0;
		this.mouseOffsetY = 0;
		
		PMP.common.truebody().onmousemove = this._mousemove.bind(this);
		PMP.common.truebody().onmouseup = this._mouseup.bind(this);
		
	},
	
	_mousemove : function(evt) 
	{
		document.getElementById('debug').innerHTML = "move : ";
		var pmpEvt = new PMP.util.pmpEvent();
			
		pmpEvt.getEvent(evt);
		
		if(this.element && this.drag)
		{
			var coord = pmpEvt.getCoordinate();
			
			document.getElementById('debug').innerHTML = "move : " + coord.x + ", " + coord.y;
		
			this.element.style.left = coord.x - this.mouseOffsetX + "px";
			this.element.style.top = coord.y - this.mouseOffsetY + "px";					
		}
		else
		{
			document.getElementById('debug').innerHTML = "move : " + this.drag + ", " + this.element;
		
		}
	},
	
	_mouseup : function(evt) 
	{
		this.drag = false;	
		this.element.style.cursor = "default";	
		
		PMP.common.truebody().onmousemove = this.mousemove;
		PMP.common.truebody().onmouseup = this.mouseup;
		
		document.getElementById('debug').innerHTML = "drag : " + this.drag;
	}
}
