/* Disable selection */
/* Tra le altre cose, evita la selezione blu su doppioclick su mac */

function disableSelection(el) {
	var element = document.getElementById(el);
	element.onselectstart = function() {
		return false;
	};
	element.unselectable = "on";
	element.style.MozUserSelect = "none";
	element.style.cursor = "default";
}
/* end */



/* Mouse pressed event */
var gIsMouseDown = false;
var gRepeatTimeInMS = 1;

function setMouseDown(dir) {
	gIsMouseDown = true;
	if (dir=="down") doMouseDownEventDown();
	if (dir=="up") doMouseDownEventUp();
}

function setMouseUp() {
	gIsMouseDown = false;
}

function doMouseDownEventDown() {
	if (gIsMouseDown) {
		moveThumbsDown();
		setTimeout("doMouseDownEventDown()", gRepeatTimeInMS);
	}
}

function doMouseDownEventUp() {
	if (gIsMouseDown) {
		moveThumbsUp();
		setTimeout("doMouseDownEventUp()", gRepeatTimeInMS);
	}
}
/* end */
		
var lock=0;

function showMenu() {
	var target = document.getElementById('menu');
	if (lock==0) {
		if (target.style.display=='none') new Effect.BlindDown('menu', { duration: 0.3, beforeStart: function () { lock=1 }, afterFinish: function () { lock=0 } });
		else new Effect.BlindUp('menu', { duration: 0.3, beforeStart: function () { lock=1 }, afterFinish: function () { lock=0 } });
	}
}

function checkMenu() {
	var target = document.getElementById('menu');
	if (lock==0) {
		if (target.style.display=='none') new Effect.BlindDown('menu', { duration: 0.3, beforeStart: function () { lock=1 }, afterFinish: function () { lock=0 } });
	}
}

function blindMenu() {
	if (lock==0) new Effect.BlindUp('menu', { duration: 0.3, beforeStart: function () { lock=1 }, afterFinish: function () { lock=0 } });
}


		function getElementsByClass(searchClass,node,tag) {
			var classElements = new Array();
			if ( node == null )
				node = document;
			if ( tag == null )
				tag = '*';
			var els = node.getElementsByTagName(tag);
			var elsLen = els.length;
			var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
			for (i = 0, j = 0; i < elsLen; i++) {
				if ( pattern.test(els[i].className) ) {
					classElements[j] = els[i];
					j++;
				}
			}
			return classElements;
		}
		
		function openMenu() {
			var oTarget = document.getElementById('menu');
			if (oTarget.style.display=='none') {
				Effect.toggle('menu', 'blind', {duration: 0.3}); 
			}
		}
		
		function closeMenuPort(dest) {
			Effect.Fade('menu', {duration: 0.5});
			new Effect.Move('thumbSpace', { x: -103, y: 0, mode: 'relative' });
			setTimeout("location.href='"+dest+"'",800);
		}
		
		function closeMenu(dest){
			Effect.Fade('menu', {duration: 0.5});
			setTimeout("location.href='"+dest+"'",700);
		}
		
		function centerThumb(val) {
			var target = document.getElementById('thumbWrap');
			var t=target.offsetTop;
			var sh=target.scrollHeight;
			var step = 0;
			if (sh>590) { // Ok, activate scroll
				if (val>260) { // move up
					if (sh-val>280) step=260-val;
					else step=-(sh-590);
				} else if (t<0) { // move down
					if (t>-280) step=0; else step=280-val;
				}
				new Effect.Move('thumbWrap', { x: 0, y: step, mode: 'absolute' });
			}
//			document.getElementById('debug').innerHTML='SH scrollHeight:'+sh+'<br />val: '+val+'<br />T offsetTop: '+t+'<br />Step: '+step;
		} 
		
		function loadImage(imgURL,dida) {
			var target = document.getElementById('visore');
			var loader = new Image(16,16);
			loader.src = "img/loader.gif";
			loader.style.position = "absolute";
			loader.style.right= "10px";
			loader.style.bottom= "10px";
			target.appendChild(loader);

			var img = new Image();
			img.onload = function () {
				target.style.backgroundImage="url("+imgURL+")";
				target.removeChild(loader);
				document.getElementById('infoBox').innerHTML=dida;
				for (i=0; i<el.length; i++) {
					if (el[i].getAttribute("href")==imgURL) {pos=i;}
				}
			}
			img.src = imgURL;

			img.onerror = function() { target.removeChild(loader); }
		}

		function nextImage() {
			if ((pos+1)<el.length) loadImage(el[pos+1].getAttribute("href"),el[pos+1].getAttribute("title"));
		}

		function prevImage() {
			if ((pos)>0) loadImage(el[pos-1].getAttribute("href"),el[pos-1].getAttribute("title"));
		}

		function moveThumbsDown() {
			var target = document.getElementById('thumbWrap');
			if (target.scrollHeight>590) { // Ok, activate scroll
				var h=target.offsetTop;
				if (h>-target.scrollHeight+590) target.style.top = (h-2)+"px";
			}
		}

		function moveThumbsUp() {
			var target = document.getElementById('thumbWrap');
			if (target.offsetTop<0) {
				var h=target.offsetTop;
				if (h<0) target.style.top = (h+2)+"px";
			}
		}
		
		function showTooltip(nome){
			document.getElementById(nome).style.display="block";
		}
		
		function hideTooltip(nome){
			document.getElementById(nome).style.display="none";
		}
		
		// Keys handling //

		var pos=0;
		nn=(document.layers)?true:false;
		ie=(document.all)?true:false;
		function keyDown(evt) {
			evt = (evt) ? evt : (window.event) ? event : null;
			if (evt) {
				var charCode = (evt.charCode) ? evt.charCode :
							   ((evt.keyCode) ? evt.keyCode :
							   ((evt.which) ? evt.which : 0));
				if (charCode == 40) moveThumbsDown(); // Gi
				if (charCode == 38) moveThumbsUp(); // Su
				if (charCode == 39) nextImage(); // Destra
				if (charCode == 37) prevImage(); // Sinistra
			}    
		}
		document.onkeydown=keyDown;
		if(nn) document.captureEvents(Event.KEYDOWN);

