//eventi osservati in generale e di caricamento della pagina
document.observe('dom:loaded', init);
document.observe('click', parseId);
document.observe('mouseover', cssDisplayMouseOver);
document.observe('mouseout', cssDisplayMouseOut);
document.observe('click', manageEventClick);

function init()
{
	//caricamento immaginetta chiusura mappe/lastminute
	var imgScrollUp = new Image(16, 16);
	imgScrollUp.src = "http://www.ricercahotel.com/immagini/scroll_up.png";
	
	var paramsSponsor = {
					wmode: 'transparent',
					quality: 'high',
					allowScriptAccess: 'always'
					
				}
                
    //caricamento dello slider immagini top (protofade)
    if($('protofade'))
    {
        new Protofade('protofade', { randomize: true, 
                                       duration: 3.0                                    
                                   });    
    }
    
    var flagArray = $$('#topBannerCont .topFlag');
    flagArray.each(function(flag) { flag.observe('mouseover', manageEventMouseover); });
    flagArray.each(function(flag) { flag.observe('mouseout', manageEventMouseout); });
                
	/*
	if($('flashSponsor')){
		swfobject.embedSWF(pathHttp + 'flash/banner-rh.swf', 'flashSponsor', '140', '500', '9.0.0', 'expressInstall.swf', '', paramsSponsor);
	}
	*/
	//carico le classi di ordinamento e paginazione per gli hotel business booking e booking.com
	if($('ordinamentoHotelBusinessBooking'))
	{
		var selezionaHotel = new SelezionaHotel('largeSelezionaHotel', 'ordinamentoHotelBusinessBooking', 'scroller_hotel', '');	
	}
	else if($('scroller_hotel'))
	{
		var moveList = new Move('scroller_hotel', 'batch_hotel', 'elenco_hotel_large', 'paginazioneElencoHotel', 8, 'ElencoHotel');
	}
	
	//carico la classe di paginazione per gli hotel riviera
	if($('scroller_hotel_riviera'))
	{
		var moveListRiviera = new Move('scroller_hotel_riviera', 'batch_hotel_riviera', 'elenco_hotel_large', 'paginazioneElencoHotelRiviera', 8, 'ElencoHotelRiviera');
	}
	
	//carico la classe di paginazione per gli elenchi lastminute
	if($('scroller_lastminute'))
	{
		var moveListLastminute = new Move('scroller_lastminute', 'batch_lastminute', 'lastminute', 'paginazioneLastminute', 10, 'ElencoLastminute');
	}
	
	//carico la classe di gestione del form invio preventivi online
	if($('form_preventivo_hotel'))
	{
		var managePreventiviHotel = new ManagePreventiviHotel('containerFormPreventiviHotel', 'form_preventivo_hotel', 'form_errori_preventivi_hotel', 'display_altri_servizi_offerti', 'display_altri_servizi_in_camera');	
	}
	
	//caricamento del codice per spostare e rendere visibile l'immagine delle shinystat
	moveShinystatImage();
	
	//caricamento observe dei pulsanti di invio form
	if($('form_prenota_online_rh'))
		$('form_prenota_online_rh').observe('submit', manageEventSubmit);
        
    //caricamento observe dei pulsanti di invio form
    if($('largeSelezionaHotel'))
        $('largeSelezionaHotel').observe('submit', manageEventSubmit);
		
	//caricamento evento focus sulle textarea di invio delle mail richiesta informazioni
	if($('note_e_richieste'))
		$('note_e_richieste').observe('focus', manageEventFocus);
	
	if($('note'))
		$('note').observe('focus', manageEventFocus);
		
	//caricamento opzioni default highslide
	hs.graphicsDir = pathHttp + 'highslide/graphics/';
    hs.outlineType = 'rounded-white';
	hs.align = 'center';
    hs.showCredits = false;
	
	//caricamento opzioni custom highslide per gallery scheda hotel
	/*if($('containerFotografie'))
	{
		hs.transitions = ['expand', 'crossfade'];
		hs.fadeInOut = true;
		hs.addSlideshow({	slideshowGroup: 'group1',
							interval: 5000,
							repeat: false,
							useControls: true,
							fixedControls: 'fit',
							overlayOptions: {
												opacity: .75,
												position: 'bottom center',
												hideOnMouseOut: true
											}
						});	
	}*/
}

function manageEventClick(evt)
{
	var element = Event.element(evt);
	switch(element.tagName.toLowerCase())
	{
		case 'a':
			if(element.id == 'googlemapPopupMapPercorso')
			{
				Event.stop(evt);
				
				hs.width = 620; 
				hs.height = 400;
				
				element.href = pathHttp + element.rel;
				return hs.htmlExpand(element, { objectType: 'iframe' });
			}
            else if(element.hasClassName('linkToSite'))
            {                   
                 Event.stop(evt);                   
                 conta_site(element.rev);
                 window.open(element.href);
            }
			else if(element.id == 'linkBoxTelefono' || element.id == 'linkBoxTelefonoImg')
			{
				Event.stop(evt);
				
				var url = pathHttp + 'web_services.php';
				
				var params = new Hash();
				params.set('action', 'update_statistiche_telefono');
				params.set('id_attivita', element.rel);
				new Ajax.Request(url, {
										method: 'post',
										contentType: 'application/x-www-form-urlencoded',
										parameters: params,
										onSuccess: function(transport) { 
																		 $('datiTelefono').style.fontWeight = 'bold';
																		 $('datiTelefono').update(transport.responseText);
																		 if(transport.responseText.indexOf('skype') != -1)
																		 {
																			var jsel = document.createElement('script');
																			jsel.type = 'text/javascript';
																			jsel.src = 'http://download.skype.com/share/skypebuttons/js/skypeCheck.js';
																			window.document.body.appendChild (jsel);	 
																		 }
																	   }
										});
			}
			
			if(element.hasClassName('linkInfoOfferta')) //link visualizzazione form lastminute asincrono
			{
				Event.stop(evt);
				
				element.href = pathHttp + 'web_services.php?action=form_lastminute_asincrona&lang=' + lang + '&id_lastminute=' + element.rel;
				
				hs.Expander.prototype.onAfterExpand = function() { if($('note')) $('note').observe('focus', manageEventFocus); };
				return hs.htmlExpand(element, { objectType: 'ajax',
												width: 290, 
												height: 460, 
												preserveContent: false });				
			}
            
		break;
		
		case 'img':
			if(element.id == 'googlemapPopupMapImg')
			{
				Event.stop(evt);
				
				var parent = element.ancestors()[0];
				
				hs.width = 620; 
				hs.height = 400;
				
				parent.href = pathHttp + parent.rel;
				return hs.htmlExpand(parent, { objectType: 'iframe' });
			}
		break;
	}
}

