/*	Lightbox JS: Fullsize Image Overlays	by Lokesh Dhakar - http://www.huddletogether.com	For more information on this script, visit:	http://huddletogether.com/projects/lightbox/	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/	(basically, do anything you want, just leave my name and link)	Table of Contents	-----------------	Configuration	Functions	- getPageScroll()	- getPageSize()	- pause()	- getKey()	- listenKey()	- showLightbox()	- hideLightbox()	- initLightbox()	- addLoadEvent()		Function Calls	- addLoadEvent(initLightbox)*///// Configuration//// If you would like to use a custom loading image or close button reference them in the next two lines.var loadingImage = '../images_web/loading.gif';var closeButton = '../images_web/close.gif';//// getPageScroll()// Returns array with x,y page scroll values.// Core code from - quirksmode.org//function getPageScroll(){	var yScroll;	if (self.pageYOffset) {		yScroll = self.pageYOffset;	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict		yScroll = document.documentElement.scrollTop;	} else if (document.body) {// all other Explorers		yScroll = document.body.scrollTop;	}	arrayPageScroll = new Array('',yScroll)	return arrayPageScroll;}//// getPageSize()// Returns array with page width, height and window width, height// Core code from - quirksmode.org// Edit for Firefox by pHaez//function getPageSize(){	var xScroll, yScroll;	if (window.innerHeight && window.scrollMaxY) {		xScroll = document.body.scrollWidth;		yScroll = window.innerHeight + window.scrollMaxY;	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac		xScroll = document.body.scrollWidth;		yScroll = document.body.scrollHeight;	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari		xScroll = document.body.offsetWidth;		yScroll = document.body.offsetHeight;	}	var windowWidth, windowHeight;	if (self.innerHeight) {	// all except Explorer		windowWidth = self.innerWidth;		windowHeight = self.innerHeight;	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode		windowWidth = document.documentElement.clientWidth;		windowHeight = document.documentElement.clientHeight;	} else if (document.body) { // other Explorers		windowWidth = document.body.clientWidth;		windowHeight = document.body.clientHeight;	}	// for small pages with total height less then height of the viewport	if(yScroll < windowHeight){		pageHeight = windowHeight;	} else {		pageHeight = yScroll;	}	// for small pages with total width less then width of the viewport	if(xScroll < windowWidth){		pageWidth = windowWidth;	} else {		pageWidth = xScroll;	}	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)	return arrayPageSize;}//// pause(numberMillis)// Pauses code execution for specified time. Uses busy code, not good.// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602//function pause(numberMillis) {	var now = new Date();	var exitTime = now.getTime() + numberMillis;	while (true) {		now = new Date();		if (now.getTime() > exitTime)			return;	}}//// getKey(key)// Gets keycode. If 'x' is pressed then it hides the lightbox.//function getKey(e){	if (e == null) { // ie		keycode = event.keyCode;	} else { // mozilla		keycode = e.which;	}	key = String.fromCharCode(keycode).toLowerCase();	if(key == 'x'){ hideLightbox(); }}//// listenKey()//function listenKey () {	document.onkeypress = getKey; }function getTotImages(imgSrc) {	return document.getElementById("totImages_"+getNumGallery(imgSrc)).innerHTML;}function getNumGallery(imgSrc) {    var imgSrcEnd=(imgSrc).substring((imgSrc).indexOf("imgg"));    var numImgActual=imgSrcEnd.substring(5);    numGalleryActual=numImgActual.substring(0,numImgActual.indexOf('_'));	return document.getElementById("numGallery_"+numGalleryActual).innerHTML;}function getNumImgActual(imgSrc) {    var newHrefBegin=(imgSrc).substring(0,(imgSrc).indexOf("imgg"));    var newHrefEnd=(imgSrc).substring((imgSrc).indexOf("imgg"));    var numImgActual=newHrefEnd.substring(5);    numImgActual=numImgActual.substring(numImgActual.indexOf('_')+1,numImgActual.indexOf('.jpg'));    return numImgActual;}//// showLightbox()// Preloads images. Pleaces new image in lightbox then centers and displays.//function showLightbox(objLink) {    ///////////////////////////////////////////////////////////////////////////    numImgActual=getNumImgActual(objLink.href);    if(getTotImages(objLink.href)=="1")		document.getElementById('keyboardMsg').style.display="none";    else {    	switch(numImgActual) {	    	 case "1" :	changeArrowState('prevImg',false);     					changeArrowState('nextImg',true);	    	 break;		     case getTotImages(objLink.href) :	changeArrowState('prevImg',true);			     							   	changeArrowState('nextImg',false);	    	 break;    	}    }	// prep objects	var objOverlay = document.getElementById('overlay');	var objLightbox = document.getElementById('lightbox');	var objCaption = document.getElementById('lightboxCaption');	var objImage = document.getElementById('lightboxImage');	var objLoadingImage = document.getElementById('loadingImage');	var objLightboxDetails = document.getElementById('lightboxDetails');	var arrayPageSize = getPageSize();	var arrayPageScroll = getPageScroll();	// center loadingImage if it exists	if (objLoadingImage) {		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');		objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');		objLoadingImage.style.display = 'block';	}	// set height of Overlay to take up whole page and show	objOverlay.style.height = (arrayPageSize[1] + 'px');	objOverlay.style.display = 'block';	// preload image	imgPreload = new Image();	imgPreload.onload=function(){		objImage.src = objLink.href;		// center lightbox and make sure that the top and left values are not negative		// and the image placed outside the viewport		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);		var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";		objLightboxDetails.style.width = imgPreload.width + 'px';		if(objLink.getAttribute('title')){			objCaption.style.display = 'block';			//objCaption.style.width = imgPreload.width + 'px';			objCaption.innerHTML = objLink.getAttribute('title');		} else {			objCaption.style.display = 'none';		}		// A small pause between the image loading and displaying is required with IE,		// this prevents the previous image displaying for a short burst causing flicker.		if (navigator.appVersion.indexOf("MSIE")!=-1){			pause(250);		}		else pause(200);		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }		// Hide select boxes as they will 'peek' through the image in IE		selects = document.getElementsByTagName("select");		        for (i = 0; i != selects.length; i++) {                selects[i].style.visibility = "hidden";        }		objLightbox.style.display = 'block';		// After image is loaded, update the overlay height as the new image might have		// increased the overall page height.		arrayPageSize = getPageSize();		objOverlay.style.height = (arrayPageSize[1] + 'px');		// Check for 'x' keypress		listenKey();		return false;	}	imgPreload.src = objLink.href;}function changeArrowState(arrowId,enabled) {    document.getElementById(arrowId).style.visibility = enabled ? "visible" : "hidden";}function changeArrowEvent(enable) {	var leftArrow = document.getElementById('prevImg');	var rightArrow = document.getElementById('nextImg');	leftArrow.disabled = enable ? false : true;	leftArrow.style.opacity = enable ? .99 : .55;	leftArrow.style.MozOpacity = enable ? .99 : .55;	leftArrow.style.filter = enable ? 'alpha(opacity=' + (.99*100) + ')' : 'alpha(opacity=' + (.49*100) + ')';	rightArrow.disabled = enable ? false : true;	rightArrow.style.opacity = enable ? .99 : .55;	rightArrow.style.MozOpacity = enable ? .99 : .55;	rightArrow.style.filter = enable ? 'alpha(opacity=' + (.99*100) + ')' : 'alpha(opacity=' + (.55*100) + ')';}function showNextLightBox(direction) {	changeArrowEvent(false);	var theBoxImg = document.getElementById("lightboxImage");	numImgActual=parseInt(getNumImgActual(theBoxImg.src));	switch(direction) {		case 'left' :     					if(numImgActual>1) {	        				changeArrowState('nextImg',true);			    	    	numImgActual--;				    	    var newHrefBegin=(theBoxImg.src).substring(0,theBoxImg.src.indexOf("imgg"));    		    			var newHrefEnd="imgg_"+getNumGallery(theBoxImg.src)+"_"+numImgActual+".jpg";				   	    	if(numImgActual==1) {		    					changeArrowState('prevImg',false);				    		}							theBoxImg.xOpacity = .99;							so_xfade(newHrefBegin+newHrefEnd);    					}    	break;		case 'right' :     					var totImages = parseInt(getTotImages(theBoxImg.src));    					if(numImgActual<totImages) {	        				changeArrowState('prevImg',true);			    	    	numImgActual++;				    	    var newHrefBegin=(theBoxImg.src).substring(0,theBoxImg.src.indexOf("imgg"));    		    			var newHrefEnd="imgg_"+getNumGallery(theBoxImg.src)+"_"+numImgActual+".jpg";				   	    	if(numImgActual==getTotImages(theBoxImg.src)) {		    					changeArrowState('nextImg',false);				    		}				    						    		theBoxImg.xOpacity = .99;							so_xfade(newHrefBegin+newHrefEnd);    					}    	break;    }}/////////////////////////////////////////////////////////////////////////////////////////////////////////////function so_xfade(nextImgSrc){	var Img = document.getElementById("lightboxImage");	cOpacity = Img.xOpacity;	cOpacity = nextImgSrc=="" ? cOpacity+.05 : cOpacity-.05;		Img.xOpacity = cOpacity;		setOpacity(Img);	if(cOpacity<=0)	{		// cambia immagine vecchia con nuova		Img.src = nextImgSrc;		Img.xOpacity = 0;		setTimeout("so_xfade('')",50);	}	else	{		if(Img.xOpacity>.99) {			Img.xOpacity = .99;			changeArrowEvent(true);			return;		}		else			setTimeout("so_xfade("+"'"+nextImgSrc+"'"+")",50);	}		function setOpacity(obj)	{		obj.style.opacity = obj.xOpacity;		obj.style.MozOpacity = obj.xOpacity;		obj.style.filter = 'alpha(opacity=' + (obj.xOpacity*100) + ')';	}}///////////////////////////////////////////////////////////////////////////////////////////////////////////////// hideLightbox()//function hideLightbox(){	// get objects	objOverlay = document.getElementById('overlay');	objLightbox = document.getElementById('lightbox');	// hide lightbox and overlay	objOverlay.style.display = 'none';	objLightbox.style.display = 'none';	// make select boxes visible	selects = document.getElementsByTagName("select");    for (i = 0; i != selects.length; i++) {		selects[i].style.visibility = "visible";	}	// disable keypress listener	document.onkeypress = '';	changeArrowState('prevImg',true)	changeArrowState('nextImg',true)	document.getElementById('keyboardMsg').style.display="";}//// initLightbox()// Function runs on window load, going through link tags looking for rel="lightbox".// These links receive onclick events that enable the lightbox display for their targets.// The function also inserts html markup at the top of the page which will be used as a// container for the overlay pattern and the inline image.//function initLightbox(){	if (!document.getElementsByTagName){ return; }	var anchors = document.getElementsByTagName("a");	// loop through all anchor tags	for (var i=0; i<anchors.length; i++){		var anchor = anchors[i];		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){			anchor.onclick = function () {showLightbox(this); return false;}		}	}	// the rest of this code inserts html at the top of the page that looks like this:	//	// <div id="overlay">	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>	// </div>	// <div id="lightbox">	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">	//			<img id="closeButton" />	//			<img id="lightboxImage" />	//		</a>	//		<div id="lightboxDetails">	//			<div id="lightboxCaption"></div>	//			<div id="keyboardMsg"></div>	//		</div>	// </div>	var objBody = document.getElementsByTagName("body").item(0);	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)	var objOverlay = document.createElement("div");	objOverlay.setAttribute('id','overlay');	objOverlay.onclick = function () {hideLightbox(); return false;}	objOverlay.style.display = 'none';	objOverlay.style.position = 'absolute';	objOverlay.style.top = '0';	objOverlay.style.left = '0';	objOverlay.style.zIndex = '90'; 	objOverlay.style.width = '100%';	objBody.insertBefore(objOverlay, objBody.firstChild);	var arrayPageSize = getPageSize();	var arrayPageScroll = getPageScroll();	// preload and create loader image	var imgPreloader = new Image();	// if loader image found, create link to hide lightbox and create loadingimage	imgPreloader.onload=function(){		var objLoadingImageLink = document.createElement("a");		objLoadingImageLink.setAttribute('href','#');		objLoadingImageLink.onclick = function () {hideLightbox(); return false;}		objOverlay.appendChild(objLoadingImageLink);		var objLoadingImage = document.createElement("img");		objLoadingImage.src = loadingImage;		objLoadingImage.setAttribute('id','loadingImage');		objLoadingImage.style.position = 'absolute';		objLoadingImage.style.zIndex = '150';		objLoadingImageLink.appendChild(objLoadingImage);		imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs		return false;	}	imgPreloader.src = loadingImage;	// create lightbox div, same note about styles as above	var objLightbox = document.createElement("div");	objLightbox.setAttribute('id','lightbox');	objLightbox.style.display = 'none';	objLightbox.style.position = 'absolute';	objLightbox.style.zIndex = '100';	objBody.insertBefore(objLightbox, objOverlay.nextSibling);	// create link	var objLink = document.createElement("a");	objLink.setAttribute('href','#');	objLink.setAttribute('title','Clicca per chiudere');	objLink.onclick = function () {hideLightbox(); return false;}	objLightbox.appendChild(objLink);	// preload and create close button image	var imgPreloadCloseButton = new Image();	// if close button image found,	imgPreloadCloseButton.onload=function(){		var objCloseButton = document.createElement("img");		objCloseButton.src = closeButton;		objCloseButton.setAttribute('id','closeButton');		objCloseButton.style.position = 'absolute';		objCloseButton.style.zIndex = '200';		objLink.appendChild(objCloseButton);		return false;	}	imgPreloadCloseButton.src = closeButton;	// create image	var objImage = document.createElement("img");	objImage.setAttribute('id','lightboxImage');	objLink.appendChild(objImage);	// create details div, a container for the caption and keyboard message	var objLightboxDetails = document.createElement("div");	objLightboxDetails.setAttribute('id','lightboxDetails');	objLightbox.appendChild(objLightboxDetails);	// create caption	var objCaption = document.createElement("div");	objCaption.setAttribute('id','lightboxCaption');	objCaption.style.display = 'none';	objLightboxDetails.appendChild(objCaption);	// create keyboard message	var objKeyboardMsg = document.createElement("div");	objKeyboardMsg.setAttribute('id','keyboardMsg');    var ojbKLeftEvent="showNextLightBox('left');return false;";    var ojbKRightEvent="showNextLightBox('right');return false;";	var objKMsgLeft = '<input src="../images_web/img_prev.jpg" type="image" id="prevImg" onclick="'+ojbKLeftEvent+'">';	var objKMsgCenter = '&nbsp;&nbsp;&nbsp;utilizza le frecce per scorrere le immagini&nbsp;&nbsp;&nbsp;';	var objKMsgRight = '<input src="../images_web/img_next.jpg" type="image" id="nextImg" onclick="'+ojbKRightEvent+'">';	objKeyboardMsg.innerHTML = objKMsgLeft+objKMsgCenter+objKMsgRight;	objLightboxDetails.appendChild(objKeyboardMsg);}//// addLoadEvent()// Adds event to window.onload without overwriting currently assigned onload functions.// Function found at Simon Willison's weblog - http://simon.incutio.com///// addLoadEvent(initLightbox);	// run initLightbox onLoad
