
Date.prototype.clone=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());}
Date.prototype.addTime=function(mode,toAdd){switch(mode){case'milliseconds':case'millisecond':this.setMilliseconds(this.getMilliseconds()+toAdd);break;case'seconds':case'second':this.setSeconds(this.getSeconds()+toAdd);break;case'minutes':case'minute':this.setMinutes(this.getMinutes()+toAdd);break;case'hours':case'hour':this.setHours(this.getHours()+toAdd);break;case'days':case'day':this.setDate(this.getDate()+toAdd);break;case'months':case'month':this.setMonth(this.getMonth()+toAdd);break;case'years':case'year':this.setFullYear(this.getFullYear()+toAdd);break;}
return this;}
Date.prototype.getToday=function(){var today=new Date();return new Date(today.getFullYear(),today.getMonth(),today.getDate());}
function prepareLanguagePack(){var language=Xu().getBody().getClass().match(/\b([a-z]{2})\b/)[1];switch(language){case'it':languagepack={dayNames:[['Lun','Lunedì'],['Mar','Martedì'],['Mer','Mercoledì'],['Gio','Giovedì'],['Ven','Venerdì'],['Sab','Sabato'],['Dom','Domenica']],monthNames:[['Gen','Gennaio'],['Feb','Febbraio'],['Mar','Marzo'],['Apr','Aprile'],['Mag','Maggio'],['Giu','Giugno'],['Lug','Luglio'],['Ago','Agosto'],['Set','Settembre'],['Ott','Ottobre'],['Nov','Novembre'],['Dic','Dicembre']],mostraCommenti:'Mostra i commenti dei visitatori di questa struttura'};break;case'en':languagepack={dayNames:[['Mon','Monday'],['Tue','Tuesday'],['Wed','Wednesday'],['Thu','Thursday'],['Fri','Friday'],['Sat','Saturday'],['Sun','Sunday']],monthNames:[['Jan','January'],['Feb','February'],['Mar','March'],['Apr','April'],['May','May'],['Jun','June'],['Jul','July'],['Aug','August'],['Sep','September'],['Oct','October'],['Nov','November'],['Dec','December']],mostraCommenti:'See the guests comments for this accommodation'}
break;case'es':languagepack={dayNames:[['Lun','Lunes'],['Mar','Martes'],['Mié','Miércoles'],['Jue','Jueves'],['Vie','Viernes'],['Sáb','Sábado'],['Dom','Domingo']],monthNames:[['Ene','Enero'],['Feb','Febrero'],['Mar','Marzo'],['Abr','Abril'],['May','Mayo'],['Jun','Junio'],['Jul','Julio'],['Ago','Agosto'],['Sep','Septiembre'],['Oct','Octubre'],['Nov','Noviembre'],['Dic','Diciembre']],mostraCommenti:'Mostrar los comentarios de los huéspedes de este alojamiento'};break;case'fr':languagepack={dayNames:[['Lun','Lundi'],['Mar','Mardi'],['Mer','Mercredi'],['Jeu','Jeudi'],['Ven','Vendredi'],['Sam','Samedi'],['Dim','Dimanche']],monthNames:[['Jan','Janvier'],['Fév','Février'],['Mar','Mars'],['Avr','Avril'],['Peu','Peut'],['Jui','Juin'],['Jui','Juillet'],['Aoû','Août'],['Sep','Septembre'],['Oct','Octobre'],['Nov','Novembre'],['Déc','Décembre']],mostraCommenti:'Montrer les commentaires des clients de ce logement'};break;}}
function validateDate(year,month,day){day+='';month+='';year+='';if(!day.match(/^[0-9]+$/)||day<1||day>31||!month.match(/^[0-9]+$/)||month<1||month>12||!year.match(/^[0-9]{4}$/)||year<new Date().getFullYear()||month>12)return null;day-=0;month-=0;year-=0;var test=new Date(year,month-1,day);if(test.getDate()!==day||test.getMonth()!==month-1||test.getFullYear()!==year)return null;return test;}
function areDatesEqual(date1,date2){if(date1===null&&date2===null)return true;if((date1 instanceof Date&&date2 instanceof Date)&&(date1.getTime()===date2.getTime()))return true;return false;}
function CalendarObj(parentItem,listener){this.parentItem=parentItem;this.listener=listener;this.dayNames=languagepack.dayNames;this.monthNames=languagepack.monthNames;this.selectedDate=null;this.startSelectableDate=null;this.endSelectableDate=null;this.currentDate=null;}
CalendarObj.prototype={removeCalendar:function(){if(Xu('calendario')!==null){Xu('calendario').removeSelf();Xu('FullPanel').removeSelf();}},setSelectedDate:function(date){this.selectedDate=date;},setSelectable:function(startDate,endDate){this.startSelectableDate=startDate;this.endSelectableDate=endDate;},applyFullPanel:function(){var docSize=Xu().getSize();var func=function(e,source,type){source.getData('main').daySelected(null);return false;}
var a=Xu('a',true).setData('main',this).setHref(null).setID('FullPanel').append(Xu('text',true,'')).setStyles({position:'absolute',top:'0px',left:'0px',width:docSize.width+'px',height:docSize.height+'px'}).addEvent('onclick',func).appendTo(Xu().getBody());},createCalendar:function(date){this.removeCalendar();var month=date.getMonth();var year=date.getFullYear();this.currentDate=new Date(year,month,1);var date=new Date(year,month,1);var days=[];var startWeekDay=date.getDay();startWeekDay=(startWeekDay===0?6:startWeekDay-1);for(var i=0;i<startWeekDay;++i)days.push(null);var selected=(this.selectedDate===null?null:this.selectedDate.getTime());var startSelectable=(this.startSelectableDate===null?null:this.startSelectableDate.getTime());var endSelectable=(this.endSelectableDate===null?null:this.endSelectableDate.getTime());var curTime=null;for(var i=1;i<32;++i){date.setDate(i);if(date.getMonth()!==month)break;curTime=date.getTime();days.push({'day':i,'date':new Date(year,month,i),'holiday':false,'selectable':((startSelectable===null||curTime>=startSelectable)&&(endSelectable===null||curTime<=endSelectable)),'selected':(curTime===selected)});}
while(days.length%7!==0)days.push(null);var prevMonth=function(e,source,type){source.getData('CalObj').prevMonth();}
var nextMonth=function(e,source,type){source.getData('CalObj').nextMonth();}
var closeCalendar=function(e,source,type){source.getData('CalObj').daySelected(null);}
var daySelected=function(e,source,type){source.getData('CalObj').daySelected(source.getData('curDate').clone());}
var table=Xu('table',true).setID('calendario').setData('CObj',this).setData('Listener',this.listener).setVar('cellPadding',0).append(Xu('caption',true).append(Xu('a',true).setClass('chiudi').setData('CalObj',this).setHref(null).addEvent('onclick',closeCalendar).append(Xu('text',true,''))).append(Xu('a',true).setClass('sinistra').setData('CalObj',this).setHref(null).addEvent('onclick',prevMonth).append(Xu('text',true,''))).append(Xu('a',true).setClass('destra').setData('CalObj',this).setHref(null).addEvent('onclick',nextMonth).append(Xu('text',true,''))).append(Xu('span',true).append(Xu('text',true,this.monthNames[month][1]+' '+year))));var tr=Xu('tr',true);for(var i=0;i<7;++i){tr.append(Xu('th',true).setClass('d'+i).append(Xu('span',true).setTitle(this.dayNames[i][1]).append(Xu('text',true,this.dayNames[i][0]))));}
table.append(Xu('thead',true).append(tr));var tbody=Xu('tbody',true);var td=null;var day=null;var curDate=null;for(var trNum=0;trNum<days.length/7;++trNum){tr=Xu('tr',true);for(var i=0;i<7;++i){td=Xu('td',true).setClass('d'+i);day=days[(trNum*7)+i];if(day!==null){if(day.selectable){td.append(Xu('a',true).setHref(null).setData('CalObj',this).setData('curDate',day.date).addEvent('onclick',daySelected).append(Xu('text',true,day.day)));}
else{td.append(Xu('span',true).append(Xu('text',true,day.day)));}
if(day.selected)td.addClass('selected');if(day.holiday)td.addClass('holiday');}
tr.append(td);}
tbody.append(tr);}
this.applyFullPanel();table.append(tbody).appendTo(Xu().getBody());if(this.parentItem){var pos=this.parentItem.getAbsolutePosition();table.setStyles({'left':(pos.x-280)+'px','top':(pos.y+20)+'px','position':'absolute'});}},prevMonth:function(){var curMonth=this.currentDate.getMonth();var curYear=this.currentDate.getFullYear();if(curMonth===0){curMonth=11;--curYear;}
else--curMonth;this.createCalendar(new Date(curYear,curMonth,1));},nextMonth:function(){var curMonth=this.currentDate.getMonth();var curYear=this.currentDate.getFullYear();if(curMonth===11){curMonth=0;++curYear;}
else++curMonth;this.createCalendar(new Date(curYear,curMonth,1));},daySelected:function(selDate){if(this.listener)this.listener.daySelected(selDate===null?null:selDate.clone());this.removeCalendar();}}
function CalendarManager(item,listener,defaultDate,startSelectableDate,endSelectableDate){this.listener=listener;this.dayItem=Xu(item+'_day');this.monthItem=Xu(item+'_month');this.yearItem=Xu(item+'_year');this.calObj=new CalendarObj(this.yearItem,this);this.open=false;this.currentDate=null;this.defaultDate=(defaultDate?defaultDate:null);this.keyupTimer=null;this.startSelectableDate='unset';this.endSelecteableDate='unset';this.dateError=false;this.rangeError=false;this.lastData={date:'unset',day:'unset',month:'unset',year:'unset'};var onchangeFunc=function(e,source,type){source.getData('CM').dateChanged();}
var onkeyupFunc=function(e,source,type){source.getData('CM').keyupEvent();}
this.dayItem.setData('CM',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);this.monthItem.setData('CM',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);this.yearItem.setData('CM',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);var func=function(e,source,type){source.getData('CM').buttonClicked();}
this.link=Xu('a',true).append(Xu('text',true,'')).setClass('apri-calendario').setHref(null).setData('CM',this).addEvent('onclick',func).insertBeforeItem(Xu(this.yearItem.parentItem()).getByTag('input',0));this.setSelectable((startSelectableDate?startSelectableDate:null),(endSelectableDate?endSelectableDate:null))}
CalendarManager.prototype={setListener:function(item){this.listener=item;},setSelectable:function(startDate,endDate,dontUpdate){if(areDatesEqual(this.startSelectableDate,startDate)&&areDatesEqual(this.endSelectableDate,endDate))return;this.startSelectableDate=startDate;this.endSelectableDate=endDate;this.calObj.setSelectable(this.startSelectableDate,this.endSelectableDate);if(!dontUpdate)this.dateChanged(true);},setDefaultDate:function(date){this.defaultDate=date;},buttonClicked:function(){this.setOpen(!this.open);},keyupEvent:function(){if(this.keyupTimer!==null)this.keyupTimer.abort();this.keyupTimer=new Xi(this,'timeout',this.dateChanged,1000).start();},validateDate:function(forced){var day=this.dayItem.getValue();var month=this.monthItem.getValue();var year=this.yearItem.getValue();if(!forced&&(this.lastData.day===day&&this.lastData.month===month&&this.lastData.year===year))return(this.currentDate===null?null:this.currentDate.clone());this.lastData.day=day;this.lastData.month=month;this.lastData.year=year;var date=validateDate(year,month,day);this.dateError=false;this.rangeError=false;if(date===null){date=null;if(day!==''&&month!==''&&year!=='')this.dateError=true;}
else if((this.startSelectableDate!==null&&date.getTime()<this.startSelectableDate.getTime())||(this.endSelectableDate!==null&&date.getTime()>this.endSelectableDate.getTime())){date=null;this.rangeError=true;}
this.setError('date-error',this.dateError);this.setError('range-error',this.rangeError);this.currentDate=(date===null?null:date.clone());return date;},dateChanged:function(forced){if(this.keyupTimer!==null){this.keyupTimer.abort();this.keyuptimer=null;}
var date=this.validateDate(forced);if(!forced&&areDatesEqual(this.lastData.date,date))return;this.lastData.date=(date===null?null:date.clone());if(this.listener)this.listener.dateChanged(this,date===null?null:date.clone());},setError:function(mode,error){if(error){this.dayItem.addClass(mode);this.monthItem.addClass(mode);this.yearItem.addClass(mode);}
else{this.dayItem.removeClass(mode);this.monthItem.removeClass(mode);this.yearItem.removeClass(mode);}},setOpen:function(open){this.dayItem.get().disabled=open;this.monthItem.get().disabled=open;this.yearItem.get().disabled=open;if(open)this.createCalendar();else this.calObj.removeCalendar();this.link.setClass(open?'chiudi-calendario':'apri-calendario');this.open=open;},createCalendar:function(){var cal=Xu('calendario');if(cal!==null)cal.getData('Listener').setOpen(false);var day=this.dayItem.getValue();var month=this.monthItem.getValue();var year=this.yearItem.getValue();var date=validateDate(year,month,day);if(date===null){if(this.defaultDate===null)return;date=this.defaultDate;}
this.calObj.setSelectedDate(date.clone());this.calObj.createCalendar(date.clone());},getCurrentDate:function(){return(this.currentDate===null?null:this.currentDate.clone());},daySelected:function(selDate){this.setOpen(false);if(selDate!==null){var day=selDate.getDate();if(day<10)day='0'+day;var month=selDate.getMonth()+1;if(month<10)month='0'+month;var year=selDate.getFullYear();this.dayItem.setValue(day);this.monthItem.setValue(month);this.yearItem.setValue(year);this.dateChanged();}}}
function CalendarPairManager(startCalendar,endCalendar,listener,rangeDefs){this.startCalendar=startCalendar;this.endCalendar=endCalendar;this.startCalendar.setListener(this);this.endCalendar.setListener(this);this.startCalendar.isStartCalendar=true;this.endCalendar.isStartCalendar=false;this.rangeDefs=(!rangeDefs?{minDate:null,maxDate:null,minInterval:0,maxInterval:null}:rangeDefs);this.lastData={startDate:'unset',endDate:'unset'};this.listener=(!listener?null:listener);this.startCalendar.setSelectable(this.rangeDefs.minDate,this.rangeDefs.maxDate);}
CalendarPairManager.prototype={setListener:function(listener){this.listener=listener;},dateChanged:function(calendar,date){if(calendar.isStartCalendar){if(areDatesEqual(this.lastData.startDate,date))return;this.lastData.startDate=(date===null?null:date.clone());var startDate=date;var startDefDate=(startDate===null?this.rangeDefs.minDate.clone():startDate);this.startCalendar.setDefaultDate(startDefDate.clone());var startSelectableDate=startDefDate.clone().addTime('day',this.rangeDefs.minInterval);var endSelectableDate=null;if(this.rangeDefs.maxInterval===null){if(this.rangeDefs.maxDate!==null)endSelectableDate=this.rangeDefs.maxDate.clone();}
else endSelectableDate=startDefDate.clone().addTime('days',this.rangeDefs.maxInterval)
this.endCalendar.setSelectable(startSelectableDate,endSelectableDate,true);var endDate=this.endCalendar.validateDate(true);if(endDate===null||endDate.getTime()<=startDefDate.getTime())endDefDate=startDefDate.clone().addTime('day',this.rangeDefs.minInterval);else endDefDate=endDate.clone();this.endCalendar.setDefaultDate(endDefDate);}
else{if(areDatesEqual(this.lastData.endDate,date))return;this.lastData.endDate=(date===null?null:date.clone());var startDate=this.startCalendar.getCurrentDate();var endDate=date;var startDefDate=(startDate===null?this.rangeDefs.minDate.clone():startDate);if(endDate===null||endDate.getTime()<=startDefDate.getTime())endDefDate=startDefDate.clone().addTime('day',this.rangeDefs.minInterval);else endDefDate=endDate.clone();this.endCalendar.setDefaultDate(endDefDate);}
var days=(startDate instanceof Date&&endDate instanceof Date?Math.round((endDate.getTime()-startDate.getTime())/(60*60*24*1000))+1:null);if(this.listener!==null)this.listener.rangeChanged(days,startDate,endDate);}}
function NightsUpdater(item){this.nightspan=Xu(item);}
NightsUpdater.prototype.rangeChanged=function(days,startDate,endDate){this.nightspan.get().firstChild.nodeValue=(days===null?'N/A':days-1);}
function CategoriesHandler(path,activeCategory){this.div=Xu('menu');if(this.div===null)return;this.activeCategory=activeCategory;this.images=[path+'immagini/menu_icona_aperto.png',path+'immagini/menu_icona_chiuso.png'];this.totalImages=this.images.length;this.loadedImages=0;this.preloadImages();}
CategoriesHandler.prototype={preloadImages:function(){var func=function(e,source,type){source.getData('CH').imageLoaded();}
var img=null;for(var i=0;i<this.totalImages;++i){img=Xu('img',true);img.setData('CH',this).addEvent('onload',func).setVar('src',this.images[i]);}},imageLoaded:function(){++this.loadedImages;if(this.loadedImages===this.totalImages)this.prepare();},prepare:function(){this.applyMenuHandlers(Xu(this.div.getByTag('ul',0)));this.div.addClass('js');if(this.activeCategory!==null)this.selectCategory(this.activeCategory);},applyMenuHandlers:function(ul){var lis=new Xf(ul.childItem()).filterByTag('li').getXu();if(lis.length==0)return;var li=null;var ul=null;for(var i=0;i<lis.length;++i){li=lis[i];ul=new Xf(li.childItem()).filterByTag('ul').getXu(0);if(ul==null)continue;else{Xu(li.getByTag('a',0)).addClass('parent');this.applySubMenu(li);this.applyMenuHandlers(ul);}}},applySubMenu:function(li){var ul=new Xf(li.childItem()).filterByTag('ul').getXu(0);var linkFunc=function(e,source,type){return source.getData('CH').linkClicked(source);}
var subMenuFunc=function(e,source,type){source.getData('CH').menuButtonClicked(source);}
var link=Xu(li.getByTag('a',0)).setData('CH',this).addEvent('onclick',linkFunc);var menuLink=Xu('a',true).setData('CH',this).setHref(null).setClass('bottone').addEvent('onclick',subMenuFunc).insertBeforeItem(link).append(Xu('span',true).setClass('chiuso').append(Xu('text',true,'\u00A0')));ul.addClass('nascosto');},linkClicked:function(source){var span=Xu(Xu(Xu(source.parentItem()).getByClass('a','bottone',0)).getByTag('span',0));if(span.checkClass('aperto'))return true;Xu(span.parentItem()).fireEvent('onclick');return false;},menuButtonClicked:function(source){var span=Xu(source.getByTag('span',0));var ul=new Xf(Xu(source.parentItem()).childItem()).filterByTag('ul').getXu(0);if(span.checkClass('aperto')){ul.addClass('nascosto');span.setClass('chiuso');}
else{ul.removeClass('nascosto');span.setClass('aperto');}
source.get().blur();},selectCategory:function(catID){var cat=Xu('cat'+catID);if(cat===null)return;cat.setClass('selezionato');var toOpen=[];var menuLink=null;while(true){menuLink=Xu(Xu(cat.parentItem()).getByClass('a','bottone',0));if(menuLink!==null)toOpen.push(menuLink);cat=Xu(cat.parentItem(2));if(cat===null||cat.getTagName()!=='li')break;cat=Xu(cat.getByTag('a',1));}
for(var i=toOpen.length-1;i>=0;--i)toOpen[i].fireEvent('onclick');}}
function applyZoomOverLink(link,styles){link=Xu(link);if(link===null)return;var span=Xu('span',true).setClass('zoomOver').insertBeforeItem(link.childItem(0));if(!styles)return;span.setStyles(styles);}
function ScreenManager(){}
ScreenManager.prototype={getSize:function(){var width=0;var height=0;if(window.innerWidth){width=window.innerWidth;height=window.innerHeight;}
else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){width=document.documentElement.clientWidth;height=document.documentElement.clientHeight;}
else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){width=document.body.clientWidth;height=document.body.clientHeight;}
return{width:width,height:height}},getScroll:function(){var scrollX=0;var scrollY=0;if(window.pageYOffset){scrollX=window.pageXOffset;scrollY=window.pageYOffset;}
else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrollX=document.body.scrollLeft;scrollY=document.body.scrollTop;}
else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){scrollX=document.documentElement.scrollLeft;scrollY=document.documentElement.scrollTop;}
return{scrollX:scrollX,scrollY:scrollY}}}
function ImagePopupManager(link,loadingText,displayText){link=Xu(link);if(link===null)return;this.upOffset=24;this.leftOffset=1;this.downOffset=40;this.rightOffset=1;this.link=link;this.loadingText=(loadingText?loadingText:'Loading...');this.displayText=(displayText?displayText:null);this.imagePath=null;this.description=null;this.image=null;this.working=false;this.subLinks=null;this.pos=null;this.updateLink();}
ImagePopupManager.prototype={updateLink:function(){var func=function(e,source,type){var main=source.getData('main');if(main.isWorking())return false;source.getData('main').loadImage();return false;};this.link.setTarget('_self').setData('main',this).addEvent('onclick',func);},setSubLinks:function(subLinks){this.subLinks=subLinks;},isWorking:function(){return this.working;},applyFullPanel:function(){var docSize=Xu().getSize();var func=function(e,source,type){source.getData('main').removeDisplay();return false;}
var a=Xu('a',true).setData('main',this).setHref(null).setID('FullPanel').append(Xu('text',true,'')).setStyles({position:'absolute',top:'0px',left:'0px',width:docSize.width+'px',height:docSize.height+'px'}).addEvent('onclick',func).appendTo(Xu().getBody());},loadImage:function(forceImagePath,forceDescription){if(this.working)return;this.image=null;this.imagePath=(arguments.length<1?this.link.getHref():forceImagePath);this.description=(arguments.length<2?this.link.getTitle():forceDescription);this.working=true;this.removeDisplay();this.displayLoading();var selfObj=this;var func=function(){selfObj.imageLoaded();}
this.image=new Image();this.image.onload=func;this.image.src=this.imagePath;},imageLoaded:function(){this.displayImage();},displayLoading:function(){this.removeDisplay();this.applyFullPanel();Xu('div',true).setID('ImagePopupManagerDiv').append(Xu('p',true).append(Xu('text',true,this.loadingText)).get()).appendTo(Xu().getBody());this.centerDisplay();},displayImage:function(){this.removeDisplay();this.applyFullPanel();var image=Xu('img',true).setVar('src',this.imagePath);var func=function(e,source,type){source.getData('main').removeDisplay();}
var closeLink=Xu('a',true).setClass('close-link').setHref(null).setData('main',this).addEvent('onclick',func).append(Xu('text',true,''));var display=Xu('div',true).setID('ImagePopupManagerDiv').append(closeLink).append(image).appendTo(Xu().getBody());if(this.subLinks!==null){display.setClass('with-arrows');var leftFunc=function(e,source,type){source.getData('main').moveLeft();}
var rightFunc=function(e,source,type){source.getData('main').moveRight();}
display.append(Xu('a',true).setData('main',this).append(Xu('text',true,'')).setClass('sinistra').setHref(null).addEvent('onclick',leftFunc)).append(Xu('a',true).setData('main',this).append(Xu('text',true,'')).setClass('destra').setHref(null).addEvent('onclick',rightFunc));this.pos=null;var subLinksLength=this.subLinks.length;for(var i=0;i<subLinksLength;++i){if(this.subLinks[i].getHref()!==image.getSrc())continue;this.pos=i;break;}}
if(this.description){display.append(Xu('p',true).append(Xu('text',true,this.description)));}
this.working=false;this.centerDisplay();},moveLeft:function(){var pos=(this.pos===0?this.subLinks.length-1:this.pos-1);this.loadImage(this.subLinks[pos].getHref(),this.subLinks[pos].getTitle());},moveRight:function(){var pos=(this.pos===this.subLinks.length-1?0:this.pos+1);this.loadImage(this.subLinks[pos].getHref(),this.subLinks[pos].getTitle());},centerDisplay:function(){if(Xu('ImagePopupManagerDiv')===null)return;var display=Xu('ImagePopupManagerDiv');var SM=new ScreenManager();var size=SM.getSize();var scroll=SM.getScroll();var divWidth=parseInt(display.getStyle('width'));var divHeight=parseInt(display.getStyle('height'));if(!divWidth)divWidth=(this.image?this.image.width+this.leftOffset+this.rightOffset:0);if(!divHeight)divHeight=(this.image?this.image.height+this.upOffset+this.downOffset:0);if(divWidth)display.setStyle('width',divWidth+'px');var posX=scroll.scrollX+Math.round(size.width/2-(divWidth/2));if(posX<0)posX=0;var posY=scroll.scrollY+Math.round(size.height/2-(divHeight/2));if(posY<0)posY=0;display.setStyles({'zIndex':200,'left':posX+'px','top':posY+'px'});},removeDisplay:function(){if(Xu('ImagePopupManagerDiv')!==null){Xu('ImagePopupManagerDiv').removeSelf();Xu('FullPanel').removeSelf();}}}
function applyPictureZoomByClass(className){var links=new Xf(Xu().getByClass('a',className)).getXu();if(!links)return;for(var i=0;i<links.length;++i)new ImagePopupManager(links[i]);}
function applyBlankTargetLinks(){var links=Xu().getByTag('a');if(!links)return;links=new Xf(links).filterByVar('rel','external').getXu();for(var i=0;i<links.length;++i)links[i].setTarget('_blank');}
function applyLinksToOfferPreviews(){var list=Xu('last-minute');if(list===null)return;var previews=new Xf(list.getByTag('li')).getXu();var preview=null;var titleLink=null;var img=null;for(var i=0;i<previews.length;++i){preview=previews[i];titleLink=Xu(preview.getByTag('a',0)).addClass('entra-link');img=Xu(preview.getByTag('img',0));applyZoomOverLink(Xu('a',true).setClass('immagine-link').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(img).insertAfterItem(titleLink));}}
function applyLinksToHomeStructurePreviews(){var list=Xu('anteprime');if(list===null)return;var previews=new Xf(list.getByTag('li')).getXu();var preview=null;var titleLink=null;var img=null;for(var i=0;i<previews.length;++i){preview=previews[i];titleLink=Xu(preview.getByTag('a',0)).addClass('entra-link');img=Xu(preview.getByTag('img',0));applyZoomOverLink(Xu('a',true).setClass('immagine-link').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(img).insertAfterItem(titleLink));}}
function applyLinksToHighlight(){var parent=Xu('in-evidenza');if(parent===null)return;var item=Xu(parent.getByClass('div','immagine',0));if(item!==null)item=Xu(item.getByTag('a',0));else item=Xu(parent.getByClass('a','immagine-link',0));if(item===null)return;applyZoomOverLink(item);}
function StructureImagesManager(){this.pics=[];this.IPMs=[];this.processDescImages();this.processOtherImages();this.processImagesOnly();if(this.pics.length>1)this.applyMultipleImages();}
StructureImagesManager.prototype={processDescImages:function(){var tmps=new Xf(Xu('Pagina').getByClass('div','descrizione')).getXu();if(tmps.length===0)return;var link=null;var links=null;var img=null;var styles=null;var margin=null;for(var desc=0;desc<tmps.length;++desc){links=Xu(tmps[desc].getByClass('ul','immagini',0));if(links===null)continue;links=new Xf(links.getByTag('a')).getXu();for(link=0;link<links.length;++link){this.pics.push(links[link]);img=links[link].getByTag('img',0);styles={width:img.width+'px',height:img.height+'px'}
if(img.width<300&&typeof iebugs==='undefined'){margin=Math.round((300-img.width)/2)+1;styles.marginLeft=margin+'px';styles.marginRight=(300-margin-img.width)+'px';}
this.IPMs.push(new ImagePopupManager(links[link]));applyZoomOverLink(links[link],styles);}}},processImagesOnly:function(){var tmps=new Xf(Xu('Pagina').getByClass('ul','soloimmagini')).getXu();if(tmps.length===0)return;var link=null;var links=null;var img=null;var styles=null;var margin=null;for(var desc=0;desc<tmps.length;++desc){links=new Xf(tmps[desc].getByTag('a')).getXu();for(link=0;link<links.length;++link){this.pics.push(links[link]);img=links[link].getByTag('img',0);styles={width:img.width+'px',height:img.height+'px'}
if(img.width<300){margin=Math.round((300-img.width)/2)+1;styles.marginLeft=margin+'px';styles.marginRight=(300-margin-img.width)+'px';}
this.IPMs.push(new ImagePopupManager(links[link]));applyZoomOverLink(links[link],styles);}}},processOtherImages:function(){var main=Xu('altre-immagini');if(main===null)return;var links=new Xf(main.getByTag('a')).getXu();var linkLength=links.length;for(var i=0;i<linkLength;++i){this.pics.push(links[i]);this.IPMs.push(new ImagePopupManager(links[i]));applyZoomOverLink(links[i]);}},applyMultipleImages:function(){var IPMLength=this.IPMs.length;for(var i=0;i<IPMLength;++i)this.IPMs[i].setSubLinks(this.pics);}}
function applyPlanZoomOver(){var plan=Xu('piantina-link');if(plan===null)return;applyZoomOverLink(plan);}
function applyOffersLink(){var offers=Xu('offerte');if(offers===null)return;offers=new Xf(offers.getByTag('a')).getXu();var func=function(){var newHref=location.href.split('#');location.href=newHref[0]+'#richiesta-disponibilita';var element=null;var elements=Xu('richiesta-disponibilita').getByTag('input');for(var i=0;i<elements.length;++i){element=Xu(elements[i]);if(element.getType()==='hidden'||element.getStyle('display')==='none')continue;element.get().focus();break;}
return false;}
for(var i=0;i<offers.length;++i)offers[i].addEvent('onclick',func);}
function EnlargedMapDisplayer(item){this.item=Xu(item);if(this.item===null)return;this.longitude=null;this.latitude=null;this.zoom=null;this.api_key=null;this.prepare();}
EnlargedMapDisplayer.prototype={prepare:function(){var link=Xu(this.item.getByClass('a','MapLink',0));var img=Xu(link.getByTag('img',0))
var imgSrc=img.getSrc();var tmp=imgSrc.match(/markers=([-.0-9]+),([-.0-9]+)/);this.longitude=tmp[2]-0;this.latitude=tmp[1]-0;this.zoom=imgSrc.match(/zoom=([0-9]+)/)[1]-0;this.title=link.getTitle();var func=function(e,source,type){source.getData('EMD').mapClicked();return false;}
link.setData('EMD',this).addEvent('onclick',func);applyZoomOverLink(link);},mapClicked:function(){this.applyFullPanel();var func=function(e,source,type){source.getData('EMD').removeDisplay();}
Xu('div',true).setID('contenitore-contenitore-mappa').append(Xu('a',true).setData('EMD',this).setClass('close-link').setHref(null).append(Xu('text',true,'')).addEvent('onclick',func)).append(Xu('div',true).setID('contenitore-mappa')).appendTo(Xu().getBody());this.centerDisplay();this.prepareMap()},applyFullPanel:function(){var docSize=Xu().getSize();var func=function(e,source,type){source.getData('main').removeDisplay();return false;}
var a=Xu('a',true).setData('main',this).setHref(null).setID('FullPanel').append(Xu('text',true,'')).setStyles({position:'absolute',top:'0px',left:'0px',width:docSize.width+'px',height:docSize.height+'px'}).addEvent('onclick',func).appendTo(Xu().getBody());},centerDisplay:function(){var display=Xu('contenitore-contenitore-mappa');if(display===null)return;var SM=new ScreenManager();var size=SM.getSize();var scroll=SM.getScroll();var divWidth=parseInt(display.getStyle('width'));var divHeight=parseInt(display.getStyle('height'));if(!divWidth)divWidth=640;if(!divHeight)divHeight=504;if(divWidth)display.setStyle('width',divWidth+'px');var posX=scroll.scrollX+Math.round(size.width/2-divWidth/2);if(posX<0)posX=0;var posY=scroll.scrollY+Math.round(size.height/2-divHeight/2);if(posY<0)posY=0;display.setStyles({'zIndex':200,'left':posX+'px','top':posY+'px'});},prepareMap:function(){CurrentMapActive=this;google.load('maps','2',{language:this.language,callback:displayEnlargedMap});},displayMap:function(){var map=new GMap2(document.getElementById('contenitore-mappa'));var coords=new GLatLng(this.latitude,this.longitude);map.setCenter(coords,this.zoom);map.addOverlay(new GMarker(coords,{title:this.title,clickable:false}));map.addControl(new GSmallMapControl());map.addControl(new GMapTypeControl());},removeDisplay:function(){if(Xu('contenitore-contenitore-mappa')!==null){Xu('contenitore-contenitore-mappa').removeSelf();Xu('FullPanel').removeSelf();GUnload();}}}
function displayEnlargedMap(){CurrentMapActive.displayMap();}
function applyMapEnlarger(){var map=Xu('mappa');if(map!==null){applyZoomOverLink(Xu(map.getByClass('a','MapLink',0)));new EnlargedMapDisplayer(map);}}
function applyFormErrorHighlighter(parent){parent=Xu(parent);if(parent===null)return;var tmp=new Xf(parent.getByTag('label')).getXu();var labels={};for(var i=0;i<tmp.length;++i)labels[tmp[i].getVar('htmlFor')]=tmp[i];var messageDivs={errore:Xu('Errori'),avvertimento:Xu('Avvertimenti'),messaggio:Xu('Messaggi')}
var div=null;var items=null;for(var type in messageDivs){div=messageDivs[type];if(div===null)continue;items=new Xf(div.getByTag('a')).getXu();if(items===null)continue;for(var i=0;i<items.length;++i){if(items[i].checkClass('inlink'))continue;labels[items[i].getHref().split('#')[1]].addClass(type);}}}
function applyLinksToStructureList(){var list=Xu('lista-strutture');if(list===null)return;var provinces=new Xf(list.getByTag('ul')).getXu();var previews=null;var preview=null;var titleLink=null;var img=null;for(var i=0;i<provinces.length;++i){previews=new Xf(provinces[i].getByTag('li')).getXu()
for(var x=0;x<previews.length;++x){preview=previews[x];titleLink=Xu(preview.getByTag('a',0)).addClass('entra-link');img=Xu(preview.getByTag('img',0));applyZoomOverLink(Xu('a',true).setClass('immagine-link').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(img).insertAfterItem(titleLink));}}}
function applyLinksToMonuments(){var list=Xu('monumenti');if(list===null)return;var links=new Xf(list.getByClass('a','img')).getXu();for(var i=0;i<links.length;++i){new ImagePopupManager(links[i]);applyZoomOverLink(links[i]);}}
function BigMapDisplayer(path){this.map=Xu('mappa');if(this.map===null)return;this.language=Xu().getBody().getClass();this.path=path;this.offsetPercent=5;this.defaultZoom=14;this.markers=null;this.highlighted=null;this.hlXi=null;this.structures=[];this.borders={minLat:1000,maxLat:-1000,minLon:1000,maxLon:-1000,offsetLat:null,offsetLon:null};this.prepare();}
BigMapDisplayer.prototype={readStructureData:function(){var coords={};var latitude=null;var longitude=null;var tmps=Xu(this.map.getByTag('img',0)).getSrc().match(/markers=(.+)&?/)[1].split('|');var match=null;for(var i=0;i<tmps.length;++i){match=tmps[i].match(/([0-9.-]+),([0-9.-]+),(red|green|blue)([a-z])/);latitude=match[1]-0;longitude=match[2]-0;coords[match[4]]=[latitude,longitude];if(longitude<this.borders.minLon)this.borders.minLon=longitude;if(longitude>this.borders.maxLon)this.borders.maxLon=longitude;if(latitude<this.borders.minLat)this.borders.minLat=latitude;if(latitude>this.borders.maxLat)this.borders.maxLat=latitude;}
this.borders.offsetLat=(this.borders.maxLat-this.borders.minLat)*(this.offsetPercent/100);this.borders.offsetLon=(this.borders.maxLon-this.borders.minLon)*(this.offsetPercent/100);var lis=new Xf(this.map.getByTag('li')).getXu();var a=null;var letter=null;for(i=0;i<lis.length;++i){a=Xu(lis[i].getByTag('a',0));letter=a.getByTag('span',0).firstChild.nodeValue;this.structures.push({name:a.childItem(1).nodeValue,letter:letter.toUpperCase(),url:a.getHref(),latitude:coords[letter][0],longitude:coords[letter][1]});}},prepare:function(){var func=function(e,source,type){source.getData('EMD').mapClicked();return false;}
applyZoomOverLink(Xu(this.map.getByTag('a',0)).setData('EMD',this).addEvent('onclick',func));},mapClicked:function(){this.applyFullPanel();var func=function(e,source,type){source.getData('EMD').removeDisplay();}
Xu('div',true).setID('contenitore-contenitore-mappa').append(Xu('a',true).setData('EMD',this).setClass('close-link').setHref(null).append(Xu('text',true,'')).addEvent('onclick',func)).append(Xu('div',true).setID('contenitore-mappa')).appendTo(Xu().getBody());this.centerDisplay();this.readStructureData();this.prepareMap();},applyFullPanel:function(){var docSize=Xu().getSize();var func=function(e,source,type){source.getData('main').removeDisplay();return false;}
var a=Xu('a',true).setData('main',this).setHref(null).setID('FullPanel').append(Xu('text',true,'')).setStyles({position:'absolute',top:'0px',left:'0px',width:docSize.width+'px',height:docSize.height+'px'}).addEvent('onclick',func).appendTo(Xu().getBody());},centerDisplay:function(){var display=Xu('contenitore-contenitore-mappa');if(display===null)return;var SM=new ScreenManager();var size=SM.getSize();var scroll=SM.getScroll();var divWidth=parseInt(display.getStyle('width'));var divHeight=parseInt(display.getStyle('height'));if(!divWidth)divWidth=640;if(!divHeight)divHeight=504;if(divWidth)display.setStyle('width',divWidth+'px');var posX=scroll.scrollX+Math.round(size.width/2-divWidth/2);if(posX<0)posX=0;var posY=scroll.scrollY+Math.round(size.height/2-divHeight/2);if(posY<0)posY=0;display.setStyles({'zIndex':200,'left':posX+'px','top':posY+'px'});},prepareMap:function(){CurrentMapActive=this;google.load('maps','2',{language:this.language,callback:displayEnlargedMap});},createCustomMarker:function(def){var icon=new GIcon();icon.image=this.path+'immagini/marker'+def.letter+'.png';icon.shadow=this.path+'immagini/marker_ombra.png';icon.iconSize=new GSize(20,34);icon.shadowSize=new GSize(37,34);icon.iconAnchor=new GPoint(9,34);icon.infoWindowAnchor=new GPoint(9,2);icon.infoShadowAnchor=new GPoint(18,25);var coords=new GLatLng(def.latitude,def.longitude);var marker=new GMarker(coords,{title:def.name,clickable:true,icon:icon});return marker;},displayMap:function(){var map=new GMap2(document.getElementById('contenitore-mappa'));if(this.structures.length===1){map.setCenter(new GLatLng(this.structures[0].latitude,this.structures[0].longitude),this.defaultZoom);map.addOverlay(this.createCustomMarker(this.structures[0]));}
else{var bounds=new GLatLngBounds;bounds.extend(new GLatLng(this.borders.maxLat+this.borders.offsetLat,this.borders.maxLon+this.borders.offsetLon));bounds.extend(new GLatLng(this.borders.minLat-this.borders.offsetLat,this.borders.minLon-this.borders.offsetLon));map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));for(var i=0;i<this.structures.length;++i)map.addOverlay(this.createCustomMarker(this.structures[i]));}
GEvent.bind(map,'click',this,this.pointClicked);map.addControl(new GSmallMapControl());map.addControl(new GMapTypeControl());},pointClicked:function(point){if(arguments.length===2)return;var title=point.getTitle();for(var i=0;i<this.structures.length;++i){if(this.structures[i].name===title)location.href=this.structures[i].url;}},removeDisplay:function(){if(Xu('contenitore-contenitore-mappa')!==null){Xu('contenitore-contenitore-mappa').removeSelf();Xu('FullPanel').removeSelf();GUnload();}}}
function applyCommentsHider(){var item=Xu('guestbook');if(item===null)return;var comments=Xu(item.getByClass('div','rich',0)).addClass('nascosto');var func=function(e,source,type){source.getData('comments').removeClass('nascosto');source.removeSelf();}
Xu('a',true).setHref(null).setID('commentsLink').append(Xu('text',true,languagepack.mostraCommenti)).setData('comments',comments).addEvent('onclick',func).appendTo(item);}
function pageEnancher(page,param1){var path='../';prepareLanguagePack();switch(page){case'home':applyLinksToHighlight();applyLinksToHomeStructurePreviews();new BigMapDisplayer(path);break;case'strutture':path+='../';applyFormErrorHighlighter('richiesta-disponibilita');new StructureImagesManager();applyPlanZoomOver();applyOffersLink();applyMapEnlarger();var minDate=new Date().getToday().addTime('day',1);var maxDate=null;if(param1){maxDate=param1.split('-');maxDate=new Date(maxDate[0]-0,maxDate[1]-1,maxDate[2]-0);}
var NU=new NightsUpdater('rd-notti');var NCP=new CalendarPairManager(new CalendarManager('rd-data-arrivo'),new CalendarManager('rd-data-partenza'),NU,{minDate:minDate.clone(),maxDate:(maxDate===null?null:maxDate.clone()),minInterval:1,maxInterval:null});applyCommentsHider();break;case'bb_appartamenti':applyLinksToStructureList();break;case'guida-di-palermo':applyLinksToMonuments();}
applyLinksToOfferPreviews();applyBlankTargetLinks();}