// 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.pixelRight=temp1-event.clientX+x;
			z.style.pixelTop=temp2+event.clientY-y;
			my_x=event.clientX;
			my_y=temp2+event.clientY-y;
			//funzione per lanciare funzioni innestate da lay_head....
			//alert('cccc'+isP);
			if(isP){
				//alert('aaaa');
				nested_functions(my_x,my_y,p);
				
			}	
			
			try
			{
				if (divid.substr(0, 8)!="ezpanels"){
					eval("document.myform."+divid+"x.value = z.style.pixelRight");
					if(divid.substr(0,12)=="ezdhtmlmenu"){
						eval("document.myform."+divid+"y.value = event.clientY");
					} else {
						eval("document.myform."+divid+"y.value = z.style.pixelTop");
					}
					eval("document.myform."+divid+"w.value ="+eval(screen_width));
					eval("document.myform."+divid+"h.value ="+eval(screen_height));
					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,isPanel,panel)
	{
		if (!document.all)
		return
		dragapproved=true;
		z=event.srcElement;
		divid=id;
		
		isP=isPanel;
		p=panel;
		
		

/*la seguente condizione fa si che non ci sia un errore quando non si clicca su uno degli oggetti da 
trascinare*/
		//if (divid.substr(0, 7)=="ezdivid"||divid.substr(0, 6)=="ezmenu"||divid.substr(0, 8)=="ezpanels")
		//{
			if (z.style.pixelRight==0) 
			{
				temp1=z.style.pixelRight+defaultPosition_x;
			}
			else
			{
				temp1=z.style.pixelRight;
			}
			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)
	{
		if ((e.pageX-offsetX)/sb*100 >= 50){
			product.style.right = x;
			product.style.left = sb-x-2*offsetX
		}
		else{
			product.style.left = x; 
			product.style.right = sb-x 
			//x=e.pageX-offsetX+sb
			//x=x-product.style.innerWidth;
		}
		//product.style.left = -x+sb-selectedProduct.innerWidth; 
		//product.style.left = x 
		//product.style.right = sb-x 
		product.style.top = y
		//g=selectedProduct.clientWidth
		if ((e.pageX-offsetX)/sb*100 >= 50){
				eval("document.myform."+divid+"x.value = 100.0000000-(e.pageX-offsetX)/sb*100");
			}
			else{
				eval("document.myform."+divid+"x.value = 100.0000000-(e.pageX-offsetX)/sb*100");
			}
			/*if ((e.pageX-offsetX)/sb*100 >= 50){
				eval("document.myform."+divid+"x.value = (x)/sb*100");
			}
			else{
				//selectedProduct.innerWidth=g
				//x=x-g;
				eval("document.myform."+divid+"x.value = 100.0000000-x/sb*100");
			}*/
			eval("document.myform."+divid+"y.value = y/sa*100")
	}
	
//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+sb;
			
			if ((e.pageX-offsetX)/sb*100 >= 50){
				x=-e.pageX-offsetX+sb;
			}
			else{
				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
		//g=this.innerWidth
		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()
	{
//vengono definite le variabili oggetto
		logo = document.getElementById("logo")
		banner = document.getElementById("banner")
		image = document.getElementById("image")
		menu0 = document.getElementById("menu0")
		menu1 = document.getElementById("menu1")
		menu2 = document.getElementById("menu2")
		menu6 = document.getElementById("menu6")
		menu7 = document.getElementById("menu7")
//la pagina cercherà uno degli eventi specificati nella funzione attachEvent solo se avviene su un oggetto specifico	
		attachEvent(logo)
		attachEvent(banner)
		attachEvent(image)
		attachEvent(menu0)
		attachEvent(menu1)
		attachEvent(menu2)
		attachEvent(menu6)
		attachEvent(menu7)
		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)
	}
}
