var ha={ajax:{},map:{},form:{},geocode:{},reviews:{},page:{},settings:{},site:{},strings:{},ui:{},seo:{showSeoText:function(){if($("#searchText")&&$("#searchTextPosition")){$("#searchTextPosition").append($("#searchText"))}}},util:{isInt:function(c){return((c>="0")&&(c<="9"))},initToggles:function(){$(".expand .content").addClass("hidden");$(".expand .show").removeClass("hidden");$(".expand .action").bind("click",function(){var el=$(this).parent("div.container").children("div.content");if(el.hasClass("hidden")){el.removeClass("hidden");$(this).addClass("open")}else{el.addClass("hidden");$(this).removeClass("open")}})},initPopupUrls:function(){$(".popup-url").bind("click",function(){window.open(this.href);return false})},initSearchSwap:function(){$(".input-keyword").each(function(){var val=$(this).val();var rel=$(this).attr("rel");if(val==""){$(this).addClass("default");$(this).val(rel)}else{if(val!=rel){$(this).removeClass("default")}}});$(".input-keyword").focus(function(){var val=$(this).val();$(this).removeClass("default");if($(this).attr("rel")==$(this).val()){$(this).val("")}});$(".input-keyword").blur(function(){var val=$(this).val();$(this).removeClass("default");if($(this).val()==""){$(this).addClass("default");$(this).val($(this).attr("rel"))}})},calDateFmt:function(){var dateSplit=brand.javaDateInputPattern.split("/");return(dateSplit[0].charAt(0)+"-"+dateSplit[1].charAt(1)+"-"+dateSplit[2].charAt(0)).toLowerCase()},limiter:function(event){var maxChars=$(this).attr("maxlength");var charCount=$(this).val().length;var lineCount=$(this).val().split(/\r\n|\n|\r\|\f/).length;var totalCount=(charCount>0)?charCount+lineCount:0;var remainder=((maxChars-totalCount)>-1)?maxChars-totalCount:0;var allowedKeys=new Array(8,9,27,46,33,34,35,36,37,38,39,40,45);var remainderId=($(this).attr("id")=="modal-comments")?"modal-remainder":"remainder";if(event.metaKey||event.ctrlKey||event.altKey){return true}if(jQuery.inArray(event.keyCode,allowedKeys)!=-1){$("#"+remainderId).text(remainder);return true}if(totalCount>=maxChars){$(this).val($(this).val().substr(0,maxChars-lineCount));$("#"+remainderId).text(remainder);return false}$("#"+remainderId).text(remainder)},partialBox:function(partialHeight,duration){$(".partial-box .toggles").click(function(){var contentHeight=$(this).siblings(".content").children("div").height();if(contentHeight>partialHeight){if($(this).children(".fade").css("display")=="block"){$(this).children(".fade").css("display","none");$(this).siblings(".content").animate({height:contentHeight},duration);var sibling=$(this).children(".hide");var delay=function(){toggle(sibling)};setTimeout(delay,duration+1)}else{$(this).children(".hide").css("display","none");$(this).siblings(".content").animate({height:partialHeight+"px"},duration);var sibling=$(this).children(".fade");var delay=function(){toggle(sibling)};setTimeout(delay,duration+1)}function toggle(el){$(el).css("display","block")}}else{$(this).children(".fade").css("display","none");$(this).children(".all").css("display","block")}})},resetSearch:function(){$.cookie("HomeAwaySearch",null,{path:"/"});$.cookie("s_url",null,{path:"/"});return true}}};function Observer(){this.fns=[]}Observer.prototype={subscribe:function(fn){this.fns.push(fn)},unsubscribe:function(fn){this.fns=this.fns.filter(function(el){if(el!==fn){return el}})},fire:function(o,thisObj){var scope=thisObj||window;this.fns.forEach(function(el){el.call(scope,o)})}};Array.prototype.forEach=function(fn,thisObj){var scope=thisObj||window;for(var i=0,j=this.length;i<j;++i){fn.call(scope,this[i],i,this)}};Array.prototype.filter=function(fn,thisObj){var scope=thisObj||window;var a=[];for(var i=0,j=this.length;i<j;++i){if(!fn.call(scope,this[i],i,this)){continue}a.push(this[i])}return a};var jsEnabled=function(s){this.s=s};var searchErrorObserver=new Observer;ha.site.searchform={init:function(){$(".input-keyword").keyup(function(e){e=e||window.event;var keyCode=e.keyCode?e.keyCode:e.which?e.which:e.charCode;if(keyCode==13){ha.site.searchform.submit(e)}});$(".go-btn-sq").click(function(e){ha.site.searchform.submit(e)});$("form[name=searchForm],form[name=refineSearchForm]").each(function(){$(this).submit(function(e){return false});$(".search-submit-button",$(this)).click(function(e){ha.site.searchform.submit(e)})});$("#price-range-fields .input").bind("focus",function(){$("#price-range-vaidation").addClass("hidden").css("display","")})},isDigit:function(e){var charCode=(e.which)?e.which:window.event?window.event.keyCode:0;if(charCode>31&&(charCode<48||charCode>57)){return false}return true},submit:function(e){var formObj=$("form[name=searchForm],form[name=refineSearchForm]");if(e){formObj=$(e.target).parents("form")}var searchType=formObj.attr("id");if(searchType=="simple-search"){searchType="simple"}else{if(searchType=="keywordSearchForm"){searchType="keyword"}else{if(searchType=="adv-search-form"){searchType="advanced"}else{if(searchType=="refineSearchform"){searchType="availability"}else{searchType="notknown"}}}}if(searchType=="availability"&&$("#date-search-btn").length>0){ha.ui.search.omniture("refinedType","dates",false)}if(searchType!="availability"&&searchType!="advanced"){ha.util.resetSearch()}$.cookie("searchType",searchType,{expires:1,path:"/"});var keywords=($("input[name=keywords]",formObj).length>-1)?$("input[name=keywords]",formObj).val():"";var defaultMessage=$("input[rel]",formObj).attr("rel");if($.trim(keywords)!=""&&keywords!=defaultMessage){if(searchType=="availability"){keywords="/keywords:"+keywords}else{keywords="/keywords:"+encodeURIComponent(keywords)}}else{keywords=""}var refinements="";if($("#refinements",formObj).val()!=null&&$.trim($("#refinements",formObj).val())!=""){refinements+=$("#refinements",formObj).val().replace("+","*")}else{var refinements="";$("input, select",formObj).each(function(i,el){if((el.type=="select-one"&&el.value!="")||(el.type=="checkbox"&&el.checked)){refinements+="/"+el.value}})}var prices="";var priceFrom=$("#priceFrom").val();var priceTo=$("#priceTo").val();var hasPriceFrom=(priceFrom!=null&&priceFrom>0);var hasPriceTo=(priceTo!=null&&priceTo>0);if(priceFrom!=null&&priceTo!=null&&parseInt(priceFrom)>parseInt(priceTo)){searchErrorObserver.fire();$("#price-range-vaidation").fadeIn("def");return false}if(hasPriceFrom){prices+="/minPrice/"+priceFrom}if(hasPriceTo){prices+="/maxPrice/"+priceTo}if(hasPriceFrom||hasPriceTo){prices+="/currency/"+brand.baseCurrency}if(searchType!="keyword"){ha.util.datePickControl.checkStart("startDateInput","endDateInput")}var errorMsg="";var startDate=ha.site.searchform.dateParam($("#startDateInput",formObj),"arrival");var endDate=ha.site.searchform.dateParam($("#endDateInput",formObj),"departure");if((startDate==""&&endDate!="")||(startDate!=""&&endDate=="")||(searchType=="availability"&&startDate==""&&endDate=="")){errorMsg+=ha.strings.bothDatesRequiredMessage}var url="";if(errorMsg!=""){alert(errorMsg)}else{if(searchType=="availability"&&$("body.search-page.dynamic").length>0){urlData.start=startDate;urlData.end=endDate;ha.ui.search.update(url,false)}else{url+="/search";if(refinements!=""){url+="/refined"}url+=keywords;url+=refinements;url+=prices;url+=startDate;url+=endDate;window.location=url}}},buildUrl:function(url,startDate,endDate){if(url.indexOf("/arrival:")>-1&&url.indexOf("/departure:")>-1){var s,tmp;var tokens=url.split("/arrival:");var urlEnd=tokens[1].substring(tokens[1].indexOf("/"),tokens[1].length);tmp=tokens[0]+startDate+urlEnd;tokens=tmp.split("/departure:");urlEnd="";if(tokens[1].indexOf("/")>-1){urlEnd=tokens[1].substring(tokens[1].indexOf("/"),tokens[1].length)}s=tokens[0]+endDate+urlEnd;return s}else{return url+startDate+endDate}},dateParam:function(o,s){return ha.site.searchform.dateParamFormat($(o).val(),s)},dateParamFormat:function(val,s){if((typeof val=="undefined")||(ha.site.searchform.delim(val)=="")||(val.indexOf("/")==-1)){return""}else{if(val!=brand.dateInputHelpText){if(brand.dateInputHelpText=="mm/dd/yyyy"){var parts=val.split("/");return"/"+s+":"+parts[2]+"-"+parts[0]+"-"+parts[1]}return"/"+s+":"+val.split("/").reverse().join("-")}}return""},delim:function(s){if(s.indexOf("/")==-1){if(s.indexOf("-")>-1){s=s.replace(/-/g,"/")}else{if(s.indexOf(".")>-1){s=s.replace(/\./g,"/")}else{s=""}}}return s}};ha.site.tips={init:function(){$("a.vote-button").each(function(){$(this).click(function(){ha.site.tips.vote($(this))})})},vote:function(el){var tip=el.parents("div.tip");tip.addClass("loading");el.addClass("vote-button-off");el.removeClass("vote-button");$.get("/ajax/attraction/vote",{attractionId:tip.attr("id")},function(b){if(b=="true"){el.unbind("click");var count_el=$("#"+tip.attr("id")+" .vote-count");var count=count_el.text();count_el.text(++count)}else{el.removeClass("vote-button-off");el.addClass("vote-button")}tip.removeClass("loading")})}};var fadeCount=0;var layerCount=1;ha.page.home={init:function(){ha.util.initToggles();$("#map_home").click(function(){ha.util.resetSearch()});if(heroTotal>1){ha.page.home.fade(true)}},fade:function(init){var timeout,duration;var fadeTimer=1500;var layer=$("#layer"+layerCount);if(init||ha.page.home.faded()){$(layer).fadeIn(fadeTimer);fadeCount++;duration=8000}else{$(layer).fadeOut(fadeTimer);layerCount++;if(layerCount==$(".fade-layer").length+1){layerCount=1}fadeCount=0;duration=10}timeout=setTimeout(ha.page.home.fade,duration)},faded:function(){return(fadeCount%2)?false:true}};ha.page.search={init:function(){$.cookie("newSort",null);$("#sortingSelect").change(function(){ha.page.search.onSortChange()});if($("#fullAdsFirst")){$("#fullAdsFirst").change(function(){ha.page.search.onFullAdsFirstChange()})}ha.page.search.setOmnitureEvents();ha.util.initToggles();ha.page.search.initCollapsableRegions();ha.page.search.initPriceToggle();ha.page.search.initReviewsRefinement();ha.page.search.initAttractions();ha.seo.showSeoText()},onSortChange:function(){select=document.getElementById("sortingSelect");destination=select[select.selectedIndex].value;if(destination){if($.cookie("orderByOffer")!=null){$.cookie("orderByOffer",null,{path:"/"})}$.cookie("orderBy",destination,{path:"/"});$.cookie("searchType","newsort",{expires:1,path:"/"});ha.page.search.doSort()}},onFullAdsFirstChange:function(){checkbox=document.getElementById("fullAdsFirst");$.cookie("fullAdsFirst",null,{path:"/"});$.cookie("fullAdsFirst",checkbox.checked,{path:"/"});ha.page.search.doSort()},doSetPageSize:function(pageSizeSelect){var newPageSize=Number(pageSizeSelect.options[pageSizeSelect.selectedIndex].text);$.cookie("pageSize",newPageSize,{expires:7,path:"/"});ha.page.search.doSort()},doSort:function(){$.cookie("newSort",1);var pageUrl=location.href;pageUrl=pageUrl.split("#main")[0];window.location=pageUrl},setOmnitureEvents:function(){$("#sidebarContent ul.criteria ul.criteria li").bind("click",function(event){$.cookie("searchType","refinement:"+$(this).attr("id"),{expires:1,path:"/"})})},initPriceToggle:function(){var priceValues=($("#priceFrom.input").val()+$("#priceTo.input").val());if(priceValues>0){$("#price-range .action").addClass("open");$("#price-range .content").removeClass("hidden");$("#findByDateButton").insertAfter("#price-range-fields")}$("#price-range .action").bind("click",function(){if($(this).hasClass("open")){$("#findByDateButton").insertAfter("#price-range-fields");$("#priceFrom").focus()}else{$("#findByDateButton").insertAfter("#findByDateForm");$("#price-range-vaidation").addClass("hidden").css("display","");$("#price-range-fields input").val("")}})},initCollapsableRegions:function(){$("body.consolidated-region ul.criteria li ul.region > li").each(function(){if($(this).find("ul.children").size()>0){$(this).addClass("parent");$(this).click(function(event){var target=$(event.target);if(target.attr("tagName")=="A"){return true}if(target.hasClass("parent")){target.toggleClass("open")}})}})},initReviewsRefinement:function(){$("input[name=review_count_refinement]").change(function(){document.location=$(this).val()})},initAttractions:function(){$("#attractions-lnk").click(function(){$.cookie("ha-search-url",document.location,{path:"/"})})}};ha.page.landing={init:function(){if($("#mapLink").length>0){$("#mapLink").click(function(){ha.page.landing.showMap()})}else{if($("#map").length>0){$("#map").css("display","block")}}$(".zero-features a.headerLink").click(function(){return false});ha.page.landing.seoCoulmn();ha.seo.showSeoText()},showMap:function showMap(){if($("#mapTxt").html()==ha.strings.viewMapMsg){$("#mapTxt").html(ha.strings.closeMapMsg);$("#map").css({display:"block",backgroundColor:"#fff",borderColor:"#fff",textAlign:"center"});$("#regionMapImage").css({margin:"10px"})}else{$("#map").css({display:"none"});$("#mapTxt").html(ha.strings.viewMapMsg)}},seoCoulmn:function(){$(document).ready(function(){var h=$("#searchText").height();if(h>=300){$("#searchText").addClass("closed-seo");$("#fade span").click(function(){$("#searchText").removeClass("closed-seo")});$("#hideSeo").click(function(){$("#searchText").addClass("closed-seo")})}else{$("#hideSeo").css("display","none")}})}};var advRanges={minPrice:"",maxPrice:"",minBedrooms:"",minBathrooms:"",minSleeps:"",maxSleeps:""};ha.page.advsearch={init:function(){$("#refinementsContent0, #refinementsContent1, #refinementsContent2").hide();if($("#keywords").val()){document.searchForm.keywords.focus()}searchErrorObserver.subscribe(function(){$("html,body").animate({scrollTop:$("#price-range-fields").offset().top},500)});ha.util.initToggles();ha.page.advsearch.refinement("bedrooms");ha.page.advsearch.refinement("bathrooms");ha.page.advsearch.refinement("sleeps");ha.page.advsearch.refinement("priceFrom");ha.page.advsearch.refinement("priceTo");$("#bedrooms").change(function(){ha.page.advsearch.refinement("bedrooms")});$("#bathrooms").change(function(){ha.page.advsearch.refinement("bathrooms")});$("#sleeps").change(function(){ha.page.advsearch.refinement("sleeps")});$("#priceFrom").change(function(){ha.page.advsearch.refinement("priceFrom")});$("#priceTo").change(function(){ha.page.advsearch.refinement("priceTo")})},refinement:function(id){if($("#"+id).length>0){var i=$("#"+id).attr("selectedIndex");var val=$("#"+id).val().replace("*","");if(val.indexOf(":")>-1){val=val.split(":")[1]}if(val.indexOf("-")==-1){val=ha.page.advsearch.digit(val)}if(id=="sleeps"){if(val.indexOf("-")>-1){var minMax=val.split("-");advRanges.minSleeps=ha.page.advsearch.digit(minMax[0]);advRanges.maxSleeps=ha.page.advsearch.digit(minMax[1])}else{if(i>0){advRanges.minSleeps=val}else{advRanges.minSleeps="";advRanges.maxSleeps=""}}}else{if(id=="priceFrom"){if(i>0){advRanges.minPrice=val}else{advRanges.minPrice=""}}else{if(id=="priceTo"){if(i>0&&(i+1)!=$("#"+id+" option").length){advRanges.maxPrice=val}else{advRanges.maxPrice=""}}else{if(id=="bathrooms"){if(i>1){advRanges.minBathrooms=val}else{advRanges.minBathrooms=""}}else{if(id=="bedrooms"){if(i>0){advRanges.minBedrooms=val}else{advRanges.minBedrooms=""}}}}}}ha.page.advsearch.refinementCookie()}},refinementCookie:function(){ha.util.resetSearch();var cookieString="";if(advRanges.minPrice!=""){cookieString+="/minPrice/"+advRanges.minPrice}if(advRanges.maxPrice!=""){cookieString+="/maxPrice/"+advRanges.maxPrice}if(advRanges.minBedrooms!=""){cookieString+="/minBedrooms/"+advRanges.minBedrooms}if(advRanges.minBathrooms!=""){cookieString+="/minBathrooms/"+advRanges.minBathrooms}if(advRanges.minSleeps!=""){cookieString+="/minSleeps/"+advRanges.minSleeps}if(advRanges.maxSleeps!=""){cookieString+="/maxSleeps/"+advRanges.maxSleeps}if(cookieString!=""){cookieString+="/clear/1";cookieString=cookieString.substring(1,cookieString.length);$.cookie("HomeAwaySearch",cookieString,{path:"/"})}},digit:function(s){var digit="";for(i=0;i<s.length;i++){var c=s.charAt(i);if((c>="0")&&(c<="9")){digit+=c}}return digit}};ha.reviews={voteHelpful:function(reviewId,helpful){if(ha.page.property.notVoted(reviewId)){$.ajax({type:"GET",url:"/vacation-rental/reviews/vote",data:({helpful:helpful,reviewId:reviewId}),dataType:"xml",success:function(data){helpful=$(data).find("helpful").text();total=$(data).find("total").text();ha.page.property.updateVotes(reviewId,helpful,total,true)},error:function(xhr,err,e){alert("Error: "+err)}})}}};ha.page.property={init:function(){$.cookie("ip_similar",null,{path:"/"});$.cookie("qp_featured",null,{path:"/"});ha.ui.modalbox.init();ha.site.tips.init();if(!ha.settings.dynamicInquiryOn){ha.ajax.inquiry.init()}if(!ha.settings.dynamicPropertyPageOn){ha.util.initToggles()}else{ha.page.property.initNavBar()}ha.page.property.initInquired();if(window.ie6){image=$("#regionMapImage");if(image){imageSourceUrl=image.srcsure;image.src="";image.src=imageSourceUrl}}},initNavBar:function(){var anchors=new Array("photos","location","rates","amenities");for(var i=0;i<anchors.length;i++){if($("#"+anchors[i]+"-bar").length==0||$("#"+anchors[i]+"-bar").css("display")=="none"){$("."+anchors[i]+"-link").css("display","none")}}},initInquired:function(){if($("a#inquired").length>0){$("a#inquired").hover(function(e){var offset=$("#inq-icon").offset();var isSafari=(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);var posTop=338;var posLft=703;if($("#pdp-container").length>0){posTop=428;posLft=625}var topPos=offset.top-posTop;if(isSafari){topPos=topPos-15}$("#inquired-msg").css({top:topPos,left:posLft}).fadeIn(200)},function(){$("#inquired-msg").fadeOut(100)})}}};ha.page.writeReview={init:function(){$("#body").keyup(ha.util.limiter);if($("#body").val()==""){$("#remainder").text($("#body").attr("maxlength"))}else{$("#body").change(ha.util.limiter).change()}$("#ratings label").click(function(){$("#ratings label").removeClass("checked");backgroundPositon=$(this).attr("for").substr($(this).attr("for").length-1)*71;$("#ratings").css("background-position","0 -"+backgroundPositon+"px");$("#"+$(this).attr("for")).attr("checked","checked");$(this).addClass("checked")});$("#ratings label input[checked]").parent().triggerHandler("click")}};ha.page.attraction={init:function(){$("a.set-page").click(function(e){var pageNum="1";var url=location.href;if(url.indexOf("/page:")>-1){pageNum=url.split("/page:")[1]}$.cookie("atrcnPage",pageNum,{path:"/"})})}};ha.page.inquiry={init:function(){$("a.prop-details-btn").click(function(e){$.cookie("ip_similar","true",{path:"/"})})}};$(document).ready(function(){ha.site.searchform.init();$.cookie("searchType",null,{path:"/"});ha.util.initPopupUrls();if($("body.homePage").length>0){ha.page.home.init()}else{if($("body.search-page.static").length>0){ha.page.search.init()}else{if($("body.landing").length>0){ha.page.landing.init()}else{if($("body.adv-search").length>0){ha.page.advsearch.init()}else{if($("body.property").length>0){ha.page.property.init()}else{if($("body.attractions.review-add").length>0||$("body.attractions.review-write").length>0||$("body.reviews-write").length>0||$("body.review-response-write").length>0||$("body.report-abuse").length>0){ha.page.writeReview.init()}else{if($("body.attractions.overview").length>0){ha.util.partialBox(200,800)}else{if($("body.inquiry-success").length>0){ha.page.inquiry.init()}}}}}}}}if($("#attraction-listings").length>0){ha.page.attraction.init()}$("iframe[rel]").each(function(){$(this).attr("src",$(this).attr("rel"))})});
