//Drag and Drop script

if (document.getElementById){

	(function(){

	//Stop Opera selecting anything whilst dragging.
	if (window.opera){
		document.write("<input type='hidden' id='Q' value=' '>");
	}

	var n = 500;
	var dragok = false;
	var y,x,d,dy,dx;
	var PFX, PFY;
	
	function move(e){

		if (!e) e = window.event;
		if (dragok){
				
			var posizioni=prendiElementoDaId("posizioni");
			
			// oggetto contenitore mappa: mi serve per avere le dimensioni
			var contenitore=prendiElementoDaId("contenitore-mappa");
			
			// setto la variabile oldzoom
			oldzoom=zoom;

			/* blocco se mappa finita */
			if ((dx + e.clientX - x)<=0 && (dx + e.clientX - x) - (contenitore.offsetWidth - ArrayMappe[zoom]['width'])>=0) {
				d.style.left = dx + e.clientX - x + "px";
				PFX=dx + e.clientX - x;
			} //else PFX=dx;

			if ((dy + e.clientY - y)<=0 && (dy + e.clientY - y) - (contenitore.offsetHeight - ArrayMappe[zoom]['height'])>=0) {
				d.style.top  = dy + e.clientY - y + "px";
				PFY=dy + e.clientY - y;
			} //else PFY=dy;

			posizioni.innerHTML="PFY: " + PFY + " PFX: " + PFX + "<br>topPrimoRiqVis: " + topPrimoRiqVis + " leftPrimoRiqVis: " + leftPrimoRiqVis + "<br>topUltimoRiqVis: " + topUltimoRiqVis + " leftUltimoRiqVis: " + leftUltimoRiqVis;

			/* ricarico immagini se oltre riquadro */

			if (PFX+leftPrimoRiqVis>=0 || PFY+topPrimoRiqVis>=0 || (topUltimoRiqVis + dim_riq + PFY)>=contenitore.offsetHeight || (leftUltimoRiqVis + dim_riq + PFX)>=contenitore.offsetWidth) {
				carica_img(zoom, PFX, PFY);
			}

			return false;
		}
	}

	function down(e){
		if (!e) e = window.event;
		var temp = (typeof e.target != "undefined")?e.target:e.srcElement;
		if (temp.tagName != "HTML"|"BODY" && temp.className != "dragclass"){
			temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
		}
		if (temp.className == "dragclass"){
			if (window.opera){
				document.getElementById("Q").focus();
			}
			dragok = true;
			temp.style.zIndex = n++;
			d = temp;
			dx = parseInt(temp.style.left+0);
			dy = parseInt(temp.style.top+0);
			x = e.clientX;
			y = e.clientY;
			document.onmousemove = move;
			return false;
		}
	}

	function up(){
		dragok = false;
		document.onmousemove = null;
	}

	document.onmousedown = down;
	document.onmouseup = up;

	})();
}//End.


