﻿
Effect.BlindUpFromRight = function(element)
{
	element = $(element);
	element.makeClipping();
	return new Effect.Scale(element, 0,
		Object.extend({ scaleContent: false,
			scaleY: false,
			restoreAfterFinish: true,
			afterFinishInternal: function(effect) {
				effect.element.hide();
				effect.element.undoClipping();
			}
		}, arguments[1] || {})
	);
}

/*****************************************************************************
	Â§Â§ BlindDownFromRight - Blind verso dx (apre)
 *****************************************************************************/
Effect.BlindDownFromRight = function(element)
{
	element = $(element);
	var elementDimensions = element.getDimensions();
	return new Effect.Scale(element, 100, Object.extend({
		scaleContent: false,
		scaleY: false,
		scaleFrom: 0,
		scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
		restoreAfterFinish: true,
		afterSetup: function(effect) {
			effect.element.makeClipping();
			effect.element.setStyle({width: '0px'});
			effect.element.show();
		},
		afterFinishInternal: function(effect) {
			effect.element.undoClipping();
		}
	}, arguments[1] || {}));
}

/*****************************************************************************
	DropOutX - move&fade da sx a dx
 *****************************************************************************/
Effect.DropOutX = function(element)
{
	element = $(element);
	return new Effect.Parallel(
    		[	new Effect.Move(element, {x: 750, y: 0, sync: true }),
      		new Effect.Opacity(element, { sync: true, start:1.0, to:0.0 }) ],
    		Object.extend({ duration: 1.5 }, arguments[1] || {}));
}

/*****************************************************************************
	DropInX - move&fade da dx a sx
 *****************************************************************************/
Effect.DropInX = function(element)
{
	element = $(element);
	return new Effect.Parallel(
    		[	new Effect.Move(element, {x: -750, y: 0, sync: true }),
      		new Effect.Opacity(element, { sync: true, from:0.0}) ],
   		Object.extend({ duration: 1.5 }, arguments[1] || {}));
}

/*****************************************************************************
	diaporama_startup
	   slideshow delle immagini dei negozi (pagina negozi)
	   e - id immagine
	   t - tempo di fade
	   r - ritardo di slide
	   a - array immagini (uri)
	   x - prefisso id della pagina dove Ã¨ visualizzato lo slideshow
	   logica di funzionamento: metto l'immagine successiva come background
	         del div contenitore e poi faccio sparire con fade l'immagine che
				la copre... poi assegno a tale immagine quella di background e
				carico una nuova immagine nel background per riprendere il ciclo
 *****************************************************************************/
function diaporama_startup(e, t, r, a, x)
{ //alert('diaporama('+e+', '+t+', '+r+', '+a+', '+x+'');
  if (document.getElementById(e))
  {
  	var ediv = document.getElementById(e); // div contenitore (quello in cui va il background per il crossfading)	
	var eimg = document.getElementById(e+'_img'); // immagine usata per il crossfading
	var timerID = setInterval(function(){
			if (! document.getElementById(x+'_ok'))   // se non sono nella pagina di slideshow corretta, esco
			{
				//alert('umount: '+x);
				clearInterval(timerID);
			}
			else
			{
				if (document.getElementById(x+'_ok') && document.getElementById(x+'_ok').innerHTML.trim() != '&nbsp;&nbsp;')
				{
					if (document.getElementById(e+'_img'))
					{
						new Effect.Fade(eimg, {
							duration:t,
							afterFinish: function(){
								if (document.getElementById(e))
							   {
				   				eimg.src = ediv.style.backgroundImage.substr(4,ediv.style.backgroundImage.length-5)+'';
									new Effect.Appear(eimg, {
							                        duration:0.1,  queue:'end',
							                        afterFinish:function(){	//alert(a.length);
							                        					if (document.getElementById(e))
							                        					{
																					i = parseInt(ediv.getAttribute('idx'))+1;
																					if (i >= a.length)
																						i = 0;
																					ediv.setAttribute('idx', ''+i);
																					ediv.style.backgroundImage = 'url('+a[i]+')'; // negozi
																				}
																			}
									});
								}
							}
						});
					}
				}
			}
		},
		r*2500+t*1000); // 1100*1000
  }		
}