function manageEventFocus(evt)
{
	var element = Event.element(evt);
	
	if(element.hasClassName('default'))
	{
		element.removeClassName('default');
		Form.Element.clear(element);
	}
}


//funzione che gestisce gli eventi di mouseover sulle bandiere
function manageEventMouseover(evt)
{
    var element = Event.element(evt);                            
    element.observe('mouseout', manageEventMouseout); 
    new Effect.Move(element, { x: -10, 
                               y: 0, 
                               mode: 'relative',
                               transition: Effect.Transitions.sinoidal,
                               duration: 0.2,
                               queue: { position: 'front', 
                                        scope: 'menuFlag' + element.id + 'Scope' }   
                                                          
                             });                               
}


//funzione che gestisce gli eventi di mouseover sulle bandiere
function manageEventMouseout(evt)
{
    var element = Event.element(evt);
    
    element.stopObserving('mouseout', manageEventMouseout);
    element.stopObserving('mouseover', manageEventMouseover);   
    new Effect.Move(element, { x: 10, 
                               y: 0, 
                               mode: 'relative', 
                               transition: Effect.Transitions.sinoidal,
                               duration: 0.3,
                               
                               queue: { position: 'end', 
                                        scope: 'menuFlag' + element.id + 'Scope' },
                              
                               afterFinish: function(obj) {                                           
                                                             element.observe('mouseover', manageEventMouseover);
                                                           }   
                                                          
                             });                        
                                                          
}



function manageEventSubmit(evt)
{
	var element = Event.element(evt);
	
	switch(element.id)
	{	        
		case 'form_prenota_online_rh':
			Event.stop(evt);
			
			submitFormPrenotaOnline();
		break;
        /*case 'largeSelezionaHotel':
            alert('si');
            Event.stop(evt);   
            SelezionaHotel.handleButtonClick(evt);
        break;    */
	}	
}

function moveShinystatImage()
{
	var shinystatAnchor = $('codice_shinystat_source').getElementsBySelector('a')[0];
	
	if($('codice_shinystat_target'))
		$('codice_shinystat_target').update(shinystatAnchor);
	else
		window.setTimeout('moveShinystatImage()', 500);
}

function addOnloadEvent(fnc)
{
	if(typeof window.addEventListener != "undefined")
		window.addEventListener( "load", fnc, false );
	else if(typeof window.attachEvent != "undefined") 
	{
		window.attachEvent("onload", fnc);
	}
	else 
	{
		if(window.onload != null) 
		{
			var oldOnload = window.onload;
			window.onload = function(e) 
							{
								oldOnload( e );
								window[fnc]();
							};
		}
		else
			window.onload = fnc;
	}
}

function parseId(evt)
{
	var el = Event.element(evt);
	
	if(el.nodeName.toLowerCase() == 'span' && el.hasClassName('spanGrayMedium'))
	{		
		var linkRegExp = /link_(.*)/i;
		var linkText = el.id.match(linkRegExp)[1];
		javaLink(linkText);
	}
	
	if(el.nodeName.toLowerCase() == 'span' && el.hasClassName('spanGray'))
	{		
		var linkRegExp = /link_(.*)/i;
		var linkText = el.id.match(linkRegExp)[1];
		javaLink(linkText);
	}
}

function cssDisplayMouseOver(evt)
{
	var el = Event.element(evt);
	
	if(el.nodeName.toLowerCase() == 'span' && el.hasClassName('spanGray'))
	{		
		decSpan(el, 'display');
	}
}

function cssDisplayMouseOut(evt)
{
	var el = Event.element(evt);
	
	if(el.nodeName.toLowerCase() == 'span' && el.hasClassName('spanGray'))
	{		
		decSpan(el, 'remove');
	}
}

//caricamento dei dati relativi ad una singola fiera
function getSingolaFiera(elId)
{
	var url = pathHttp + 'web_services.php';
	
	var params = new Hash;
	params.set('action', 'get_singola_fiera');
	params.set('lang', lang);
	params.set('id_fiera', elId);
	new Ajax.Updater($('fiera_' + elId), url, {  
												method: 'post',
												contentType: 'application/x-www-form-urlencoded',
												parameters: params
											 });	
}

//attivazione javascript di un link
function javaLink(linkValue)
{
	var newLink = pathHttp + linkValue;
	location.href = newLink;
	return 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);
}

//contasite
function conta_site(id_attivita)
{
    var jsel = document.createElement('SCRIPT');
    jsel.type = 'text/javascript';
    jsel.src = 'http://admin.abc.sm/scripts/count_click_link_to_site.php?id_attivita=' + id_attivita + '&id_portale=302&no_cache=' + (Math.random() * 1000);
    window.document.body.appendChild (jsel);
}   

