document.observe('dom:loaded', init);
Event.observe(window, 'load', initPngFix);
document.observe('click', manageEventClick);
document.observe('change', manageEventChange);
document.observe('mouseover', handleMouseOver);
document.observe('mouseout', handleMouseOut);
document.observe('submit', handleSubmit);

var pointer;

var positionLinkEnteFieraHomepage;
var arrayLinkEnteFieraHomepage;

var sliderElencoLocali;

function init()
{	
	pointer = $('pointer');
	
	var paramsTop = {
						wmode: 'transparent',
						quality: 'high',
						allowScriptAccess: 'always',
						flashVars: 'pagina=' + pathHttp + 'web_services.php&action=menu_top&lng=' + lang + '&lnk=' + encodeURIComponent(document.URL) + '&idcitta=' + idCitta
				 	}
	swfobject.embedSWF(pathHttp + 'flash/top.swf', 'flashHeader', '910', '170', '9.0.0', 'expressInstall.swf', '', paramsTop);
	
	if($('ricercaEventi'))
	{
		var img = new Image(210, 17);
		img.src = pathHttp + 'immagini/bg_scroller_ricerca_avanzata_eventi2.jpg';
	}
	
	if($('calendar'))
	{
		var calendar = new Calendar('calendar');	
	}
	
	if($('linkEntiFieraHomepage'))
	{
		positionLinkEnteFieraHomepage = 0;
		arrayLinkEnteFieraHomepage = $$('.linkEnteFieraHomepage');
		
		arrayLinkEnteFieraHomepage.each(function(div) { div.style.display = 'none'; });
		
		rotateLinkEntiFiera();
	}
	
	if($('fiereItaliaHomepage'))
	{
			new Control.Scroller( 'fiereItaliaHomepageContent', 'fiereItaliaHomepageHandle', 'fiereItaliaHomepageTrack', {
																															up: "fiereItaliaHomepageButtonUp",
																															down: "fiereItaliaHomepageButtonDown",
																															delta: 50
																														  });
	}
	
	if($('smallPosizioneEnteFiera'))
	{
		var latitude = parseFloat($$('#smallPosizioneEnteFiera .latitude')[0].innerHTML);
		var longitude = parseFloat($$('#smallPosizioneEnteFiera .longitude')[0].innerHTML);
		showMapPosizioneEnteFiera('googleMapPosizioneFiera', latitude, longitude);
	}
	
	if($('largePosizioneHotel'))
	{
		var latitude = parseFloat($$('#largePosizioneHotel .latitudeEnteFiera')[0].innerHTML);
		var longitude = parseFloat($$('#largePosizioneHotel .longitudeEnteFiera')[0].innerHTML);
		var arrayMapMarkers = showMapPosizioneEnteFiera('googleMapPosizioneHotel', latitude, longitude);
		
		var latitude;
		var longitude;
		if($$('#largePosizioneHotel .latitude')[0])
		{
			latitude = parseFloat($$('#largePosizioneHotel .latitude')[0].innerHTML);
		}
		if($$('#largePosizioneHotel .longitude')[0])
		{
			longitude = parseFloat($$('#largePosizioneHotel .longitude')[0].innerHTML);
		}
		var icona = $$('#largePosizioneHotel .icon')[0].innerHTML;
		
		if(undefined !== latitude && undefined !== longitude)
		{
			showPointHotel(arrayMapMarkers, latitude, longitude, icona);
		}
		else
		{
			if($$('#largePosizioneHotel .address')[0])
			{
				var address = $$('#largePosizioneHotel .address')[0].innerHTML;
			}
			showPointAddressHotel(arrayMapMarkers, address, icona);
		}
	}
	
	if($('elencoHotel'))
	{
		var selezionaHotel = new SelezionaHotel('smallSelezionaHotel', 'ordinamento', 'elencoHotel', 'mappaHotel');	
	}
	
	if($('elencoHotelBusinessBooking'))
	{
		var selezionaHotelBusinessBooking = new SelezionaHotelBusinessBooking('smallSelezionaHotel');	
	}
	
	if($('largeEnteFiera') || $('photogallery') || $('photoScheda'))
	{
		// Add the controlbar
		hs.addSlideshow({
							//slideshowGroup: 'group1',
							interval: 5000,
							repeat: false,
							useControls: true,
							fixedControls: 'fit',
							overlayOptions: {
												opacity: .75,
												position: 'bottom center',
												hideOnMouseOut: true
											}
						});	
	}
	
	if($('elencoLocaliFiera'))
	{
		sliderElencoLocali = new accordion.slider("sliderElencoLocali");
		sliderElencoLocali.init("elencoLocaliFiera", null, 'open');	
	}
	
	/*if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
	{
		pngfix();	
	}*/
	
	if($('percorso'))
	{
		showPercorsoEnteFiera('mappaPercorso');	
	}
	
	if($('elencoEventi'))
	{
		var moveListEventi = new Move('elencoEventi', 'batchEventi', 'eventoLarge', 'paginazione', 10, '');		
	}
	
	if($('elencoEventiPassati'))
	{
		var moveListEventiPassati = new Move('elencoEventiPassati', 'batchEventiPassati', 'eventoLarge', 'paginazioneEventiPassati', 5, 2);		
	}
	
	if($('elencoLastminute'))
	{
		var moveList = new Move('elencoLastminute', 'batchLastminute', 'lastminuteLarge', 'paginazione', 7, '');	
	}
	
	if($('display_form_riviera_romagnola') || $('display_form_altre_localita'))
	{
		$('display_form_riviera_romagnola').relatedElement = $('contatti_riviera_romagnola');
		$('display_form_altre_localita').relatedElement = $('contatti_altre_localita');
		$('display_form_altre_attivita').relatedElement = $('contatti_altre_attivita');
	}
}

function initPngFix()
{
	if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
	{
		pngfix();	
	}	
}

function manageEventClick(evt)
{
	var element = Event.element(evt);
	switch(element.tagName.toLowerCase())
	{	
		case 'div':
			switch(element.id)
			{
				case 'clickRicercaAvanzataEventi':
					if($('ricercaAvanzataEventi').visible())
						$('clickRicercaAvanzataEventi').style.backgroundImage = 'url(' + pathHttp + 'immagini/bg_scroller_ricerca_avanzata_eventi.jpg)';
					else
						$('clickRicercaAvanzataEventi').style.backgroundImage = 'url(' + pathHttp + 'immagini/bg_scroller_ricerca_avanzata_eventi2.jpg)';
					Effect.toggle('ricercaAvanzataEventi', 'slide', { duration: 1.0 });	
					$('selectEnteFiera').selectedIndex = 0;
					$('eventStartDate').value = '';
					$('eventEndDate').value = '';
					$('inputSettoreMerceologico').value = '';
				break;
				case 'buttonRicercaEvento':
					submitFormRicercaEventi();
				break;
				case 'buttonPrenotaOnline':
					submitFormPrenotaOnline();
				break;
				case 'buttonRicercaAltriEventi':
					submitFormRicercaAltriEventi();
				break;
			}
		break;
		case 'img':
			switch(element.id)
			{
				case 'eventStartDateCalendar':
					displayCalendar($('eventStartDate'), 'dd/mm/yyyy', element);
				break;
				case 'eventEndDateCalendar':
					displayCalendar($('eventEndDate'), 'dd/mm/yyyy', element);
				break;
				case 'prenotaOnlineStartDateCalendar':
					displayCalendarSelectBox($('arrivo_y'), $('arrivo_m'), $('arrivo_d'), false, false, element);
				break;
				case 'prenotaOnlineEndDateCalendar':
					displayCalendarSelectBox($('partenza_y'), $('partenza_m'), $('partenza_d'), false, false, element);
				break;
				case 'ricercaAltriEventiStartDateCalendar':
					displayCalendarSelectBox($('inizio_y'), $('inizio_m'), $('inizio_d'), false, false, element);
				break;
				case 'ricercaAltriEventiEndDateCalendar':
					displayCalendarSelectBox($('fine_y'), $('fine_m'), $('fine_d'), false, false, element);
				break;
			}
			
			if(element.hasClassName('linkButton'))
			{
				var parentEl = element.ancestors()[0];
				
				if(element.hasClassName('javaLink'))
				{
					Event.stop(evt);
					location.href = pathHttp + parentEl.rel;	
				}
				else if(element.hasClassName('javaLinkBookingCom'))
				{
					var urlAttivita = parentEl.rel;
					window.open(urlAttivita);
				}
				else if(element.hasClassName('contaClick'))
				{
					var parentEl = element.ancestors()[0];
					
					var arrayContaData = parentEl.rev.split('_');
					conta(arrayContaData[0], arrayContaData[1]);
				}
			}
			else if(element.hasClassName('contaClick'))
			{
				var parentEl = element.ancestors()[0];
				
				var arrayContaData = parentEl.rev.split('_');
				conta(arrayContaData[0], arrayContaData[1]);
			}
		break;
		case 'a':
			if(element.hasClassName('javaLink'))
			{
				Event.stop(evt);	
				
				location.href = pathHttp + element.rel;
			}
			else if(element.hasClassName('javaLinkBookingCom'))
			{
				Event.stop(evt);

				var urlAttivita = element.rel;
				window.open(urlAttivita);
			}
			else if(element.hasClassName('distancePopup'))
			{
				Event.stop(evt);
				
				var idAttivita = element.rel;
				var booking = element.rev;
				var pointer = pathHttp + lang + '/mappa-popup.php?id_attivita=' + idAttivita + (booking != ''? '&booking=true' : '');
				hs.src = pointer;
				return hs.htmlExpand(element, { 	objectType: 'iframe',
													preserveContent: false  });
			}
			else if(element.hasClassName('apriPercorso'))
			{
				Event.stop(evt);
				
				apriFormPercorso(element.rel);
			}
			else if(element.id == 'clickAltreAttivita')
			{
				Event.stop(evt);
				
				Effect.toggle('displayAltreAttivita', 'slide', { duration: 1.0 });		
			}
			else if(element.id == 'print') 
			{
				window.print();
			}
		break;
		case 'input':
			if(element.hasClassName('calcola'))
			{
				showPercorso(element);	
			}
		break;
	}
}