// riavvia o ferma lo slideshow della campagna (o in generale lo slideshow)
function cpause()
{
	var cpause = $('bpause');
	var cplay  = $('bplay');
	var cthumb = $('bthumb');
	var pau 	  = $('immagini_campagna_ok');
	if (cplay.src.indexOf('_on') >= 0)
	{
		pau.innerHTML = '&nbsp;&nbsp;';
	   cplay.src  = "images/play_off.gif";
	   cpause.src = "images/pausa_on.gif";
	}
}
function cplay()
{
	var cpause = $('bpause');
	var cplay  = $('bplay');
	var cthumb = $('bthumb');
	var pau 	  = $('immagini_campagna_ok');
	if (cpause.src.indexOf('_on'))
	{
	   if (cthumb.src.indexOf('_on') >= 0)
	      cthumb.src = "images/thumb_off.gif";
	   cpause.src = "images/pausa_off.gif";
	   cplay.src = "images/play_on.gif";
	   pau.innerHTML = '&nbsp;';
	}
}

String.prototype.trim = function()
{
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};

function cthumb(thumbimg)
{
	var cpause = $('bpause');
	var cplay  = $('bplay');
	var cthumb = $('bthumb');
	var pau = $('immagini_campagna_ok');
	var mb  = $('slideshow_img');
	var ss  = $('slideshow');
	if (cthumb.src.indexOf('_off') >= 0)
	{
	   if (cplay.src.indexOf('_on') >= 0)
	   {
	      pau.innerHTML = '&nbsp;&nbsp;';
	   	cplay.src  = "images/play_off.gif";
	   	cpause.src = "images/pausa_on.gif";
	   	cthumb.src = "images/thumb_on.gif";
	   	ss.style.backgroundImage = 'url('+thumbimg+')';
	   	window.setTimeout(function(){
	   		mb.src = thumbimg;
			},2000);
		}
		else
		{
			cthumb.src = "images/thumb_on.gif";
		   mb.src = thumbimg;
		}
	}
}
/*****************************************************************************
	rand ([[min], max])
	genera un numero casuale
	es: 	rand() 		=> 0..1
	      rand(5) 		=> 0..5
	      rand(2,7) 	=> 2..7
 *****************************************************************************/
function rand()
{
	var nmin = 0;
	var nmax = 1;
	if (arguments.length == 1)
	{
	   nmax = arguments[0];
	}
	else
	{
	   if (arguments.length >= 2)
	   {
	      nmin = arguments[0];
         nmax = arguments[1];
		}
	}
	return ( Math.floor(Math.random()*(nmax+1))+nmin );
}

/*****************************************************************************
	changeback
	cambia l'immagine di sfondo
	input    
	output   
 *****************************************************************************/
function changeback(imgArr)
{
	if (document.getElementById('div_bigback').style.display != 'none') // se sono nella pagina negozi
	{
	 	try {
			 document.getElementById('foto_negozio').style.display 	= 'none'; // tolgo l'immagine dei negozi
 	   } catch (e) { };
	   try {
 		    document.getElementById('div_bigback').style.display 	= 'none'; // tolgo il div con l'immagine di sfondo ai negozi
		    document.getElementById('div_bigback').style.width = '0.1%';
		} catch (e) { };
		new Effect.FadingLoad('d_content', 'default');
	}
	else //if ($('d_rightback')) // se NON sono nella pagina dei negozi
	{
	   if ($('d_default'))
	   {
	   	new Effect.Opacity(document.getElementById('d_rightback'), {queue:'end', start:1.0, to:0.0, duration: 0.25,
								afterFinish:function(){
								   if (document.getElementById('img_rightback'))
										document.getElementById('img_rightback').src = imgArr[rand(imgArr.length-1)]; // cambio immagine
									new Effect.Opacity(document.getElementById('d_rightback'), {queue:'end', start:0.0, to:1.0, duration: 0.25});
								}
			});
		}
		else
		{
		   new Effect.MovingLoad('d_content', 'default', new Array(), '', {pars:''});
		}
	}
}

