MooTools.lang.setLanguage("it-IT");

if (typeof(Shadowbox) != 'undefined') { Shadowbox.init(); }

window.addEvent('domready',function(){$$('a[href=#]').each(function(el){el.addEvent('click', function(e) {e.stop();});});});

Form.Validator.Balloon = new Class({
	
	Extends: Form.Validator,
	
	options: {
		color: 'grey',
		cssPath: 'include/formcheck/',
		contWidth: 150,
		ignoreHidden: false,
		offsetX: -50,
		offsetY: 0,
		scrollToErrorsOnSubmit: false,
		scrollToErrorsOnBlur: false,
		scrollToErrorsOnChange: false,
		scrollFxOptions: {
			transition: 'quad:out',
			offset: {
				y: -80
			}
		}
	},

	initialize: function(form, options){
		// Richiamo il metodo padre
		this.parent(form, options);
		
		// Aggiungo il foglio di stile al DOM
		var cssPath = this.options.cssPath;
		if (cssPath.substr(-1,1) != '/') cssPath+='/';
		new Element('link', {
			'rel': "stylesheet",
			'type': "text/css",
			'href': cssPath+this.options.color+'/validator.css'
		}).inject(document.getElement('head'));
	},
	
	test: function(className, field, warn) {
		var isValid = this.parent(className, field, warn);
		var validator = this.getValidator(className);
		if (!isValid && validator.getError(field)){
			if (warn) field.addClass('warning');
			// Se c'è l'errore chiamo makeAdvice
			this.makeAdvice(className, field, validator.getError(field), warn);
		}
		return isValid;
	},

	getFieldId : function(field){
		return field.id ? field.id : field.id = 'input_' + field.name;
	},

	validateField: function(field, force, scroll){
		//Prima creo il contenitore
		this.createContainer(field);
		
		if (this.options.serial && $chk(this.element.getElement('.validation-failed'))) {
			if (this.element.getElement('.validation-failed') != field)
				return true;
		}
		// Chiamo il metodo del Form.Validator che oltre a dirmi se passa o no
		// chiama l'evento onElementValidate che chiama a sua volta il makeAdvice
		// che popola un array con i vari errori di validazione
		var result = this.parent(field, force);
		
		if (((this.options.scrollToErrorsOnSubmit && scroll === undefined) || scroll) && !result){
			var failed = document.id(this).getElement('.validation-failed');
			var par = document.id(this).getParent();
			while (par != document.body && par.getScrollSize().y == par.getSize().y){
				par = par.getParent();
			}
			var fx = par.retrieve('fvScroller');
			if (!fx && window.Fx && Fx.Scroll){
				fx = new Fx.Scroll(par, this.options.scrollFxOptions);
				par.store('fvScroller', fx);
			}
			if (failed){
				if (fx) fx.toElement(failed);
				else par.scrollTo(par.getScroll().x, failed.getPosition(par).y - 20);
			}
		}
		
		if (result) {
			// Se la validazione passa nascondo il container
			this.hideAdvice(field);
		}
		else {
			// Altrimenti inserisco gli errori nel container
			this.insertAdvice(field);
		}
		// Ritorno l'esito della validazione (se qualcuno volesse farla manualmente)
		return result;
	},
	
	createContainer: function(field) {
		// Crea il contenitore se non esiste già
		var c;
		if (c = field.retrieve('advices-container', false)) {
			if (!$chk(c.getElement('div.err'))) {
				field.eliminate('advices-container');
			}
		}
		
		if (!field.retrieve('advices-container', false)) {
			// Codice html della struttura del balloon, più veloce che stare a creare tutti gli elementi
			var errorHtml = '<div class="top"><div class="tl"></div><div class="tr"></div><div class="t"></div></div>';
			errorHtml += '<div class="center"><div class="l"><div class="r"><div class="c"><a class="close"></a><div class="err">';
			errorHtml += '</div></div></div></div></div>';
			errorHtml += '<div class="bottom"><div class="bl"></div><div class="br"></div><div class="b"></div></div>';
			
			var el2Wrap = field.getParent().get('tag') == 'label' ? field.getParent() : field;
			// Creo il padre per utilizzare il posizionamento assoluto relativamente ad esso
			// Se c'è la label è un casino, perchè non si riesce a chiudere la finestra 
			// dato che il click sulla x (che sarebbe interna alla label)  riporta il focus sull'input, 
			// quindi cliccando poi altrove si riverificherebbe il blur e la validazione che fallendo 
			// riapre il balloon. Così all'infinito. Creo quindi il padre esterno alla label.
			var p = new Element('span').wraps(el2Wrap);
			p.setStyle('position', 'relative');
			
			// Creo il div come elemento DOM così da poterlo memorizzare su field.
			var div = new Element('div', {
				'class': 'validation-advice',
				'styles': { 
					'visibility': 'hidden',
					'position': 'absolute',
					'left': field.getCoordinates(p).right + this.options.offsetX,
					'width': this.options.contWidth+'px'
				},
				'html': errorHtml
			});
			// Memorizzo il div al field, così da poterlo recuperare facilmente.
			field.store('advices-container',div);
			
			// Lo inserisco nel padre
			div.inject(p);
			if (div.fade) div.fade('hide');
			
			// Attivo la x che chiude la finestra
			var fv = this;
			div.getElement('a.close').addEvent('click', function(e) {
				fv.resetField(field);
			});
		}
		
		var matches = field.get('class').match(/parent:[\S]+/i);
		if (field.hasClass('validate-reqchk-byname') && matches) {
			var parentID = matches[0].substr(7);
			var parentField = $(parentID);
			if (!parentField) parentField = field;
			if (!parentField.retrieve('advices-container', false) && parentField != field)
				this.createContainer(parentField);
			var nodeAdvCont = parentField.retrieve('advices-container');
			field.store('node-advices-container',nodeAdvCont);
		}
		
		// Svuoto l'array dei messaggi se esiste, altrimenti ne creo uno.
		var am;
		if (typeof(am = field.retrieve('advices-messages', false)) == 'array') {
			am.empty();
		}
		else {
			field.store('advices-messages', new Array())
		}
	},

	makeAdvice: function(className, field, error, warn){
		
		// Ricavo l'errore
		var errorMsg = (warn)?this.warningPrefix:this.errorPrefix;
			errorMsg += (this.options.useTitles) ? field.title || error:error;
		var cssClass = (warn) ? 'warning-message' : 'validation-message';
		var fv = this;
		
		if (className == 'validate-reqchk-byname') cssClass+=' node';
		// Creo il p del messaggio dell'errore
		var advice = new Element('p', {
			'html': errorMsg,
			'class': cssClass
			//id: 'advice-' + className + '-' + this.getFieldId(field)
		}).addClass(cssClass);
		
		// Accodo l'errore all'array degli errori
		field.retrieve('advices-messages', new Array()).include(advice);
	},

	insertAdvice: function(field){
		// Messaggi salvati con makeAdvice
		var adviceMsg = field.retrieve('advices-messages', new Array());
		
		// Contenitore creato durante la prima vaidazione (ne prendo il div che conterrà  i messaggi)
		var cont = field.retrieve('advices-container', new Element('div')).getElement('div.err');
		// Svuoto il contenitore
		cont.empty();
		// e lo riempo con i nuovi messaggi
		var nodeCont = field.retrieve('node-advices-container', new Element('div')).getElement('div.err');
		if (nodeCont && nodeCont.empty) nodeCont.empty();
		
		adviceMsg.each(function(el) {
			if (el.hasClass('node')) {
				el.inject(nodeCont);
			}
			else {
				el.inject(cont);
			}
		});
		
		if (nodeCont) {
			var matches = field.get('class').match(/parent:[\S]+/i);
			if (field.hasClass('validate-reqchk-byname') && matches) {
				var parentID = matches[0].substr(7);
				var parentField = $(parentID);
				if (parentField && parentField != field) {
					if (nodeCont.get('text') != '') this.showAdvice(parentField);
				}
			}
		}
		
		if (cont.get('text') != '') this.showAdvice(field);
	},

	showAdvice: function(field){
		// Contenitore creato durante la prima vaidazione
		var advice = field.retrieve('advices-container', new Element('div'));
		
		// Calcolo la posizione verticale
		var p = field.getParent('span');
		var h = advice.getCoordinates().height;
		var t = field.getCoordinates(p).top;
		advice.setStyle('top', (t-h-this.options.offsetY)+'px');
		
		// Mostro il contenitore tramite fade (se esiste)
		if (advice.fade) advice.fade('in');
		else advice.setStyle('visibility', 'visible');
		
	},

	hideAdvice: function(field){
		// Contenitore creato durante la prima vaidazione
		var advice = field.retrieve('advices-container', new Element('div'));
		
		// Nascondo il contenitore tramite fade (se esiste)
		if (advice.fade) advice.fade('out');
		else advice.setStyle('visibility', 'hidden');
		
		var matches = field.get('class').match(/parent:[\S]+/i);
		if (field.hasClass('validate-reqchk-byname') && matches) {
			var parentID = matches[0].substr(7);
			var parentField = $(parentID);
			if (parentField && parentField != field) this.hideAdvice(parentField);
		}
	},

	resetField: function(field){
		// Preso pari pari da Form.Validator.Inline
		field = document.id(field);
		if (!field) return this;
		this.parent(field);
		// Fino a qui
		// A differenza dell'altro devo nascondere solo il contenitore
		// e non tutti i messaggi singolarmente.
		this.hideAdvice(field);
		return this;
	},
	
	watchFields: function(fields){
		fields.each(function(el){
			if (this.options.evaluateFieldsOnBlur){
				el.addEvent('blur', this.validationMonitor.pass([el, false, this.options.scrollToErrorsOnBlur], this));
			}
			if (this.options.evaluateFieldsOnChange){
				el.addEvent('change', this.validationMonitor.pass([el, true, this.options.scrollToErrorsOnChange], this));
			}
		}, this);
	}

});
MooTools.lang.set('en-US', 'Form.Validator', {
				  codFisc:'The tax code is incorrect',
				  pIVA:'The VAT code is not correct'
				  });