function manageEventChange(evt)
{
	var element = Event.element(evt);
	
	switch(element.id)
	{
		case 'arrivo_d':
			incrementaDataPartenza('arrivo');
		break;
		case 'arrivo_m':
			incrementaDataPartenza('arrivo'); 
			cambiaGiorniMese('arrivo'); 
			cambiaGiorniMese('partenza');
		break;
		case 'arrivo_y':
			incrementaDataPartenza('arrivo');
		break;
		case 'partenza_m':
			cambiaGiorniMese('partenza');
		break;
	}
}

function handleMouseOver(evt)
{
	var element = Event.element(evt);
	switch(element.className)
	{
		case 'whiteSmallHomepageFiere':
			with(pointer.style)
			{
				left = element.rev + 'px';
				top = element.rel + 'px';
				height = '18px';
			}
			
			pointer.toggle();
		break;
	}
}	

function handleMouseOut(evt)
{
	var element = Event.element(evt);
	switch(element.className)
	{
		case 'whiteSmallHomepageFiere':
			pointer.toggle();
		break;
	}
}

function handleSubmit(evt)
{
	var element = Event.element(evt);
	switch(element.id)
	{			
		case 'formPrenotaOnline':
			Event.stop(evt);
			submitFormPrenotaOnline();
		break;
	}
	
}

//funzione che ruota i link dentro al box link enti fiera homepage
function rotateLinkEntiFiera()
{
	if(navigator.userAgent.indexOf('MSIE 6.0') == -1)
	{
		Effect.Appear(arrayLinkEnteFieraHomepage[positionLinkEnteFieraHomepage], { duration: 3.0, queue: { position: 'front', scope: 'linkentifierascope' } });
		Effect.Fade(arrayLinkEnteFieraHomepage[positionLinkEnteFieraHomepage], { delay: 2.0, duration: 3.0, from: 1, to: 0, queue: { position: 'end', scope: 'linkentifierascope' } });
		
		updatePositionLinkEnteFieraHomepage();
	}
	else
	{
		arrayLinkEnteFieraHomepage[positionLinkEnteFieraHomepage].style.display = 'block';
		window.setTimeout('arrayLinkEnteFieraHomepage[positionLinkEnteFieraHomepage].style.display = "none"; updatePositionLinkEnteFieraHomepage()', 6000);
	}
	
	window.setTimeout('rotateLinkEntiFiera()', 9000);
}

function updatePositionLinkEnteFieraHomepage()
{
	positionLinkEnteFieraHomepage++;
	if(positionLinkEnteFieraHomepage == arrayLinkEnteFieraHomepage.size())
	{
		positionLinkEnteFieraHomepage = 0;
	}
}

//visualizzazione form contatti
function displayFormContatti(element, arrayOtherElement)
{
	Effect.toggle(element.relatedElement, 'blind');
	arrayOtherElement.each(function(otherElement) {
													if($(otherElement).relatedElement.visible())
													{
														Effect.BlindUp($(otherElement).relatedElement.id);	
													}
												  });
}

//invio form ricerca eventi
function submitFormRicercaEventi()
{
	var form = $('formRicercaEventi');
	
	try 
	{ 
		var myValidator = validateFormRicercaEventi(form);
		
		if(myValidator)
		{
			form.submit();
		}
	} 
	catch(e) 
	{ 
		alert('Errore nell\'invio del form! ' . e);
		return false; 
	}
}

//validate form ricerca eventi
function validateFormRicercaEventi(frm)
{
	var errFlag = new Array();
	var _qfMsg = '';
	
	var startDateValue = $F('eventStartDate');
	var endDateValue = $F('eventEndDate');
	
	var startDate = parseInputTextDate(startDateValue);
	var endDate = parseInputTextDate(endDateValue);
	
	if(('' != startDateValue) && !errFlag['formattazione_data_inizio'])
	{
		if(!startDate)
		{
			errFlag['formattazione_data_inizio'] = true;
			_qfMsg = _qfMsg + "\n " + $('formattazione_data_inizio').value;	
		}
	}
	
	if(('' != endDateValue) && !errFlag['formattazione_data_fine'])
	{
		if(!endDate)
		{
			errFlag['formattazione_data_fine'] = true;
			_qfMsg = _qfMsg + "\n " + $('formattazione_data_fine').value;	
		}
	}	
	
	if(('' != startDateValue) && ('' != endDateValue) && (startDate.getTime() == endDate.getTime()) && !errFlag['inizio_come_fine'])
	{
		errFlag['inizio_come_fine'] = true;
		_qfMsg = _qfMsg + "\n " + $('inizio_come_fine').value;
	}
	
	if(('' != startDateValue) && ('' != endDateValue) && (startDate.getTime() > endDate.getTime()) && !errFlag['inizio_maggiore_fine'])
	{
		errFlag['inizio_maggiore_fine'] = true;
		_qfMsg = _qfMsg + "\n " + $('inizio_maggiore_fine').value;
	}
	
	if(!$('ricercaAvanzataEventi').visible() && ('' == $F('inputNomeEvento')))
	{
		errFlag['ricerca_per_nome_vuota'] = true;
		_qfMsg = _qfMsg + "\n " + $('ricerca_per_nome_vuota').value;
	}

	if(_qfMsg != '') 
	{
		_qfMsg = $('attenzione_form_ricerca_eventi').value + _qfMsg;
		_qfMsg = _qfMsg + "\n " + $('errore_form_ricerca_eventi_testo_basso').value;
		alert(_qfMsg);
		return false;
	}

	return true;
}

function parseInputTextDate(textDate)
{
	//espressione di controllo del formato delle date
	var dateFormat = /^([0-9]{1,2})([^0-9])([0-9]{1,2})\2([0-9]{2,4})$/;
	if(!dateFormat.test(textDate))
	{
		return false;
	}
	var arrayDate = textDate.match(dateFormat);
	var day = parseInt(arrayDate[1], 10);
	var month = parseInt(arrayDate[3], 10) - 1;
	var year = (arrayDate[4].length == 2)? year = '20' + arrayDate[4] : arrayDate[4];
	return new Date(year, month, day);
}

//invio form prenota online
function submitFormPrenotaOnline()
{
	var form = $('formPrenotaOnline');
	
	try 
	{ 
		var myValidator = validateFormPrenotaOnline(form);
		
		if(myValidator)
		{
			var params = new Hash;
			
			var arrayFrazione = $F(form['frazione']).split('|');
			var idCitta = arrayFrazione[0];
			var frazione = arrayFrazione[1];
			
			params.set('frazione', frazione);
			params.set('checkin', $F(form['arrivo[d]']) + '-' + $F(form['arrivo[m]']) + '-' + $F(form['arrivo[Y]']));
			params.set('checkout', $F(form['partenza[d]']) + '-' + $F(form['partenza[m]']) + '-' + $F(form['partenza[Y]']));
			
			var newForm = document.createElement('form');
			params.each( function(pair) {
											var field = document.createElement('input');
											field.type = 'hidden';
											field.name = pair.key;
											field.value = pair.value;
											newForm.appendChild(field);
										});
			var url = pathHttp + ((lang == 'ita')? '' : lang + '/') + 'hotel_' + frazione.replace(' ', '_').toLowerCase() + '_' + idCitta + '.php';
			newForm.method = 'get';
			newForm.action = url;
			window.document.body.appendChild(newForm);
			newForm.submit();
		}
	} 
	catch(e) 
	{ 
		alert('Errore nell\'invio del form! ' . e);
		return false; 
	}
}

function submitFormRicercaAltriEventi()
{
	var form = $('formRicercaAltriEventi');	
	form.submit();
}

