
MM_i=0;
MM_swappedImgName="";
MM_swappedImgSrc="";
MM_srcWidth=0;
MM_srcHeight=0;
// indice dell'immagine grande presente nella pagina html durante il primo caricamento
MM_imageIndex=1;
MM_spcSuffix="spc";
MM_stdImageNameSuffix="foto";
MM_stdImageName="big_img";
MM_stdDescrName="didascalia";
MM_stdImg_naName="img_na";
MM_stdVSpacerName="v_spacer";
MM_canReloadPage=false;
<!--

<!--
function MM_reloadPage(init)
{  //reloads the window if Nav4 resized
  var d=document;
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    d.MM_pgW=innerWidth; d.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=d.MM_pgW || innerHeight!=d.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->


function MM_nbGroup(event, grpName)
{ //v3.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2)
  {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init)
    {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null)
      {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
      }
    }
  }
  else if (event == "over")
  {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null)
    {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
      nbArr[nbArr.length] = img;
    }
  }
  else if (event == "out" )
  {
    for (i=0; i < document.MM_nbOver.length; i++)
    {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up;
    }
  }
  else if (event == "down")
  {
    if ((nbArr = document[grpName]) != null)
      for (i=0; i < nbArr.length; i++)
      {
        img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0;
      }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2)
      if ((img = MM_findObj(args[i])) != null)
     	{
      	   if (!img.MM_up) img.MM_up = img.src;
           img.src = img.MM_dn = args[i+1];
      	   nbArr[nbArr.length] = img;
  	} 
  }
}

function MM_preloadImages()
{ //v3.0
  var d=document;
  if(d.images)
  {
	if(!d.MM_p)
	  d.MM_p=new Array();
    	var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
	  for(i=0; i<a.length; i++)
	    {
    	        if (a[i].indexOf("#")!=0)
		{
		   d.MM_p[j]=new Image;
		   d.MM_p[j++].src=a[i];
		}
	    }
   }
}

function MM_swapImgRestore()
{ //v3.0
  var i,x,a=document.MM_sr;
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
  { //ripristino le immagini scambiate
  	 x.src=x.oSrc;
    	// controllo se l'immagine scambiata sia una foto-icona
    	// cercando all'interno del suo nome ID la stringa specifica delle foto-icona
	if (x.name.indexOf(MM_stdImageNameSuffix) > -1)
	  { 
	  	MM_swappedImgName="";
		MM_swappedImgSrc="";
	  }
  }
}

function MM_swapImgRestoreEx(aName)
{ //v3.0
  var i,x,a=document.MM_sr;

  for(i=0; a&&i < a.length&&(x=a[i])&&x.oSrc; i++)
  {
	if (x.name == aName)
	{
//		alert(x.src);
//		alert(x.oSrc);
		x.src=x.oSrc;
	}
  }
}

function MM_findObj(n, d)
{ //v4.0
  var p,i,x;  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length)
  {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImageEx()
{ //v3.0
	//prelevo gli argomenti passati alla funzione...
	var b=MM_swapImageEx.arguments;

	MM_swapImage(b[0],b[1],b[2],b[3]);

}


function MM_swapImage()
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments;
  var d=document;
  var n=0;
  d.MM_sr=new Array;
  for(i=0;i<(a.length-2);i+=3)
  {
    if ((x=MM_findObj(a[i]))!=null)
    {
	d.MM_sr[j++]=x;
	if(!x.oSrc)
		x.oSrc=x.src;
	// **** inizio codice di modifica funzione ****
	// controllo se l'immagine scambiata sia una delle immagini-icona..
	if (x.name.indexOf(MM_stdImageNameSuffix) > -1)
	{ // si lo è...quindi mi salvo alcuni suoi riferimenti...
	  	MM_swappedImgName=x.name;
		MM_swappedImgSrc =x.src;
	}
	
	//alert(x.oSrc);
	// controllo se l'immagine scambiata sia quella grande a centro pagina...
	// evito comunque di aggiornare quando inserisco l'immagine temporanea di riempimento...
	if((x.name==MM_stdImageName) && (x.lowsrc != a[i+2]))
	{ // si lo è...quindi:
		//prelevo l'indice numerico che identifica la nuova immagine...
		n=getNumericIndex(a[i+2], '.');	
		//alert(x.lowsrc);
		//alert(a[i+2]);
		//lo rendo pubblico aggiornando una variabile globale... 
//		loadFotoIndex(n);
		loadFotoIndex(a[i+2]);
		x.title=phDESC[MM_imageIndex];
//		alert(a[i+2]);
		
	}
	// ***** fine codice di modifica funzione *****
	
	//scambio l'immagine attuale con quella nuova richiesta...
	x.src=a[i+2];
     }
   }
}