MooTools.lang.set('it-IT', 'Form.Validator', {
				  codFisc:'Il codice fiscale non è corretto',
				  pIVA:'La partita IVA non è corretta'
				  });
MooTools.lang.set('fr-FR', 'Form.Validator', {
				  codFisc:'Le code des impôts est incorrect',
				  pIVA:"La TVA n'est pas correcte"
				  });

Form.Validator.add('validate-codicefiscale', {
    errorMsg: Form.Validator.getMsg.pass('codFisc'),
    test: function(element){
		element.value = element.value.toUpperCase();
		var somma = 0;
		if (element.value.test(/^[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]$/)) {
			for (var i=0; i<15; i++){
				if (i % 2 == 0) {	//caratteri dispari 
					switch (element.value.charAt(i)) {
						case '0':
						case 'A': somma += 1; break;
						case '1':
						case 'B': somma += 0; break;
						case '2':
						case 'C': somma += 5; break;
						case '3':
						case 'D': somma += 7; break;
						case '4':
						case 'E': somma += 9; break;
						case '5':
						case 'F': somma += 13; break;
						case '6':
						case 'G': somma += 15; break;
						case '7':
						case 'H': somma += 17; break;
						case '8':
						case 'I': somma += 19; break;
						case '9':
						case 'J': somma += 21; break;
						case 'K': somma += 2; break;
						case 'L': somma += 4; break;
						case 'M': somma += 18; break;
						case 'N': somma += 20; break;
						case 'O': somma += 11; break;
						case 'P': somma += 3; break;
						case 'Q': somma += 6; break;
						case 'R': somma += 8; break;
						case 'S': somma += 12; break;
						case 'T': somma += 14; break;
						case 'U': somma += 16; break;
						case 'V': somma += 10; break;
						case 'W': somma += 22; break;
						case 'X': somma += 25; break;
						case 'Y': somma += 24; break;
						case 'Z': somma += 23; break;
					}
				} 
				else { //caratteri pari
					switch (element.value.charAt(i)) {
						case '0':
						case 'A': somma += 0; break;
						case '1':
						case 'B': somma += 1; break;
						case '2':
						case 'C': somma += 2; break;
						case '3':
						case 'D': somma += 3; break;
						case '4':
						case 'E': somma += 4; break;
						case '5':
						case 'F': somma += 5; break;
						case '6':
						case 'G': somma += 6; break;
						case '7':
						case 'H': somma += 7; break;
						case '8':
						case 'I': somma += 8; break;
						case '9':
						case 'J': somma += 9; break;
						case 'K': somma += 10; break;
						case 'L': somma += 11; break;
						case 'M': somma += 12; break;
						case 'N': somma += 13; break;
						case 'O': somma += 14; break;
						case 'P': somma += 15; break;
						case 'Q': somma += 16; break;
						case 'R': somma += 17; break;
						case 'S': somma += 18; break;
						case 'T': somma += 19; break;
						case 'U': somma += 20; break;
						case 'V': somma += 21; break;
						case 'W': somma += 22; break;
						case 'X': somma += 23; break;
						case 'Y': somma += 24; break;
						case 'Z': somma += 25; break;
					}
				}
			}
			somma %= 26;
			somma += 65;
			var chrcontrollo = String.fromCharCode(somma);
			return (element.value.charAt(15) == chrcontrollo);
		}
		else {
        	return element.value.test(/^[0-9]{11}$/) // partita IVA per le aziende
			|| element.value == ''; // campo vuoto (se obbligatorio aggiungere la classe required all'input)
		}
    }
});
Form.Validator.add('validate-partitaiva', {
    errorMsg: Form.Validator.getMsg.pass('pIVA'),
    test: function(element){
        return element.value.test(/^[0-9]{11}$/) // partita IVA
			|| element.value == ''; // campo vuoto (se obbligatorio aggiungere la classe required all'input)
    }
});
/*
Form.Validator.add('validate-email', {
		errorMsg: Form.Validator.getMsg.pass('email'),
		test: function(element){
			return Form.Validator.getValidator('IsEmpty').test(element) || (/^[A-Z0-9][A-Z0-9._%+-]*@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$/i).test(element.get('value'));
		}
});
*/

