(function($){var vars=tlBookingScreens.vars;var is_loading_price=false;var n_start_display=vars.start_date;var n_end_display=vars.end_date;var min_day=null;var max_day=null;var abs_days=null;var ajax_cache={};var ajax_last_call=null;var tmp="background-image:url("+vars.image_folder+"squares.gif);";var square=[tmp+"background-position:0px bottom",tmp+"background-position:-50px bottom",tmp+"background-position:-100px bottom",tmp+"background-position:-150px bottom"];var separator=(-1==vars.message.uri.indexOf("?"))?"?":"&";$(document).ready(function(){vars.step_1_desc=$("#step_1 .step_description").html();vars.step_2_desc=$("#step_2 .step_description").html();if("scroll"==vars.calendar_type){vars.jq={};vars.jq.calendar=$("#calendar");vars.jq.scrolling_zone=vars.jq.calendar.find(".scrolling-zone");vars.jq.left_arrow=vars.jq.calendar.find(".left-arrow");vars.jq.right_arrow=vars.jq.calendar.find(".right-arrow");var total_width=0;vars.jq.scrolling_zone.find("tr:first").children(":lt("+vars.calendar_width+")").each(function(){total_width+=parseInt($(this).width()+2)});vars.jq.scrolling_zone.find("tr:first").children().each(function(id){if($(this).children().length>0){$(this).attr("id","tlScrollMonth_"+id)}});vars.jq.calendar.show();vars.jq.calendar.css("display","block");vars.jq.scrolling_zone.css("width",total_width+"px");vars.max_month=vars.jq.scrolling_zone.find("tr:first").children("[id^=tlScrollMonth_]").length;vars.current_month=0;if(null!=vars.start_date){var jq_start_day=$("#cal_day_"+vars.start_date);if(jq_start_day.length>0){var month_id=jq_start_day.parents(".availcalmo:first").parent().attr("id");var current_month=parseInt(month_id.substr(14));if(!isNaN(current_month)){if(vars.max_month-vars.calendar_width<current_month){current_month=vars.max_month-vars.calendar_width}vars.current_month=current_month;vars.jq.scrolling_zone.scrollTo("#tlScrollMonth_"+vars.current_month,0,{axis:"x"})}}}if(vars.max_month<=vars.calendar_width){vars.jq.left_arrow.hide();vars.jq.right_arrow.hide()}updateArrows();vars.jq.left_arrow.click(function(){if(0>=vars.current_month){return}vars.current_month--;updateArrows();vars.jq.scrolling_zone.scrollTo("#tlScrollMonth_"+vars.current_month,500,{axis:"x"})});vars.jq.right_arrow.click(function(){if(vars.max_month-vars.calendar_width<=vars.current_month){return}vars.current_month++;updateArrows();vars.jq.scrolling_zone.scrollTo("#tlScrollMonth_"+vars.current_month,500,{axis:"x"})})}var jq;for(var i in vars.cal_days){jq=$("#cal_day_"+i);if(jq.length==0){delete vars.cal_days[i];continue}vars.cal_days[i].node=jq;if(jq.attr("style")!=null){vars.cal_days[i].style=1}vars.cal_days[i].day=getMonthDay(i)}first_getDays=true;$('select[id^="from"]').change(function(){calculDate("from")});$('select[id^="until"]').change(function(){calculDate("until")});if(null==vars.start_date){calculDate("from")}if(null==vars.end_date){calculDate("until")}documentReady()});var setSelectValue=function(el,val){for(var i=0;i<el.options.length;i++){if((el.options[i].value&&el.options[i].value==val)||el.options[i].text==val){el.selectedIndex=i;return}}};var getMonthDay=function(number){var d=new Date();d.setTime(number*1000);return d.getUTCDate()};var updateArrows=function(){if(0>=vars.current_month){vars.jq.left_arrow.addClass("left-disable")}else{vars.jq.left_arrow.removeClass("left-disable")}if(vars.max_month-vars.calendar_width<=vars.current_month){vars.jq.right_arrow.addClass("right-disable")}else{vars.jq.right_arrow.removeClass("right-disable")}};var selectDate=function(txt_id,number){var f_day=document.getElementById(txt_id+"-d");var f_mon=document.getElementById(txt_id+"-m");var f_year=document.getElementById(txt_id+"-y");if(0==number){setSelectValue(f_day,0);setSelectValue(f_mon,0);setSelectValue(f_year,0)}else{var d=new Date();d.setTime(number*1000);setSelectValue(f_day,d.getUTCDate());setSelectValue(f_mon,d.getUTCMonth()+1);setSelectValue(f_year,d.getUTCFullYear())}};var calculDate=function(txt_id){var f_day=document.getElementById(txt_id+"-d").selectedIndex;var f_mon=document.getElementById(txt_id+"-m").selectedIndex;var f_year=eval(document.getElementById(txt_id+"-y").value);if(0!=f_day&&0!=f_mon&&0!=f_year){var d=new Date(0);d.setFullYear(f_year,f_mon-1,f_day);d.setTime(d.getTime()-d.getTime()%86400000);var new_date=d.getTime()/1000;if("from"==txt_id){n_start_display=new_date;if(null==vars.cal_days[new_date]||"avail_in"!=vars.cal_days[new_date].c&&"req_in"!=vars.cal_days[new_date].c){tlBookingScreens.resetDates();addInfoZone('<div class="error-message">'+vars.message.not_bookable_start_date+"</div>")}else{if(vars.start_date!=new_date){vars.start_date=new_date;tlBookingScreens.setStartDate(vars.cal_days[new_date].node[0])}}}else{n_end_display=new_date;if(null==vars.start_date){addInfoZone('<div class="error-message">'+vars.message.please_choose_a_start_date+"</div>")}else{if(!checkEndDate(new_date)){addInfoZone('<div class="error-message">'+vars.message.not_a_bookable_end_date+"</div>")}else{if(vars.end_date!=new_date){vars.end_date=new_date;tlBookingScreens.setEndDate(vars.cal_days[new_date].node[0])}}}}}else{if("from"==txt_id){if(null!=vars.start_date){tlBookingScreens.resetDates()}delete vars.start_date}else{delete vars.end_date}}};var calculateMinMaxAbs=function(){if(null!=vars.cal_days[vars.start_date].i){min_day=vars.start_date+vars.cal_days[vars.start_date].i*86400}else{min_day=null}if(null!=vars.cal_days[vars.start_date].m){max_day=vars.start_date+vars.cal_days[vars.start_date].m*86400}else{max_day=null}if(null!=vars.cal_days[vars.start_date].a){var abs=vars.cal_days[vars.start_date].a;abs=abs.split(",");abs_days={};for(i in abs){abs_days[vars.start_date+abs[i]*86400]=1}}else{abs_days=null}};var checkEndDate=function(new_date){if((null==new_date)||(null!=min_day&&new_date<min_day)||(null!=max_day&&new_date>max_day)||(null!=abs_days&&null==abs_days[new_date])){return false}return true};tlBookingScreens.getPrice=function(){if(null==vars.start_date||null==vars.end_date){return}var band_value=$("#num_band0").val();var data={provider_id:$("input[name=provider_id]").val(),rate_group_ref:$("input[name=rate_group_ref]").val(),product_ref:$("input[name=product_ref]").val(),affiliate_id:$("input[name=affiliate_id]").val(),from:vars.start_date,until:vars.end_date,num_band0:(band_value<1)?1:band_value,band:vars.band};var parameters=[];var i=0;for(name in data){parameters.push(name+"="+escape(data[name]))}parameters=parameters.join("&");ajax_last_call=parameters;if(null==ajax_cache[parameters]){is_loading_price=true;updateInfoZone();$.ajax({url:vars.ajax_location+"?"+parameters,type:"GET",dataType:"json",success:function(json){ajax_cache[parameters]=json;if(parameters==ajax_last_call){ajaxCallBack(json)}}})}else{ajaxCallBack(ajax_cache[parameters])}};var ajaxCallBack=function(json){vars.price=json.price;vars.saving="";if(json.breakdown&&json.breakdown.savings){vars.saving=json.breakdown.savings}is_loading_price=false;updateInfoZone()};var updateInfoZone=function(){var new_info="";if(null!=vars.cal_days[vars.start_date]){if(null!=vars.end_date){new_info=new_info+((vars.end_date-vars.start_date)/86400)+" "+vars.message.nights+"<br/>"}if(is_loading_price||""!=vars.price){var class_name;if(is_loading_price){class_name="loading_price"}else{class_name="display_price"}if(""!=vars.saving){new_info+=vars.message.saving+'<span class="'+class_name+'">'+vars.saving+"</span>"}new_info+="<br/>"+vars.message.price+'<strong class="'+class_name+'">'+vars.price;if(is_loading_price){new_info+=" "+vars.message.checking_price}new_info+="</strong>"}if(""!=new_info){new_info=new_info+"<br/>"}}addInfoZone(new_info)};tlBookingScreens.setStartDate=function(node){vars.start_date=eval(node.id.substring(8));delete vars.end_date;calculateMinMaxAbs();if(null!=vars.end_date&&!checkEndDate(vars.end_date)){delete vars.end_date;selectDate("until",0)}var style;var class_name;var html;for(var i in vars.cal_days){style="";class_name="";html="";if(i<vars.start_date||max_day!=null&&i>max_day){class_name="unknown";html=vars.cal_days[i].day}else{if((null!=min_day&&i<min_day)||(null!=abs_days&&null==abs_days[i])){if(i!=vars.start_date){if(null!=vars.end_date&&i<vars.end_date){class_name="avail_in_selected"}else{class_name="avail"}html=vars.cal_days[i].day}else{html=vars.cal_days[i].day;class_name="avail_in_selected";style=square[2]}}else{if(null!=vars.end_date&&i<=vars.end_date){if(i==vars.end_date){class_name="avail_in_date"}else{class_name="avail_in_selected"}}else{class_name="avail_in";if(i==max_day){style=square[0]}}html='<a href="'+vars.message.uri+separator+"start_date="+vars.start_date+"&end_date="+i+'" onclick="return tlBookingScreens.setEndDate(this.parentNode);">'+vars.cal_days[i].day+"</a>"}}setStyle(i,style);vars.cal_days[i].node.attr("class","availcal_"+class_name).html(html)}if(n_start_display!=vars.start_date){n_start_display=vars.start_date;selectDate("from",n_start_display)}tlBookingScreens.updateStep();if(null==vars.end_date){addInfoZone("")}else{tlBookingScreens.getPrice()}return false};tlBookingScreens.setEndDate=function(node){vars.end_date=eval(node.id.substring(8));calculateMinMaxAbs();if(n_end_display!=vars.end_date){n_end_display=vars.end_date;selectDate("until",n_end_display)}var class_name,style,previous_class="unknown";for(var i in vars.cal_days){class_name=vars.cal_days[i].c;html=getHtml(class_name,i);if(i<vars.start_date||i>vars.end_date){style=getStyle(class_name,previous_class)}else{if(i==vars.start_date){class_name="avail_in_selected";if("avail_in"!=previous_class&&"avail"!=previous_class){style=square[2]}else{style=square[0]}}else{if(i==vars.end_date){style=square[1]}else{class_name="avail_in_selected";style=""}}}setStyle(i,style);vars.cal_days[i].node.attr("class","availcal_"+class_name).html(html);if($.browser.safari){vars.cal_days[i].node.html(html)}previous_class=vars.cal_days[i].c}tlBookingScreens.updateStep();tlBookingScreens.getPrice();return false};tlBookingScreens.resetDates=function(){var class_name,style,html,previous_class="unknown";for(var i in vars.cal_days){class_name=vars.cal_days[i].c;html=getHtml(class_name,i);style=getStyle(class_name,previous_class);setStyle(i,style);vars.cal_days[i].node.attr("class","availcal_"+class_name).html(html);if($.browser.safari){vars.cal_days[i].node.html(html)}previous_class=class_name}delete vars.start_date;delete vars.end_date;n_start_display=null;n_end_display=null;selectDate("from",0);selectDate("until",0);vars.price="";vars.saving="";tlBookingScreens.updateStep();updateInfoZone();return false};var getHtml=function(class_name,i){if(("avail_in"==class_name)||("req_in"==class_name)){return'<a href="'+vars.message.uri+separator+"start_date="+i+'" onclick="return tlBookingScreens.setStartDate(this.parentNode);">'+vars.cal_days[i].day+"</a>"}return vars.cal_days[i].day};var getStyle=function(class_name,previous_class){if("avail_in"==class_name&&"avail_in"!=previous_class&&"avail"!=previous_class){return square[2]}if("avail"==class_name&&"avail_in"!=previous_class&&"avail"!=previous_class){return square[2]}if("avail_in"==previous_class&&"avail_in"!=class_name&&"avail"!=class_name){return square[0]}if("avail"==previous_class&&"avail_in"!=class_name&&"avail"!=class_name){return square[3]}return""};var addInfoZone=function(text){if(text==""){$("#div_info").hide("slow")}else{$("#info_zone").html(text);$("#div_info").show("slow")}};tlBookingScreens.alterButton=function(){var step=checkStep();if(4==step){return true}var error="";switch(step){case 1:error=vars.message.select_arrival_date;break;case 2:error=vars.message.select_departure_date;break;case 3:error=vars.message.select_number_guests;break}addInfoZone('<strong class="error-message">'+error+"</strong>");return false};var checkStep=function(){if(null!=vars.start_date){if(null!=vars.end_date){var q=$("#num_band0").val();if(q>0){return 4}return 3}return 2}return 1};tlBookingScreens.updateStep=function(){var step=checkStep();for(var i=1;i<=4;i++){if(i==step){$("#step_"+i).attr("class","step selected")}else{if(i<step){$("#step_"+i).attr("class","step completed")}else{$("#step_"+i).attr("class","step")}}}if(1<step){$("#step_1 .step_description").html(Date.createDate(vars.start_date,"num").format("dd mmm yy"))}else{$("#step_1 .step_description").html(vars.step_1_desc)}if(2<step){$("#step_2 .step_description").html(Date.createDate(vars.end_date,"num").format("dd mmm yy"))}else{$("#step_2 .step_description").html(vars.step_2_desc)}};var setStyle=function(i,style){if(null==vars.cal_days[i]){return}if(""==style){if(null==vars.cal_days[i].style){return}vars.cal_days[i].node.removeAttr("style");delete vars.cal_days[i].style}else{vars.cal_days[i].node.attr("style",style);vars.cal_days[i].style=1}};var document_ready=false;var document_functions=[];var callWhenReady=function(func){if(document_ready){func()}else{document_functions.push(func)}};var documentReady=function(){var len=document_functions.length;for(var i=0;i<len;i++){document_functions[i]()}document_ready=true};tlBookingScreens.setStartDateReady=function(node){callWhenReady(function(){tlBookingScreens.setStartDate(node)});return false};tlBookingScreens.setEndDateReady=function(node){callWhenReady(function(){tlBookingScreens.setEndDate(node)});return false};callWhenReady(function(){if(checkStep()>2){tlBookingScreens.getPrice()}tlBookingScreens.updateStep()})})(jQuery);