var posX=0, posY=0;
var deltaX=0, deltaY=0;
var calqueDragDrop="";
var isLimiteDragDrop;

function startDragDrop(calque, isLimite, txOpacite) {
	// Initialisation du calque concerné
	if (document.getElementById) {
		// Passage de l'élément cliqué au premier plan
		var calques=document.getElementsByTagName("div");
		var zIndexMax=0;
		for (var i=0; i<calques.length ; i++ ) {
			if (calques[i].className=="Xframe") {
				if (calques[i].id!=calque.id) {
					if (zIndexMax<parseInt(calques[i].style.zIndex)) {
						zIndexMax=parseInt(calques[i].style.zIndex);
					}
				}
			}
		}
		calque.style.zIndex=zIndexMax+1;
		calque.style.borderStyle="dashed";
		if (navigator.userAgent.toLowerCase().indexOf("msie")>0) { calque.filters.alpha.opacity=txOpacite; } 
		if (window.sidebar) {	calque.style.MozOpacity=(txOpacite/100); }
		// Initilisations des paramètres
		isLimiteDragDrop=isLimite;
		deltaX=posX-calque.offsetLeft; 
		deltaY=posY-calque.offsetTop; 
		calqueDragDrop=calque;	
	}
	return false;
}
function goDragDrop(e) {
	// Gestion du drag and drop
	if (document.all) {
		posX=event.x+document.body.scrollLeft; 
		posY=event.y+document.body.scrollTop;
	} else {
		posX=e.pageX; 
		posY=e.pageY; 
	}
	if (calqueDragDrop!="") {
		var tmpX=posX-deltaX;
		var tmpY=posY-deltaY;
		if (isLimiteDragDrop) {
			// On oblige le calque à rester dans l'écran visible
			// En tenant compte du décalage lié au scrolling éventuel
			if (tmpX<document.body.scrollLeft) {tmpX=document.body.scrollLeft;}
			if (tmpY<document.body.scrollTop) {tmpY=document.body.scrollTop;}
			var largeurScrollBarX=(document.all)?22:-14;
			var largeurScrollBarY=(document.all)?4:0;
			var maxX=document.body.scrollLeft+document.body.offsetWidth-calqueDragDrop.offsetWidth-largeurScrollBarX;
			if (tmpX>maxX) {	tmpX=maxX;	}
			var maxY=document.body.scrollTop+document.body.offsetHeight-calqueDragDrop.offsetHeight-largeurScrollBarY;
			if (tmpY>maxY) {	tmpY=maxY;	}
		}
		calqueDragDrop.style.left=tmpX+"px";
		calqueDragDrop.style.top=tmpY+"px";
		return false;
	}
}
function stopDragDrop() {
	// Fin du drag/drop au moment ou le bouton souris est relâché
	if (calqueDragDrop!="") { calqueDragDrop.style.borderStyle="solid";
		if (navigator.userAgent.toLowerCase().indexOf("msie")>0) { calqueDragDrop.filters.alpha.opacity=55;	}
		if (window.sidebar) {	calqueDragDrop.style.MozOpacity=1; }
		calqueDragDrop="";
		return false;
	}
}
document.onmousemove=goDragDrop;
document.onmouseup=stopDragDrop;