function eliminaRiga(id, messaggio, op) {
	var f, i;
	if (window.confirm(messaggio)) {
		f = new Element('form', {
				'action': addQSLink("op",op),
				'method': 'post',
				'styles': { 'display': 'none' }
			});
		i = new Element('input', {
				'type' : 'hidden',
				'name': 'id',
				'value': id
			});
		
		i.inject(f);
		
		f.inject(document.body);
		
		f.submit();
		
	}
}

if (Fx) {
Fx.ScrollSlider = new Class({
	
	Extends: Fx,
	
	initialize: function(element, options){
		this.parent(options);
		this.slider = element;
	},
	
	set: function(now){
		this.slider.set(now);
		return this;
	},
	
	start: function(from, to) {
		if (!to) {
			to = from;
			from = this.slider.step;
		}
		this.parent(from, to);
	}
});
}
Element.implement({
		
	makeScrollable: function(options) {
	/*
	Impostare overflow:auto al div
	farà funzionare il tutto anche senza javascript!
	
	Aggiungere i seguenti stili css:
		.sliderCont {
			// Contenitore di slider + frecce
			float: right // posizione dello slider
		}
		.frSu, .frGiu {
			// frecce
		}
		.slider {
			// slider
		}
		.knob {
			// pomello che si muove
		}
	*/
		
		var opts = {
			sliderContClass: '',		// Classe aggiuntiva del contenitore dello slider (per avere più slider diversi)
			// Opzioni riguardanti le frecce
			arrowStep: 10, 				// Spostamento al click sulla freccia
			arrowWaitBeforeAuto: 300, 	// Tempo di attesa prima di cominciare lo scroll continuo (ms)
			arrowAutoStep: 10, 			// Scorrimento continuo: spostamento ogni frame
			arrowAutoFPS: 25, 			// Scorrimento continuo: frame al secondo
			// Opzioni riguardanti la rotella
			mouseWheelStep: 10, 		// Spostamento ogni giro
			// Opzioni riguardanti lo scorrimento automatico onMouseDown (somd: Scroll On Mouse Down)
			// (per consentire la selezione del testo)
			somdDist: 30, 				// Distanza dal bordo dove comincia lo scorrimento
			somdFatt: 0.1,				// moltiplicato per v è il passo dello scorrimento effettuato ogni spostamento 
			somdFPS: 25 ,				// spostamenti per secondo
			somdMaxSpeed: 0				// Velocità massima scorrimento in px per spostamento (<= 0 : illimitata)
		};
		
		$extend(opts, options);
		
		var el = this;
		var elSize = el.getComputedSize()
		var altFin = elSize.totalHeight;
		var larFin = elSize.totalWidth;
		
		el.setStyle('overflow','hidden');
		
		var inScroll = false;
		var currPos = 0;
		var mySlider;
		
		var div = new Element('div');
		var cont = new Element('div',{
			'class': 'scrollContainer',
			'styles': {
				'width': larFin+'px'
			}
		});
		
		var sliderCont = new Element('div',{
			'class': 'sliderCont'+(opts.sliderContClass ? ' '+opts.sliderContClass : '')
		});
		
		var tAutoScroll, tAutoScrollStart;
		var startAutoScroll = function(step, freq) {
			$clear(tAutoScroll);
			var fun = (function() {
				currPos +=step;
				if (currPos > (altCon - altFin))
					currPos = altCon - altFin;
				if (currPos < 0)
					currPos = 0;
				mySlider.set(currPos);
			});
			fun();
			tAutoScroll = fun.periodical(freq);
		};
		var stopAutoScroll = function(e) {
			$clear(tAutoScrollStart);
			$clear(tAutoScroll);
		};
		var frSu = new Element('a',{
			'class': 'frSu',
			'href': '#',
			'events': {
				'click': function(e) {
					e.stop();
				},
				'mousedown': function(e) {
					e.stop();
					currPos -= opts.arrowStep;
					if (currPos < 0)
						currPos = 0;
					mySlider.set(currPos);
					tAutoScrollStart = startAutoScroll.delay(opts.arrowWaitBeforeAuto, 
															 this, 
															 [-opts.arrowAutoStep, 1000/opts.arrowAutoFPS]);
				}
			}
		});
		var frGiu = new Element('a',{
			'class': 'frGiu',
			'href': '#',
			'events': {
				'click': function(e) {
					e.stop();
				},
				'mousedown': function(e) {
					e.stop();
					currPos += opts.arrowStep;
					if (currPos > (altCon - altFin))
						currPos = altCon - altFin;
					mySlider.set(currPos);
					tAutoScrollStart = startAutoScroll.delay(opts.arrowWaitBeforeAuto, 
															 this, 
															 [opts.arrowAutoStep, 1000/opts.arrowAutoFPS]);
				}
			}
		});
		
		document.addEvent('mouseup', stopAutoScroll);
		
		var slider = new Element('div',{
			'class': 'slider'
		});
		var knob = new Element('div',{
			'class': 'knob'
		});
		knob.inject(slider);
		
		frSu.inject(sliderCont);
		slider.inject(sliderCont);
		frGiu.inject(sliderCont);
		
		div.setStyles({
			'width': larFin+'px',			  
			'height': altFin+'px',
			'overflow': 'hidden'
		});
		div.wraps(el);
		
		
		el.setStyles({
			'width': larFin+'px',
			'height': 'auto',
			'overflow': 'visible'
		});
		
		elSize = el.getComputedSize();
		var altCon = elSize.totalHeight;
		
		if (altCon > altFin) {
			cont.wraps(div);
			sliderCont.inject(cont,'top');
			
			var slSize = sliderCont.getComputedSize({styles:['padding','border','margin']});
			
			div.setStyle('width', (larFin-slSize.totalWidth)+'px');
			el.setStyle('width', (larFin-slSize.totalWidth)+'px');
			
			elSize = el.getComputedSize();
			altCon = elSize.totalHeight;
			
			var frH = frSu.getComputedSize({styles:['padding','border','margin']}).totalHeight 
			frH += frGiu.getComputedSize({styles:['padding','border','margin']}).totalHeight;
			
			slider.setStyle('height', (altFin - frH)+'px');
			
			mySlider = new Slider(slider, knob, {
				onChange: function(pos){
						div.scrollTo(0,pos);
						currPos = pos;
					},
				mode: 'vertical',
				steps: altCon - altFin
			});
			
			cont.addEvent('mousewheel', function(e) {
				e.stop();
	
				if (e.wheel < 0) {
					currPos += opts.mouseWheelStep;
					if (currPos > (altCon - altFin))
						currPos = altCon - altFin;
					mySlider.set(currPos);
				}
				if (e.wheel > 0) {
					currPos -= opts.mouseWheelStep;
					if (currPos < 0)
						currPos = 0;
					mySlider.set(currPos);
				}
			});
			
			var divCoord = div.getCoordinates();
			
			// Scorrimento automatico durante la selezione del testo
			var move = function(e) {
				var y = this.getScroll().y + e.client.y - divCoord.top;
				var h = divCoord.height;
				var dist = opts.somdDist; 			// distanza dal bordo dove comincia lo scorrimento
				var v = 0; 							// distanza tra il puntatore e il punto in cui inizia lo scorrimento (calcolata più avanti)
				var fatt = opts.somdFatt; 			// moltiplicato per v è il passo dello scorrimento effettuato ogni spostamento 
				var fps = opts.somdFPS; 			// spostamenti per secondo
				var maxSpeed = opts.somdMaxSpeed;	// velocità massima scorrimento in px per spostamento
				if (h < dist*2) dist = floor(h/2);
				
				if (y < dist) {
					v = y-dist;
				}
				if (y > (h-dist)) {
					v = y-(h-dist);
				}
				
				var step = v*fatt;
				if (maxSpeed>0 && step>maxSpeed) step = maxSpeed;
				
				if (v!=0) startAutoScroll(step, 1000/fps);
				else stopAutoScroll();
			};
			div.addEvent('mousedown', function() {
				document.addEvent('mousemove', move);
			});
			document.addEvent('mouseup', function() {
				// stopAutoScroll(); già chiamato prima
				this.removeEvent('mousemove', move);
			});
		}
		
		if (Fx.ScrollSlider) el.store('scrollable_scroller', new Fx.ScrollSlider(mySlider));
		el.store('scrollable_div', div);
		el.store('scrollable_slider', mySlider);
		
	}
});
function makeScrollable(selector) {
	$$(selector).makeScrollable();
}