function stampaPercorso(idAttivita, fromAddress)
{
	popupStampa = window.open("pagina-stampa.php?from_address=" + encodeURIComponent(fromAddress) + "&id_attivita=" + idAttivita, "pagina_stampa", "width=955,height=720,scrollbars");
	popupStampa.focus;
}


function displayContattiTelefonici(idAttivita, provincia, frazione)
{
	//statistiche click
	var jsel = document.createElement('script');
	jsel.type = 'text/javascript';
	jsel.src = 'http://admin.abc.sm/scripts/count_click_view_telefono.php?id_attivita=' + idAttivita + '&id_portale=302';
	window.document.body.appendChild (jsel);

	//statistiche shinystat
	/*tk_user = "ricercahotel";
	tk_nome_conv = "Disponibil";
	TKssORDnm('', 
			  'Italia', 
			  '' + provincia + '', 
			  '' + frazione + ''); 
	TKssCvTrack();*/
	
	if(!$('contattiTelefonici').visible())
	{
		//$('imgContattiTelefonici').hide();	
		$('linkContattiTelefonici').hide();	
		Effect.BlindDown('contattiTelefonici');	
	}
}

//validate form prenota online
function validate_form_rh(frm)
{
	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((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;
}

//visualizzazione form contatti
function displayFormContatti(element, otherElement)
{
	Effect.toggle(element.relatedElement, 'blind');
	if($(otherElement).relatedElement.visible())
	{
		Effect.BlindUp($(otherElement).relatedElement.id);	
	}
}

//validate form contatti commerciali
function validateFormContattiCommerciali(element)
{
	var d = element
	var title_error = "ERRORE! Impossibile inviare la richiesta! \n\n"
	var error = ""

	if(d.email.value) 
	{ 
		if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(d.email.value))) 
		{
			error += "L'indirizzo e-mail inserito non è valido.\n"
		}
	}
	if(!d.referente.value)  
		error += "Inserire il nome del referente.\n"
	if(!d.nome_struttura.value)  
		error += "Inserire il nome della struttura.\n"
	if(!d.email.value)  
		error += "Inserire l'indirizzo e-mail.\n"
	if(!d.telefono.value)  
		error += "Inserire il numero di telefono.\n"

	if(error) 
	{
		alert(title_error + error); 
 		return false;
	}
  	return true;
}

//classe da utilizzare per gestire il form di invio preventivi hotel
var ManagePreventiviHotel = Class.create({	
											initialize: function(container, form, formErrori, linkAltriServiziOfferti, linkAltriServiziInCamera) {
												this.container = $(container);
												this.form = $(form);
												this.formErrori = $(formErrori);
												
												this.linkAltriServiziOfferti = $(linkAltriServiziOfferti);
												this.linkAltriServiziOfferti.relatedElement = $(linkAltriServiziOfferti.slice(8, linkAltriServiziOfferti.length));
												Event.observe(this.linkAltriServiziOfferti, 'click', this.handleClick.bind(this));
												this.linkAltriServiziInCamera = $(linkAltriServiziInCamera);
												this.linkAltriServiziInCamera.relatedElement = $(linkAltriServiziInCamera.slice(8, linkAltriServiziInCamera.length));
												Event.observe(this.linkAltriServiziInCamera, 'click', this.handleClick.bind(this));
												
												Event.observe(this.form, 'submit', this.handleSubmit.bind(this));
												
												this.myValidator = false;
											},
											
											handleClick: function(evt) {
												evt.stop();
												
												var element = Event.element(evt);
												
												Effect.toggle(element.relatedElement, 'blind');
											},
											
											handleSubmit: function(evt) {
												evt.stop();
												
												if(this.form.note.hasClassName('default'))
												{
													this.form.note.innerHTML = '';	
												}
												
												// Mod FSlepko 10/01/2011
												Element.insert(this.form, '<input type="hidden" name="Landing" value="'+TGetCookieSite('Landing')+'"/>');
												Element.insert(this.form, '<input type="hidden" name="Provenienza" value="'+TGetCookieSite('Provenienza')+'"/>');
												Element.insert(this.form, '<input type="hidden" name="uid" value="'+TGetCookieSite('uid')+'"/>');											
												// Fine Mod FSlepko
												
												
												try 
												{ 
													this.myValidator = this.validateFormPreventiviMultipli();
													
													if(this.myValidator)
													{
														this.loadingImage();
														this.form.request({ onSuccess: this.handleResponse.bind(this) });
													}
												} 
												catch(e) 
												{ 
													alert('Errore nell\'invio del form! ' . e);
												}
											}, 
											
											validateFormPreventiviMultipli: function ()
											{		
												var arrayErrori = this.formErrori.getInputs('hidden');
												
												var title_error = arrayErrori[0].getValue() + "\n\n";
												
												var error = '';
												if(!$F('frazione'))  
													error += arrayErrori[1].getValue() + "\n";
												if(!$F('stelle'))  
													error += arrayErrori[2].getValue() + "\n";
												if(!$F('tipologia'))  
													error += arrayErrori[3].getValue() + "\n";
													
												if(!$F('nome'))  
													error += arrayErrori[4].getValue() + "\n";
												/*if(!$F('telefono'))  
														error += arrayErrori[5].getValue() + "\n";*/
												if(!$F('email'))  
													error += arrayErrori[6].getValue() + "\n";
												if($F('email')) 
												{ 
													if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test($F('email')))) 
													{
														error += arrayErrori[7].getValue() + "\n";
													}
												}
												if(false == $('privacy').checked)  
													error += arrayErrori[8].getValue() + "\n";
												
												if(error) 
												{
													alert(title_error + error); 
													return false;
												}
												return true;	
											},
											
											handleResponse: function(transport) {
												this.container.update(transport.responseText);	
											},
											
											loadingImage: function() 
											{
												var loading = $('loading');
												
												var dimensions = loading.getDimensions();
												var containerDimensions = this.container.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.container.appendChild(darkLayer);
												loading.toggle();
											}
										 });

