// JavaScript Document

/*
Drag and Drop Script- 
© 2003 Pitbull Technology srl
www.ezechiele.it
*/

//questa parte inizializza la variabili per identificare il browser che si sta usando
browser = navigator.appName;
browserNum = parseInt(navigator.appVersion);
N = false;
IE = false;
if (browser == "Netscape") N = true;
	else IE = true;

//script per IE
if (IE)
	{
	var dragapproved=false;
	var z,x,y;
	var a=1;

//funzione che parte quando l'oggetto cliccato viene trascinato
	function move()
	{
		if (event.button==1&&dragapproved)
		{
			z.style.pixelLeft=temp1+event.clientX-x;
			z.style.pixelTop=temp2+event.clientY-y;
			my_x=event.clientX;
			my_y=temp2+event.clientY-y;
			
			try
			{
				if (divid.substr(0, 8)!="ezpanels"){
					eval("document.myform."+divid+"y.value = z.style.pixelTop");
					if((z.style.pixelLeft+z.clientWidth/2)*100/sb<50){
						eval("document.myform."+divid+"x.value = ' '");
						eval("document.myform."+divid+"k.value = z.style.pixelLeft");
						}
					else{
						eval("document.myform."+divid+"x.value = sb-z.style.pixelLeft");
						eval("document.myform."+divid+"k.value = ' '");
					}
					document.myform.nameLayer.value = divid;
				}
			}
			catch(e){ }
			return false
		}
	}
	
//funzione che parte quando si clicca su uno degli oggetti che si vuole trascinare
	function drags(id,defaultPosition_x,defaultPosition_y)
	{
		if (!document.all)
		return
		dragapproved=true;
		z=event.srcElement;
		divid=id;
		sb=document.body.clientWidth; 
		sa=document.body.clientHeight; 

		if (z.style.pixelLeft==0) 
			{
				if(event.clientX/sb*100>50){
					temp1=z.style.pixelLeft+sb-defaultPosition_x-z.clientWidth;
				}
				else{
					temp1=z.style.pixelLeft+defaultPosition_x;
				}
			}
		else
		{
			temp1=z.style.pixelLeft;
		}
			
		if (z.style.pixelTop==0)
		{
			temp2=z.style.pixelTop+defaultPosition_y;
		}
		else
		{
			temp2=z.style.pixelTop;
		}
			
			x=event.clientX;
			y=event.clientY;
			document.onmousemove=move;
			document.onmousedown=new Function("a=a+1; z.style.zIndex=a;");
			document.onmouseup=new Function("dragapproved=false");
	}
	
}



//script per Netscape e Mozilla
else if (N)
{
//variabile che indica il livello su cui si clicca
	selectedProduct=null
	
//funzione che imposta lo zIndex dell'oggetto passato
	function setzIndex(product, zOrder)
	{
		product.style.zIndex = zOrder
	}
	
//posiziona un oggetto a coordinate specifiche
	function shiftTo(product, x, y, e)
	{
		product.style.left = x; 
		product.style.right = sb-x 
		product.style.top = y
		
		if ((e.pageX-offsetX)/sb*100 >= 50){
			eval("document.myform."+divid+"x.value = sb-x");
			eval("document.myform."+divid+"k.value = ' '");
		}
		else{
			eval("document.myform."+divid+"x.value = ' '");
			eval("document.myform."+divid+"k.value = x");
		}
		eval("document.myform."+divid+"y.value = y")
	}
	
//funzione richiamata al movimento del mouse
	function dragProduct(e)
	{
		if (selectedProduct)
		{
			sb=window.innerWidth;
			sa=window.innerHeight;
//e.pagex ed e.pagey indicano dove si trova il puntatore del mouse
			x=e.pageX-offsetX;
			y=e.pageY-offsetY
//viene chiamata la funzione che sposta realmente il livello
			shiftTo(selectedProduct,x,y,e)
			
//per sicurezza viene restituito false, perchè alcuni sistemi trascinano i livelli oltre la posizione desiderata
			return false
		}
	}
	
/*funzione chiamata quando succede l' evento mousedown; "e" rappresenta in quale posizione sullo schermo si è verificato l'evento*/
	function grabProduct(e)
	{
//vengono trovate le coordinate esatte
		offsetX = e.layerX
		offsetY = e.layerY
		selectedProduct = this
		divid = this.id
		setzIndex(selectedProduct,100)
	}
	
//chiamata quando il livello viene rilasciato
	function releaseProduct(e)
	{
		if (selectedProduct)
		{
			releaseX = e.pageX
			releaseY = e.pageY
			setzIndex(selectedProduct, 50)
			selectedProduct = null
		}
	}

//funzione che specifica tutti gli oggetti che vogliamo muovere e chiama la funzione dragProduct
	function init(myid)
	{
//vengono definite le variabili oggetto
		level = document.getElementById(myid)
//la pagina cercherà uno degli eventi specificati nella funzione attachEvent solo se avviene su un oggetto specifico	
		attachEvent(level)
		window.onmousemove = dragProduct
		
	}
	
/*una volta che si verifica un evento viene chiamata la funzione specificata; il parametro false indica 
che non si intende specificare l' event capture ma l'event bubbling che sono due diversi modi in cui un evento può essere visto dall'intero documento*/
	function attachEvent(obj)
	{
		obj.addEventListener("mousedown",grabProduct,false)
		obj.addEventListener("mouseup",releaseProduct,false)
		
	}
}