/*****************************************************************************
	loading - fa apparire cursore e icona di caricamento contenuti...
	parametri 'start' mostra e 'stop' o 'done' ripristina cursore e icona
 *****************************************************************************/
function loading(phase)
{
	if (document.getElementById('loading'))
	{
	   var loader = document.getElementById('loading');
		if (phase == 'start')
		{
			document.body.style.cursor = 'progress';
			loader.style.width='100%';
			loader.style.display='block';
		}
		else
		{
			document.body.style.cursor = 'auto';
			loader.style.display='none';
			loader.style.width='0.1%';
		}
	}
}

/*****************************************************************************
	AjaxLoad - carica una pagina via Ajax
	element		id elemento contenitore
	url			pagina-solo nome(base e estensione built-in
 *****************************************************************************/
Effect.AjaxLoad = Class.create();
Object.extend(Object.extend(Effect.AjaxLoad.prototype, Effect.Base.prototype), {
	initialize: function(element) { //alert('AjaxLoad->INIT');
		loading('start');
		this.element = $(element); //element;
		
		var options = Object.extend({
			url: 'default',
			par: ''
		}, arguments[1] || {});
		options.onException = function(o,e){ alert('EXCEPTION ['+o+'---'+e+']'); throw(e); }; // AGGIUNTO PER OVVIARE ALLE ECCEZIONI
		this.url = options.url;
		this.par = options.par; //alert('AjaxLoad->INIT [options]');
		//alert(this.par)
		
		this.start(options); //alert('AjaxLoad->INIT [start:options]');
	},
	finish: function()
				{  //alert('AjaxLoad->FINISH'); // carico la pagina .PHP (il sotto-template) corrispondente all'elemento richiesto
					this.url = this.url+'.asp'+this.par; 
					
					//alert(this.url);
					//loading('done');
					//window.setTimeout(function() {
						try {
							new Ajax.Updater(this.element, this.url, {
												method:'post', asynchronous:true, //evalScripts: true,
												onComplete: function(){
												   loading('done');
												   try {
													   if (document.getElementById('home_div')) // Â§Â§Â§Â§Â§Â§
														{
															var home = document.getElementById('home_div'); 
															home.style.display = 'none';     // tolgo il div delle news di homepage
															home.style.width 	 = '0.1%';
														}
												   } catch (e) { };
													/*
													if (this.url != 'pages/default.php')
													{
												   		window.setTimeout(function(){
												   				initSlider('scrollAreaD','scrollerD','containerD','contentD');
															}, 250);
													}
													*/
												},
												onFailure: function(t){
													if (t.status = 12031)
														alert('The server could not be found. ['+t.status+']');
													else
														alert('Ajax Error: ' + t.statusText + ' ['+t.status+']');
												}
											});
							//alert('AjaxLoad->Updater->Done');
						} catch(e) { alert('UpdaterExc: '+e); s=''; for(i in e) s+=(i+"---"+e[i]+"\n"); alert(s); }
					//}, 100);
				}
});

/*****************************************************************************
	NOTA: la news startup non viene fermata! Per cui tornando nella pagina col
	      div continua a funzionare!!! un bug che Ã¨ accettabile in quanto
	      elimina la necessitÃ  di reload della funzione
 *****************************************************************************/
