
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 LocalTimeUpdater(){if(Xu('LocalTime')===null)return;this.time=null;this.current=null;this.prepare();}
LocalTimeUpdater.prototype={prepare:function(){this.time=Xu('LocalTime').get().firstChild;var tmp=this.time.nodeValue.match(/([0-9]+):([0-9]+)/);this.current=new Date();this.current.setHours(tmp[1]-0);this.current.setMinutes(tmp[2]-0);new Xi(this,'interval',this.updateTime,60000).start();},updateTime:function(){this.current.addTime('minutes',1);var time='';var tmp=this.current.getHours();time+=(tmp<10?'0'+tmp:tmp)+':';tmp=this.current.getMinutes();time+=(tmp<10?'0'+tmp:tmp);this.time.nodeValue=time;}}
function XHRComm(listener,scriptUrl,listenerFunc,rawData){this.listener=listener;this.scriptUrl=scriptUrl;this.listenerFunc=(listenerFunc?listenerFunc:'XHRresponse');this.rawData=(rawData===true);this.XHR=null;}
XHRComm.prototype={sendData:function(mode,values){if(typeof(XMLHttpRequest)==='function'||typeof(XMLHttpRequest)==='object')this.XHR=new XMLHttpRequest();else if(window.ActiveXObject)this.XHR=new ActiveXObject('Microsoft.XMLHTTP');var selfObj=this;this.XHR.onreadystatechange=function(){selfObj.processResponse();};var parameters='';for(var i=0;i<values.length;++i)parameters+=(i>0?'&':'')+values[i][0]+'='+encodeURIComponent(values[i][1]);if(mode=='post'){this.XHR.open('post',this.scriptUrl,true);this.XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');this.XHR.setRequestHeader('Content-length',parameters.length);this.XHR.send(parameters);}
else{this.XHR.open('get',this.scriptUrl+'?'+parameters,true);this.XHR.send(null);}},processResponse:function(){if(this.XHR.readyState!=4)return;if(this.XHR.status!=200){alert('Si è verificato un errore: '+this.XHR.status);return false;}
if(this.rawData){if(this.listener!==null)this.listener[this.listenerFunc](this.XHR);return;}
var results={'status':'ok','data':[],'moredata':false}
do{var response=this.XHR.responseText;if(response=='[REQUEST_ERROR]'){results.status='error';break;}
if(response=='[NO_RESULTS]')break;var entry=null;var resObj=null;var label=null;var value=null;response=response.split('\n');var labelRE=new RegExp('^\\[([-_a-zA-Z0-9]+)\\](.*)');for(var i=0;i<response.length;++i){entry=response[i];if(entry==='')continue;entry=entry.match(labelRE);if(!entry)continue;label=entry[1];value=entry[2];if(value==='_NULL_')value=null;switch(label){case'ITEM_START':resObj={};break;case'ITEM_END':results.data.push(resObj);resObj=null;break;case'MORE_RESULTS':results.moredata=true;break;default:resObj[label]=value;}}}while(false);if(this.listener!==null)this.listener[this.listenerFunc](results);}}
function ImageControls(item){var main=Xu(item);if(main===null)return;var smallpics=Xu(main.getByClass('div','foto-piccole',0));if(smallpics===null)return;this.pics=new Xf(smallpics.getByTag('a')).getXu();if(!this.pics)return;this.displayPics=3;this.bigPic=Xu('foto-grande');var IPM=this.bigPic.getData('main');if(IPM!==null)IPM.setSubLinks(this.pics);this.loadingImage=null;var enlargeFunc=function(e,source,type){source.getData('ImgC').displayEnlarged(source);return false;}
for(var i=0;i<this.pics.length;++i){this.pics[i].setData('ImgC',this).setData('medium_link',this.pics[i].getHref().replace('grande','media')).addEvent('onclick',enlargeFunc);applyZoomOverLink(this.pics[i]);}
var leftFunc=function(e,source,type){source.getData('ImgC').move(-1);}
var rightFunc=function(e,source,type){source.getData('ImgC').move(1);}
this.leftControl=Xu('a',true).setClass('sinistra').setHref(null).setData('ImgC',this).append(Xu('text',true,'')).addEvent('onclick',leftFunc);this.rightControl=Xu('a',true).setClass('destra').setHref(null).setData('ImgC',this).append(Xu('text',true,'')).addEvent('onclick',rightFunc);Xu('div',true).setClass('controlli').append(this.leftControl).append(this.rightControl).appendTo(smallpics);this.pos=null;main.setClass('js');this.setPos(0);}
ImageControls.prototype={setPos:function(pos){if(this.pos===pos)return;this.pos=pos;for(var i=0;i<this.pics.length;++i){if(i>=this.pos&&i<this.pos+this.displayPics)this.pics[i].removeClass('nascosto');else this.pics[i].addClass('nascosto');}
if(typeof document.body.style.maxHeight==='undefined'){if(this.pos===0||this.pics.length<=this.displayPics)this.leftControl.setClass('sinistra-disabilitato');else this.leftControl.setClass('sinistra');if(this.pos===this.pics.length-this.displayPics||this.pics.length<=this.displayPics)this.rightControl.setClass('destra-disabilitato');else this.rightControl.setClass('destra');return;}
if(this.pos===0||this.pics.length<=this.displayPics)this.leftControl.addClass('disabilitato');else this.leftControl.removeClass('disabilitato');if(this.pos===this.pics.length-this.displayPics||this.pics.length<=this.displayPics)this.rightControl.addClass('disabilitato');else this.rightControl.removeClass('disabilitato');},move:function(movement){var newPos=this.pos+movement;if(newPos<0||newPos>this.pics.length-3)return;this.setPos(newPos);},displayEnlarged:function(target){var img=Xu(target.getByTag('img',0));Xu(this.bigPic.setTitle(target.getTitle()).setHref(target.getHref()).getByTag('img',0)).removeSelf();var func=function(e,source,type){source.getData('ImgC').imageLoaded(source);}
this.loadingImage=Xu('img',true);this.loadingImage.setData('ImgC',this).addEvent('onload',func).setSrc(target.getData('medium_link')).setAlt(img.getAlt());},imageLoaded:function(source){if(source!==this.loadingImage)return;this.loadingImage=null;source.appendTo(this.bigPic);}}
function InfoTabbifier(){var info=Xu('informazioni')
if(info===null)return;this.elements=[{id:'in-breve',type:'table',obj:null,tab:null,active:false},{id:'caratteristiche',type:'div',obj:null,tab:null,active:false}];var tabs=Xu('ul',true).setClass('tabs')
var func=function(e,source,type){source.getData('ITab').setSelected(source.getData('elm'));}
var element=null;var item=null;var label=null;var tabsAttached=false;var firstElement=null;for(var i=0;i<this.elements.length;++i){element=this.elements[i];item=Xu(element.id);if(item===null)continue;element.obj=item;if(element.type==='table')label=item.getByTag('caption',0).firstChild.nodeValue;else if(element.type==='div')label=item.getByClass('div','titolo',0).firstChild.nodeValue;element.tab=Xu('li',true).append(Xu('a',true).setData('ITab',this).setData('elm',element.id).setHref(null).addEvent('onclick',func).append(Xu('span',true).append(Xu('text',true,label)))).appendTo(tabs);if(!tabsAttached){tabsAttached=true;firstElement=element;tabs.insertBeforeItem(item);}}
if(firstElement===null)return;this.setSelected(firstElement.id);info.setClass('js');}
InfoTabbifier.prototype={setSelected:function(id){var element=null;for(var i=0;i<this.elements.length;++i){element=this.elements[i];if(element.obj===null)continue;if(element.id===id){element.obj.removeClass('nascosto');element.tab.addClass('selezionato');}
else{element.obj.addClass('nascosto');element.tab.removeClass('selezionato');}}}}
function SectionTabbifier(){var panel=Xu('pannello');if(panel===null)return;var callCenter=Xu('call-center');if(callCenter===null)return;var sections=new Xf(panel.getByClass('div','sezione')).getXu();if(sections.length===0)return;var buttonPanel=Xu('div',true).setID('bottoni-sezioni').insertBeforeItem(callCenter);var func=function(e,source,type){source=Xu(source);source.getData('STab').setSelected(source.getData('elm'));}
this.elements=[];var section=null;var element=null;var button=null;for(var i=0;i<sections.length;++i){section=sections[i];element={id:section.getID(),obj:section,title:section.getByTag('h3',0).firstChild.nodeValue,button:null}
button=Xu('a',true).setClass(element.id).setHref(null).setData('STab',this).setData('elm',element.id).addEvent('onclick',func).append(Xu('span',true).append(Xu('text',true,element.title))).appendTo(buttonPanel);element.button=button;this.elements.push(element);}
var fragment=location.href.match(/#([^?]+)/);var selected=null;if(fragment){for(var i=0;i<this.elements.length;++i){if(this.elements[i].id!==fragment[1])continue;selected=fragment[1];break;}}
else selected=this.elements[0].id;this.setSelected(selected);if(fragment)location.href='#'+fragment[1];panel.setClass('js');}
SectionTabbifier.prototype={setSelected:function(id){var element=null;var display=null;var className=null;for(var i=0;i<this.elements.length;++i){element=this.elements[i];if(element.obj===null)continue;if(element.id===id){element.obj.removeClass('nascosto');element.button.addClass('selezionato');}
else{element.obj.addClass('nascosto');element.button.removeClass('selezionato');}}}}
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.loaded=false;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=(forceImagePath?forceImagePath:this.link.getHref());this.description=(forceDescription?forceDescription:this.link.getTitle());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.loaded=true;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;for(var i=0;i<this.subLinks.length;++i){if(this.subLinks[i].getHref()===image.getSrc()){this.pos=i;break;}}}
if(this.description){display.append(Xu('p',true).append(Xu('text',true,this.description)));}
this.link.setHref(this.imagePath);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 applyZoomOverLink(link){link=Xu(link);if(link===null)return;Xu('span',true).setClass('zoomOver').insertBeforeItem(link.childItem(0));}
function applyPictureZoomByClass(className){var links=new Xf(Xu().getByClass('a',className)).getXu();if(!links)return;for(var i=0;i<links.length;++i){applyZoomOverLink(links[i]);new ImagePopupManager(links[i]);}}
function applyFocusTooltip(item,text){item=Xu(item);if(item===null)return;var onFocus=function(e,source,type){source=Xu(source);var pos=source.getAbsolutePosition();var tt=Xu('span',true).setClass('FocusTooltip').append(Xu('text',true,source.getData('TTText'))).setStyles({'left':pos.x+'px','top':(pos.y-20)+'px','position':'absolute'}).appendTo(Xu().getBody());source.setData('TT',tt);}
var onBlur=function(e,source,type){source=Xu(source);if(source.getData('TT')!==null)source.getData('TT').removeSelf();}
item.setData('TTText',text).addEvent('onfocus',onFocus).addEvent('onblur',onBlur);}
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.dayItem.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 SimpleNightsUpdater(){this.nights=Xu('rd-notti');}
SimpleNightsUpdater.prototype={rangeChanged:function(days,startDate,endDate){var nights=(days===null?null:days-1);this.nights.get().firstChild.nodeValue=(nights===null?'N/A':nights);}}
function CalculateCostFormHandler(path){var onSubmitFunc=function(e,source,type){return false;}
Xu('calcola-prezzo-form').addEvent('onsubmit',onSubmitFunc);Xu(Xu(Xu('calcola-prezzo').getByTag('button',0)).parentItem()).addClass('nascosto');this.path=path;this.table=Xu('calcola-prezzo');this.availability=Xu(this.table.getByClass('td','richiedi-disponibilita',0));this.apartmentID=Xu('cp-appartamento').getValue()-0;this.beds=Xu('cp-posti-letto').get().firstChild.nodeValue;this.adults=Xu('cp-numero-adulti');this.teens=Xu('cp-numero-ragazzi');this.children=Xu('cp-numero-bambini');this.nightsRow=Xu(Xu('calcola-prezzo').getByClass('tr','notti',0));this.nightsValue=Xu(Xu(this.nightsRow.getByTag('td',0)).getByTag('span',0));this.nights=null;this.cost=Xu('prezzo-calcolato');this.keyupTimer=null;this.hlXi=null;this.lastData={adults:'unset',teens:'unset',children:'unset',startDate:'unset',endDate:'unset'}
var requestFunc=function(e,source,type){source.getData('CCFH').requestAvailability();}
var link=Xu(this.availability.getByTag('a',0)).setData('CCFH',this).addEvent('onclick',requestFunc);var onchangeFunc=function(e,source,type){source.getData('CCFH').validate();}
var onkeyupFunc=function(e,source,type){source.getData('CCFH').keyupEvent();}
this.adults.setData('CCFH',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);this.teens.setData('CCFH',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);this.children.setData('CCFH',this).addEvent('onkeyup',onkeyupFunc).addEvent('onchange',onchangeFunc);}
CalculateCostFormHandler.prototype={rangeChanged:function(days,startDate,endDate){var nights=(days===null?null:days-1);this.nights=nights;if(nights===null)nights='N/A';if(this.nightsValue.get().firstChild.nodeValue!==nights)this.nightsValue.removeAll().append(new Xu('text',true,nights));if(nights==='N/A')this.nightsRow.addClass('invisibile');else this.nightsRow.removeClass('invisibile');this.validate(startDate,endDate);},keyupEvent:function(){if(this.keyupTimer!==null)this.keyupTimer.abort();this.keyupTimer=new Xi(this,'timeout',this.validate,1000).start();},validate:function(startDate,endDate){if(this.keyupTimer!==null){this.keyupTimer.abort();this.keyuptimer=null;}
var success=true;var different=false;var adults=this.adults.getValue().replace(' ','');if(adults===''){adults=null;success=false;}
else adults-=0;if(adults!==this.lastData.adults){this.lastData.adults=adults;different=true;}
var teens=this.teens.getValue().replace(' ','');if(teens==='')teens=0;else teens-=0;if(teens!==this.lastData.teens){this.lastData.teens=teens;different=true;}
var children=this.children.getValue().replace(' ','');if(children==='')children=0;else children-=0;if(children!==this.lastData.children){this.lastData.children=children;different=true;}
if(adults!==null&&teens!==null&&children!==null&&adults+teens+children>this.beds){this.adults.addClass('sum-error');this.teens.addClass('sum-error');this.children.addClass('sum-error');success=false;}
else{this.adults.removeClass('sum-error');this.teens.removeClass('sum-error');this.children.removeClass('sum-error');}
if(this.nights===null)success=false;if(arguments.length>0&&startDate!==null){if(this.lastData.startDate==='unset'||this.lastData.startDate===null||this.lastData.startDate.getTime()!==startDate.getDate()){this.lastData.startDate=startDate.clone();different=true}
if(arguments.length>1&&endDate!==null){if(this.lastData.endDate==='unset'||this.lastData.endDate===null||this.lastData.endDate.getTime()!==endDate.getDate()){this.lastData.endDate=endDate.clone();different=true}}}
if(success){if(different){var xhr=new XHRComm(this,this.path+'xhrcostcalculator.php','costResponse');xhr.sendData('post',[['id',this.apartmentID],['adults',this.lastData.adults+this.lastData.teens],['children',this.lastData.children],['arrival_day',this.lastData.startDate.getDate()],['arrival_month',this.lastData.startDate.getMonth()+1],['arrival_year',this.lastData.startDate.getFullYear()],['departure_day',this.lastData.endDate.getDate()],['departure_month',this.lastData.endDate.getMonth()+1],['departure_year',this.lastData.endDate.getFullYear()]]);}}
else{this.cost.removeAll();this.cost.append(Xu('text',true,'N/A'));this.availability.addClass('invisibile');}},removeHighlight:function(){this.table.removeClass('highlight');this.hlXi=null;},costResponse:function(response){if(this.hlXi!==null)this.hlXi.abort();this.table.addClass('highlight');this.hlXi=new Xi(this,'timeout',this.removeHighlight,1000).start();this.cost.removeAll();if(response.status==='error'){this.cost.append(Xu('text',true,'N/A'));this.availability.addClass('invisibile');return false;}
if(response.data[0]['cost']!==response.data[0]['prediscountcost']){this.cost.append(Xu('del',true).append(Xu('text',true,'€ '+response.data[0]['prediscountcost']))).append(Xu('text',true,' € '+response.data[0]['cost']+' ')).append(Xu('span',true).addClass('discountLabel').append(Xu('text',true,languagepack.discountLabel)));}
else this.cost.append(Xu('text',true,'€ '+response.data[0]['cost']));this.availability.removeClass('invisibile');},requestAvailability:function(){Xu('rd-numero-adulti').setValue(Xu('cp-numero-adulti').getValue());Xu('rd-numero-ragazzi').setValue(Xu('cp-numero-ragazzi').getValue());Xu('rd-numero-bambini').setValue(Xu('cp-numero-bambini').getValue());Xu('rd-data-arrivo_day').setValue(Xu('cp-data-arrivo_day').getValue());Xu('rd-data-arrivo_month').setValue(Xu('cp-data-arrivo_month').getValue());Xu('rd-data-arrivo_year').setValue(Xu('cp-data-arrivo_year').getValue());Xu('rd-data-partenza_day').setValue(Xu('cp-data-partenza_day').getValue());Xu('rd-data-partenza_month').setValue(Xu('cp-data-partenza_month').getValue());Xu('rd-data-partenza_year').setValue(Xu('cp-data-partenza_year').getValue());Xu('rd-numero-bambini').fireEvent('onkeyup');var button=Xu(Xu('bottoni-sezioni').getByClass('a','disponibilita',0));if(!button.checkClass('selezionato'))button.fireEvent('onclick');}}
function EnlargedMapDisplayer(language){if(Xu('mappa')===null)return;this.language=language;this.longitude=null;this.latitude=null;this.zoom=null;this.api_key=null;this.prepare();}
EnlargedMapDisplayer.prototype={prepare:function(){var link=Xu(Xu('mappa').getByTag('a',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=Xu().getByTag('h1',0).firstChild.nodeValue;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).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 BigMapDisplayer(language,path){var map=Xu('mappa');if(map===null)return;map.setClass('js');var lp=languagepack.map_icons;this.monuments={campidoglio:{title:lp.campidoglio,icon:'campidoglio.png',latitude:41.893698,longitude:12.481885},castel_santangelo:{title:lp.castel_santangelo,icon:'castel_santangelo.png',latitude:41.903012,longitude:12.466371},circo_massimo:{title:lp.circo_massimo,icon:'circo_massimo.png',latitude:41.884555,longitude:12.488075},colosseo:{title:lp.colosseo,icon:'colosseo.png',latitude:41.890106,longitude:12.493322},fontana_di_tervi:{title:lp.fontana_di_trevi,icon:'fontana_di_trevi.png',latitude:41.901031,longitude:12.483323},foro_romano:{title:lp.foro_romano,icon:'foro_romano.png',latitude:41.891576,longitude:12.484825},pantheon:{title:lp.pantheon,icon:'pantheon.png',latitude:41.899259,longitude:12.476757},piazza_del_popolo:{title:lp.piazza_del_popolo,icon:'piazza_del_popolo.png',latitude:41.910445,longitude:12.476435},piazza_di_spagna:{title:lp.piazza_di_spagna,icon:'piazza_di_spagna.png',latitude:41.905814,longitude:12.482293},piazza_navona:{title:lp.piazza_navona,icon:'piazza_navona.png',latitude:41.899434,longitude:12.472798},piazza_venezia:{title:lp.piazza_venezia,icon:'piazza_venezia.png',latitude:41.896,longitude:12.482207},piazza_venezia:{title:lp.piazza_venezia,icon:'piazza_venezia.png',latitude:41.895226,longitude:12.482743},piramide:{title:lp.piramide,icon:'piramide.png',latitude:41.877574,longitude:12.4821},quirinale:{title:lp.quirinale,icon:'quirinale.png',latitude:41.89957,longitude:12.486831},stazione_termini:{title:lp.stazione_termini,icon:'stazione_termini.png',latitude:41.9027,longitude:12.499405},trastevere:{title:lp.trastevere,icon:'trastevere.png',latitude:41.887503,longitude:12.465523},vaticano:{title:lp.vaticano,icon:'vaticano.png',latitude:41.902349,longitude:12.454773},villa_borghese:{title:lp.villa_borghese,icon:'villa_borghese.png',latitude:41.916713,longitude:12.481563}}
this.language=language;this.path=path;this.offsetPercent=5;this.defaultZoom=14;this.markers=null;this.borders={minLat:1000,maxLat:-1000,minLon:1000,maxLon:-1000,offsetLat:null,offsetLon:null};new Xi(this,'timeout',this.prepare,1000).start();}
BigMapDisplayer.prototype={prepare:function(){var geocodes=new Xf(Xu('geocodes').getByTag('li')).getXu();this.markers=[];var geocode=null;var latitude=null;var longitude=null;var title=null;var id=null;var num=null;for(var i=0;i<geocodes.length;++i){geocode=geocodes[i];latitude=Xu(geocode.getByClass('abbr','latitude',0)).getTitle()-0;longitude=Xu(geocode.getByClass('abbr','longitude',0)).getTitle()-0;title=geocode.getByClass('div','nome',0).childNodes[1].nodeValue.replace(/^[ ]+/,'').replace(/[ ]+$/,'');id=title.match(/^[a-zA-Z0-9]+/)[0];num=id.match(/[0-9]+$/)[0];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.markers.push({latitude:latitude,longitude:longitude,title:title,num:num,clickable:Xu(id)!==null});geocode.addClass('nascosto');}
this.borders.offsetLat=(this.borders.maxLat-this.borders.minLat)*(this.offsetPercent/100);this.borders.offsetLon=(this.borders.maxLon-this.borders.minLon)*(this.offsetPercent/100);this.prepareMap();},prepareMap:function(){CurrentMapActive=this;if(typeof google==='undefined'){new Xi(this,'timeout',this.prepareMap,300).start();return;}
google.load('maps','2',{language:this.language,callback:displayEnlargedMap});},createCustomMarker:function(def){var icon=new GIcon();icon.image=this.path+'immagini/marker'+def.num+'.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.title,clickable:def.clickable,icon:icon});return marker;},createMonumentMarker:function(def){var icon=new GIcon();icon.image=this.path+'immagini/map_icons/'+def.icon;icon.shadow=this.path+'immagini/map_icons/sfondo.png';icon.iconSize=new GSize(35,35);icon.shadowSize=new GSize(35,35);icon.iconAnchor=new GPoint(17,17);icon.infoWindowAnchor=new GPoint(17,17);icon.infoShadowAnchor=new GPoint(17,17);var coords=new GLatLng(def.latitude,def.longitude);var marker=new GMarker(coords,{title:def.title,clickable:false,icon:icon});return marker;},displayMap:function(){var map=new GMap2(document.getElementById('mappa'));if(this.markers.length===1){map.setCenter(new GLatLng(this.markers[0].latitude,this.markers[0].longitude),this.defaultZoom);map.addOverlay(this.createCustomMarker(this.markers[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 name in this.monuments)map.addOverlay(this.createMonumentMarker(this.monuments[name]));for(var i=0;i<this.markers.length;++i)map.addOverlay(this.createCustomMarker(this.markers[i]));}
GEvent.bind(map,'click',this,this.pointClicked);map.addControl(new GSmallMapControl());map.addControl(new GMapTypeControl());},pointClicked:function(point){if(point===null||typeof point.getTitle!=='function'||arguments.length===2)return;var title=point.getTitle();var item=Xu(title.match(/^[a-zA-Z0-9]+/)[0]);var img=item.getByTag('img',0);var href=Xu(item.getByTag('a',0)).getHref();var price=Xu(item.getByClass('p','costo',0));if(item.checkClass('offerta')){var priceLabel=price.getByClass('span','tipo',0).firstChild.nodeValue;var priceOld=price.getByTag('del',0).firstChild.nodeValue;var priceValue=price.getByClass('span','prezzo',0).childNodes[1].nodeValue;var priceHtml='<p class="prezzo"><span class="tipo">'+priceLabel+'</span> <del class="vecchio-prezzo"> '+priceOld+'</del> <span class="prezzo">'+priceValue+'</span></p>';}
else{var priceLabel=price.getByClass('span','tipo',0).firstChild.nodeValue;var priceValue=price.getByClass('span','prezzo',0).firstChild.nodeValue;var priceHtml='<p class="prezzo"><span class="tipo">'+priceLabel+'</span> <span class="prezzo">'+priceValue+'</span></p>';}
point.openInfoWindowHtml('<div class="custom-info-window"><p class="nome">'+title+'</p><img src="'+img.src+'" width="'+img.width+'" height="'+img.height+'" /><p class="link">'+priceHtml+'<a href="'+href+'">'+languagepack.go_to_description+'</a></p></div>');}}
function AvailabilityFormEnancher(){this.table=Xu('richiedi-disponibilita');if(this.table===null)return;this.form=Xu('richiesta-disponibilita-form');this.name=Xu('rd-nome-cognome');this.cityCountry=Xu('rd-citta-paese');this.phone=Xu('rd-telefono');this.cell=Xu('rd-cellulare');this.phonePref=Xu('rd-preferenza-telefono');this.phonePrefVisible=true;this.beds=(Xu('rd-posti-letto')===null?null:Xu('rd-posti-letto').get().firstChild.nodeValue-0);this.adults=Xu('rd-numero-adulti');this.bedsOK=false;this.teens=Xu('rd-numero-ragazzi');this.children=Xu('rd-numero-bambini');this.cradle=Xu('rd-culla');this.cradleVisible=true;this.apartmentPref=Xu('rd-appartamento-flessibile');this.alternate1=Xu('rd-sistemazione-alternativa1');this.alternate2=Xu('rd-sistemazione-alternativa2');this.apartmentVisible=true;this.email1=Xu('rd-email');this.email2=Xu('rd-conferma-email');this.emailOK=false;this.sourceNotes=new Xf(Xu(this.table.getByTag('tbody',0)).getByTag('sup')).getXu();this.targetNotes=new Xf(Xu(this.table.getByTag('tfoot',0)).getByTag('sup')).getXu();this.prepare();}
AvailabilityFormEnancher.prototype={prepare:function(){var phoneFunc=function(e,source,type){source.getData('AFE').phonePrefCheck();}
this.phone.setData('AFE',this).addEvent('onkeyup',phoneFunc).addEvent('onchange',phoneFunc);this.cell.setData('AFE',this).addEvent('onkeyup',phoneFunc).addEvent('onchange',phoneFunc);this.phonePrefCheck();var cradleFunc=function(e,source,type){source.getData('AFE').cradleCheck();}
this.children.setData('AFE',this).addEvent('onkeyup',cradleFunc).addEvent('onchange',cradleFunc);this.cradleCheck();var apartmentFunc=function(e,source,type){source.getData('AFE').apartmentCheck();}
this.apartmentPref.setData('AFE',this).addEvent('onclick',apartmentFunc).addEvent('onchange',apartmentFunc);this.apartmentCheck();var emailFunc=function(e,source,type){source.getData('AFE').emailCheck();}
this.email1.setData('AFE',this).addEvent('onchange',emailFunc);this.email2.setData('AFE',this).addEvent('onchange',emailFunc);this.emailCheck();if(this.beds!==null){var bedsFunc=function(e,source,type){source.getData('AFE').bedsCheck();}
this.adults.setData('AFE',this).addEvent('onkeyup',bedsFunc).addEvent('onchange',bedsFunc);this.teens.setData('AFE',this).addEvent('onkeyup',bedsFunc).addEvent('onchange',bedsFunc);this.children.setData('AFE',this).addEvent('onkeyup',bedsFunc).addEvent('onchange',bedsFunc);this.bedsCheck();}
var displayNoteFunc=function(e,source,type){source.getData('AFE').displayNote(source.getData('noteNum'));}
var hideNoteFunc=function(e,source,type){source.getData('AFE').hideNote();}
for(var i=0;i<this.sourceNotes.length;++i){Xu(this.sourceNotes[i].getByTag('a',0)).setData('AFE',this).setData('noteNum',i).addEvent('onmouseover',displayNoteFunc).addEvent('onmouseout',hideNoteFunc).addEvent('onfocus',displayNoteFunc).addEvent('onblur',hideNoteFunc);}},phonePrefCheck:function(){var display=(this.phone.getValue().replace(' ','')!==''||this.cell.getValue().replace(' ','')!=='');if(this.phonePrefVisible===display)return;if(display){this.phonePrefVisible=true;Xu(this.phonePref.parentItem(1)).removeClass('nascosto');}
else{this.phonePrefVisible=false;this.phonePref.get().checked=false;Xu(this.phonePref.parentItem(1)).addClass('nascosto');}
this.reorderNotes();},cradleCheck:function(){var display=this.children.getValue().replace(' ','');display=(display!==''&&display!=='0');if(this.cradleVisible===display)return;if(display){this.cradleVisible=true;Xu(this.cradle.parentItem(1)).removeClass('nascosto');}
else{this.cradleVisible=false;this.cradle.get().checked=false;Xu(this.cradle.parentItem(1)).addClass('nascosto');}
this.reorderNotes();},apartmentCheck:function(){var display=this.apartmentPref.getVar('checked');if(this.apartmentVisible===display)return;if(display){this.apartmentVisible=true;Xu(this.alternate1.parentItem(1)).removeClass('nascosto');Xu(this.alternate2.parentItem(1)).removeClass('nascosto');}
else{this.apartmentVisible=false;this.alternate1.setValue('-1');this.alternate2.setValue('-1');Xu(this.alternate1.parentItem(1)).addClass('nascosto');Xu(this.alternate2.parentItem(1)).addClass('nascosto');}
this.reorderNotes();},dayOffsetCheck:function(){var display=this.dayOffsetPref.getVar('checked');if(this.dayOffsetVisible===display)return;if(display){this.dayOffsetVisible=true;Xu(this.dayOffset.parentItem(1)).removeClass('nascosto');}
else{this.dayOffsetVisible=false;this.dayOffset.setValue('');this.beforeAfter.setValue('-1');Xu(this.dayOffset.parentItem(1)).addClass('nascosto');}
this.reorderNotes();},emailCheck:function(){var emailOK=null;var displayError=null;if((this.email1.getData('IVerror_email')!==null||this.email2.getData('IVerror_email')!==null)||(this.email1.getValue()===''||this.email2.getValue()==='')){emailOK=false;displayError=false;}
else if(this.email1.getValue()===this.email2.getValue()){emailOK=true;displayError=false;}
else{emailOK=false;displayError=true;}
this.emailOK=emailOK;if(displayError){this.email1.addClass('mismatch-error');this.email2.addClass('mismatch-error');}
else{this.email1.removeClass('mismatch-error');this.email2.removeClass('mismatch-error');}},bedsCheck:function(){var bedsOK=true;var adults=this.adults.getValue().replace(' ','');if(adults===''){adults=null;bedsOK=false;}
else adults-=0;var teens=this.teens.getValue().replace(' ','');if(teens==='')teens=0;else teens-=0;var children=this.children.getValue().replace(' ','');if(children==='')children=0;else children-=0;if(adults!==null&&teens!==null&&children!==null&&adults+teens+children>this.beds){this.adults.addClass('sum-error');this.teens.addClass('sum-error');this.children.addClass('sum-error');bedsOK=false;}
else{this.adults.removeClass('sum-error');this.teens.removeClass('sum-error');this.children.removeClass('sum-error');}
this.bedsOK=bedsOK;},reorderNotes:function(){var count=1;var toHide=[];for(var i=0;i<this.sourceNotes.length;++i){if(Xu(this.sourceNotes[i].parentItem(2)).checkClass('nascosto')){toHide.push(null);continue;}
toHide.push(count);this.sourceNotes[i].get().firstChild.nodeValue='('+count+')';++count;}
for(var i=0;i<this.targetNotes.length;++i){if(toHide[i]===null)Xu(this.targetNotes[i].parentItem()).addClass('nascosto');else{Xu(this.targetNotes[i].parentItem()).removeClass('nascosto');this.sourceNotes[i].get().firstChild.nodeValue='('+toHide[i]+')';}}},displayNote:function(num){this.hideNote();var popup=Xu(this.targetNotes[num].parentItem().cloneNode(true));Xu(popup.getByTag('sup',0)).removeSelf();var pos=this.sourceNotes[num].getAbsolutePosition();popup.setID('NotaPopup').setStyles({left:(pos.x+20)+'px',top:pos.y+'px'}).appendTo(Xu().getBody());},hideNote:function(){var popup=Xu('NotaPopup');if(popup!==null)popup.removeSelf();}}
function disablePasteInField(id){var field=new Xu(id);field.setData('previousInputValue',field.getValue());var func=function(e,source,type){if(source.getValue().length-source.getData('previousInputValue').length>3)source.setValue(source.getData('previousInputValue'));else source.setData('previousInputValue',source.getValue())}
field.addEvent('onkeyup',func).addEvent('onmouseup',func);}
function applyLinksToPreviews(){var list=Xu('lista-appartamenti');if(list===null)return;var previews=new Xf(list.getByTag('li')).getXu();var preview=null;var titleLink=null;var imgDiv=null;for(var i=0;i<previews.length;++i){preview=previews[i];titleLink=Xu(preview.getByClass('a','link-titolo',0));imgDiv=Xu(preview.getByClass('div','immagine',0));applyZoomOverLink(Xu('a',true).setClass('link-immagine').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(imgDiv.getByTag('img',0)).appendTo(imgDiv));Xu('a',true).setClass('link-entra').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(Xu('text',true,languagepack.go_to_description)).insertBeforeItem(preview.getByClass('p','costo',0));}}
function applyLinksToMonumentPreviews(){var list=Xu('lista-monumenti');if(list===null)return;var previews=new Xf(list.getByTag('li')).getXu();var preview=null;var titleLink=null;var imgDiv=null;for(var i=0;i<previews.length;++i){preview=previews[i];titleLink=Xu(preview.getByClass('a','link-titolo',0));imgDiv=Xu(preview.getByClass('div','immagine',0));applyZoomOverLink(Xu('a',true).setClass('link-immagine').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(imgDiv.getByTag('img',0)).appendTo(imgDiv));Xu('a',true).setClass('link-entra').setTitle(titleLink.getTitle()).setHref(titleLink.getHref()).append(Xu('text',true,languagepack.go_to_description)).insertAfterItem(preview.getByTag('table',0));}}
function InstantValidators(definitions){this.definitions=[];var def=null;for(var i=0;i<definitions.length;++i){def=definitions[i];if(def.length===2)def.push({});this.addValidator(def);}}
InstantValidators.prototype={addValidator:function(definitions){var func=function(e,source,type){source.getData('IVs').validate(source.getData('IVnum'));}
definitions[0]=Xu(definitions[0]).setData('IVs',this).setData('IVnum',this.definitions.length).setData('IVerror_'+definitions[1],null).addEvent('onkeyup',func).addEvent('onchange',func);this.definitions.push(definitions);definitions[0].fireEvent('onchange');},validate:function(num){var def=this.definitions[num];switch(def[1]){case'integer':this.validateInteger(def[0],def[2]);break;case'email':this.validateEmail(def[0],def[2]);break;}},validateInteger:function(source,data){var error=null;var value=source.getValue();if(!data.dont_trim)value=value.replace(/^[ ]*/,'').replace(/[ ]*$/,'');do{if(value===''){if(data.empty_not_allowed){error='empty-error';break;}
else{break;}}
value=value.replace(/[^0123456789]+/,'');if(data.allow_leading_zero){if(!value.match(/^[0-9]+$/)){break;}}
else{if(!value.match(/^(0|[1-9][0-9]+|[1-9]+)$/)){if(value[1]==='0')value='0';else value=value.substr(1);break;}}}while(false);if(error==='empty-error')source.addClass('empty-error');else source.removeClass('empty-error');source.setData('IVerror_integer',error);if(value!==source.getValue())source.setValue(value);},validateEmail:function(source,data){var error=null;var value=source.getValue();if(!data.dont_trim)value=value.replace(/^[ ]*/,'').replace(/[ ]*$/,'');do{if(value===''){if(data.empty_not_allowed){error='empty-error';break;}
else{break;}}
if(!value.match(/^[\w+-._]+@([\w-]+\.)+\w{2,4}$/))error='format-error';}while(false);if(error==='empty-error')source.addClass('empty-error');else source.removeClass('empty-error');if(error==='format-error')source.addClass('format-error');else source.removeClass('format-error');source.setData('IVerror_email',error);if(value!==source.getValue())source.setValue(value);}}
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 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 pageEnancher(page,param1){var language=Xu(Xu().getBody()).getClass();var path='';new LocalTimeUpdater();switch(page){case'home':applyLinksToPreviews();new InstantValidators([['rf-numero-persone','integer']]);break;case'appartamenti':applyLinksToPreviews();new InstantValidators([['rf-numero-persone','integer']]);CurrentMapActive=null;new BigMapDisplayer(language,path)
break;case'scheda-appartamento':path+='../';disablePasteInField('rd-conferma-email');new InstantValidators([['cp-numero-adulti','integer'],['cp-numero-ragazzi','integer'],['cp-numero-bambini','integer'],['rd-numero-adulti','integer'],['rd-numero-ragazzi','integer'],['rd-numero-bambini','integer'],['rd-email','email'],['rd-conferma-email','email'],['cp-data-arrivo_day','integer',{allow_leading_zero:true}],['cp-data-arrivo_month','integer',{allow_leading_zero:true}],['cp-data-arrivo_year','integer',{allow_leading_zero:true}],['cp-data-partenza_day','integer',{allow_leading_zero:true}],['cp-data-partenza_month','integer',{allow_leading_zero:true}],['cp-data-partenza_year','integer',{allow_leading_zero:true}],['rd-data-arrivo_day','integer',{allow_leading_zero:true}],['rd-data-arrivo_month','integer',{allow_leading_zero:true}],['rd-data-arrivo_year','integer',{allow_leading_zero:true}],['rd-data-partenza_day','integer',{allow_leading_zero:true}],['rd-data-partenza_month','integer',{allow_leading_zero:true}],['rd-data-partenza_year','integer',{allow_leading_zero:true}]]);applyPictureZoomByClass('zoom');new ImageControls('foto-appartamento');new InfoTabbifier();new SectionTabbifier();applyFocusTooltip('cp-data-arrivo_day',languagepack.tooltips.arrival_day);applyFocusTooltip('cp-data-arrivo_month',languagepack.tooltips.arrival_month);applyFocusTooltip('cp-data-arrivo_year',languagepack.tooltips.arrival_year);applyFocusTooltip('cp-data-partenza_day',languagepack.tooltips.departure_day);applyFocusTooltip('cp-data-partenza_month',languagepack.tooltips.departure_month);applyFocusTooltip('cp-data-partenza_year',languagepack.tooltips.departure_year);applyFocusTooltip('rd-data-arrivo_day',languagepack.tooltips.arrival_day);applyFocusTooltip('rd-data-arrivo_month',languagepack.tooltips.arrival_month);applyFocusTooltip('rd-data-arrivo_year',languagepack.tooltips.arrival_year);applyFocusTooltip('rd-data-partenza_day',languagepack.tooltips.departure_day);applyFocusTooltip('rd-data-partenza_month',languagepack.tooltips.departure_month);applyFocusTooltip('rd-data-partenza_year',languagepack.tooltips.departure_year);var CCFH=new CalculateCostFormHandler(path);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 NCP=new CalendarPairManager(new CalendarManager('cp-data-arrivo'),new CalendarManager('cp-data-partenza'),CCFH,{minDate:minDate.clone(),maxDate:(maxDate===null?null:maxDate.clone()),minInterval:1,maxInterval:31});var SNU=new SimpleNightsUpdater();var NCP2=new CalendarPairManager(new CalendarManager('rd-data-arrivo'),new CalendarManager('rd-data-partenza'),SNU,{minDate:minDate.clone(),maxDate:(maxDate===null?null:maxDate.clone()),minInterval:1,maxInterval:null});CurrentMapActive=null;new EnlargedMapDisplayer(language);new AvailabilityFormEnancher();applyFormErrorHighlighter('richiesta-disponibilita-form');break;case'zone':path+='../';applyLinksToMonumentPreviews();break;case'scheda-monumento':path+='../';applyPictureZoomByClass('zoom');new ImageControls('foto-monumento');break;case'contatti':new InstantValidators([['ri-email','email']]);applyFormErrorHighlighter('richiesta-informazioni-form');break;}
applyBlankTargetLinks();}