function MM_swapImageByRob()
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments;
  var d=document;
  var n=0;
  d.MM_sr=new Array;
  for(i=0;i<(a.length-2);i+=3)
  {
    if ((x=MM_findObj(a[i]))!=null)
    {
	d.MM_sr[j++]=x;
	if(!x.oSrc)
		x.oSrc=x.src;
	// **** inizio codice di modifica funzione ****
	// controllo se l'immagine scambiata sia una delle immagini-icona..
	if (x.name.indexOf(MM_stdImageNameSuffix) > -1)
	{ // si lo è...quindi mi salvo alcuni suoi riferimenti...
	  	MM_swappedImgName=x.name;
		MM_swappedImgSrc =x.src;
	}
	
	//alert(x.oSrc);
	// controllo se l'immagine scambiata sia quella grande a centro pagina...
	// evito comunque di aggiornare quando inserisco l'immagine temporanea di riempimento...
	if((x.name==MM_stdImageName) && (x.lowsrc != a[i+2]))
	{ // si lo è...quindi:
		//prelevo l'indice numerico che identifica la nuova immagine...
		n=getNumericIndex(a[i+2], '.');	
		//alert(x.lowsrc);
		//alert(a[i+2]);
		//lo rendo pubblico aggiornando una variabile globale... 
//		loadFotoIndex(n);
		x.title=phDESC[MM_imageIndex];
//		alert(a[i+2]);
		
	}
	// ***** fine codice di modifica funzione *****
	
	//scambio l'immagine attuale con quella nuova richiesta...
	x.src=a[i+2];
	MM_imageIndex=a[i+4];
	alert(MM_imageIndex);

     }
   }
}


function MM_resizeVSpacer(vSize)
{ //v3.0
	var x;
	//controllo che il valore dell'altezza dello spaziatore sia valido ed entro limiti accettabili...
	//...altrimenti lo imposto ad un volre fisso standard...
	if ((vSize==null) || (vSize<0) || (vSize>300)) 
	{
		vSize=20;
	}
		if ((x=MM_findObj(MM_stdVSpacerName))!=null)
		{
			x.height = vSize; 
		}
}




//	determinazione del tipo di browser in uso....
function getBrowserType()
{
var brType="UnknownOrOld";
	with (navigator)
	{
		if ((appName=="Netscape")&&(parseInt(appVersion)>=4))
		{
			brType="NN4+";
		}
		else if ((appName=="Microsoft Internet Explorer")&&(parseInt(appVersion)>=4))
		{
			brType="IE4+";
		}
		else if ((appName=="Mozilla")&&(parseInt(appVersion)>=4))
		{
			brType="MO4+";
		}
		else if ((appName=="Opera")&&(parseInt(appVersion)>=4))
		{
			brType="OP4+";
		}
	}
	return brType;
}


function reloadCurrentContent(init)
{
	if (init)
	{
	
	
	
	}
alert("aggiornato")
}