function news_startup(element, newsarr, refsarr, delay)
{
	var home;
	if (document.getElementById('home_div'))
	{
		home = document.getElementById('home_div');
		home.style.display = 'block';
		home.style.width 	 = '100%';

		var i = 1;
		var j = 1;
   	var timerID = window.setInterval(function()
                              {
                                 try {
												if (i >= newsarr.length)
                                       i = 0;
                                    if (! document.getElementById('d_rightback'))
                                    {
													home.style.display = 'none';
													home.style.width   = '0.1%';
											  	}
											  	else if (home.style.display != 'block')
											  	{
							  				  	   home.style.display = 'block';
	                                    home.style.width 	 = '100%';
											   }
											   if (j%2 == 0)
												   new Effect.LoadNews(element, newsarr[i], refsarr[i], delay/4);
											   else
													i++;
											   j++;
											}
											catch (e) { };
										}, delay);
	}
}
/*****************************************************************************
	LoadNews - 3 effetti in serie (cambio pagina)
	element		id elemento contenitore
	page			pagina da caricare
 *****************************************************************************/
Effect.LoadNews = function(element, news, refs, delay)
{
	element = document.getElementById(element);
	new Effect.DropOutX(element, {queue:'end', afterFinish:function(e){
			element.innerHTML = '<a style="color:#cc0000" href="http://www.unicane.com/" onclick="new Effect.MovingLoad(\'d_content\', \'dettaglio_comunicato\', \'\', \'\', {pars:\'?t=archivio_comunicati&p=0&d='+refs+'\'});">'+news+'</a>';
			window.setTimeout(function(){
										new Effect.DropInX (element, {queue:'end'}); // fa rientrare la pagina
									}, delay);
		}
	}); // fa uscire la pagina
	return(element);
}

/*****************************************************************************
	MovingLoad - 3 effetti in serie (cambio pagina)
	element		id elemento contenitore
	page			pagina da caricare
 *****************************************************************************/
Effect.MovingLoad = function(element, page, arr, xid)
{  //alert('MovingLoad');
	if (page != '') // se la pagina da caricare Ã¨ specificata entra
	{
		element 		= document.getElementById(element);
		var options = Object.extend({pars:''}, arguments[4] || {}); // era arguments[3]
		var pars 	= options.pars;
		if (document.getElementById('div_bigback')) // Â§Â§Â§Â§Â§Â§
		{
			bback = $('div_bigback'); 
			bback.style.display = 'none'; 	// tolgo il div con l'immagine di sfondo ai negozi
			bback.style.width = '0.1%';
		}
		loading('start');
		new Effect.DropOutX(element, {queue:'end', afterFinish:function(e){ // alert('dropout');
			element.innerHTML = ''; // rimuovo gli elementi vecchi per evitare che si vedano prima del caricamento di quelli nuovi
			
		//	window.setTimeout(function(){
			new Effect.AjaxLoad(element, {queue:'end', url:page, par:pars, afterFinish:function(e){ //queue:'end', 
			      //alert('load');
			   window.setTimeout(function(){ // ##################################################
					new Effect.DropInX (element, {queue:'end', afterFinish: function (e) { // alert('dropin');
					      //try {
								if (arr != '') // se ho l'array immagini
								{
								   if (page != 'default')
								   {
									   if (true)//arr.length && arr.length > 1) // devo avere almeno 2 immagini per far partire il diaporama/slideshow
									   {
										   t1 = 1.5;
										   t2 = 1;
											if (page == 'archivio_campagna') // se ho aperto la campagna pubblicitaria, cambio i tempi
											{
											   t1 = 2.5;
											   t2 = 2;
											}
											if (page.indexOf('archivio')==0 || page=='pagina_furlaarte')
								  				diaporama_startup('slideshow', t1, t2, arr, xid);        // sarebbe stato meglio usare id unico e farlo partire se necessario
										}
									}
								}
			   		    //} catch (e) { };
						}
     				}) // fa rientrare la pagina
     			  },100); //500 // ##################################################
			   }
			}) // la carica
		  // }, 250);			   
		 }
		}); // fa uscire la pagina
		return(element);
	}
}

/*****************************************************************************
	FadingLoad - 3 effetti in serie (cambio pagina)
	element		id elemento contenitore
	page			pagina da caricare
	NOTE:       tolti i "queue" per velocizzare... formalmente dovrebbe
	            funzionare in modo analogo in quanto sono nella afterFinish
 *****************************************************************************/