//modifica data form prenota online
function incrementa_data_partenza_rh(theElement)
{
	if(theElement == 'arrivo')
	{
		var arr_d = parseFloat($('arrivo_d_rh').value) + 1;
		var arr_m = parseFloat($('arrivo_m_rh').value) - 1;
		var arr_Y = parseFloat($('arrivo_y_rh').value);
		
		var d = new Date();
		d.setFullYear(arr_Y, arr_m, arr_d);
		
		$('partenza_d_rh').value = d.getDate();
		$('partenza_m_rh').value = (d.getMonth() + 1);
		$('partenza_y_rh').value = d.getFullYear();
	}
}

//modifica data form prenota online
function cambia_giorni_mese_rh(listbox)
{
	var giorno;
	var mese;
	var anno;
	
	var selectDaAggiornare;
	
	switch(listbox)
	{
		case 'arrivo':
			giorno = parseFloat($('arrivo_d_rh').value);
			mese = parseFloat($('arrivo_m_rh').value) - 1;
			anno = parseFloat($('arrivo_y_rh').value);	
		break;
		
		case 'partenza':
			giorno = parseFloat($('partenza_d_rh').value);
			mese = parseFloat($('partenza_m_rh').value) - 1;
			anno = parseFloat($('partenza_y_rh').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_rh');
		break;
		
		case 'partenza':
			selectDaAggiornare = $('partenza_d_rh');
		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);
		}
	}
}