//validate form prenota online
function validateFormPrenotaOnline(frm)
{
	var frazione = frm.elements['frazione'].value;
	var today = new Date();
	var arrivo = new Date(frm.elements['arrivo[Y]'].value, (frm.elements['arrivo[m]'].value - 1), frm.elements['arrivo[d]'].value);
	var partenza = new Date(frm.elements['partenza[Y]'].value, (frm.elements['partenza[m]'].value - 1), frm.elements['partenza[d]'].value);
	
	var errFlag = new Array();
	var _qfGroups = {};
	_qfMsg = '';
	
	if((frazione == '') && !errFlag['frazione_vuota'])
	{
		errFlag['frazione_vuota'] = true;
		_qfMsg = _qfMsg + "\n " + $('frazione_vuota').value;
	}
	
	if((today.getTime() > arrivo.getTime()) && !errFlag['arrivo_passato'])
	{
		errFlag['arrivo_passato'] = true;
		_qfMsg = _qfMsg + "\n " + $('arrivo_passato').value;
	}
	
	if((today.getTime() > partenza.getTime()) && !errFlag['partenza_passata'])
	{
		errFlag['partenza_passata'] = true;
		_qfMsg = _qfMsg + "\n " + $('partenza_passata').value;
	}	
	
	if((partenza.getTime() == arrivo.getTime()) && !errFlag['partenza_come_arrivo'])
	{
		errFlag['partenza_come_arrivo'] = true;
		_qfMsg = _qfMsg + "\n " + $('partenza_come_arrivo').value;
	}
	
	if((arrivo.getTime() > partenza.getTime()) && !errFlag['arrivo_maggiore_partenza'])
	{
		errFlag['arrivo_maggiore_partenza'] = true;
		_qfMsg = _qfMsg + "\n " + $('arrivo_maggiore_partenza').value;
	}

	if(_qfMsg != '') 
	{
		_qfMsg = $('attenzione').value + _qfMsg;
		_qfMsg = _qfMsg + "\n " + $('errore_form_testo_basso').value;
		alert(_qfMsg);
		return false;
	}
	
	return true;
}

//modifica data form prenota online
function incrementaDataPartenza(theElement)
{
	if(theElement == 'arrivo')
	{
		var arr_d = parseFloat($('arrivo_d').value) + 1;
		var arr_m = parseFloat($('arrivo_m').value) - 1;
		var arr_Y = parseFloat($('arrivo_y').value);
		
		var d = new Date();
		d.setFullYear(arr_Y, arr_m, arr_d);
		
		$('partenza_d').value = d.getDate();
		$('partenza_m').value = (d.getMonth() + 1);
		$('partenza_y').value = d.getFullYear();
	}
}

//modifica data form prenota online
function cambiaGiorniMese(listbox)
{
	var giorno;
	var mese;
	var anno;
	
	var selectDaAggiornare;
	
	switch(listbox)
	{
		case 'arrivo':
			giorno = parseFloat($('arrivo_d').value);
			mese = parseFloat($('arrivo_m').value) - 1;
			anno = parseFloat($('arrivo_y').value);	
		break;
		
		case 'partenza':
			giorno = parseFloat($('partenza_d').value);
			mese = parseFloat($('partenza_m').value) - 1;
			anno = parseFloat($('partenza_y').value);	
		break;
	}
	
	var numero_giorni;  
	
	switch(mese)
	{
		case 1: //febbraio 28/29
			if (anno % 4 != 0)
			{
				numero_giorni = 28;
			}
			else
			{
				numero_giorni = 29;
			}
		break;
		
		case 3: //aprile
		case 5: //giugno
		case 8: //settembre
		case 10://ottobre
			numero_giorni = 30;
		break;
		
		default:
			numero_giorni = 31;			
	}
	
	switch(listbox)
	{
		case 'arrivo':
			selectDaAggiornare = $('arrivo_d');
		break;
		
		case 'partenza':
			selectDaAggiornare = $('partenza_d');
		break;
	}

	num_options = selectDaAggiornare.options.length;
	for(a = num_options; a >= 0; a--)
	{
		selectDaAggiornare.options[a] = null;
	}
	
	for(i = 1, j = 0; i <= numero_giorni; i++, j++)
	{
		if(i == giorno)
		{
			selectDaAggiornare.options[j] = new Option(i, i, false, true);
		}
		else
		{
			selectDaAggiornare.options[j] = new Option(i, i, false, false);
		}
	}
}

//contaclick
function conta(id_attivita, tipologia)
{
	var jsel = document.createElement('SCRIPT');
	jsel.type = 'text/javascript';
	jsel.src = 'http://admin.abc.sm/register_visit.php?id_attivita=' + id_attivita + '&tipologia=' + tipologia + '&no_cache=' + (Math.random() * 1000);
	window.document.body.appendChild(jsel);
}

//conto alla rovescia per la pagina 404
function countredirect()
{
	if(currentsecond != 1)
	{
		currentsecond -= 1;
		document.redirect.redirect2.value = currentsecond;
	}
	else
	{
		window.location = targetURL;
		return;
	}
	
	setTimeout("countredirect()", 1000);
}

//classe da utilizzare con il calendario
var Calendar = Class.create({
								initialize: function(container) {
																	this.url = pathHttp + 'web_services.php';
																	this.page = pathHttp + 'ricerca_eventi.php';
									
																	this.container = $(container);
																	
																	this.previousMonth = $$('#' + container + ' th')[0];
																	this.monthYear = $$('#' + container + ' th')[1];
																	this.nextMonth = $$('#' + container + ' th')[2];
																	this.currentMonth = $$('#' + container + ' .returnToCurrent')[0];
																	
																	this.previousMonthEnabled = false;
																	if(this.previousMonth.hasClassName('enabledMonth'))
																	{
																		this.previousMonthEnabled = true;
																	}
																	this.nextMonthEnabled = true;
																	
																	this.arrayDays = new Array();
																	this.linkEventDays();
																	
																	Event.observe(this.previousMonth, 'mouseover', this.handleMouseOverOut.bind(this));
																	Event.observe(this.monthYear, 'mouseover', this.handleMouseOverOut.bind(this));
																	Event.observe(this.nextMonth, 'mouseover', this.handleMouseOverOut.bind(this));
																	Event.observe(this.previousMonth, 'mouseout', this.handleMouseOverOut.bind(this));
																	Event.observe(this.monthYear, 'mouseout', this.handleMouseOverOut.bind(this));
																	Event.observe(this.nextMonth, 'mouseout', this.handleMouseOverOut.bind(this));
																	Event.observe(this.previousMonth, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.monthYear, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.nextMonth, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.currentMonth, 'click', this.handleMouseClick.bind(this));
																},
								
								handleMouseOverOut: function(evt) {
																		var element = Event.element(evt);
																		if(element.className != 'disabled')
																		{
																			element.setStyle({ backgroundColor: element.getStyle('color'),
																							   color: element.getStyle('background-color') 
																							 });
																		}
															   	  },
								
								handleMouseClick: function(evt) {
																	var element = Event.element(evt);
																	switch(element.id)
																	{
																		case 'previousCalendar':
																			if(this.previousMonthEnabled)
																			{
																				var params = new Hash();
																				params.set('action', 'get_month_year');
																				params.set('id', this.monthYear.id);
																				params.set('direction', 'previous');
																				
																				this.ajaxRequest(this.url, params, this.updateMonthYear.bind(this));
																			}
																		break;
																		case 'currentCalendar':
																			var params = new Hash();
																				params.set('action', 'get_month_year');
																				params.set('id', this.monthYear.id);
																				params.set('direction', 'current');
																				
																				this.ajaxRequest(this.url, params, this.updateMonthYear.bind(this));
																		break;
																		case 'nextCalendar':
																			if(this.nextMonthEnabled)
																			{
																				var params = new Hash();
																				params.set('action', 'get_month_year');
																				params.set('id', this.monthYear.id);
																				params.set('direction', 'next');
																				
																				this.ajaxRequest(this.url, params, this.updateMonthYear.bind(this));
																			}
																		break;
																		
																	}
																	
																	if(element == this.monthYear || element.tagName.toLowerCase() == 'td')
																	{
																		this.changeDate(element.id);
																	}
															    }, 
																
								
								updateMonthYear: function(json) {
																	var jsonHeader = json[0];		
																	switch(jsonHeader.enablePrevious)
																	{
																		case 'true':
																			this.previousMonthEnabled = true;
																			this.previousMonth.className = 'enabledMonth';
																		break;
																		case 'false':
																			this.previousMonthEnabled = false;
																			this.previousMonth.className = 'disabled';
																		break;
																	}
																	
																	switch(jsonHeader.enableNext)
																	{
																		case 'true':
																			this.nextMonthEnabled = true;
																			this.nextMonth.className = 'enabledMonth';
																		break;
																		case 'false':
																			this.nextMonthEnabled = false;
																			this.nextMonth.className = 'disabled';
																		break;
																	}
																	
																	this.monthYear.id = jsonHeader.id;
																	this.monthYear.innerHTML = jsonHeader.text.capitalize();
																	
																	var jsonBody = json[1];																	
																	$('myTBody').update(jsonBody);
																	
																	this.unlinkEventDays();
																	this.linkEventDays();
																},
															
								ajaxRequest: function(url, params, callback) {	
																			new Ajax.Request(url, {
																									method: 'post',
																									contentType: 'application/x-www-form-urlencoded',
																									parameters: params,
																									evalJSON: true,
																									onSuccess: function(transport) { 
																																	 var EsistenzaJSON = false;
																																	 for(pippo in transport.responseJSON) 
																																	 {
																																		 EsistenzaJSON = true;
																																		 break;
																																	 }	
																																	 if(EsistenzaJSON)
																																	 {
																																		callback(transport.responseJSON); 
																																	 }
																																	 else
																																	 {
																																		alert('Errore nell\'esecuzione dell\'operazione!\r\n' + transport.responseText);
																																	 }
																																   }
																								 	});
																			},
																			
								changeDate: function(id) {
															var regExp = new RegExp(/calendar_day_(.*)_month_(.*)_year_(.*)/i);
															var arrayData = id.match(regExp);
															var params = new Hash;
															params.set('giorno', arrayData[1]);
															params.set('mese', arrayData[2]);
															params.set('anno', arrayData[3]);
															
															var newForm = document.createElement('form');
															params.each( function(pair) {
																							var field = document.createElement('input');
																							field.type = 'hidden';
																							field.name = pair.key;
																							field.value = pair.value;
																							newForm.appendChild(field);
																						});
															newForm.method = 'post';
															newForm.action = this.page;
															window.document.body.appendChild(newForm);
															newForm.submit();
														 },
														 
								linkEventDays: function() {
															var tdArray = $$('#myTBody tr td');
															for(i = 0; i < tdArray.size(); i++)
															{
																if(tdArray[i].id != '')
																{
																	this.arrayDays.push(tdArray[i]);
																	Event.observe(tdArray[i], 'mouseover', this.handleMouseOverOut.bind(this));
																	Event.observe(tdArray[i], 'mouseout', this.handleMouseOverOut.bind(this));
																	Event.observe(tdArray[i], 'click', this.handleMouseClick.bind(this));	
																}
															}
														  }, 
																   
								unlinkEventDays: function() {
																if(this.arrayDays.size() > 0)
																{
																	this.arrayDays.each(function(td) { td.stopObserving(); });
																	this.arrayDays.clear();
																}		
															 }
							});