/* funzione che muove la mappa con le frecce */
function move2(direction) {

	var Mappa=prendiElementoDaId("mappa");

	var MappaLeft = parseInt(Mappa.style.left+0);
	var MappaTop = parseInt(Mappa.style.top+0);
	
	var spostamento=100;
	
	var PFX, PFY;

	// oggetto contenitore mappa: mi serve per avere le dimensioni
	var contenitore=prendiElementoDaId("contenitore-mappa");

	var posizioni=prendiElementoDaId("posizioni");

	// verifico lo spostamento
	s=1;
	while (s<=spostamento) {
		// valori possibili di direction
		switch (direction) {
			//	case "up":
			case "down":
					if (MappaTop - 1 - contenitore.offsetHeight + ArrayMappe[zoom]['height']>=0) {
						Mappa.style.top=MappaTop - 1 + "px";
						PFY=MappaTop - 1;
					} else {
						PFY=MappaTop;
					}
					PFX=MappaLeft;

					break;
			//	case "down":
			case "up":
					if (MappaTop + 1 <=0) {
						Mappa.style.top=MappaTop + 1 + "px";
						PFY=MappaTop + 1;
					} else {
						PFY=MappaTop;
					}
					PFX=MappaLeft;

					break;

			//	case "left":
			case "right":
					if (MappaLeft - 1 - contenitore.offsetWidth + ArrayMappe[zoom]['width']>=0) {
						Mappa.style.left=MappaLeft - 1 + "px";
						PFX=MappaLeft - 1;
					} else {
						PFX=MappaLeft;
					}
					PFY=MappaTop;

					break;

			//	case "right":
			case "left":
					if (MappaLeft + 1 <=0) {
						Mappa.style.left=MappaLeft + 1 + "px";
						PFX=MappaLeft + 1;
					} else {
						PFX=MappaLeft;
					}
					PFY=MappaTop;

					break;

			//	case "up-right":
			case "down-left":

					if (MappaTop - 1 - contenitore.offsetHeight + ArrayMappe[zoom]['height']>=0) {
						Mappa.style.top=MappaTop - 1 + "px";
						PFY=MappaTop - 1;
					} else {
						PFY=MappaTop;
					}

					if (MappaLeft + 1 <=0) {
						Mappa.style.left=MappaLeft + 1 + "px";
						PFX=MappaLeft + 1;
					} else {
						PFX=MappaLeft;
					}

					break;

			//	case "down-right":
			case "up-left":

					if (MappaTop + 1 <=0) {
						Mappa.style.top=MappaTop + 1 + "px";
						PFY=MappaTop + 1;
					} else {
						PFY=MappaTop;
					}

					if (MappaLeft + 1 <=0) {
						Mappa.style.left=MappaLeft + 1 + "px";
						PFX=MappaLeft + 1;
					} else {
						PFX=MappaLeft;
					}

					break;

			//	case "up-left":
			case "down-right":
					if (MappaTop - 1 - contenitore.offsetHeight + ArrayMappe[zoom]['height']>=0) {
						Mappa.style.top=MappaTop - 1 + "px";
						PFY=MappaTop - 1;
					} else {
						PFY=MappaTop;
					}

					if (MappaLeft - 1 - contenitore.offsetWidth + ArrayMappe[zoom]['width']>=0) {
						Mappa.style.left=MappaLeft - 1 + "px";
						PFX=MappaLeft - 1;
					} else {
						PFX=MappaLeft;
					}

					break;

			//	case "down-left":
			case "up-right":

					if (MappaTop + 1 <=0) {
						Mappa.style.top=MappaTop + 1 + "px";
						PFY=MappaTop + 1;
					} else {
						PFY=MappaTop;
					}

					if (MappaLeft - 1 - contenitore.offsetWidth + ArrayMappe[zoom]['width']>=0) {
						Mappa.style.left=MappaLeft - 1 + "px";
						PFX=MappaLeft - 1;
					} else {
						PFX=MappaLeft;
					}

					break;
		} // end switch
		
		MappaLeft = parseInt(Mappa.style.left+0);
		MappaTop = parseInt(Mappa.style.top+0);

		//document.fMappa.prova.value +="\n\nMappaTop: " + MappaTop + ", MappaLeft: " + MappaLeft;
		s++;

	} // end while

	/* ricarico immagini se oltre riquadro */
	if (PFX+leftPrimoRiqVis>=0 || PFY+topPrimoRiqVis>=0 || (topUltimoRiqVis + dim_riq + PFY)>=contenitore.offsetHeight || (leftUltimoRiqVis + dim_riq + PFX)>=contenitore.offsetWidth) {
		carica_img(zoom, PFX, PFY);
	}

	//posizioni.innerHTML="PFY: " + PFY + " PFX: " + PFX + "<br>topPrimoRiqVis: " + topPrimoRiqVis + " leftPrimoRiqVis: " + leftPrimoRiqVis + "<br>topUltimoRiqVis: " + topUltimoRiqVis + " leftUltimoRiqVis: " + leftUltimoRiqVis;

	return false;
} // end_func