var pufApri;
var apriFin = function (lnk) {
	var u, t, l, w, h;
	
	w = Math.round(screen.height*2/3);
	h = Math.round(screen.height*2/3);
	l = Math.round((screen.width - w)/2);
	t = Math.round((screen.height - h)/2);
	u = lnk.href;

	if (u != "")
		pufApri = window.open(u,"Immgagine","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width="+w+",height="+h+",top="+t+",left="+l+"");
	
	return false;
	
}

function rollover(img, src) {
	$(img).set('src', src);
}
function addRollover(target, img, src, srcOut) {
	if (!srcOut) srcOut = img.get('src');
	simplePreload(src,srcOut);
	target.addEvent('mouseover', function() {
		$(img).set('src', src);
	});
	target.addEvent('mouseout', function() {
		$(img).set('src', srcOut);
	});
}
function addQSLink(key, value) {
	var qst = location.search.substr(1);
	var dati = new Array();
	if (qst.length > 0) {
		dati=qst.split("&");
	}
	var l = "?";
	for (i=0; i < dati.length; i++) {
		if (dati[i].substr(0,key.length) != key)
			l += dati[i]+"&";
	}
	l += key + "=" + value;
	return l;
}
function addQS(key, value) {
	location = addQSLink(key, value);
}

function simplePreload() {
  var args = simplePreload.arguments;
  Asset.images(args);
}