//funzioni relative alle googlemap
function showMapPosizioneEnteFiera(element, latitudine, longitudine)
{	
	var baseIconLarge = new GIcon();
	baseIconLarge.shadow = pathHttp + "immagini/shadow_large.png";
	baseIconLarge.iconSize = new GSize(49, 55);
	baseIconLarge.shadowSize = new GSize(60, 57);
	baseIconLarge.iconAnchor = new GPoint(24, 55);
	baseIconLarge.infoWindowAnchor = new GPoint(23, 0);
	baseIconLarge.infoShadowAnchor = new GPoint(23, 0);
		
	//precaricamento immagini
	pic1 = new Image(49, 55); 
	pic1.src = pathHttp + "immagini/icona_ente_fiera.png";
	
	var iconaEnteFiera = new GIcon(baseIconLarge, pathHttp + "immagini/icona_ente_fiera.png", null, pathHttp + "immagini/shadow_large.png");
	
	divMappa = $(element);
	var dimensions = divMappa.getDimensions();
	var point = new GLatLng(latitudine, longitudine);
	
	var map = new GMap2(divMappa, { size: new GSize(dimensions.width, dimensions.height) } );
	map.setMapType(G_NORMAL_MAP);
	map.setCenter(point, 12);
	
	markerOptions = { icon: iconaEnteFiera,
					  clickable: false };
	var marker = new GMarker(point, markerOptions);
	map.addOverlay(marker);
	
	var arrayMarkers = [];
	arrayMarkers.push(marker);
	
	return [map, arrayMarkers];
}

function showPointHotel(arrayMapMarkers, latitude, longitude, icona)
{
	var map = arrayMapMarkers[0];
	var arrayMarkers = arrayMapMarkers[1];
	
	function loadedPercorso(direction)
	{
		arrayMarkers.each(function(marker) { marker.hide() } );
																																																								
		for(var i = 0; i < direction.getNumRoutes() + 1; i++) 
		{
            var marker = direction.getMarker(i);
        	map.removeOverlay(marker);
        	if (i == 0) 
				var icon = arrayMarkers[0].getIcon();
			else
				var icon = arrayMarkers[1].getIcon();;

			var newMarker = new GMarker(marker.getLatLng(), { icon: icon, clickable: false });
        	map.addOverlay(newMarker);
		}
	}

	function fairControl() {}
	fairControl.prototype = new GControl(false, false);
	fairControl.prototype.initialize = function(map) {
  														var container = document.createElement("div");
														var fairDiv = document.createElement("div");
														with(fairDiv.style)
														{
															textDecoration = "none";
															color = "#00C";
															backgroundColor = "white";
															font = "small Arial";
															border = "1px solid black";
															padding = "2px";
															marginBottom = "3px";
															textAlign = "center";
															cursor = "pointer";	
														}
														container.appendChild(fairDiv);
														switch(lang)
														{
															case 'ita':
																fairDiv.appendChild(document.createTextNode("Percorso Fiera"));
															break;
															case 'eng':
																fairDiv.appendChild(document.createTextNode("Reach Exibition Centre"));
															break;
															case 'fra':
																fairDiv.appendChild(document.createTextNode("Parcours Salon"));
															break;
															case 'deu':
																fairDiv.appendChild(document.createTextNode("Route zur Messe"));
															break;
															default:
																fairDiv.appendChild(document.createTextNode("Percorso Fiera"));
														}
														
														GEvent.addDomListener(fairDiv, "click", function() {
																												var gdir = new GDirections(map, null);
																												gdir.load("from: " + arrayMarkers[0].getLatLng().lat() + ',' + arrayMarkers[0].getLatLng().lng() + ' to: ' + arrayMarkers[1].getLatLng().lat() + ',' + arrayMarkers[1].getLatLng().lng(), { getPolyline: true});
																										  		GEvent.addListener(gdir, "addoverlay", loadedPercorso);
																										  });
														
														map.getContainer().appendChild(container);
														return container;
													}
	fairControl.prototype.getDefaultPosition = function() {
  															return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
														  }
	
	var baseIconSmall = new GIcon();
	baseIconSmall.shadow = pathHttp + "immagini/shadow_small.png";
	baseIconSmall.iconSize = new GSize(28, 35);
	baseIconSmall.shadowSize = new GSize(40, 35);
	baseIconSmall.iconAnchor = new GPoint(14, 32);
	baseIconSmall.infoWindowAnchor = new GPoint(14, 0);
	baseIconSmall.infoShadowAnchor = new GPoint(14, 0);

	//precaricamento immagini
	pic1 = new Image(28, 35); 
	pic1.src = pathHttp + "immagini/icona_1_stelle.png"; 
	pic2 = new Image(28, 35); 
	pic2.src = pathHttp + "immagini/icona_2_stelle.png"; 
	pic3 = new Image(28, 35); 
	pic3.src = pathHttp + "immagini/icona_3_stelle.png";   
	pic4 = new Image(28, 35); 
	pic4.src = pathHttp + "immagini/icona_4_stelle.png";  
	pic5 = new Image(28, 35); 
	pic5.src = pathHttp + "immagini/icona_5_stelle.png"; 
	pic6 = new Image(28, 35); 
	pic6.src = pathHttp + "immagini/icona_6_stelle.png"; 
	pic7 = new Image(28, 35); 
	pic7.src = pathHttp + "immagini/icona_residence.png"; 
	pic8 = new Image(28, 35); 
	pic8.src = pathHttp + "immagini/icona_bed_breakfast.png";
	pic9 = new Image(49, 55); 
	pic9.src = pathHttp + "immagini/icona_ente_fiera.png";
	//fine precaricamento immagini
	
	var icona1Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_1_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona2Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_2_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona3Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_3_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona4Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_4_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona5Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_5_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona6Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_6_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var iconaResidence = new GIcon(baseIconSmall, pathHttp + "immagini/icona_residence.png", null, pathHttp + "immagini/shadow_small.png");
	var iconaBedBreakfast = new GIcon(baseIconSmall, pathHttp + "immagini/icona_bed_breakfast.png", null, pathHttp + "immagini/shadow_small.png");
	
	var point = new GLatLng(latitude, longitude);

	map.addControl(new GSmallZoomControl3D());
	map.addControl(new fairControl());
	map.setCenter(point, 15);
	
	var marker = new GMarker(point, { icon: eval(icona), clickable: false });
	map.addOverlay(marker);
	
	arrayMarkers.push(marker);
}
		
