/** Lancia l'esecuzione di alcune funzioni al momento del caricamento della pagina. */ function loadHandler() { initNavigation(); externalLinks(); popupLinks(); alternateRows(); sitofonoInfo(); } /** Abilita il pulsante "maggiori informazioni" per il box riassuntivo del sistema Sitòfono. */ function sitofonoInfo() { $('.sitofono a.info').click(function(e) { e.preventDefault(); $('#sitofono-info').toggle(); }); } /** Aggiunge la classe "odd" a tutte le righe dispari delle tabelle con classe "list" */ function alternateRows() { $("table.list tr:odd").addClass("odd"); } /** Abilita l'apertura in una nuova finestra per tutti quei link che hanno specificato l'attributo rel con questo formato: rel="external". */ function externalLinks() { $('a[rel="external"]').click(function() { window.open($(this).attr('href')); return false; }); } /** Abilita l'apertura di una finestra di popup per tutti quei link che hanno specificato l'attributo rel con questo formato: rel="popup[larghezza,altezza]". Dove larghezza ed altezza sono le dimensioni del popup risultante. */ function popupLinks() { var rel, width, height; var windex; $('a[rel^="popup"]').click(function() { rel = $(this).attr('rel'); if((windex = rel.indexOf('[')) > -1) { width = rel.substring(windex + 1, rel.indexOf(',')); height = rel.substring(rel.indexOf(',') + 1, rel.indexOf(']')); window.open($(this).attr('href'), '', 'width=' + width + ',height=' + height + ',scrollbars=yes'); return false; } }); } /** Abilita l'effetto "fisarmonica" per i filtri avanzati sulle strutture. */ function enableStructureSearchAccordion() { $('#search .field').hide(); if($.cookie('searchitem') != null && $.cookie('searchitem') != '') { var searchItem = $('#' + $.cookie('searchitem')); if(searchItem.length > 0) { searchItem.show().prev().addClass('open'); } else { $('#search .field:first').show().prev().addClass('open'); } } else { $('#search .field:first').show().prev().addClass('open'); } $('#search h4').click(function() { $('#search h4').removeClass('open'); $('#search .field').slideUp('normal'); $.cookie('searchitem', $(this).next().attr('id'), { path: '/' }); $(this).addClass('open').next().slideDown('normal'); }); } /** Abilita i datepicker per la selezione delle date nei moduli di richiesta. */ function enableRequestCalendars() { $('.date-pick').datePicker({ showYearNavigation: false }); $('#periodo-dal').bind('dpClosed', function(e, selectedDates) { var d = selectedDates[0]; if (d) { d = new Date(d); //$('#periodo-al').dpSetStartDate(d.addDays(1).asString()).val(d.asString()); $('#periodo-al').dpSetStartDate(d.addDays(1).asString()).val(d.addDays(6).asString()); } }); $('#periodo-al').bind('dpClosed', function(e, selectedDates) { var d = selectedDates[0]; if (d) { d = new Date(d); //$('#periodo-dal').dpSetEndDate(d.addDays(-1).asString()); } }); } /** Genera i controlli per specificare le età dei bambini nei moduli di richiesta, in base al valore del controllo (select) contenente il numero di bambini. */ function childrenAges(labelText, noteLabelText) { var ageContainer = $('#childrenages'); var field, label, sel, opt; sel = $(''); for(var i=0;i<=12;i++) { opt = $(''); opt.appendTo(sel); } $('#bambini').change(function() { ageContainer.empty(); var children = this.selectedIndex; if(children > 0) { for(var i=1;i<=children;i++) { field = $('
'); label = $(''); label.appendTo(field); sel.clone().attr('id', 'eta-bambino-' + i).attr('name', 'eta-bambino-' + i).appendTo(field); $('' + noteLabelText + '').appendTo(field); field.appendTo(ageContainer); } } }); } /** Abilita il controllo (select) per cambiare il mese di partenza nel calendario disponibilità di una struttura. @see availabilitySwitch(), ajax.js */ function availabilitySwitcherEnable() { $("#starting-month option:eq(0)").attr("selected", "selected"); $('#starting-month').change(function() { var date = this.value; var month = date.substring(0, date.lastIndexOf('/')); var year = date.substring(date.lastIndexOf('/')+1, date.length); var id = $('#sid').val(); availabilitySwitch(id, month, year); }); } /** Abilita il controllo (select) per caricare i servizi in base al tipo di struttura scelta, e il pulsante per visualizzare/nascondere i servizi estesi. @see structureTypeServicesSwitch(), ajax.js */ function structureTypeServicesSwitcherEnable() { //$('#tipo-struttura option:eq(0)').attr("selected", "selected"); $('#tipo-struttura').change(function() { structureTypeServicesSwitch(this.value); }); $('#show-more').click(function() { $('#more-services').slideToggle('slow'); return false; }); } /** Abilita i controlli (checkbox) per visualizzarne o nasconderne altri nei moduli di richiesta. */ function requestFormTogglerEnable() { $('#treatment, #camping-data').css('display', 'none'); var inputs = $(':checkbox[name=categoria-hotel], :checkbox[name=categoria-residence]'); toggleControlsWithCheckboxes(inputs, 'treatment');; inputs = $(':checkbox[name=categoria-camping]'); toggleControlsWithCheckboxes(inputs, 'camping-data'); } /** Nasconde i controlli all'interno dell'elemento con id containerId se nessuna delle checkbox è spuntata. Visualizza gli stessi controlli se almeno una checkbox è spuntata. @param checkboxes le checkbox con cui nascondere/visualizzare gli altri elementi @param containerId id del contenitore da nascondere/visualizzare */ function toggleControlsWithCheckboxes(checkboxes, containerId) { checkboxes.change(function() { var showControls = false; checkboxes.each(function() { if($(this).is(':checked')) { showControls = true; return false; } }); if(showControls) { $('#' + containerId).show('fast'); } else { $('#' + containerId).hide('fast'); } }); }