﻿// On peux déplacer tous les éléments juste changeant sont id.


// Définition des variables globale.
var objNum=0; // Numéros de l'objet courrant
var cursorPosXStart,cursorPosYStart; // Position du curseur au départ du déplacement
var objPosLeftStart,objPosTopStart,objPosLeftSave,objPosTopSave; // Position de l'objet au départ du déplacement
var ListDivs = new Array();
var ObjSave;
ListDivs[0] = "Bloc1";
ListDivs[1] = "Bloc2";

function init()
{   // démarrage appelé dans la ligne body
	
	// capture d'événènements appuyer, relacher
	if (document.captureEvents)
	{ // pour Netscape 4
		document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
	}
    document.onmousedown = startDrag;
	document.onmouseup = endDrag;
	
}


function startDrag(e)
{
	objNum = whichObj(e,true); // recherche l'objet selectionné
	
    if(objNum!=null)     // Si l'objet est trouvé
    {
	    // enregistrement de la position du curseur ;  Si (netscape) ? vrai : faux;
	    cursorPosXStart = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.clientX;
		cursorPosYStart = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.clientY;

		// enregistrement de la position de l'objet
	   	objPosLeftStart=parseInt(document.getElementById(objNum).style.left);
	    objPosTopStart=parseInt(document.getElementById(objNum).style.top);
		
		// capture de l'événènement déplacement du curseur
	   	if (document.captureEvents)
		{ // pour Netscape 4
			document.captureEvents(Event.MOUSEMOVE);
		}
	   	document.onmousemove= moveIt;
    }
    return false; // retourne faux pour que l'explorateur ne tienne pas compte du déplacement 
}


function moveIt(e)
{
    // enregistrement de la position du curseur ;  Si (netscape) ? vrai : faux;
    var cursorPosX = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.clientX;
	var cursorPosY = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.clientY;
	if (objPosLeftStart+cursorPosX-cursorPosXStart>0 && objPosTopStart+cursorPosY-cursorPosYStart>0)
	{
		// déplacement de l'objet courrant
		document.getElementById(objNum).style.left=String(objPosLeftStart+cursorPosX-cursorPosXStart) + "px";
		document.getElementById(objNum).style.top=String(objPosTopStart+cursorPosY-cursorPosYStart) + "px";
	}
	
	var objNum2 = whichObj(e,false);
	if (objNum2 != null)
	{
		ObjSave = objNum2;
		document.getElementById(objNum2).style.border = "dashed 2px";
	}
	else
	{
		if (ObjSave)
			document.getElementById(ObjSave).style.border = "";
		
	}
	
	
    return false;
}


function endDrag(e)
{
	if(objNum!=null)     // Si l'objet est trouvé
    {
		try
		{
			var objPosLeftSaveBis,objPosTopSaveBis;
			objPosLeftSaveBis=objPosLeftSave;
			objPosTopSaveBis=objPosTopSave;
			
			var objNum2 = whichObj(e,true); 
			
			if (objNum2 != null)
			{
				document.getElementById(objNum).style.left = document.getElementById(objNum2).style.left;
				document.getElementById(objNum).style.top = document.getElementById(objNum2).style.top;
				document.getElementById(objNum2).style.left = objPosLeftSaveBis + "px";
				document.getElementById(objNum2).style.top = objPosTopSaveBis + "px";
				document.getElementById(objNum).style.border = "";
				document.getElementById(objNum2).style.border = "";
			}
			else
			{
				document.getElementById(objNum).style.left = objPosLeftSave + "px";
				document.getElementById(objNum).style.top = objPosTopSave + "px";
				document.getElementById(objNum).style.border = "";
			}
			
			
		}
		catch(err)
		{
			document.getElementById(objNum).style.left = objPosLeftSave + "px";
			document.getElementById(objNum).style.top = objPosTopSave + "px";
			document.getElementById(objNum).style.border = "";
		}
		
		document.getElementById(objNum).style.zIndex=0;
		// suppression du numéros de l'objet courrant
		objNum = null;

		// Arret de la capture de l'événènement déplacement du curseur
   		if (document.captureEvents)
		{ // pour Netscape 4
			document.releaseEvents(Event.MOUSEMOVE);
		}
   		document.onmousemove= "";
   	}

}


function whichObj(e,save)
{
	n=0;
    var id = ""; // debut du nom des IDs des éléments qui doivent bouger, vous pouvez le changer.
	
	// enregistrement de la position du curseur ;  Si (netscape) ? vrai : faux;
    var cursorPosX = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.clientX;
	var cursorPosY = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.clientY;
	
	while (ListDivs[n])
    { // tant que l'ID existe ("move0","move1","move2",...)
		id = ListDivs[n];
		if (objNum!=id)
		{
			// Initialise des attributs de l'objet trouver
			document.getElementById(id).style.position="absolute";
			if (save)
				document.getElementById(id).style.zIndex=1000;
			document.getElementById(id).style.cursor="default";
			if(document.getElementById(id).style.left=="" || document.getElementById(id).style.left==null)
			{ // Si la position de l'objet n'est pas définit, on le fait
        		document.getElementById(id).style.left=0;
        		document.getElementById(id).style.top=0;
			}
			
			
			// enregistrement de la position de l'objet
			objPosLeft=parseInt(document.getElementById(id).style.left);
			objPosTop=parseInt(document.getElementById(id).style.top);
			
			if ((cursorPosX > objPosLeft) &&
			(cursorPosX < objPosLeft + document.getElementById(id).offsetWidth) &&
			(cursorPosY > objPosTop) &&
			(cursorPosY < objPosTop + document.getElementById(id).offsetHeight))
			{ // Si le curseur est dans la zone d'affichage 
				if (save)
				{
					objPosLeftSave=objPosLeft;
					objPosTopSave=objPosTop;
				}
				return id;
			}
			else n++;
		}
		else n++;
    }
	return null;
}

function ChangeBloc(bloc1,bloc2,clic)
{
	var tmpLeft = document.getElementById(bloc1).style.left;
	var tmpTop = document.getElementById(bloc1).style.top;
	
	document.getElementById(bloc1).style.left = document.getElementById(bloc2).style.left;
	document.getElementById(bloc1).style.top = document.getElementById(bloc2).style.top;
	
	document.getElementById(bloc2).style.left  = tmpLeft;
	document.getElementById(bloc2).style.top =	 tmpTop;
	if (clic)
	{
		if (readCookie("INVERSEBLOC") == "1")
			SetCookie("INVERSEBLOC","0",100);
		else
			SetCookie("INVERSEBLOC","1",100);
	}
	
}



function DashBorder(bloc)
{
	document.getElementById(bloc).style.border = "dashed 2px #CDCDCD";
}

function NoBorder(bloc)
{
	document.getElementById(bloc).style.border = "solid 2px #FFFFFF";
}

function CheckBloc()
{
	if (readCookie("INVERSEBLOC") == "1")
		ChangeBloc("Bloc1","Bloc2",false);
}