//invio form prenota online
function submitFormPrenotaOnline()
{
	var form = document.form_prenota_online_rh;
	
	try 
	{ 
		var myValidator = validate_form_rh(form);
		
		if(myValidator)
		{
			if($('urlValue').value != 'none' && $('urlValue').value != '')
			{
				var params = new Hash;
				params.set('frazione', $F(form['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 + $('urlValue').value;
				newForm.method = 'get';
				newForm.action = url;
				window.document.body.appendChild(newForm);
				newForm.submit();
			}
			else
			{
				return false;	
			}
		}
	} 
	catch(e) 
	{ 
		alert('Errore nell\'invio del form! ' . e);
		return false; 
	}
}

//invio form info lastminute asincrona
function submitFormInfoLastminute(form)
{	
	Element.insert(form, '<input type="hidden" name="Landing" value="'+TGetCookieSite('Landing')+'"/>');

	Element.insert(form, '<input type="hidden" name="Provenienza" value="'+TGetCookieSite('Provenienza')+'"/>');

	Element.insert(form, '<input type="hidden" name="uid" value="'+TGetCookieSite('uid')+'"/>');	
	
	Element.extend(form);
	form.request({ 	evalJSON: true,
				 	onSuccess: function(transport) {	 var EsistenzaJSON = false;
														 for(pippo in transport.responseJSON) 
														 {
															EsistenzaJSON = true;
															break;
														 }	
														 if(EsistenzaJSON)
														 {
															var json = transport.responseJSON;
															
															$('popupBoxMessages').update(json.output);
															if(json.error == 'false')
															{
																window.setTimeout("hs.close()", 1500);
															}
														 }
												    }
				 });
}

//modifica lo stile del link in un box
function emphLink(idLink, action)
{
	if(action)
	{
		$(idLink).style.fontWeight = 'bold';	
	}
	else
	{
		$(idLink).style.fontWeight = 'normal';	
	}
}

//modifica lo stile del link realizzato con il tag span in un box
function decSpan(el, action)
{
	if(action == 'display')
	{
		el.style.textDecoration = 'underline';	
	}
	else
	{
		el.style.textDecoration = 'none';	
	}
}

//sottolinea regione in rosso
function displayRegione(img, action, container)
{
	switch(action)
	{
		case 'display':
			$(container).appendChild(img);
			return true;
		break;
		case 'remove':
			$(container).removeChild(img);
		break;
	}
}

//sottolinea regione large in rosso
function displayRegioneLarge(img, action)
{
	switch(action)
	{
		case 'display':
			$('container_mappa_regioni_large').appendChild(img);
			return true;
		break;
		case 'remove':
			$('container_mappa_regioni_large').removeChild(img);
		break;
	}
}

//sottolinea provincia in rosso
function displayProvincia(img, action)
{
	switch(action)
	{
		case 'display':
			$('container_mappa_province').appendChild(img);
			return true;
		break;
		case 'remove':
			$('container_mappa_province').removeChild(img);
		break;
	}
}

/*visualizza box area tematica*/
function displayBox(boxData, img, action)
{
	switch(action)
	{
		case 'display':
			var box = document.createElement('div');
			box.id = 'box_' + boxData.type;
			box.style.left = boxData.left;
			box.style.top = boxData.top;
			
			if(img != '')
			{
				var thumb = new Image(120, 90);
				thumb.src = pathHttp + 'immagini/link/' + img;
				box.appendChild(thumb);
			}
		
			$('container_mappa_regioni_large').appendChild(box);
		break;
		case 'remove':
			$('box_' + boxData.type).remove();
		break;
	}
}

function previewHotel(id_attivita, posizione, tipologia)
{
	if($$('.preview_banner').size() > 0)
	{
		return false;	
	}
	
	var banner = $('banner_' + id_attivita); 
	var banner_position = banner.viewportOffset();
	
	var ScrollTop = document.body.scrollTop;
	if (ScrollTop == 0)
	{
		if (window.pageYOffset)
			ScrollTop = window.pageYOffset;
		else
			ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	
	var preview_position_top = parseInt(banner_position.top) + parseInt(ScrollTop);

	var type;
	var preview_position_left;
	
	switch(posizione)
	{
		case 1:
		case 2:
			preview_position_left = banner_position.left;
			type = 'left';
		break;
		
		case 3:
		case 4:
			preview_position_left = parseInt(banner_position.left) - 118;
			type = 'right';
		break;
	}
	
	var container; 
	container = document.createElement('div');
	container.setAttribute('id', 'preview_banner_' + id_attivita);
	container.className = 'preview_banner';
	container.style.left = preview_position_left + "px";
	container.style.top = preview_position_top + "px";
	
	if(navigator.userAgent.indexOf('MSIE 6.0') != -1 || navigator.userAgent.indexOf('MSIE 6.5') != -1)
	{
		var iframe = document.createElement('iframe');
		container.appendChild(iframe);
	}
	
	
	var darkLayer = createDarkLayerPreviewHotel();
	container.appendChild(darkLayer);
	
	var content = document.createElement('div');
	content.className = 'content';
	container.appendChild(content);
	
	window.document.body.appendChild(container);
	
	var params = new Hash();
	params.set('action', 'get_preview_banner');
	params.set('lang', lang);
	params.set('id_attivita', id_attivita);
	params.set('tipologia', tipologia);
	params.set('type', type);
	
	var url = pathHttp + 'web_services.php';
	
	var wait = document.createElement('img');
	wait.src = pathHttp + 'immagini/wait.gif';
	wait.style.width = '16px';
	wait.style.height = '16px';
	wait.style.paddingLeft = '116px';
	wait.style.paddingTop = '116px';
	content.appendChild(wait);
	
	new Ajax.Request(url, {
					 		method: 'post', 
							contentType: 'application/x-www-form-urlencoded',
							parameters: params,
							onSuccess: function(transport) { 
																wait.style.display = 'none';
																content.innerHTML = transport.responseText;
														   }
					 	  });
}

function destroyPreviewHotel(id_attivita)
{
	Element.remove('preview_banner_' + id_attivita);
}

function createDarkLayerPreviewHotel()
{	
	var opacity = 80;
	var opaque = (opacity / 100);
	
	darkLayer = document.createElement('div');
	darkLayer.className = 'dark_layer';
	
	return darkLayer;
}

function scrollDiv(divType, action)
{
	switch(action)
	{
		case 'init':
			var arrayDiv = $$('.' + divType);
			switch(divType)
			{
				case "lastminute":
					if(arrayDiv.size() > 10)
					{
						$$('.container')[0].style.height = '900px';	
						var button = '<div class="scroll"><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '"><img src="' + pathHttp + 'immagini/scroll_down.png" alt="' + testoApertura + '" /></a><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '">' + testoApertura + '</a></div>';
						Element.insert($$('.container')[0], {	after: button	});
					}
				break;
				case "fiere":
					if(arrayDiv.size() > 8)
					{
						$$('.container')[0].style.height = '720px';	
						var button = '<div class="scroll"><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '"><img src="' + pathHttp + 'immagini/scroll_down.png" alt="' + testoApertura + '" /></a><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '">' + testoApertura + '</a></div>';
						Element.insert($$('.container')[0], {	after: button	});
					}
				break;
				case "gallery_scheda":
					if(arrayDiv.size() > 3)
					{
						$$('.container')[0].style.height = '740px';	
						var button = '<div class="scroll"><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '"><img src="' + pathHttp + 'immagini/scroll_down.png" alt="' + testoApertura + '" /></a><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '">' + testoApertura + '</a></div>';
						Element.insert($$('.container')[0], {	after: button	});
					}
				break;
			}
			
		break;
		case 'scrollDown':
			var arrayDiv = $$('.' + divType);
			
			var divHeight = 0;
			switch(divType)
			{
				case "lastminute":
				case "fiere":
					for(i = 0; i < arrayDiv.length; i++)
					{
						divHeight += arrayDiv[i].getHeight(); 	
					}
					
				break;
				case "gallery_scheda":
					for(i = 0; i < arrayDiv.length; i++)
					{
						divHeight += arrayDiv[i].getHeight() + 16; 	
					}
				break;
			}
			$$('.container')[0].style.height = divHeight + 'px';
			
			var button = '<a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollUp\'); return false;" title="' + testoChiusura + '"><img src="' + pathHttp + 'immagini/scroll_up.png" alt="' + testoChiusura + '" /></a><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollUp\'); return false;" title="' + testoChiusura + '">' + testoChiusura + '</a>';
			$$('.scroll')[0].innerHTML = button;
		break;
		case 'scrollUp':
			switch(divType)
			{
				case "lastminute":
					$$('.container')[0].style.height = '900px';	
				break;
				case "fiere":
					$$('.container')[0].style.height = '720px';	
				break;
				case "gallery_scheda":
					$$('.container')[0].style.height = '740px';	
				break;
			}
			
			var button = '<a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '"><img src="' + pathHttp + 'immagini/scroll_down.png" alt="' + testoApertura + '" /></a><a href="#" onclick="scrollDiv(\'' + divType + '\', \'scrollDown\'); return false;" title="' + testoApertura + '">' + testoApertura + '</a>';
			$$('.scroll')[0].innerHTML = button;
		break;
	}
}

//Preview dei video nella scheda hotel
function createDarkLayer()
{	
	var opacity = 60;
	var opaque = (opacity / 100);
	
	darkLayer = document.createElement("div");
	darkLayer.setAttribute("id", "darkLayer");
	darkLayer.style.position = "absolute";
	darkLayer.style.left = "0px";
	darkLayer.style.top = "0px";
	darkLayer.style.zIndex = "50";
	darkLayer.style.width = "100%";
	darkLayer.style.height = "" + ((document.height !== undefined) ? document.height : document.body.offsetHeight) + "px";	//"100%";
	darkLayer.style.backgroundColor = "#000000";
	darkLayer.style.opacity = opaque;                      
	darkLayer.style.MozOpacity = opaque;                   
	darkLayer.style.filter = 'alpha(opacity=' + opacity + ')'; 
	window.document.body.appendChild(darkLayer);
}

function destroyDarkLayer()
{
	$("darkLayer").remove();
}
	
function previewVideo(codice, descrizione, chiudi)
{	
	createDarkLayer();
	
	divElement = document.createElement("div");
	divElement.setAttribute("id", "div_preview_content");
	divElement.style.height = '800px';
	divElement.style.zIndex = '100';
	divElement.style.top = '0px';
	divElement.style.position = 'absolute';
	divElement.style.textAlign = 'center';
	
	divElementContent = '<table align="center" cellpadding="1" cellspacing="0" border="0">' + 
						'<tr>' + 
						'<td bgcolor="#FFFFFF" align="left" style="padding: 6px"><b>' + descrizione + '</b></td>' + 
						'<td bgcolor="#FFFFFF" align="right" style="padding: 6px"><a href="#chiudi" onclick="destroyDarkLayer(); destroyPreviewVideo(); return false;">' + chiudi + '</a></td>' + 
						'</tr>' + 
						'<tr><td bgcolor="#FFFFFF" colspan="2">' +
						'<object width="410" height="344" style="z-index:2000">' + 
						'<param name="movie" value="http://www.youtube.com/v/' + codice + '&hl=it&fs=1&rel=0&autoplay=1"></param>' + 
						'<param name="allowFullScreen" value="true"></param>' + 
						'<embed src="http://www.youtube.com/v/' + codice + '&hl=it&fs=1&rel=0&autoplay=1&fmt=6" style="z-index:2000" type="application/x-shockwave-flash" allowfullscreen="true" width="410" height="344"></embed>' + 
						'</object></td></tr>' + 
						'</table>';
	divElement.innerHTML = divElementContent;
	
	var windowWidth = 0;
	var windowHeight = 0;
	
	if(typeof( window.innerWidth ) == 'number' ) 
	{
    	//Non-IE
    	windowWidth = window.innerWidth;
    	windowHeight = window.innerHeight;
  	} 
	else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
	{
		//IE 6+ in 'standards compliant mode'
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
  	} 
	else if(document.body && (document.body.clientWidth || document.body.clientHeight )) 
	{
		//IE 4 compatible
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
  	}
	
	var scrollOffsetY = 0;
	
	if(typeof(window.pageYOffset) == 'number') 
	{
    	//Netscape compliant
    	scrollOffsetY = window.pageYOffset;
	} 
	else if(document.body && document.body.scrollTop)
	{
    	//DOM compliant
    	scrollOffsetY = document.body.scrollTop;
	} 
	else if(document.documentElement && document.documentElement.scrollTop)
	{
    	//IE6 standards compliant mode
    	scrollOffsetY = document.documentElement.scrollTop;
  	}
	
	divElement.style.left = (Math.floor(windowWidth / 2) - 50) + 'px';
	divElement.style.top = (scrollOffsetY + 150) + 'px';
	
	window.document.body.appendChild(divElement);
}

function destroyPreviewVideo()
{
	$("div_preview_content").remove();	
}

function countredirect()
{
	if(currentsecond != 1)
	{
		currentsecond -= 1;
		document.redirect.redirect2.value = currentsecond;
	}
	else
	{
		window.location = targetURL;
		return;
	}
	
	setTimeout("countredirect()", 1000);
}

//Accordion
var accordion = function()
{
	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 = document.getElementById(definitionListParam); 
		
		this.itemOpenedClass = itemOpenedClassParam? itemOpenedClassParam : '';
		
		definitionTermArray = definitionList.getElementsByTagName('dt'); 
		definitionDataArray = definitionList.getElementsByTagName('dd'); 
		
		this.arrayLength = definitionTermArray.length;
		for(i = 0; i < this.arrayLength; i++)
		{
			var definitionTerm = definitionTermArray[i]; 
			this.arrayData[i] = definitionTerm; 
			definitionTerm.onmouseover = new Function(this.containerId + '.behaviour(this)'); 
			if(itemOpenedParam == i)
			{
				definitionTerm.className = this.itemOpenedClass;
			}
		}
		
		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.className != 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.className = this.itemOpenedClass;
				}
				else if(definitionTermSibling.style.display == '')
				{
					setupTimer(definitionTermSibling, -1); 
					definitionTerm.className = '';
				}
			}
		}
	}
	
	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 openPopupMap(el)
{
	var idAttivita = el.rel;
	var flagBookingCom = el.rev;
	
	var pointer = pathHttp + lang + '/mappa-popup.php?id_attivita=' + idAttivita + '&booking_com=' + flagBookingCom;
	hs.src = pointer;
	return hs.htmlExpand(el, { 	objectType: 'iframe',
								preserveContent: false  });
}

//Scroller
//left e up aggiornati e funzionanti, right e down non aggiornati
function Scroller(param)
{ 
	var delayArray = new Array();
	delayArray[0] = 0;
	delayArray[1] = 90;
	delayArray[2] = 90;
	delayArray[3] = 90;
	delayArray[4] = 89;
	delayArray[5] = 88;
	delayArray[6] = 86;
	delayArray[7] = 86;
	delayArray[8] = 86;
	delayArray[9] = 86;
	delayArray[10] =85;
	
	var divname = param['divname'];//parameters['divname']; //nome del div che contiene il testo
	var containername = param['containername']; //parameters['containername']; //nome del div contenitore dello scroller
	var direction = param['direction']; //Specify direction of movement
	var scrollamount = param['speed']; //Specify marquee scroll speed (larger is faster 1-10)
	if(param['pauseScroll'] == 0)
	{
		var scrolldelay = delayArray[scrollamount]; //intervallo di tempo per l' aggiornamento della grafica
	}
	else
	{
		var scrolldelay = 10; //intervallo di tempo per l' aggiornamento della grafica
		//costruzione dell'array di valori dei div per il calcolo dello scarto
		var divnameWidth = document.getElementById(divname).offsetWidth;
		var divnameHeight = document.getElementById(divname).offsetHeight;
		var elementDivWidth = divnameWidth / param['pauseNumber'];
		var elementDivHeight = divnameHeight / param['pauseNumber'];
		switch(direction)
		{
			case 'up':
			case 'down':
				var divArraySeed = elementDivHeight;
			break;
			case 'left':
			case 'right':
				var divArraySeed = elementDivWidth;
			break;
		}
		
		var divArray = new Array();
		
		if(param['numScroll'] > 1)
		{			
			var scrollIndex = Math.round(param['pauseNumber'] / param['numScroll']);
			for(i = 0; i < (scrollIndex - 1); i++)
			{
				divArray[i] = ((divArraySeed * param['numScroll']) * (i + 1)); 
			}
			divArray[scrollIndex - 1] = 0;
		}
		else
		{
			var scrollIndex = param['pauseNumber'];
			for(i = 0; i < (scrollIndex - 1); i++)
			{
					divArray[i] = (divArraySeed * (i + 1)); 
			}
			divArray[(param['pauseNumber'] - 1)] = 0;
		}
		//fine costruzione dell'array di valori dei div per il calcolo dello scarto
		
		var currentDiv = divArray.shift();
		var pauseInterval = param['pauseInterval'];
	}
	
	var pause = param['pause']; //Pause marquee onMousever (0=no. 1=yes)?	
	
	var pauseScroll = param['pauseScroll'];	

	this.pauseFunction = function () 
	{
		copyspeed = pausespeed;
	}

	this.copyFunction = function ()
	{
		copyspeed = scrollamount;
	}

	var copyspeed = scrollamount;
	var pausespeed = (pause == 0) ? copyspeed : 0;
	var actualheight = '';
	var actualwidth = '';
	var cross_marquee;
	
	var marqueeheight;
	
	var interval;
	
	var firstCicle = true;
	
	function initializemarquee(self)
	{
		cross_marquee = document.getElementById(divname);
		if (direction == "up" || direction == "down")
		{
			cross_marquee.style.top = 0;
			marqueeheight = document.getElementById(containername).offsetHeight;
			actualheight = cross_marquee.offsetHeight;
			if (window.opera || navigator.userAgent.indexOf("Netscape/7") != -1) //if Opera or Netscape 7x, add scrollbars to scroll and exit
			{
				cross_marquee.style.height = marqueeheight + "px";
				cross_marquee.style.overflow = "scroll";
				return;
			}
		}
		else
		{
			cross_marquee.style.left = 0;
			marqueewidth = document.getElementById(containername).offsetWidth;
			actualwidth = cross_marquee.offsetWidth;
			if (window.opera || navigator.userAgent.indexOf("Netscape/7") != -1) //if Opera or Netscape 7x, add scrollbars to scroll and exit
			{
				cross_marquee.style.width = marqueewidth + "px";
				cross_marquee.style.overflow = "scroll";
				return;
			}
		}			
		this.scrollmarquee;
		interval = setInterval(scrollmarquee, scrolldelay);
	}
	
	this.initializemarquee = function()
	{
		initializemarquee(this);
	}
	
	
	function scrollmarquee()
	{
		if (direction == "up")
		{
			if (parseInt(cross_marquee.style.top) > (actualheight * (-1) - 8)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.top);
					var scarto = Math.abs(Math.abs(posizione) - currentDiv);
					//document.getElementById('debug').innerHTML = Math.abs(Math.abs(posizione) - currentDiv);
					if(!firstCicle && scarto <= 3)
					{
						cross_marquee.style.top = '-' + currentDiv + 'px';	
						clearInterval(interval);
						setTimeout(update, pauseInterval);
						divArray.push(currentDiv);
						currentDiv = divArray.shift();
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";	
				}
			}
			else //ricarica
			{	
				cross_marquee.style.top = (parseInt(marqueeheight) + 8) + "px";
			}					
		}
		else if (direction == "down")
		{
			if (parseInt(cross_marquee.style.top) < (marqueeheight + 8)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.top);
					
					if(!firstCicle && (posizione <= 0) && (posizione > -1 * divnameHeight) && ((posizione % pauseHeight) == 0))
					{
						clearInterval(interval);
						setTimeout(update, pauseInterval);
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";	
				}
			}
			else //ricarica
			{
				cross_marquee.style.top = (actualheight * (-1) + 8) + "px";
			}
		}
		else if (direction == "left") //scorrimento
		{
			if (parseInt(cross_marquee.style.left) > (actualwidth * (-1) - 8))
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.left);
					var scarto = Math.abs(Math.abs(posizione) - currentDiv);
					//document.getElementById('debug').innerHTML = Math.abs(Math.abs(posizione) - currentDiv);
					if(!firstCicle && scarto <= 3)
					{
						cross_marquee.style.left = '-' + currentDiv + 'px';	
						clearInterval(interval);
						setTimeout(update, pauseInterval);
						divArray.push(currentDiv);
						currentDiv = divArray.shift();
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";	
				}
			}
			else //ricarica
			{
				//cross_marquee.style.left = (parseInt(marqueewidth) + 8) + "px";
				cross_marquee.style.left = parseInt(marqueewidth) + "px";
			}
		}
		else 
		{
			if (parseInt(cross_marquee.style.left) < (marqueewidth)) //scorrimento
			{
				if(pauseScroll == 1)
				{
					var posizione = parseInt(cross_marquee.style.left);
					if(!firstCicle && (posizione <= 0) && (posizione > -1 * divnameWidth) && ((posizione % pauseWidth) == 0))
					{
						clearInterval(interval);
						setTimeout(update, pauseInterval);
					}
					else
					{
						firstCicle = false;
						cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
					}
				}
				else
				{
					cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
				}
			}
			else //ricarica
			{
				cross_marquee.style.left = (actualwidth * (-1) - 8) + "px";
			}
		}		
	}
	
	function update()
	{
		switch(direction)
		{
			case 'up':
				cross_marquee.style.top = (parseInt(cross_marquee.style.top) - copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);	
			break;
			
			case 'down':
				cross_marquee.style.top = (parseInt(cross_marquee.style.top) + copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);	
			break;
			
			case 'left':
				cross_marquee.style.left = (parseInt(cross_marquee.style.left) - copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);
			break;
			
			case 'right':
				cross_marquee.style.left = (parseInt(cross_marquee.style.left) + copyspeed) + "px";
				interval = setInterval(scrollmarquee, scrolldelay);
			break;
		}
	}
}