Effect.FadingLoad = function(element, page)
{
	
	//alert(element)
	//alert(page)
	
	element 		= document.getElementById(element);
	var options = Object.extend({pars:''}, arguments[2] || {});
	var pars 	= options.pars;
	loading('start');
	new Effect.Opacity	(element, {queue:'end', start:1.0, to:0.0, duration: 0.2, afterFinish:function(e){
	      element.innerHTML = ''; // rimuovo gli elementi vecchi per evitare che si vedano prima del caricamento di quelli nuovi
      	new Effect.AjaxLoad	(element, {url:page, par:pars, afterFinish:function(e){ //queue:'end',
      	      window.setTimeout(function(){ // ################ NEW
   					new Effect.Opacity	(element, {start:0.0,to:1.0, duration: 0.4}); // fa apparire la pagina //queue:'end',
					},125); // erano 0.75, 0.75, 250
				}
			}) // la carica
		}
	}); // fa sparire la pagina
		//new Effect.AjaxLoad	(element, {queue:'end', url:page});
	return(element);
}

/*****************************************************************************
	FadingLoad - 3 effetti in serie (cambio pagina)
	element		id elemento contenitore
	page			pagina da caricare
 *****************************************************************************/
Effect.FadingLoadCol = function(element, page, colnum)
{
	//alert("element= "+element);
	//alert("page= "+page);
	//alert("colnum= "+colnum)
	element = document.getElementById(element);
	if (element) // messo per evitare che dia errore se cliccano il continente prima della fine del load... dovrebbe andare anche senza, visto che Ã¨ in queue:'end'
	{
		var options = Object.extend({pars:''}, arguments[3] || {});
		var pars 	= options.pars;
		loading('start');
		new Effect.AjaxLoad	(element, {queue:'end',	url:page, par:pars,
						afterFinish: function() { // svuoto le colonne successive (a dx)
								if (colnum < 4) {
									for (i=4; i>colnum; i--)
										document.getElementById('colonna'+i).innerHTML = '';
								}
								window.setTimeout(function() {
	             							show_fotoNegozio();
	             				/*
							 				window.setTimeout(function() {
													initSlider('scrollArea'+colnum,'scroller'+colnum,'container'+colnum,'content'+colnum);
												},400); //250
								*/
								}, 100); //250
						}
				});
		return(element);
	}
}

/*****************************************************************************
	FadingBackLoad - 3 effetti in serie (cambio pagina)
	element		id elemento contenitore
	page			pagina da caricare
	arr         array immagini da caricare
 *****************************************************************************/
Effect.FadingBackLoad = function(element, page, arr, xid)
{
	element = document.getElementById(element);
	page = 'archivio_negozi';
	var options = Object.extend({pars:''}, arguments[4] || {}); // era arguments[3]
	var pars 	= options.pars;
	if (document.getElementById('home_div'))
	{
		var home = document.getElementById('home_div'); 	
 		home.style.display = 'none';     // tolgo il div delle news di homepage
	  	home.style.width 	 = '0.1%';
	}
	loading('start');
 	new Effect.Opacity	(element, {queue:'end', start:1.0, to:0.0, duration: 0.75, afterFinish:function(e){
 			element.innerHTML = ''; // rimuovo gli elementi vecchi per evitare che si vedano prima del caricamento di quelli nuovi
      	new Effect.AjaxLoad	(element, {url:page, par:pars, afterFinish:function(e){ //queue:'end', 
   				new Effect.Opacity	(element, {queue:'end', start:0.0, to:1.0, duration: 0.75, afterFinish:function(e){
 						   try {
 						   	if (document.getElementById('div_bigback'))
 						   	{
 						   		var bback = document.getElementById('div_bigback'); 
   								bback.style.width = '100%';
   								bback.style.display = 'block';
   							}
						   }
						   catch (e) { };
							diaporama_startup('slideshow', 1.5, 1, arr, xid);
						}
					}) // fa apparire la pagina
  				}
			}) // la carica
		}
	}) // fa sparire la pagina

	return(element);
}