function showPointAddressHotel(arrayMapBounds, address, icona)		
{
	var map = arrayMapBounds[0];
	var bounds = arrayMapBounds[1];
	
	function loadedPercorso(direction)
	{
		arrayMarkers.each(function(marker) { marker.hide() } );
																																																								
		for(var i = 0; i < direction.getNumRoutes() + 1; i++) 
		{
            var marker = direction.getMarker(i);
        	map.removeOverlay(marker);
        	if (i == 0) 
				var icon = arrayMarkers[0].getIcon();
			else
				var icon = arrayMarkers[1].getIcon();

			var newMarker = new GMarker(marker.getLatLng(), { icon: icon, clickable: false });
        	map.addOverlay(newMarker);
		}
	}
	
	function fairControl() {};
	fairControl.prototype = new GControl(false, false);
	fairControl.prototype.initialize = function(map) {
  														var container = document.createElement("div");
														var fairDiv = document.createElement("div");
														with(fairDiv.style)
														{
															textDecoration = "none";
															color = "#00C";
															backgroundColor = "white";
															font = "small Arial";
															border = "1px solid black";
															padding = "2px";
															marginBottom = "3px";
															textAlign = "center";
															cursor = "pointer";	
														}
														container.appendChild(fairDiv);
														switch(lang)
														{
															case 'ita':
																fairDiv.appendChild(document.createTextNode("Percorso Fiera"));
															break;
															case 'eng':
																fairDiv.appendChild(document.createTextNode("Reach Exibition Centre"));
															break;
															case 'fra':
																fairDiv.appendChild(document.createTextNode("Parcours Salon"));
															break;
															case 'deu':
																fairDiv.appendChild(document.createTextNode("Route zur Messe"));
															break;
															default:
																fairDiv.appendChild(document.createTextNode("Percorso Fiera"));
														}
																
														GEvent.addDomListener(fairDiv, "click", function() {
																												var gdir = new GDirections(map, null);
																												gdir.load("from: " + arrayMarkers[0].getLatLng().lat() + ',' + arrayMarkers[0].getLatLng().lng() + ' to: ' + arrayMarkers[1].getLatLng().lat() + ',' + arrayMarkers[1].getLatLng().lng(), { getPolyline: true});
																										  		GEvent.addListener(gdir, "addoverlay", loadedPercorso);
																										   });		
														
														map.getContainer().appendChild(container);
														return container;
													}
	fairControl.prototype.getDefaultPosition = function() {
  															return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
														  }
	var baseIconSmall = new GIcon();
	baseIconSmall.shadow = pathHttp + "immagini/shadow_small.png";
	baseIconSmall.iconSize = new GSize(28, 35);
	baseIconSmall.shadowSize = new GSize(40, 35);
	baseIconSmall.iconAnchor = new GPoint(14, 32);
	baseIconSmall.infoWindowAnchor = new GPoint(14, 0);
	baseIconSmall.infoShadowAnchor = new GPoint(14, 0);

	//precaricamento immagini
	pic1 = new Image(28, 35); 
	pic1.src = pathHttp + "immagini/icona_1_stelle.png"; 
	pic2 = new Image(28, 35); 
	pic2.src = pathHttp + "immagini/icona_2_stelle.png"; 
	pic3 = new Image(28, 35); 
	pic3.src = pathHttp + "immagini/icona_3_stelle.png";   
	pic4 = new Image(28, 35); 
	pic4.src = pathHttp + "immagini/icona_4_stelle.png";  
	pic5 = new Image(28, 35); 
	pic5.src = pathHttp + "immagini/icona_5_stelle.png"; 
	pic6 = new Image(28, 35); 
	pic6.src = pathHttp + "immagini/icona_6_stelle.png"; 
	pic7 = new Image(28, 35); 
	pic7.src = pathHttp + "immagini/icona_residence.png"; 
	pic8 = new Image(28, 35); 
	pic8.src = pathHttp + "immagini/icona_bed_breakfast.png";
	pic9 = new Image(49, 55); 
	pic9.src = pathHttp + "immagini/icona_ente_fiera.png";
	//fine precaricamento immagini
	
	var icona1Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_1_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona2Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_2_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona3Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_3_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona4Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_4_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona5Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_5_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var icona6Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_6_stelle.png", null, pathHttp + "immagini/shadow_small.png");
	var iconaResidence = new GIcon(baseIconSmall, pathHttp + "immagini/icona_residence.png", null, pathHttp + "immagini/shadow_small.png");
	var iconaBedBreakfast = new GIcon(baseIconSmall, pathHttp + "immagini/icona_bed_breakfast.png", null, pathHttp + "immagini/shadow_small.png");
	
	var dimensions = $(container).getDimensions();
	
	var geocoder = new GClientGeocoder();

	geocoder.getLatLng(address, function(point) 
								  {
									if(!point) 
									{
										$(container).innerHTML = '<img src="' + pathHttp + '/immagini/img_mappa_non_disponibile.png" />';
									} 
									else 
									{
										map.addControl(new GSmallZoomControl3D());
										map.addControl(new fairControl());
										map.setCenter(point, 15);	
										
										var marker = new GMarker(point, { icon: eval(icona), clickable: false });
										map.addOverlay(marker);
									}
								  }
						);
}

