//deplacer.js
//Regroupe les fonctions de déplacement de blocs

// variable globale	
	var tabvide=new Array();

//initialisation de la table des blocs vides	dans la page pi
	function def_tabvide(pi){	
	 tabvide= new Array();	
		//var liste="blocs vides : ";	
		// ajout à tab_vide des blocs vides
		for(var j=1; j<=3;j++){	// j numéro de colonne
			var col1=$("col"+String(pi)+String(j));
			var tab=col1.childNodes;	
			for(var i=0; i<tab.length;i++){
				if(tab[i].id.substr(0,4)=="vide"){	
					var x=getLeft(tab[i]) +	tab[i].offsetWidth/2;
					var y=getTop(tab[i]) +	tab[i].offsetHeight/2;	
					//liste+=tab[i].id+","+x+","+y+" ";	
					var ligne=new Array(tab[i].id,x,y)
					tabvide.push(ligne);
				};
			};		
		};
		//ajout à tab_vide des onglets		
		var tab1=$("menu").childNodes;	
		for(var i=0; i<tab1.length;i++){
			if(tab1[i].id!="onglet0"){// l'onglet "ajouter" n'est pas enregistré
				var x=getLeft(tab1[i]) +	tab1[i].offsetWidth/2;
				var y=getTop(tab1[i]) +	tab1[i].offsetHeight/2;	
				//liste+=tab[i].id+","+x+","+y+" ";	
				var ligne=new Array(tab1[i].id,x,y)
				tabvide.push(ligne);
			};
		};
		//alert(liste);			
	}
	
	//def_tabvide();
	//alert (tabvide[0][2]);		
	
	//retourne le bloc vide ou l'onglet le plus proche du point (x,y)
	function vide_plus_proche(x,y){		
	 var mini=10000;
		var proche="";	
		def_tabvide(page_courante);// réinitialisation du tableau tabvide après agrandissement ou réduction des blocs vides
		for (var i = 0; i < tabvide.length; i++){
		 var dist=distance(x,y,tabvide[i][1],tabvide[i][2]);
			if (dist<mini){	
			 mini=dist;
				proche=tabvide[i][0];
			};
		};	
		return proche;
	}	
	
	//déplacement objet
	
	var calque=null;// le calque est l'objet à déplacer
	var deltax=0;	// delta= postion de la souris - position  objet
	var deltay=0;	
	var hauteur=0; // hauteur de calque;	
	var proche="";	// nom du bloc vide le plus proche	
	var copie_vide=null;// blocvide supprimé dans start_calque	
	var der_couleur_onglet="";// couleur du dernier onglet sélectionné au moment du déplacement	
	var decalex=200;
	var decaley=152;
	
	
	// position objet =position souris -delta	
	
	function start_calque(evt){
	 var titre=null;
	 if(!evt){	// internet explorer	
		 evt=window.event;
			 titre=evt.srcElement;
		}
		else {	// Mozilla
		 titre=evt.target;
		};
		// bloctitre contenant  t_titre	
		var objet=titre.parentNode;
		// bloc contenant  bloctitre		
		objet=objet.parentNode;
		//alert(objet.id);  
		var posx=evt.clientX;
		var posy=evt.clientY;	
		//alert(posx+" , "+posy);
		var objetx=getLeft(objet);
		var objety=getTop(objet);
		//alert(objetx+" , "+objety);	
		deltax=posx-objetx;
		deltay=posy-objety;
	 //alert(deltax+" , "+deltay);	
		
		var col1=objet.parentNode;
		var suivant=objet.nextSibling;	
		var precedent=objet.previousSibling;
		copie_vide=suivant;
		col1.removeChild(suivant); 
		hauteur=objet.offsetHeight+40;	  
		var largeur=objet.offsetWidth;	
		
		//copie de objet dans calque et suppression objet 
		
		calque=objet; 
		calque.style.width=largeur+"px";		
		calque.style.position="absolute";	
		
		precedent.style.height=hauteur+"px";// pour occuper l'espace perdu et forcer le choix de proche
		//go_calque(evt);
		return false;
	}	
	
	function go_calque(evt){	
	 if(calque!=null) {// onmousemove actif si un objet a été défini par onmousedown
			 if(!evt)//internet explorer
				{
				 evt=window.event;
				}; 
				var posx=evt.clientX;
		  var posy=evt.clientY;	
				var tmpx=posx-deltax;// nouvelle position de l'objet
				var tmpy=posy-deltay;
				var tmp1x=tmpx-decalex;	
				var tmp1y=tmpy-decaley;	
				calque.style.left=tmp1x+"px";
				calque.style.top=tmp1y+"px";				
				var x=tmpx+calque.offsetWidth/2;		
				var y=tmpy+calque.offsetHeight/2;	
				var der_proche=vide_plus_proche(x,y);
								
				if (der_proche!=proche){	// un nouveau bloc est plus proche
				 if (proche!=""){	// proche qui a déjà été défini	reprend sa forme normale
					 if(proche.substr(0,4)=="vide"){ 	//bloc vide
						 $(proche).style.border="0px";
						 $(proche).style.height="20px";
						} 
						else {	// onglet
						  $(proche).style.backgroundColor=der_couleur_onglet;
						};
					};// fin de if (proche!="")
				 proche=der_proche;// on définit le nouveau proche	
					if(proche.substr(0,4)=="vide"){ 	//bloc vide
					 $(proche).style.height=hauteur+"px";
						$(proche).style.border="1px dotted red";
					}
					else {	// onglet	
					 der_couleur_onglet=$(proche).style.backgroundColor;
						$(proche).style.backgroundColor="red";
				 };	
				};// fin if (der_proche!=proche)
		};// fin if calque non nul
		return false;
	}
	
	function stop_calque(){
		 if(calque!=null){
		  var proche1=$(proche);
				if(proche.substr(0,4)=="vide"){ 	//bloc vide	
			  proche1.style.border="0px";
					proche1.style.height="20px";
					//proche1.style.backgroundColor="#F6F6F6";	
					var col1=proche1.parentNode;
					var ref1=proche1;
				}
				else { //onglet	
				 proche1.style.border="solid 1px black";
					var num_page=proche1.id.substr(6,1);
					var col1=$("col"+num_page+"1");
					var ref1=col1.firstChild;
					voir_page(Number(num_page));
				};
				
				// copie de calque dans col1 avant ref
		  var copie=calque;
		  col1.insertBefore(copie,ref1);
			 col1.insertBefore(copie_vide,copie);
			 copie.style.position="static";	
			
				// réinitialisation des var globales
				copie_vide=null;
				proche="";
		  calque=null;	
		 	return false;
			};// fin if calque non nul
	}
		
	document.onmousemove=go_calque;
	document.onmouseup=stop_calque;	
