var it_FlightForm=function(f,c){c=it_Utils.extend({imgDir:it_basePath+"img/",autoCompleteQueryUrl:it_basePath+"/flight/services.html",departureAutoCompleteOptions:null,arrivalAutoCompleteOptions:null,elementsToHideIfSingle:["fl_returnCase","fl_returnDate1","fl_returnDate2"],manageDates:true,departureDateOptions:{dayOfWeekElement:"fl_departureDate.dayOfWeek",anchorElement:"fl_departureCalendarImg",shortYear:true},returnDateOptions:{dayOfWeekElement:"fl_returnDate.dayOfWeek",anchorElement:"fl_returnCalendarImg",shortYear:true},classOfService:null,departureAirport:"",arrivalAirport:"",departureDate:null,returnDate:null,adultCount:1,childCount:0,babyCount:0,returnTicket:true},c||{},["departureDateOptions","returnDateOptions"]);if(!c.departureDate){c.departureDate=it_DateUtils.addDay(it_DateUtils.clone(it_today),7)}if(!c.returnDate){c.returnDate=it_DateUtils.addDay(it_DateUtils.clone(it_today),14)}if(it_Utils.isDateBefore(c.departureDate,c.returnDate)){c.returnDate=c.departureDate}f=it_FormUtils.getForm(f);var d=f.elements;var h,a;var e;var b=this;var g=function(){e=!d.returnTicket.tagName||d.returnTicket.tagName.toLowerCase()!=="select";if(e){it_FormUtils.getRadios(f,"returnTicket").addEvent("click",b.update)}else{$(d.returnTicket).addEvent("change",b.update)}var i=$(d.departureAirport);var j=$(d.arrivalAirport);i.set({autocomplete:"off",events:{focus:function(){}}});j.set({autocomplete:"off",events:{focus:function(){j.select()}}});new it_FlightAutoComplete(i,$extend({queryUrl:c.autoCompleteQueryUrl},c.departureAutoCompleteOptions));new it_FlightAutoComplete(d.arrivalAirport,$extend({queryUrl:c.autoCompleteQueryUrl},c.arrivalAutoCompleteOptions));if(c.manageDates){h=new CompoundDate("departureDate",f,$extend({today:it_today,selectedDate:c.departureDate,imgDir:c.imgDir},c.departureDateOptions));a=new CompoundDate("returnDate",f,$extend({today:it_today,selectedDate:c.returnDate,imgDir:c.imgDir},c.returnDateOptions));h.setDateListener(function(){if(it_Utils.isDateBefore(h.getDate(),a.getDate())){a.setDate(h.getDate())}})}it_SelectUtils.addOptions(d.classOfService,[["eco",it_message("flight.form.class.eco")],["biz",it_message("flight.form.class.biz")],["first",it_message("flight.form.class.first")]],c.classOfService,"eco");if(e){it_FormUtils.checkRadios(it_FormUtils.getRadios(f,"returnTicket"),c.returnTicket,"true")}else{it_SelectUtils.select(d.returnTicket,"true")}it_SelectUtils.addNumericOptions(d.adultCount,0,6,c.adultCount);it_SelectUtils.addNumericOptions(d.childCount,0,6,c.childCount);it_SelectUtils.addNumericOptions(d.babyCount,0,6,c.babyCount);if(c.departureAirport){d.departureAirport.value=c.departureAirport}if(c.arrivalAirport){d.arrivalAirport.value=c.arrivalAirport}b.update()};this.update=function(){var i;if(e){i=d.returnTicket[1].checked}else{i=d.returnTicket.get("value")==="true"}it_Utils.setVisible(c.elementsToHideIfSingle,i);if(c.manageDates){a.setVisible(i)}};g()};var it_FlightAutoComplete=function(b,a){a=$extend({width:250,visibleLineCount:6,popupMenuBuilder:new it_FlightPopupMenuBuilder()},a);new it_AutoComplete(b,a)};var it_FlightPopupMenuBuilder=function(){var c,a;var b;this.init=function(e,d){if(c!=null){it_Utils.throwError("The popupBuilder can't be shared")}c=e;a=d};this.isResultValid=function(e){var d=b[e];return d.iataCode!=null};this.getInputValue=function(e){var d=b[e];return d.text+" "+d.iataCode};this.setData=function(d){b=d};this.isDataShowable=function(){return b!=null&&b.length>0};this.buildContent=function(h){var f=22;var g=38;var d=h.getWidth();var e=[];b.forEach(function(s,m){var k;var q={mouseover:function(){c.setSelectedIndex(m)},mousedown:function(){c.lineSelected()}};var n="";if(s.iataCode==null){n+="autoCompleteDisabled"}if(s.important){n+=" autoCompleteImportant"}var r=new Element("div",{styles:{position:"relative",height:a.lineHeight},events:q}).inject(h);e.push(r);var l=new Element("div",{styles:{position:"absolute",top:(a.lineHeight-11)/2,width:f,textAlign:"center"}}).inject(r);k=a.imgDir!=null&&s.child;if(!k&&a.imgDir!=null&&s.flag!=null){new Element("img",{src:a.imgDir+"flags/"+s.flag.toLowerCase()+".png",title:s.countryName?s.countryName:null}).inject(l)}var p=new Element("div",{styles:{position:"absolute",left:f,top:0,width:d-f-g,height:"100%",overflow:"hidden",whiteSpace:"nowrap"}}).inject(r);k=a.imgDir!=null&&s.child;if(k){var j=m==b.length-1||!b[m+1].child;new Element("div",{styles:{position:"absolute",width:14,height:"100%",backgroundImage:"url('"+a.imgDir+"autoComplete/"+(j?"L":"T")+".png')"}}).inject(p)}var o=s.text;if(s.viewOnlySuffix!=null){o+=s.viewOnlySuffix}new Element("div",{"class":n,text:o,styles:{position:"absolute",left:k?14:0,lineHeight:a.lineHeight}}).inject(p);var i=new Element("div",{"class":n,styles:{position:"absolute",left:d-g,width:g,lineHeight:a.lineHeight}}).inject(r);if(s.iataCode!=null){i.set("text",s.iataCode)}});return e}};var it_HotelForm=function(c,a){a=it_Utils.extend({imgDir:it_basePath+"img/",manageDates:true,arrivalDateOptions:{dayOfWeekElement:"hot_arrivalDate.dayOfWeek",anchorElement:"hot_arrivalCalendarImg",shortYear:true},countryName:it_subSite.toUpperCase(),cityName:"",arrivalDate:null,nightCount:1,roomCount:1,room1PeopleCount:1,room2PeopleCount:1,room3PeopleCount:1,room4PeopleCount:1},a||{},["arrivalDateOptions"]);if(!a.arrivalDate){a.arrivalDate=it_DateUtils.addDay(it_DateUtils.clone(it_today),7)}c=it_FormUtils.getForm(c);var b=c.elements;var d;var e=function(){var g=$(b.countryName);it_SelectUtils.bind(g,{data:hotelCountries,selectedCode:a.countryName});var h=$(b.cityName).set({value:a.cityName,events:{focus:function(){h.select()}}});if(a.manageDates){new CompoundDate("arrivalDate",c,$extend({today:it_today,selectedDate:a.arrivalDate,imgDir:a.imgDir},a.arrivalDateOptions))}it_SelectUtils.addNumericOptions(b.nightCount,1,60,a.nightCount);d=it_SelectUtils.addNumericOptions(b.roomCount,1,4,a.roomCount);if(d){d.addEvent("change",f)}it_SelectUtils.addNumericOptions(b.room1PeopleCount,1,4,a.room1PeopleCount);it_SelectUtils.addNumericOptions(b.room2PeopleCount,1,4,a.room2PeopleCount);it_SelectUtils.addNumericOptions(b.room3PeopleCount,1,4,a.room3PeopleCount);it_SelectUtils.addNumericOptions(b.room4PeopleCount,1,4,a.room4PeopleCount);f()};var f=function(){if(d){var g=d.value.toInt();c.getElements(".hot_room2").forEach(function(h){h.setOpacity(g>=2?1:0)});c.getElements(".hot_room3").forEach(function(h){h.setOpacity(g>=3?1:0)});c.getElements(".hot_room4").forEach(function(h){h.setOpacity(g>=4?1:0)})}};e()};