//	visualizza o nasconde il bordo (di valore fisso - 1 pixel) dell'immagine indicata...
function setImageBorder(operation,imageName,resizeImg)
{
	// imposto un riferimento al documento...
	var nd=document;
	// verifico che contenga delle immagini...
	if(nd.images)
	{
		// imposto un riferimento all'immagine avente il nome indicato in 'imageName'...
		var imgObj=nd.images[imageName];
		// imposto un riferimento all'immagine spaziatore successiva...
		var imgSpc=nd.images[MM_spcSuffix+imageName];
		// verifico che tutte siano state 'agganciate'....
//		if ((imgObj && imgSpc))
		if (imgObj)
		{	
			// vedo quale operazione é richiesta....
			if (operation.toUpperCase()=="SHOW")
			{	// visualizzazione del bordo...
				// verifico se é richiesto un ritocco alla larghezza dell'immagine...
				if (resizeImg)
				{  imgObj.height-=2; imgObj.width-=2; }
				// diminuisco la larghezza dell'immagine precedente  e di
				// quella successiva per far spazio al bordo...
				// evitando così che la sua comparsa alteri il layout della pagina 
//				imgSpc.width-=1;
				with (imgObj)
				{
					// faccio apparire il bordo....
					border=1;
					// riduco lo spazio orizzontale di 1 pixel
					// per fare spazio al bordo...
					hspace-=1;
				}
			}
			else
			{	// eliminazione del bordo...
				// (operazioni di ripristino -opposte a quelle qui sopra-)
				if (resizeImg)
				{  imgObj.height+=2; imgObj.width+=2; }
				
//				imgSpc.width+=1;

				with (imgObj)
				{
					// faccio sparire il bordo....
					border=0;
					// aumento lo spazio orizzontale di 1 pixel
					// per mantenere inalterato il layout dell'immagine...
					hspace+=1;
				}
			
			}	
		}
	}
}

function displayNewImg(newImgSrc, newTitle, imageFileName,descrArray)
{
	var nd=document;
	// 
	if (nd.images[MM_stdImageName])
	{	
		// immagine trovata...la sostituisco con la successiva...
		nd.images[MM_stdImageName].src =newImgSrc;
		// modifico il titolo della finestra
		// (solo se il nuovo non é nullo)...
		if (newTitle!="")
			nd.title = newTitle;
			
		// modifico anche la didascalia della foto...
		if (getBrowserType()=="IE4+")
			nd.anchors(MM_stdDescrName).innerHTML=descrArray[imageFileName];
		else
			nd.anchors[MM_stdDescrName].innerHTML=descrArray[imageFileName];

	}		
}



//	cambia l'immagine visualizzata nella finestra di pop-up...
function changeImage(direction,imagePath,imageFileNameSuffix,strImageIndex,imageExt,firstImageIndex,lastImageIndex)
{
	
	// verifica del tipo di operazione richiesta e della contestuale fattibilità sulla base
	// del limite inferiore e superiore della seguenza di foto visualizzabili....
	if (((direction.toUpperCase()=="NEXT") && (MM_imageIndex<lastImageIndex)) || ((direction.toUpperCase()=="PREV") && (MM_imageIndex>firstImageIndex)))
	{
// alert(MM_imageIndex+" - "+direction)

		// controllo quale operazione effettuare...
		if (direction.toUpperCase()=="NEXT")
			// visualizzazione della foto successiva....
			MM_imageIndex+=1;
		else
			// visualizzazione della foto precedente....
			MM_imageIndex-=1;
	
	//	alert(MM_imageIndex)

		// costruisco il nome-file della nuova immagine da visualizzare....
		// creo una stringa di appoggio...	
		var filler="00000000";
		// determino la lunghezza della parte di nome-immagine che varia...
		var indexLen=strImageIndex.length;

		var imageFileName=MM_imageIndex.toString();
		imageFileName=filler.substr(0,(indexLen-imageFileName.length))+imageFileName;
		// costruisco il percorso completo del file sorgente da caricare....
		var newSrc = imagePath+imageFileNameSuffix+imageFileName+'.'+imageExt;
		//visualizzo la nuova immagine aggiornando inoltre il titolo della finestra
		// e la didascalia della foto...
		displayNewImg(newSrc, getStdImageTitle(MM_imageIndex), imageFileNameSuffix+imageFileName,MM_descrArray);
	}
}