var ScrollGallery = new Class({
	Implements: Options,
	options:{
		step : 420,
		selGalOut: '.gal-out',
		selGalIn: '.gal-in',
		selGalElement: 'div.gal_el',
		selGalFrSx: '.gal_frSx',
		selGalFrDx: '.gal_frDx'
	},
	
    initialize: function(selGallery, options){
		this.setOptions(options);
		var selGalOut = this.options.selGalOut;
		var selGalIn = this.options.selGalIn;
		var selGalElement = this.options.selGalElement;
		var selGalFrSx = this.options.selGalFrSx;
		var selGalFrDx = this.options.selGalFrDx;
		var step = this.options.step;
		
		if (!selGallery) selGallery = '.gallery-foto';
		
		window.addEvent('domready', function() {
			$$(selGallery).each(function(gal) {
				gal.fade('hide');
			});
		});
		
		window.addEvent('load', function() {
			
			$$(selGallery).each(function(gal) {
				
				gal.fade("hide");
				var galScroll;
				var posX;
				var inLar = 0, outLar = 0;
				
				gal.getElements(selGalElement).each(function(el) {
					var elSize = el.getComputedSize({styles:['margin', 'padding', 'border']});
					inLar += elSize.totalWidth;	
				});
				
				gal.getElement(selGalIn).setStyle('width', inLar+'px');
				
				outLar = gal.getElement(selGalOut).getCoordinates().width;
				
				if (inLar > outLar) {
					
					//Posizione iniziale
					posX = 0;
					
					//Scorrimento con frecce
					galScroll = new Fx.Scroll(gal.getElement(selGalOut) , {
							link: 'cancel',
							duration: 1000,
							transition: Fx.Transitions.Quad.easeOut
						});
					
					// Eventi che fanno scorrere la galleria
					gal.getElement(selGalFrDx).addEvent('click', function(e) {
									e.stop();
									posX +=step;
									if (posX > (inLar - outLar))
										posX = inLar - outLar;
									galScroll.start(posX,0);
							   });
			
					gal.getElement(selGalFrSx).addEvent('click', function(e) {
							e.stop();
							posX -=step;
							if (posX < 0)
								posX = 0;
							galScroll.start(posX,0);
					   });
					gal.getElement(selGalFrSx).setStyle('display', 'block');
					gal.getElement(selGalFrDx).setStyle('display', 'block');
					
					galScroll.start(posX, 0);
				}
				
				gal.fade("in");
				
			});
		});
	}
});


if (typeof(google_analytics_account) != 'undefined') {
if ( (google_analytics_account) == /UA\-([0-9]+)\-([0-9]+)/ ) {
	var _gaq = _gaq || [];
	_gaq.push(['_setAccount', google_analytics_account]);
	_gaq.push(['_trackPageview']);
	
	(function() {
		var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	})();
}
}


