Locations à Vars et Risoul
Locations à Vars et Risoul
var days = ['lu','ma','me','je','ve','sa','di']; Date.MILLISECONDS_PER_DAY = Date.prototype.MILLISECONDS_PER_DAY = 86400000;
// Put placeholder in destination input box if empty, and remove when focused var destination = document.getElementById('b_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 = ''; } } destination.onblur();
function tickCheckBox(el) { if (document.getElementById) { if (document.getElementById(el)) { document.getElementById(el).checked = true; } } 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('b_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 ( !days3 ) { 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" : "jour" }; }; 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 ( document.all && !gClientIsOpera && /MSIE 6\.0/.test(navigator.appVersion) ) { 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( days3[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
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 = '/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'll 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;
};
var currentDate = new Date(); var currentYear = 1900 + currentDate.getYear(); var dailyMS = 24*60*60*1000; var arrivalDate = new Date(currentDate.getTime()); var departureDate = new Date(currentDate.getTime() + 1*dailyMS); var arrivalYearMonth = 1900+arrivalDate.getYear() + "-" + 1+arrivalDate.getMonth(); var arrivalDay = arrivalDate.getDate(); var departureYearMonth = 1900+departureDate.getYear() + "-" + 1+departureDate.getMonth(); var departureDay = departureDate.getDate(); var a=document.b_frm; if ((a.checkin_monthday.selectedIndex == 0) && (a.checkout_monthday.selectedIndex == 0)){ a.checkin_monthday.options[arrivalDay-1].selected = true; a.checkout_monthday.options[departureDay-1].selected = true; } var frm = document.getElementById('b_frm'); // create date object from checkin values // set date to 12:00 to avoid problems with one // date being wintertime and the other summertime var my = frm['b_checkin_month'].value.split("-"); var ci = new Date (my[0], my[1]-1, frm['b_checkin_day'].value, 12, 0, 0, 0);
// create date object from checkout values my = frm['b_checkout_month'].value.split("-"); var co = new Date (my[0], my[1]-1, frm['b_checkout_day'].value, 12, 0, 0, 0); if (ci >= co){ co.setTime(ci.getTime() + 1000 * 60 * 60 * 24); frm['b_checkout_day'].value = co.getDate(); var com = co.getMonth()+1; frm['b_checkout_month'].value = co.getFullYear() + "-" + com; }