//	costruisce e ritorna il titolo di default.... 
function getStdImageTitle(index)
{
	// aggiungo al titolo standard il valore dell'indice-foto...
	return (MM_stdImageTitle+parseInt(index,10));
}


//	ricarica l'indice della foto nella variabile globale MM_imageIndex...
//	(passaggio di valori fra la finestra principale e quella pop-up creata al volo...)
//function loadFotoIndex(index)
//{
	// ricarico l'indice della foto attuale nella variabile globale....
//	MM_imageIndex=parseInt(index,10);
//}


function MM_navigate(direction)
{ //v1.0 carica la pagina html precedente o successiva a quella attualmente visualizzata.
  // le pagine devono avere nel nome la stessa base e terminare con un valore numerico,
  //  separato dalla base dal carattere underline _. direction indica su quale pagina spostarsi... 
	var d=document;
	var aLocation = d.location.href;
	var baseName="";
	var strExt="";
	var index=0;
		
	//direction < 0 (minore di 0)---> vado alla pagina precedente...
	//direction >= 0 (maggiore o uguale 0)---> vado alla pagina successiva...
	if (direction!=null)
	{
		//prelevo l'estensione del documento...
		strExt = getExtention(aLocation, '.');
		//alert(strExt);
		//prelevo l'indice numerico che identifica il documento
		index = getNumericIndex(aLocation, '.');
		//alert(index);
		//prelevo la parte di indirizzo comune a tutte le pagine...
		baseName=getBaseName(aLocation, '.');
		//alert(newLocation);

		if (direction < 0)
			index--;
		else			
			index++;
	
		// vado alla pagina richiesta
		d.location.href = baseName+index.toString(10)+strExt;
	}
}

function MM_gallery_navigate(direction)
{ //v1.0 carica l'immagine precedente o successiva a quella attualmente visualizzata.
  // le immagini devono avere nel nome la stessa base e terminare con un valore numerico,
  //  separato dalla base dal carattere underline _. direction indica su quale immagine spostarsi... 
	var baseName="";
	var strExt="";
	// prelevo il percorso del documento corrente....
	var dPath = getPath(document.location.href,'/');
	// imposto un riferimento all'immagine ingrandita centrale....
	var aImg = document.images[MM_stdImageName];
	// prelevo il suo percorso completo...
	var aImgSrc = aImg.src;
	// prelevo anche il percorso dell'immagine temporanea  di riempimento...
	var aImgLowSrc = aImg.lowsrc;
	var newImgSrc = "";

	// confronto i percorsi restituiti per verificare se ci sia corrispondenza...
//	if (aImgSrc.indexOf(dPath,0) == 0)
//	{
		// estraggo il percorso relativo dell'immagine rispetto al documento corrente...
//		aImgSrc = aImgSrc.slice(dPath.length);
//	}
	
	//alert(dPath);
	//alert(aImgSrc);
	//alert(aImgLowSrc);

	//direction < 0 (minore di 0)---> vado alla pagina precedente...
	//direction >= 0 (maggiore o uguale 0)---> vado alla pagina successiva...
	if (direction!=null)
	{
		//prelevo l'estensione dell'immagine
//		strExt = getExtention(aImgSrc, '.');

		//prelevo l'indice numerico che identifica l'immagine
		//index = getNumericIndex(aImgSrc, '.');

		//prelevo la parte di indirizzo comune a tutte le immagini...
//		baseName=getBaseName(aImgSrc, '.');

	if (direction < 0)
		{
			if (MM_imageIndex <= 1)
				MM_imageIndex=(MM_maxGalleryImages+1);
	
			MM_imageIndex-=1;
		}
		else			
		{
			if (MM_imageIndex >= MM_maxGalleryImages)
				MM_imageIndex=0;
	
			MM_imageIndex+=1;
		}
		
		//newImgSrc = baseName+MM_imageIndex.toString(10)+strExt;
		//newImgSrc = baseName+MM_imageIndex.toString(10)+strExt;
		newImgSrc = phSRC[MM_imageIndex];
		//newImgSrc = baseName+ToStringWithZeros(MM_imageIndex, 2)+strExt;
//		alert(newImgSrc+' - '+MM_imageIndex+' - '+MM_maxGalleryImages+' - '+direction);
		// carico l'immagine richiesta attraverso la sequenza standard di scambio:
		
		//carico inizialmente l'immagine temporanea di riempimento...
		MM_swapImage(MM_stdImageName,'',aImgLowSrc,1);
		//carico l'immagine finale...
		MM_swapImage(MM_stdImageName,'',newImgSrc,1);
		// verifica finale per sapere se c'è una foto-icona in fase di scambio...
//		if (MM_swappedImgName !="")
//		{
			//alert(MM_swappedImgName);
			// il mouse è già su una foto-icona... rieffettuo lo scambio cosi' che
			// all'uscita del cursore torni tutto correttamente come prima
			// (altrimenti viene riscambiata l'immagine grande...)
			//MM_swapImage(MM_swappedImgName,'',MM_swappedImgSrc,1);
			//MM_swapImage(MM_swappedImgName,'',MM_swappedImgSrc,1);
//		}
			

	}
}