/*****************************************************************************
	getStylePx
	estrazione di uno stile in formato numerico (rimozione 'px')
 *****************************************************************************/
function getStylePx(ele, sty)
{
	var str = Element.getStyle(ele,sty);
	return (str.substr(0,str.length-2));
}

function get_collectionPageShown(element)
{ 
	return Math.ceil(Math.abs(getStylePx(element,'left'))/350)+1;
}
/*****************************************************************************
	MoveCollection
	element     id elemento da muovere
	dir         ::= 'right' | 'left'
	wid         ::= int
 *****************************************************************************/
var _moveCollectionLock_ = false;
Effect.MoveCollection = function(element)
{
	if (_moveCollectionLock_ != true) // se non mi sto gia muovendo...
	{
		_moveCollectionLock_ = true;
		element = $(element);
		var options = Object.extend({ x:350, dir:'left', wid:350 }, arguments[1] || {});
		var xx = options.x;
		var di = options.dir;
		var wi = options.wid;
		if (options.dir=='right')
		   xx = -xx;
		if (!(getStylePx(element,'left')==0 && di=='left') && !(getStylePx(element,'left')==-wi+350 && di=='right'))
			new Effect.MoveBy(element, 0, xx, {	queue:'end',
				afterFinish: function()
								{
									for(k=1;k<12;k++) // decoloriamo tutti i numeretti
									   if (document.getElementById('pag'+k))
											document.getElementById('pag'+k).style.color="#555555";
									document.getElementById('leftArr').style.color="#555555";
									document.getElementById('rightArr').style.color="#555555";
									idx = get_collectionPageShown(element); // cerco quello corrente
									document.getElementById('pag'+idx).style.color="#cc0000"; // lo coloro
									_moveCollectionLock_ = false;
					        	}
			});
		else
		   _moveCollectionLock_ = false;
  }
}

/*****************************************************************************
	paginateTo
	   element - this (elemento di navigazione corrente)
	   numpag - ampiezza del div che contiene il catalogo (multiplo di 350)
 *****************************************************************************/
function paginateTo(element, numpag, cpag, table)
{ // alert(element+"__"+numpag+"__"+cpag+"__"+table);
	if (element.style.color!="rgb(204, 0, 0)" && element.style.color!="#cc0000") //entro se non sono io la destinazione
	{
		//alert("hello")
		page = parseInt(element.id.substr(3,element.id.length)); //alert(page);
		sele = 1;
   	for(var k=1;k<12;k++) // cerco quello selezionato
			if ($('pag'+k) && ($('pag'+k).style.color=="rgb(204, 0, 0)" || $('pag'+k).style.color=="#cc0000")) //#cc0000
		   	sele = k;
		if (page>sele) // calcolo dove spostarmi
		{
		   sign = 'right';
			diff = page-sele;
		}
		else
		{
			sign = 'left';
		   diff = sele-page;
		}
		move = diff*350; //calcolo di quanto spostarmi

		var cpid   = 'd_collection_page'+cpag;
		//if (document.getElementById(cpid).innerHTML == '&nbsp;')
		if (document.getElementById(cpid).innerHTML=='&nbsp;' || document.getElementById(cpid).innerHTML.length==1)
		{//	alert('loadPage: '+cpag+' table: '+table);
			var offset = (cpag-1) * 6;
			new Effect.AjaxLoad(cpid, {url:'cms_content', par:'?t='+table+'&o='+offset}); //Effect.FadingLoad
		}
		new Effect.MoveCollection('d_gallery', {queue:'end', dir:sign, wid:numpag, x:move});
	}
}

/*****************************************************************************
	arrowMove
 *****************************************************************************/
function arrowMove(element, numpag, table, mover)
{	
	element = $(element); //alert(numpag+"__"+table+"__"+mover);
	var pag = get_collectionPageShown(element);
	paginateTo(document.getElementById('pag'+(pag+mover)), numpag, pag+mover, table);
}