//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.batchDivName = batchDiv;
											this.batchDiv;
											this.itemClass = itemClass;
											this.pagerDiv = $('' + pagerDiv + '');
											this.numberVisible = numberVisible;
											this.idExtension = idExtension;
											
											this.scroller_hotelDivHeight = this.scroller_hotelDiv.getHeight();
											var calcItem = $$('.' + itemClass)[0];
											this.itemHeight = calcItem.getHeight();
											if(!isNaN(parseInt(calcItem.getStyle('margin-bottom'), 10)))
											{
												this.itemHeight	+= parseInt(calcItem.getStyle('margin-bottom'), 10);
											}
																						
											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(batchDivNumber == (this.numberBatch)) //se è l'ultimo batch si ridimensiona il contenitore
											{
												var numberRemainingHotel = ((this.numberHotel % this.numberVisible) > 0)? (this.numberHotel % this.numberVisible) : this.numberVisible;
												this.scroller_hotelDiv.style.height = (this.itemHeight * numberRemainingHotel) + "px";												
											}
											else
											{
												this.scroller_hotelDiv.style.height = this.scroller_hotelDivHeight + "px";
											}
											this.batchDiv.style.top = '-' + (this.scroller_hotelDivHeight * (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)
											{
												$('divPrevious' + this.idExtension).addClassName('active');
												$('linkPrevious' + this.idExtension).addClassName('active');
											}
											else
											{
												$('divPrevious' + this.idExtension).removeClassName('active');
												$('linkPrevious' + this.idExtension).className = '';	
											}
											if(this.currentBatch == this.numberBatch)
											{
												$('divNext' + this.idExtension).removeClassName('active');
												$('linkNext' + this.idExtension).className = '';
											}
											else
											{
												$('divNext' + this.idExtension).addClassName('active');
												$('linkNext' + this.idExtension).addClassName('active');	
											}
											//fine colorazione link precedente/successivo
											
											//spostamento all'inizio del blocco icone
											if(this.scroller_hotelDiv.previousSiblings()[0])
												this.scroller_hotelDiv.previousSiblings()[0].scrollTo();
											else
												this.scroller_hotelDiv.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.batchDiv = $('' + this.batchDivName + '');
													this.numberHotel = $$('#' + this.batchDivName + ' .' + 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 per eseguire l'ordinamento degli hotel
//classe da utilizzare per filtrare gli hotel
var SelezionaHotel = Class.create({
									initialize: function(form, containerOrdinamento, containerElenco, containerMappa) {
																	this.form = $(form);
																	this.containerElenco = $(containerElenco);
																	this.containerOrdinamento = containerOrdinamento;
																	//this.containerMappa = $(containerMappa);
																	
																	this.orderByCategory = '';
																	this.orderByCategoryButton = $('orderCategoryButton');
																	this.orderByPrice = '';
																	this.orderByPriceButton = $('orderPriceButton');
																	this.orderByDistance = '';
																	this.orderByDistanceButton = $('orderDistanceButton');
																	this.orderByName = '';
																	this.orderByNameButton = $('orderNameButton');
																	
																	this.resetLink = $$('#' + this.containerOrdinamento + ' a')[0];
																	this.filterLink = $$('#' + this.containerOrdinamento + ' a')[1];
																	
																	Event.observe(this.orderByCategoryButton, 'click', this.handleMouseClick.bind(this));
																	Event.observe(this.orderByPriceButton, 'click', this.handleMouseClick.bind(this));
																	if(null != this.orderByDistanceButton)
																		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));
																	Event.observe(this.filterLink, '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('scroller_hotel', 'batch_hotel', 'elenco_hotel_large', 'paginazioneElencoHotel', 8, 'ElencoHotel');
																	
																	/*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(evt) {
																		if(evt)
																			Event.stop(evt);
																		
																		this.loadingImage();
																		this.form.request({ 
																							evalJSON: true,
																							onSuccess: this.handleResponse.bind(this) 
																						  });
																  },
																  
									handleResponse: function(transport) {
																			
																			this.containerElenco.update(transport.responseJSON[0]);

																			this.moveList.pagerDiv.update(transport.responseJSON[1]);
																			this.moveList.reset();
																			
																			//modifica matteo rossi 27/12/2010
																			//aggiunto update div messaggio quando si usano filtri
																			$('messagesHotel').update(transport.responseJSON[2]);
																			
																			/*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);
										
										$$('#' + this.containerOrdinamento + ' .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.order_by.value = '';
												this.form.order_direction.value = '';
											break;
											case 'filterLink':
												Event.stop(evt);
											
												hs.align = 'center';
												hs.transitions = ['expand', 'crossfade'];
												hs.outlineType = 'rounded-white';
												hs.fadeInOut = true;
											
												return hs.htmlExpand(element, { contentId: 'highslide-html', width: 500, height: 220 });
											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();
									}
								  });