//classe da utilizzare per filtrare gli hotel
var SelezionaHotel = Class.create({
									initialize: function(form, containerOrdinamento, containerElenco, containerMappa) {
																	this.form = $(form);
																	this.containerElenco = $(containerElenco);
																	this.containerMappa = $(containerMappa);
																	
																	this.orderByCategory = '';
																	this.orderByCategoryButton = $$('#' + containerOrdinamento + ' img')[0];
																	this.orderByPrice = '';
																	this.orderByPriceButton = $$('#' + containerOrdinamento + ' img')[1];
																	this.orderByDistance = '';
																	this.orderByDistanceButton = $$('#' + containerOrdinamento + ' img')[2];
																	this.orderByName = '';
																	this.orderByNameButton = $$('#' + containerOrdinamento + ' img')[3];
																	
																	this.resetLink = $$('#' + containerOrdinamento + ' a')[0];
																	
																	Event.observe(this.orderByCategoryButton, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.orderByPriceButton, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.orderByDistanceButton, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.orderByNameButton, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.resetLink, 'click', this.handleMouseClick.bind(this));
																	
																	picOrder = new Image(14, 14); 
																	picOrder.src = pathHttp + "immagini/button_order_asc.png"; 
																	
																	this.map;
																	this.bounds;
																	this.numGeocoded = 0;
																	this.arrayDataAddress = new Array();
																	this.markerArray = new Array();
																	
																	this.button = $$('#' + form + ' .button')[0];
																	Event.observe(this.button, 'click', this.handleButtonClick.bind(this));
																	
																	this.moveList = new Move('elencoHotel', 'batchHotel', 'elencoHotelLarge', 'paginazione', 7, '');
																	
																	this.baseIconSmall = new GIcon();
																	this.baseIconSmall.shadow = pathHttp + "immagini/shadow_small.png";
																	this.baseIconSmall.iconSize = new GSize(28, 35);
																	this.baseIconSmall.shadowSize = new GSize(40, 35);
																	this.baseIconSmall.iconAnchor = new GPoint(14, 32);
																	this.baseIconSmall.infoWindowAnchor = new GPoint(14, 0);
																	this.baseIconSmall.infoShadowAnchor = new GPoint(14, 0);
																	
																	this.baseIconLarge = new GIcon();
																	this.baseIconLarge.shadow = pathHttp + "immagini/shadow_large.png";
																	this.baseIconLarge.iconSize = new GSize(49, 55);
																	this.baseIconLarge.shadowSize = new GSize(60, 57);
																	this.baseIconLarge.iconAnchor = new GPoint(24, 55);
																	this.baseIconLarge.infoWindowAnchor = new GPoint(23, 0);
																	this.baseIconLarge.infoShadowAnchor = new GPoint(23, 0);	
	
																	//precaricamento immagini
																	pic1 = new Image(28, 35); 
																	pic1.src = pathHttp + "immagini/icona_1_stelle.png"; 
																	pic2 = new Image(28, 35); 
																	pic2.src = pathHttp + "immagini/icona_2_stelle.png"; 
																	pic3 = new Image(28, 35); 
																	pic3.src = pathHttp + "immagini/icona_3_stelle.png";   
																	pic4 = new Image(28, 35); 
																	pic4.src = pathHttp + "immagini/icona_4_stelle.png";  
																	pic5 = new Image(28, 35); 
																	pic5.src = pathHttp + "immagini/icona_5_stelle.png"; 
																	pic6 = new Image(28, 35); 
																	pic6.src = pathHttp + "immagini/icona_6_stelle.png"; 
																	pic7 = new Image(28, 35); 
																	pic7.src = pathHttp + "immagini/icona_residence.png"; 
																	pic8 = new Image(28, 35); 
																	pic8.src = pathHttp + "immagini/icona_bed_breakfast.png";
																	pic9 = new Image(49, 55); 
																	pic9.src = pathHttp + "immagini/icona_ente_fiera.png";
																	//fine precaricamento immagini
																	
																	this.icona1Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_1_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.icona2Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_2_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.icona3Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_3_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.icona4Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_4_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.icona5Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_5_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.icona6Stelle = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_6_stelle.png", null, pathHttp + "immagini/shadow_small.png");
																	this.iconaResidence = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_residence.png", null, pathHttp + "immagini/shadow_small.png");
																	this.iconaBedBreakfast = new GIcon(this.baseIconSmall, pathHttp + "immagini/icona_bed_breakfast.png", null, pathHttp + "immagini/shadow_small.png");
															   		this.iconaEnteFiera = new GIcon(this.baseIconLarge, pathHttp + "immagini/icona_ente_fiera.png", null, pathHttp + "immagini/shadow_large.png");
															   		
																	this.showMapPosizioneEnteFiera();
																	
																	this.updateHotelMappa();
															   },
															   
									handleButtonClick: function() {
																	this.loadingImage();
																	this.form.request({ 
																					  	evalJSON: true,
																					  	onSuccess: this.handleResponse.bind(this) 
																					  });
																  },
																  
									handleResponse: function(transport) {
																			this.containerElenco.update(transport.responseJSON[0]);
																			if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
																			{
																				pngfix();	
																			}

																			this.moveList.pagerDiv.update(transport.responseJSON[1]);
																			this.moveList.reset();
																			this.updateHotelMappa();
																	    },
									
									showMapPosizioneEnteFiera: function() {
																				var dimensions = this.containerMappa.getDimensions();
																				var latitude = this.containerMappa.getElementsBySelector('.latitude')[0].innerHTML;
																				var longitude = this.containerMappa.getElementsBySelector('.longitude')[0].innerHTML;
																				var testo = this.containerMappa.getElementsBySelector('.enteFieraTesto')[0].innerHTML;
																				var point = new GLatLng(latitude, longitude);
																				
																				this.map = new GMap2(this.containerMappa, { size: new GSize(dimensions.width, dimensions.height) } );
																				this.map.setMapType(G_NORMAL_MAP);
																				this.map.addControl(new GSmallZoomControl3D());
																				this.map.setCenter(point, 12);
																				this.bounds = this.map.getBounds();
																				
																				var markerOptions = { icon: this.iconaEnteFiera };
																				var marker = new GMarker(point, markerOptions);
																				this.map.addOverlay(marker);
																				
																				GEvent.addListener(marker, "click", function() 
																				{
																					marker.openInfoWindowHtml(testo);
																				});
																		  },
																		  
									updateHotelMappa: function()  {
																	this.removeInfoWindow();
																	
																	var arrayData = this.containerElenco.getElementsBySelector('.mapData');
																	for(i = 0; i < arrayData.size(); i++)
																	{ 
																		var latitude = arrayData[i].getElementsBySelector('.latitude')[0].innerHTML;
																		var longitude = arrayData[i].getElementsBySelector('.longitude')[0].innerHTML;
																		var address = arrayData[i].getElementsBySelector('.address')[0].innerHTML;
																		var icon = arrayData[i].getElementsBySelector('.icon')[0].innerHTML;
																		var details = arrayData[i].getElementsBySelector('.details')[0].innerHTML;
																		
																		this.arrayDataAddress.clear();
																		if(latitude != '' && longitude != '')
																		{
																			this.showPoint(latitude, longitude, icon, details, 0);
																		}
																		else
																		{
																			this.arrayDataAddress.push(arrayData[i]);
																		}
																	}
																	
																	this.geocodeAll();
																  },
																  
									showPoint: function(latitudine, longitudine, icona, testo, infoOpen) 
									{
										var point = new GLatLng(latitudine, longitudine);
										markerOptions = { icon: eval(icona) };
										var marker = new GMarker(point, markerOptions);
										this.markerArray.push(marker);
										
										if(infoOpen)
										{
											this.map.addOverlay(marker); 
											marker.openInfoWindowHtml(testo);
											if(this.bounds)
											{
												this.bounds.extend(point);
												var zoom = this.map.getBoundsZoomLevel(this.bounds); 
												var center = this.bounds.getCenter(); 
												this.map.setCenter(center); 
												this.map.setZoom(zoom);
											}
										}
										else
										{
											this. map.addOverlay(marker); 
											if(this.bounds)
											{			   
												this.bounds.extend(point);
												var zoom = this.map.getBoundsZoomLevel(this.bounds); 
												var center = this.bounds.getCenter(); 
												this.map.setCenter(center); 
												this.map.setZoom(zoom);
											}
											GEvent.addListener(marker, "click", function() 
																			{
																				marker.openInfoWindowHtml(testo);
																			});
										}
									},
									
									showPointAddress: function(response) {
																			var delay = 0;
																			if (response.Status.code == 620) 
																			{
																				// Too fast, try again, with a small pause
																				delay = 500;
																			}
																			else 
																			{
																				if(response.Status.code == 200) 
																			   	{
																				 	// Success; do something with the address.
																					var place = response.Placemark[0];
																					var latitude = place.Point.coordinates[1];
																					var longitude = place.Point.coordinates[0];
																					var icon = this.arrayDataAddress[this.numGeocoded].getElementsBySelector('.icon')[0].innerHTML;
																				 	var details = this.arrayDataAddress[this.numGeocoded].getElementsBySelector('.details')[0].innerHTML;
																					
																					this.showPoint(latitude, longitude, icon, details, 0);
																			   	}
																			   // Move onto the next address; this skips bad addresses, too.
																			   this.numGeocoded += 1;
																			 }
																			 window.setTimeout(this.geocodeAll.bind(this), delay);
																		 },
									
									geocodeAll: function() 
									{
										if (this.numGeocoded < this.arrayDataAddress.size()) 
										{
											var geocoder = new GClientGeocoder();
											var address = this.arrayDataAddress[this.numGeocoded].getElementsBySelector('.address')[0].innerHTML;
											geocoder.getLocations(address, this.showPointAddress.bind(this));
										}
									}, 
									
									removeInfoWindow: function()
									{
										if(this.markerArray.size() > 0)
										{
											for(i = 0; i < this.markerArray.size(); i++)
											{
												this.map.removeOverlay(this.markerArray[i]); 	
											}
											
											this.markerArray.clear();
										}
									},
									
									handleMouseClick: function(evt)
									{
										var element = Event.element(evt);
										
										$$('#ordinamento .ordina').each(function(n) { n.className = 'ordina noactive'; });
										if(element.previous())
										{
											element.previous().className = 'ordina active';
										}
										
										switch(element.id)
										{
											case 'orderCategoryButton':
												if(this.orderByCategory == '')
												{
													this.orderByCategory = 'desc';
												}
												else
												{
													switch(this.orderByCategory)
													{
														case 'desc':
															this.orderByCategory = 'asc';
															element.src = pathHttp + 'immagini/button_order_asc.png';
														break;
														case 'asc':
															this.orderByCategory = 'desc';
															element.src = pathHttp + 'immagini/button_order_desc.png';
														break
													}
												}
												
												this.form.order_by.value = 'category';
												this.form.order_direction.value = this.orderByCategory;
											break;
											case 'orderPriceButton':
												if(this.orderByPrice == '')
												{
													this.orderByPrice = 'desc';
												}
												else
												{
													switch(this.orderByPrice)
													{
														case 'desc':
															this.orderByPrice = 'asc';
															element.src = pathHttp + 'immagini/button_order_asc.png';
														break;
														case 'asc':
															this.orderByPrice = 'desc';
															element.src = pathHttp + 'immagini/button_order_desc.png';
														break
													}
												}
												
												this.form.order_by.value = 'price';
												this.form.order_direction.value = this.orderByPrice;
											break;
											case 'orderDistanceButton':
												if(this.orderByDistance == '')
												{
													this.orderByDistance = 'desc';
												}
												else
												{
													switch(this.orderByDistance)
													{
														case 'desc':
															this.orderByDistance = 'asc';
															element.src = pathHttp + 'immagini/button_order_asc.png';
														break;
														case 'asc':
															this.orderByDistance = 'desc';
															element.src = pathHttp + 'immagini/button_order_desc.png';
														break
													}
												}
												
												this.form.order_by.value = 'distance';
												this.form.order_direction.value = this.orderByDistance;
											break;
											case 'orderNameButton':
												if(this.orderByName == '')
												{
													this.orderByName = 'desc';
												}
												else
												{
													switch(this.orderByName)
													{
														case 'desc':
															this.orderByName = 'asc';
															element.src = pathHttp + 'immagini/button_order_asc.png';
														break;
														case 'asc':
															this.orderByName = 'desc';
															element.src = pathHttp + 'immagini/button_order_desc.png';
														break
													}	
												}
												
												this.form.order_by.value = 'name';
												this.form.order_direction.value = this.orderByName;
											break;
											case 'resetLink':
												Event.stop(evt);
												
												this.form.reset();
												this.form.filtro_servizi.value = '';
												this.form.order_by.value = '';
												this.form.order_direction.value = '';
											break;
										}
										
										this.handleButtonClick();
									},
									
									loadingImage: function() 
									{
										var loading = $('loading');
										
										var dimensions = loading.getDimensions();
										var containerDimensions = this.containerElenco.getDimensions();
										var leftPosition = Math.round(containerDimensions.width / 2) - Math.round(dimensions.width / 2);
										var topPosition = Math.round(containerDimensions.height / 2) - Math.round(dimensions.height / 2); 
										
										with(loading.style)
										{
											left = leftPosition + 'px';
											top = topPosition + 'px';
										}
										
										var darkLayer = window.document.createElement('div');
										darkLayer.id = 'darkLayer';
										darkLayer.style.height = containerDimensions.height + 'px';
										
										this.containerElenco.appendChild(darkLayer);
										loading.toggle();
									}
								  });

