|
Hotel Oktoberfest: come e dove scegliere l’albergo Qualora si decida di prenotare un viaggio all’Oktoberfest di più giorni, una delle cose fondamentali a cui pensare è ovviamente l’alloggio. Durante tutta la durata della festa della birra, risulta molto difficile, se non impossibile, riuscire a trovare una stanza in albergo a Monaco. E se si riesce, i prezzi ovviamente sono alle stelle.
La soluzione per gli hotel Oktoberfest è quella di prenotare con largo anticipo o trovare una sistemazione fuori città. Impresa decisamente molto più semplice.
Hotel Oktoberfest: gli alberghi in centro città
Le strutture in centro città hanno comunque delle camere libere durante l’evento, ma quasi sempre nei giorni meno di minor affluenza, e non durante il weekend, che è il momento clou della kermesse. Concerti, sfilate ed eventi ad hoc, infatti, sono gli elementi che, oltre la birra che scorre a fiumi, contribuiscono alla buona riuscita dell’Oktoberfest.
Hotel Oktoberfest: gli alloggi fuori città
Per risolvere tutto questo, la soluzione più conveniente è quella di fare una prenotazione presso i bellissimi e carini hotel che si trovano al di fuori del centro di Monaco. Spesso sono poco conosciuti ma soggiornare presso di loro risulta essere molto soddisfacente sia dal punto di vista del prezzo che dal loro comportamento.
Le strutture alberghiere fuori città, anche se meno conosciute, si rivelano soddisfacenti per il rapporto qualità-prezzo, considerando che gli amanti della birra trascorrono l’intera giornata all’Oktoberfest, e vanno in hotel giusto per dormire e farsi una doccia, per riprendersi dalla sbornia.
Hotel Oktoberfest: un servizio eccezionale
La cortesia e l’accoglienza sono due parole che vengono attuate da tutto il personale degli hotel Oktoberfest. Le stanze sono sempre carine e curate nei minimi dettagli per far sentire l’ospite come fosse a casa sua; il servizio di prima colazione è abbondante, in quanto vengono proposti i piatti della cucina bavarese, e i collegamenti con il centro di Monaco sono studiati ad hoc, specie durante questo appuntamento annuale.
Hotel Oktoberfest: i collegamenti
Non scoraggiatevi se il vostro hotel risulta essere fuori dalla città di Monaco di Baviera: con la S-Bahn, è possibile raggiungere non solo il centro, ma anche tutto l’interland.
Anche gli autobus permettono di arrivare al Theresienwiese, il parco dove si tiene l’Oktoberfest, in modo rapido, proprio perché la festa, ormai diventata internazionale, vuole sottolineare l’efficienza non solo della bevanda del luppolo, ma anche e soprattutto i servizi che la capitale bavarese è in grado di offrire a cittadini e turisti.
Hotel Oktoberfest e hotel della Valle della Loira
Un problema simile a quello degli hotel Oktoberfest si riscontra anche nella Valle della Loira: durante i periodi di festa, come Natale, Pasqua e Ferragosto, trovare un albergo vicino ai vari castelli patrimonio UNESCO è impensabile. Spesso bisogna prenotare a Digione o Tours, in base all’itinerario che uno ha intenzione di seguire.
Il motivo è esattamente lo stesso: occorre prenotare con largo anticipo, in particolare se si vuole aver l’opportunità di soggiornare direttamente presso i castelli. Soluzioni, queste, molto costose, ma che possono concretizzare il grande sogno di chi, almeno per una notte, vuole vivere emozioni da favola.
Mi chiamo Francesca, sono una ragazza di 26 anni che fin da piccola ama viaggiare e scoprire nuove mete. Sono una persona semplice ma determinata con un solo scopo nella vita: avere la possibilità di andare alla scoperta sempre di nuove esperienze fatte ovunque Latest posts by Francesca Cavazza (see all)
|
Date.MILLISECONDS_PER_DAY = Date.prototype.MILLISECONDS_PER_DAY = 86400000;
var browser = navigator.appName
var version = navigator.appVersion
var startstring = parseFloat(version.indexOf("MSIE"))+1
var browserverion = parseFloat(version.substring(startstring+4,startstring+7))
var isIE5 = ((browser=="Microsoft Internet Explorer") && (browserverion < 6))? true : false; var isIE6 = ((browser=="Microsoft Internet Explorer") && (browserverion > 5.5) && (browserverion < 6))? true : false; // Put placeholder in destination input box if empty, and remove when focused var destination = document.getElementById('destination'); destination.onblur = function () { if (!this.value) { this.value = this.getAttribute('title'); this.className += ' blur'; } } destination.onfocus = function () { if (this.value == this.getAttribute('title')) { this.value = ''; this.className = this.className.replace(/ blur/, ''); } } destination.onblur(); function tickCheckBox(el) { if (document.getElementById) { if (document.getElementById(el)) { document.getElementById(el).checked = false; } } return true; } Date.prototype.getTwoDigitMonth = function () { // Returns a two-digit string from '01' to '12' representing the month property of a Date object. var month = (this.getMonth() + 1).toFixed().toString(); if (month.length == 1) { month = '0' + month; } return month; }; function checkDateOrder(me, ci_day, ci_month_year, co_day, co_month_year) { var frm = document.getElementById('frm'), my, ci = new Date( 0 ), co = new Date( 0 ), com, today = new Date(); // create date object from checkin values // set date to 12:00 to avoid problems with one // date being wintertime and the other summertime if ( frm[ci_day].value !== '0' ) { ci.setDate( frm[ci_day].value ); } if ( frm[ci_month_year].value !== '0' ) { my = frm[ci_month_year].value.split( "-" ); ci.setFullYear( my[0] ); ci.setMonth( my[1] - 1 ); } ci.setHours( 12 ); ci.setMinutes( 0 ); ci.setSeconds( 0 ); // create date object from checkout values if ( frm[co_day].value !== '0' ) { co.setDate( frm[co_day].value ); } if ( frm[co_month_year].value !== '0' ) { my = frm[co_month_year].value.split( "-" ); co.setFullYear( my[0] ); co.setMonth( my[1] - 1 ); } co.setHours( 12 ); co.setMinutes( 0 ); co.setSeconds( 0 ); // If the new checkin date's month does not match // the current value of the dropdown, then it is // because the month was incremented creating an // invalid date (e.g. February 31st). // We'll cycle back the checkin date until we're in // the correct month. if ( frm[ci_month_year].value !== '0' ) { while ( ci.getMonth() != frm[ci_month_year].value.split( "-" )[1] - 1 ) { ci.setDate( ci.getDate() - 1 ); frm[ci_day].value = ci.getDate(); } var cim = ci.getMonth() + 1; frm[ci_month_year].value = ci.getFullYear() + "-" + cim; } // if checkin date is at or after checkout date, // add a day full of milliseconds, and set the // selectbox values for checkout date to new value if ( ci >= co )
{
co.setTime( ci.getTime() + Date.prototype.MILLISECONDS_PER_DAY );
com = co.getMonth() + 1;
if ( frm[ci_day].value !== '0' )
{
frm[co_day].value = co.getDate();
}
if ( frm[ci_month_year].value !== '0' )
{
frm[co_month_year].value = co.getFullYear() + "-" + com;
}
}
}
function updateDaySelect( me )
{
// 1-2 testing
if ( !booking.env.b_simple_weekdays_for_js )
{
return;
}
var frm = document.getElementById('frm');
if ( frm.getAttribute( 'id' ) !== 'frm' && frm.className !== 'availForm' )
{
return;
}
// Check if we have all fields. If not, we are in the first stage
// of the book process and should not auto-update selects since there
// is only the check-in select and the amount of nights.
if ( !frm.checkin_monthday || !frm.checkout_monthday || !frm.checkin_year_month || !frm.checkout_year_month )
{
return;
}
if ( frm.checkin_monthday.value === '0' && frm.checkout_monthday.value === '0' && frm.checkin_year_month.value === '0' && frm.checkout_year_month.value === '0' )
{
return;
}
// If the year-month fields have nonzero values, prepend the day of the week to each monthday in the check-in and check-out monthday Selects.
var
ci_d = frm.checkin_monthday,
co_d = frm.checkout_monthday,
ci_my,
co_my,
todaysDate;
// If the form field has a nonzero value, use it;
if ( frm.checkin_year_month.value !== '0' )
{
ci_my = frm.checkin_year_month.value.split( "-" );
}
else
{
// Use the current date value.
todaysDate = new Date();
ci_my = [ todaysDate.getFullYear(), todaysDate.getTwoDigitMonth() ];
}
if ( frm.checkout_year_month.value !== '0' )
{
co_my = frm.checkout_year_month.value.split( "-" );
}
else
{
todaysDate = new Date();
co_my = [ todaysDate.getFullYear(), todaysDate.getTwoDigitMonth() ];
}
var
ci_sel = Math.max( ci_d.selectedIndex, 0 ),
co_sel = Math.max( co_d.selectedIndex, 0 ),
ci_sel_value = ci_d[ ci_sel ].value,
co_sel_value = co_d[ co_sel ].value,
monthDays = [],
opt,
i;
ci_d.innerHTML = '';
co_d.innerHTML = '';
var MonthdayPromptOption = function ()
{
this.option = {
"_this" : this,
"@selected" : "selected",
"@class" : "day prompt site_experiment_encourage_date_entry_2",
"@value" : 0,
"#text" : "giorno"
};
};
if ( ci_sel_value === '0' )
{
buildHtmlNode( new MonthdayPromptOption(), ci_d ).selected = true;
}
if ( co_sel_value === '0' )
{
buildHtmlNode( new MonthdayPromptOption(), co_d ).selected = true;
}
function writeMonthdaysOptions( numberOfMonthdaysToShow, yearMonthSelectElement, monthDaysArray, monthDaysSelectElement, monthDaySelectValue )
{
var i, optionElementInnerHTML, optionElement;
for ( i = 0; i < numberOfMonthdaysToShow; i++ ) { optionElement = document.createElement( 'option' ); optionElementInnerHTML = i + 1; if ( yearMonthSelectElement.value !== '0' ) { optionElementInnerHTML = monthDaysArray[i] + ' ' + optionElementInnerHTML; } optionElement.innerHTML = optionElementInnerHTML; optionElement.value = ( i + 1 ); if ( i > 0 && monthDaySelectValue == i + 1 )
{
optionElement.defaultSelected = optionElement.selected = true;
}
monthDaysSelectElement.appendChild( optionElement );
}
}
// Check-in month
monthDays = buildDaysForMonth( ci_my[0], ci_my[1] );
var numberOfMonthdaysToShow = 31;
if ( frm.checkin_year_month.value !== '0' )
{
numberOfMonthdaysToShow = monthDays.length;
}
writeMonthdaysOptions( numberOfMonthdaysToShow, frm.checkin_year_month, monthDays, ci_d, ci_sel_value );
// Checkout month
monthDays = buildDaysForMonth( co_my[0], co_my[1] );
numberOfMonthdaysToShow = 31;
if ( frm.checkout_year_month.value !== '0' )
{
numberOfMonthdaysToShow = monthDays.length;
}
writeMonthdaysOptions( numberOfMonthdaysToShow, frm.checkout_year_month, monthDays, co_d, co_sel_value );
// IE 6 exhibits a bug whereby the value of the monthday select always jumps to zero.
if (isIE6) {
ci_d.value = ci_sel_value;
co_d.value = co_sel_value;
}
}
function buildDaysForMonth( year, month )
{
// Month index starts on 0(-11) in Date()-object
var monthDate = new Date( year, month - 1 );
var orgMonth = monthDate.getMonth();
var dayArray = [], weekDay;
while ( monthDate.getMonth() == orgMonth )
{
// Week starts on Sunday in Date()-object
weekDay = ( monthDate.getDay() == 0 ) ? 6 : ( monthDate.getDay() - 1 );
dayArray.push( booking.env.b_simple_weekdays_for_js[weekDay] );
monthDate.setDate( monthDate.getDate() + 1 );
}
return dayArray;
}
function buildHtmlNode (elementsObject, targetNode, refChild)
{
/*
Accepts an object of elements where the key specifies the tagname unless prefixed by @, in which case it specifies an attribute of the parent, or when it is #cdata, in which case it specifies a CDATA child.
http://xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
The big flaw now is the case , which cannot be represented as a JS object. In that case interject an array of generic div or span elements.
*/
// If we want to validate as JSON, we must make sure what we pass in is JSON, which it presently isnot.
//elementsObject = booking.json.validate(elementsObject);
var
key,
counter,
found,
newElement,
newNode;
for (key in elementsObject)
{
if (elementsObject.hasOwnProperty(key))
{
var
prefix = key.substring(0, 1),
primaryKey = key.substring(1);
if (prefix != '_') // We窶决e on a non-DOM key, so skip.
{
if (prefix == '@') // Attribute
{
if (!targetNode.getAttribute(primaryKey))
{
// Perhaps extend this in the future to support multiple class values.
targetNode.setAttribute(primaryKey, elementsObject[key]);
}
}
else
{
if (prefix == '#') // Text or CDATA
{
if (primaryKey == 'text') // Text
{
found = false;
if (targetNode.childNodes && targetNode.childNodes.length > 0)
{
// Traverse text node children and append only if it isn窶冲 already there.
counter = 0;
while (counter < targetNode.childNodes.length && !found)
{
if (targetNode.childNodes[counter].nodeType == Node.TEXT_NODE && targetNode.childNodes[counter].nodeValue == elementsObject[key])
{
found = true;
}
counter++;
}
}
if (!found)
{
// MGP 040209: Cope with strings split by linebreaks - need to insert elements
if ( elementsObject[key].indexOf("\n") == -1 )
{
newNode = document.createTextNode(elementsObject[key]);
if (refChild)
{
targetNode.insertBefore(newNode, refChild);
}
else
{
targetNode.appendChild(newNode);
}
}
else
{
// Found some linebreaks - split the string into component parts
var newNodeParts = elementsObject[key].split("\n");
// Loop through the parts, adding a linebreak after each one (except the last one)
for ( var i = 0; i < newNodeParts.length; i++ )
{
// Check for the existence of a star rating in the text node
if ( newNodeParts[i].match(/\d\*$/) )
{
// Found a star rating - extract the star
lastSpace = newNodeParts[i].lastIndexOf(" ");
newNodeString = newNodeParts[i].substring( 0, lastSpace );
starImgSrc = 'http://q.bstatic.com/static/img/icons/stars/' + newNodeParts[i].substr( lastSpace + 1, 1 ) + 'sterren-small.png';
}
else
{
newNodeString = newNodeParts[i];
starImgSrc = '';
}
newNode = document.createTextNode(newNodeString);
if (refChild)
{
targetNode.insertBefore(newNode, refChild);
if ( starImgSrc )
{
newImg = document.createElement('img');
newImg.setAttribute('src', starImgSrc);
newImg.className = "stars";
targetNode.insertBefore(newImg, refChild);
}
}
else
{
targetNode.appendChild(newNode);
if ( starImgSrc )
{
newImg = document.createElement('img');
newImg.setAttribute('src', starImgSrc);
newImg.className = "stars";
targetNode.appendChild(newImg);
}
}
if ( i < newNodeParts.length - 1)
{
// Add a
newBR = document.createElement("br");
if (refChild)
{
targetNode.insertBefore(newBR, refChild);
}
else
{
targetNode.appendChild(newBR);
}
}
}
}
}
}
else
{
if (primaryKey == 'cdata') // CDATA
{
targetNode.appendChild(document.createCDATASection(elementsObject[key]));
}
}
}
else // Element
{
// If targetNode was passed into this function, append the new child to it窶ヲ
if (targetNode)
{
// If elementsObject[key] is an array, we窶冤l create an element of type key for each array member.
if (elementsObject[key].length > 0)
{
for (counter = 0; counter < elementsObject[key].length; counter++)
{
if (elementsObject[key][counter])
{
if (!elementsObject[key][counter]._node)
{
newElement = document.createElement(key);
elementsObject[key][counter]._node = newElement;
var r = counter + 1;
while (r < elementsObject[key].length && !refChild)
{
if (elementsObject[key][r])
{
refChild = elementsObject[key][r]._node;
}
r++;
}
if (refChild)
{
newNode = targetNode.insertBefore(
elementsObject[key][counter]._node,
refChild);
}
else
{
newNode = targetNode.appendChild(
elementsObject[key][counter]._node);
}
arguments.callee(
elementsObject[key][counter],
newNode);
newElement._elementTree = elementsObject[key][counter];
}
else
{
arguments.callee(
elementsObject[key][counter],
elementsObject[key][counter]._node);
}
}
}
}
else
{
if (elementsObject[key].length !== 0)
{
if (!elementsObject[key]._node)
{
newElement = document.createElement(key);
elementsObject[key]._node = newElement;
if (refChild)
{
newNode = targetNode.insertBefore(
elementsObject[key]._node,
refChild);
}
else
{
newNode = targetNode.appendChild(
elementsObject[key]._node);
}
arguments.callee(
elementsObject[key],
newNode);
newElement._elementTree = elementsObject;
}
else
{
arguments.callee(
elementsObject[key],
elementsObject[key]._node);
}
}
}
}
// else create the new element as targetNode.
else
{
if (!elementsObject[key]._node)
{
arguments.callee(elementsObject[key],
elementsObject[key]._node = targetNode = document.createElement(key));
}
else
{
arguments.callee(elementsObject[key],
elementsObject[key]._node);
}
}
}
}
}
}
}
return targetNode;
};
|
Leave a Reply