//	ricarica l'indice della foto scambiata nella variabile globale MM_imageIndex...
function loadFotoIndex(index)
{
	// ricarico l'indice della foto attuale nella variabile globale....
	// controllando che il parametro in ingresso sia convertibile in numero...
//	if (!isNaN(parseInt(index,10)))
//		MM_imageIndex=parseInt(index,10);

// funziona solo su firefox
//    MM_imageIndex=phSRC.indexOf(index); 
//alert(indexp);	
}




function getBaseName(aRef, separator)
{// estrae la base del nome oggetto indicato 
 // all'interno della stringa passata in aRef,
	var c="";
	var strBase="";
	var index=0;
	index = aRef.lastIndexOf(separator);
	index--;
	c=aRef.charAt(index);
	do
	{
		index--;
		c=aRef.charAt(index);
	}
	while (!isNaN(c));
	index++;
	//prelevo la base del nome oggetto...
	strBase=aRef.substring(0, index);

return 	strBase;
}

function getNumericIndex(aRef, separator)
{// estrae il valore numerico indicato tra la base e l'estensione del nome oggetto
 // all'interno della stringa passata in aRef,
	var c="";
	var strIndex="";
	var index=aRef.lastIndexOf(separator);
	index--;
	c=aRef.charAt(index);
	do
	{
		strIndex=c+strIndex;
		index--;
		c=aRef.charAt(index);
	}
	while (!isNaN(c));
	index = parseInt(strIndex ,10);

return 	index;
}

function getExtention(aRef, separator)
{// estrae l'estensione completa di separator, del nome oggetto indicato 
 // all'interno della stringa passata in aRef,
	var strExt="";
	var index=0;
	index = aRef.lastIndexOf(separator);
	strExt=aRef.slice(index);
return strExt;
}

function getPath(aRef)
{// estrae il percorso completo  del nome oggetto indicato 
 // all'interno della stringa passata in aRef,
	var separator ="/";
	var strPath="";
	var index=0;
	index = aRef.lastIndexOf(separator);
	strPath=aRef.slice(0,index+1);
return strPath;
}

function ToStringWithZeros(n, digits)
{// trasforma in stringa il numero passato nel parametro n
 // formattando la stringa, con degli zeri iniziali se necessari, al numero di caratteri
 // indicati dal parametro digits.
	// costruisco il nome-file della nuova immagine da visualizzare....
	// creo una stringa di appoggio...	
	var filler="000000000000000000000000000000000";
	// determino la lunghezza della parte di nome-immagine che varia...
	var nStr=n.toString(10);

	if (nStr.length < digits)
		nStr=(filler.substr(0, digits-nStr.length)+nStr);
	
	return nStr;	
}



//-->