//classe da utilizzare per eseguire la paginazione
var Move = Class.create({	
							initialize: function(scroller_hotelDiv, batchDiv, itemClass, pagerDiv, numberVisible, idExtension) {
											this.scroller_hotelDiv = $('' + scroller_hotelDiv + '');
											this.batchDiv = $('' + batchDiv + '');
											this.itemClass = itemClass;
											this.pagerDiv = $('' + pagerDiv + '');
											this.numberVisible = numberVisible;
											this.idExtension = idExtension;
											
											this.scroller_hotelDivHeight = this.scroller_hotelDiv.getHeight();
											this.itemHeight = $$('.' + itemClass)[0].getHeight();
											
											this.arrayAbsoluteMovementLinks = new Array();
											
											this.reset();
										},
										
							moveAbsolute: function(batchDivNumber) {	
											//se sono al primo o all'ultimo batch non faccio nulla
											if(((batchDivNumber) < 0) || ((batchDivNumber) > this.numberBatch))
											{
												return;
											}
											
											//scrolling batch hotel
											if(Math.floor(this.numberHotel / this.numberVisible) < (batchDivNumber + 1))
											{
												var numberRemainingHotel = this.numberHotel % this.numberVisible;
												this.scroller_hotelDiv.style.height = (this.itemHeight * numberRemainingHotel) + "px";												
											}
											else
											{
												this.scroller_hotelDiv.style.height = (this.numberVisible * this.itemHeight) + "px";
											}
											this.batchDiv.style.top = '-' + (this.numberVisible * this.itemHeight * batchDivNumber) + 'px';
											//fine scrolling batch hotel
											
											
											var arrayLi = $$('#navigationList' + this.idExtension + ' li');
											
											arrayLi[this.currentBatch].className = arrayLi[this.currentBatch].className.replace(/active/, '');
											arrayLi[batchDivNumber].className += ' active';
											
											//spostamento link numerici
											//se clicco verso destra
											if(batchDivNumber > this.currentBatch)
											{
												//se clicco sul link oltre la metą dell'inizio
												if(batchDivNumber > 4)
												{
													var spostamento = Math.abs(batchDivNumber - this.currentBatch);
													for(i = 1; i <= spostamento; i++)
													{
														//verifico se mi porto fuori del numero massimo di li
														if((this.lastVisible + 1) > this.numberBatch)
														{
															break;	
														}
														
														//verifico se mi sposto a destra di pił di 4 link
														if(this.lastVisible > batchDivNumber + 3)
														{
															break;	
														}
														
														arrayLi[this.firstVisible].style.display = 'none';
														this.firstVisible += 1;
														this.lastVisible += 1;
														arrayLi[this.lastVisible].style.display = 'block';
													}
												}
											}
											
											//se clicco verso sinistra
											if(batchDivNumber < this.currentBatch)
											{
												//se clicco sul link prima della metą dall'inizio
												if(batchDivNumber < this.numberBatch - 4)
												{
													var spostamento = Math.abs(batchDivNumber - this.currentBatch);
													for(i = 1; i <= spostamento; i++)
													{
														//verifico se mi porto fuori del numero minimo di li
														if((this.firstVisible - 1) < 0)
														{
															break;	
														}
														
														//verifico se mi sposto a sinistra di pił di 4 link
														if(this.firstVisible < batchDivNumber - 3)
														{
															break;	
														}
														
														arrayLi[this.lastVisible].style.display = 'none';
														this.lastVisible -= 1;
														this.firstVisible -= 1;
														arrayLi[this.firstVisible].style.display = 'block';
														
														//aggiungo il bordo al primo li
														arrayLi[this.firstVisible + 1].className += ' borderLeft';
													}
												}
											}
											//fine spostamento link numerici
											
											//modifica puntini
											$('dots_before' + this.idExtension).style.visibility = 'hidden';
											if(this.firstVisible > 0)
											{	
												$('dots_before' + this.idExtension).style.visibility = 'visible';
											}
											
											$('dots_after' + this.idExtension).style.visibility = 'visible';
											if(this.lastVisible == this.numberBatch)
											{
												$('dots_after' + this.idExtension).style.visibility = 'hidden';
											}
											//fine modifica puntini*/
											
											//elimino il bordo dal primo li
											arrayLi[this.firstVisible].className = arrayLi[this.firstVisible].className.replace(/borderLeft/, '');
											
											this.currentBatch = batchDivNumber;
											
											//colorazione link precedente/successivo
											if(this.currentBatch > 0)
											{
												$('linkPrevious' + this.idExtension).addClassName('active');
											}
											else
											{
												$('linkPrevious' + this.idExtension).className = '';	
											}
											if(this.currentBatch == this.numberBatch)
											{
												$('linkNext' + this.idExtension).className = '';
											}
											else
											{
												$('linkNext' + this.idExtension).addClassName('active');	
											}
											//fine colorazione link precedente/successivo
											
											//spostamento all'inizio del blocco icone
											this.scroller_hotelDiv.previousSiblings()[0].scrollTo();
										},
										
							movePrevious: function(evt) {
															Event.stop(evt);
															this.moveAbsolute(this.currentBatch - 1);
													 	},
										
							moveNext: function(evt) {
														Event.stop(evt);
														this.moveAbsolute(this.currentBatch + 1);
												 	},
										
							moveElement: function(evt) {
														Event.stop(evt);
														
														var element = Event.element(evt);
														this.moveAbsolute(parseInt(element.rel, 10));	
													   },	
													   
							linkEventAbsoluteMovementLinks: function() {
																		Event.observe('linkPrevious' + this.idExtension, 'click', this.movePrevious.bind(this));
																		Event.observe('linkNext' + this.idExtension, 'click', this.moveNext.bind(this));
																		
																		var aArray = $$('#' + this.pagerDiv.id + ' a');
																		for(i = 1; i < (aArray.size() - 1); i++)
																		{
																			this.arrayAbsoluteMovementLinks.push(aArray[i]);
																			Event.observe(aArray[i], 'click', this.moveElement.bind(this));	
																		}
													  				  }, 
															   
							unlinkEventAbsoluteMovementLinks: function() {
																			Event.stopObserving('linkPrevious' + this.idExtension);
																			Event.stopObserving('linkNext' + this.idExtension);
																			
																			if(this.arrayAbsoluteMovementLinks.size() > 0)
																			{
																				this.arrayAbsoluteMovementLinks.each(function(a) { a.stopObserving(); });
																				this.arrayAbsoluteMovementLinks.clear();
																			}		
																		 },
										
							reset: function() {
													this.numberHotel = $$('#' + this.batchDiv.id + ' .' + this.itemClass).size();
													this.numberBatch = parseInt(this.numberHotel / this.numberVisible) + (((this.numberHotel % this.numberVisible) > 0)? 1 : 0) - 1;
													
													this.currentBatch = 0;
													this.firstVisible = 0;
													this.lastVisible = 8;
													
													if(this.numberHotel > this.numberVisible)
													{
														this.scroller_hotelDiv.style.height = (this.numberVisible * this.itemHeight) + 'px';
														this.pagerDiv.show();
														
														this.unlinkEventAbsoluteMovementLinks();
														this.linkEventAbsoluteMovementLinks();
													}
													else
													{
														this.scroller_hotelDiv.style.height = (this.numberHotel * this.itemHeight) + 'px';
														this.pagerDiv.hide();
													}
											  }								  
						});

//classe da utilizzare per filtrare gli hotel del business booking
var SelezionaHotelBusinessBooking = Class.create({
									initialize: function(form) {
																	this.form = $(form);
																	
																	this.button = $$('#' + form + ' .button')[0];
																	Event.observe(this.button, 'click', this.handleButtonClick.bind(this));
															   },
															   
									handleButtonClick: function() {
																	var container = this.containerElenco;	
																	this.form.request({ 
																					  	evalJSON: true,
																					  	onSuccess: this.handleResponse.bind(this) 
																					  });
																  },
																  
									handleResponse: function(transport) {
																			id_attivita = transport.responseText;
																			start_engine(id_attivita, lang, id_portale, checkin, checkout);
																	    }
												 });