/*****************************************************************************
	scrolling
	   scrA    - scrollArea
	   conta   - container
	   conte   - content
	   scrollY - quantitÃ  di scroll del cursore
 *****************************************************************************/
function scrolling(scrA, conta, conte, scrollY)
{
   var docH  = $(conte).offsetHeight;
   var contH = $(conta).offsetHeight;
   var scrAH =  $(scrA).offsetHeight;
   var scroH = (contH*scrAH)/docH;
   var scrDi = Math.round(scrAH-scroH);
   var docY = 0 - (scrollY *(docH-contH));	// (scrollY *(docH-contH)/scrDi);
   $(conte).style.marginTop = docY + "px";	//Math.round(docY) + "px";
}

// ------------------------------------------------------------------------------ DETAIL ZOOM
/*****************************************************************************
	zoom_cursor
	cambia lo stile del cursore in lente di ingrandimento
 *****************************************************************************/
function zoom_cursor(t)
{
	//t.style.cursor='url(images/zoom-in.cur), -moz-zoom-in'; // ################ @@@@@
}

/*****************************************************************************
	zoomer
	fa lo zoom dell'immagine
	nota: prima la cambia con la hi-res poi la ingrandisce... viceversa,
			prima la rimpicciolisce poi passa alla low-res
 *****************************************************************************/
function zoomer(t, image, imgw, zoom, zomw, called)
{
	//alert(image)
	t = $(t);
	if (t.width == imgw) // zoom-in
	{
	   t.src = zoom;
		new Effect.Scale(t, 200, {duration:2, afterFinish: function(){
		    			dragItem = new Draggable(t, { // inizializzo il dragging
			 					starteffect:'',endeffect:'',
								snap: function(x,y,draggable) { // limito il movimento di drag
											  function limiter(lim,bot,top) {
											    if (lim>top) return(top);
											    else if (lim<bot) return bot;
											    else return lim;
											  }
											  var place=[limiter(x,-(zomw-imgw),0),limiter(y,-(zomw-imgw),0)];
											  t.setStyle({left:place[0]+'px',top:place[1]+'px'});
											  return place;
										}.bind(this)});

                        //t.onmouseover = "this.style.cursor='move';"; // cambio cursore
                        t.style.cursor='move';
                        document.getElementById('zoomout').style.display = 'block'; // mostro il tasto BACK
					}
		});
	}
	else if (called==true && t.width == zomw) // zoom-out
	{
		dragItem.destroy();  // fermo il dragging
		new Effect.Move (t,{ x: 0, y: 0, mode: 'absolute'});
		new Effect.Scale(t, 50, {duration:2, scaleMode:{originalWidth:zomw, originalHeight:zomw}, afterFinish: function(){
				t.src = image;
				//t.onmouseover = "this.style.cursor='-moz-zoom-in';"; // ripristino il cursore // url(images/zoom-in.cur),
      		//t.style.cursor = 'url(images/zoom-in.cur), -moz-zoom-in'; // ################
			}
		});
	}
}
/*****************************************************************************
	restore
	div/tastino per ripristinare l'immagine dettaglio normale (non zoom)
 *****************************************************************************/
function restore(me, t, image, imgw, zoom, zomw)
{
	
	zoomer(t, image, imgw, zoom, zomw, true);
	me.style.display = 'none';
	document.getElementById(t).style.cursor='hand';
	document.getElementById(t).style.cursor='pointer';
}

// ------------------------------------------------------------------------------
function locator(url)
{
	element = $('div_bigback');
	element.style.backgroundImage='url('+url+')';
	var image = $('img_bigback'); // la duration era 1 (vedi opacity sotto)
  	new Effect.Opacity(image, {start:1.0,to:0.0, duration: 2, //queue:'end',
  									afterFinish: function()
													{
													   image.src = url;
													   new Effect.Opacity(image, {start:0.0,to:1.0, duration: 0.1});
													}
	  					}); // fa apparire la pagina
	return(element);
}