//Accordion
var accordion = function()
{
	pic1 = new Image(14, 14); 
	pic1.src = pathHttp + "immagini/button_order_desc.png"; 
	
	var timer = sp = 5;
	var inAction = false;
	
	function slider(containerIdParam)
	{
		this.containerId = containerIdParam; 
		this.arrayData = new Array();
	}
	
	slider.prototype.init = function(definitionListParam, itemOpenedParam, itemOpenedClassParam)
	{
		var definitionList;
		var definitionTermArray;
		var definitionDataArray;
		var arrayLength;
		var i; 
		
		definitionList = $(definitionListParam); 
		
		this.itemOpenedClass = itemOpenedClassParam? itemOpenedClassParam : '';
		
		definitionTermArray = $$('#' + definitionList.id +  ' dt'); 
		definitionDataArray = $$('#' + definitionList.id +  ' dd');
		
		this.arrayLength = definitionTermArray.size();
		for(i = 0; i < this.arrayLength; i++)
		{
			var definitionTerm = definitionTermArray[i]; 
			this.arrayData[i] = definitionTerm; 
			definitionTerm.onclick = new Function(this.containerId + '.behaviour(this)'); 
			if(itemOpenedParam == i)
			{
				definitionTerm.addClassName(this.itemOpenedClass);
				definitionTerm.select('img')[0].src = pathHttp + 'immagini/button_order_desc.png';
				if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
				{
					var el = definitionTerm.select('img')[0];
					el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
					el.src = clear;
				}
			}
		}
		
		arrayLength = definitionDataArray.length;
		for(i = 0; i < arrayLength; i++)
		{
			var definitionTerm = definitionDataArray[i]; 
			definitionTerm.definitionTermHeight = definitionTerm.offsetHeight; 
			if(itemOpenedParam != i)
			{
				definitionTerm.style.height = 0; 
				definitionTerm.style.display = 'none';
			}
		}
	}
	
	slider.prototype.behaviour = function(definitionTermParam)
	{
		if(!definitionTermParam.hasClassName(this.itemOpenedClass) && !inAction)
		{
			inAction = true;
			
			for(var i = 0; i < this.arrayLength; i++)
			{
				var definitionTerm = this.arrayData[i];
				var definitionTermSibling = definitionTerm.nextSibling; 
				
				definitionTermSibling = definitionTermSibling.nodeType != 1? definitionTermSibling.nextSibling : definitionTermSibling; 
				
				clearInterval(definitionTermSibling.timer);
				
				if(definitionTerm == definitionTermParam && definitionTermSibling.style.display == 'none')
				{	
					definitionTermSibling.style.display = ''; 
					setupTimer(definitionTermSibling, 1);
					definitionTerm.addClassName(this.itemOpenedClass);
					definitionTerm.select('img')[0].src = pathHttp + 'immagini/button_order_desc.png';
					if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
					{
						var el = definitionTerm.select('img')[0];
						el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
						el.src = clear;
					}
				}
				else if(definitionTermSibling.style.display == '')
				{
					setupTimer(definitionTermSibling, -1); 
					definitionTerm.removeClassName(this.itemOpenedClass);
					definitionTerm.select('img')[0].src = pathHttp + 'immagini/button_gray_extrasmall.png';
					if(navigator.userAgent.indexOf('MSIE 6.0') != -1)
					{
						var el = definitionTerm.select('img')[0];
						el.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
						el.src = clear;
					}
				}
			}
		}
	}
	
	function setupTimer(definitionTermSibling, value)
	{
		definitionTermSibling.timer = setInterval(function() { slide(definitionTermSibling, value) }, timer);
	}
	
	function slide(definitionTermSibling, value)
	{
		var currentHeight = definitionTermSibling.offsetHeight;
		var finalHeight = definitionTermSibling.definitionTermHeight;
		var d = value == 1? finalHeight - currentHeight : currentHeight; 
		
		definitionTermSibling.style.height = currentHeight + (Math.ceil(d / sp) * value) + 'px';
		if(!isNaN(currentHeight / finalHeight))
		{
			definitionTermSibling.style.opacity = currentHeight / finalHeight; 
			definitionTermSibling.style.filter= 'alpha(opacity=' + currentHeight * 100 / finalHeight + ')';
		}
		
		if(value == 1 && currentHeight >= finalHeight)
		{
			clearInterval(definitionTermSibling.timer);
			
			inAction = false;
		}
		else if(value != 1 && currentHeight == 1)
		{
			definitionTermSibling.style.display = 'none'; 
			clearInterval(definitionTermSibling.timer);
			
			inAction = false;
		}
	}
	
	return{slider : slider}
}();

(function() {
				function wheel(evt) 
				{
					var realDelta;
			
					// normalize the delta
					if(evt.wheelDelta) // IE & Opera
						realDelta = evt.wheelDelta / 120;
					else if (evt.detail) // W3C
						realDelta = -evt.detail / 2;
						
					if(!realDelta) 
						return;

					//var customEvent = Event.fire(Event.element(evt), 'mouse:wheel');
					var customEvent = Event.fire(Event.element(evt), "mouse:wheel", { delta: realDelta });
					if(customEvent.stopped)
						Event.stop(evt);
				}
				
				document.observe("mousewheel", wheel);
				document.observe("DOMMouseScroll", wheel);
			})();

/*  Control.Scroller, version 1.1
 *  Copyright (c) 2008, Glenn Nilsson <glenn.nilsson@gmail.com>
 *
 *  Control.Scroller is distributed under the terms of an Creative Commons
 *  Attribution license. In short words, you can use this however you like
 *  as long as you give me and the code credit. Read more at:
 *  <http://creativecommons.org/licenses/by/2.5/>
 *
 *  Requirements: Prototype framework <http://prototype.conio.net/> and
 *  slider.js from <http://wiki.script.aculo.us/scriptaculous/show/Slider>
 *
 *  For details, see: <http://wailqill.com/projects/scroller/>
 *
/*--------------------------------------------------------------------------*/
Control.Scroller = Class.create();
Control.Scroller.scrollers = [];
Control.Scroller.prototype = {
	initialize: function(content, handle, track, options) {
		this.id = "scroller"
		this.content = $(content);
		this.handle = $(handle);
		this.track = $(track);
		
		this.currentValue = 0;

		/* Slider-options */
		this.options = Object.extend({
			axis: 'vertical',
			onChange: function(value)  {
				self.updateView(value);
			},
			onSlide: function(value)  {
				self.updateView(value);
			}
		}, options);
		var self = this;
		/* Scroller-options */
		this.options = Object.extend({
			scrollOnHover: false,
			visibleHeight: this.isVertical() ? 300 : this.content.offsetHeight,
			visibleWidth: this.isVertical() ? this.content.offsetWidth : 300,
			delta: 20,
			autoHide: true,
			interval: 100
		}, this.options);
		
		this.maxValue = this.isVertical() ?
				this.content.offsetHeight - this.options.visibleHeight - this.handle.offsetHeight :
				this.content.offsetWidth - this.options.visibleWidth - this.handle.offsetWidth;
		this.options.range = $R(0, this.maxValue);

		this.buttons = {
			up: $(this.options.up),
			down: $(this.options.down)
		};

    // Ensure that the scroller is needed.
    //var children = $A(this.content.childNodes);
		//var wrapper = this.content.insert({top:new Element("div", { "class": "scroller-content-wrapper" })});
		//children.each(function(child) {
		//  wrapper.insert(child);
		//});
    if ((this.isVertical() && this.content.offsetHeight <= this.options.visibleHeight) || (!this.isVertical() && this.content.offsetWidth <= this.options.visibleWidth)) {
		  if (this.options.autoHide)
		    [this.track, this.handle, this.buttons.up, this.buttons.down].invoke("hide");
		  return;
		}
		
		this.content.style.height = this.options.visibleHeight+"px";
		
		this.content.observe('mouse:wheel', this.wheelAction.bind(this));
		this.track.observe('mouse:wheel', this.wheelAction.bind(this));
		
		this.eventMouseAction = this.buttonAction.bindAsEventListener(this);
   		$H(this.buttons).values().each(function(button) {
			if (self.options.scrollOnHover) {
				Event.observe(button, "mouseover", self.eventMouseAction);
				Event.observe(button, "mouseout", self.eventMouseAction);
			} else {
				Event.observe(button, "mousedown", self.eventMouseAction);
				Event.observe(button, "mouseup", self.eventMouseAction);
			}
		});
		this.slider = new Control.Slider(this.handle, this.track, this.options);
	},
	isVertical: function() {
		return this.options.axis == 'vertical';
	},
	buttonAction: function(e) {
		this.multiplier = Event.element(e) == this.buttons.up ? -1 : 1;
		switch (e.type) {
			case "mouseover":
			case "mousedown":
				this.scroll();
				var self = this;
				this.timer = setInterval(function() { self.scroll() }, self.options.interval);
				break;
			case "mouseout":
			case "mouseup":
				clearTimeout(this.timer)
				break;
		}
	},
	wheelAction: function(e) {
		e.stop();
		
		this.multiplier = e.memo.delta < 0? 1 : -1;
		this.scroll();
	},
	scroll: function() {
		this.slider.setValue(this.currentValue + this.options.delta * this.multiplier, 0);
	},
	updateView: function(value) {
		this.currentValue = value;
		if (this.options.axis == "vertical") {
			this.content.style.marginTop = (-this.currentValue) + "px";
			this.content.style.height = (this.options.visibleHeight+this.currentValue)+"px";
			this.content.style.clip = 'rect('+value+'px '+this.options.visibleWidth+'px '+(this.options.visibleHeight+this.currentValue)+'px 0px)';
		} else {
			this.content.style.marginLeft = (-this.currentValue) + "px";
			this.content.style.clip = 'rect(0 '+(this.options.visibleHeight+this.currentValue)+'px '+this.options.visibleHeight+'px '+value+'px)';
		}
		(this.options.onScroll || Prototype.emptyFunction)(value, this);
	}
}