$(window).addEvent("domready",load);var actb;var timerId;var isBusy;var cache=new Object();var mouseOverItem;var selectedItem;var postUrl;var autoCompleteActive=false;function getSearchBoxForm(){return document.forms.searchbox||document.forms.main}function load(){actb=new AutoCompleteTextBox("txtSearch","suggest","suggestout");postUrl=getSearchBoxForm().action;$(getSearchBoxForm()).addEvent("submit",function(A){actb.HideSuggestions();window.clearTimeout(timerId);return true});$("txtSearch").addEvent("click",function(A){ClearDefaultSearchText()})}function AutoCompleteTextBox(A,H,G,F){var E=this;var B=$(A);var C=$(H);var D=$(G);this.TextBox=B;this.Div=C;if(typeof (formSubmitpath)!="undefined"){this.DefaultFormAction=getSearchBoxForm().action}if($("txtSearch").name!="hotels"){this.DefaultFormAction="Hotels.aspx"}if($(D)){D.style.left=B.getCoordinates().left+"px";D.style.top=(B.getCoordinates().bottom-1)+"px"}if($("switch")){D.style.top=(B.getCoordinates().bottom+34)+"px"}B.AutoCompleteTextBox=this;B.onkeyup=AutoCompleteTextBox.prototype.OnKeyUp;B.onkeydown=AutoCompleteTextBox.prototype.OnKeyDown;if(A=="txtSearch"){B.onblur=CustomOnBlur}else{B.onblur=AutoCompleteTextBox.prototype.OnBlur}B.onfocus=AutoCompleteTextBox.prototype.OnFocus}function CustomOnBlur(){ResetDefaultSearchText();this.AutoCompleteTextBox.HideSuggestions();autoCompleteActive=false}AutoCompleteTextBox.prototype.OnBlur=function(){this.AutoCompleteTextBox.HideSuggestions();autoCompleteActive=false};AutoCompleteTextBox.prototype.OnFocus=function(){autoCompleteActive=true;if(this.AutoCompleteTextBox.Div.childNodes.length>0){this.AutoCompleteTextBox.Div.style.display="block";if(Browser.Engine.trident4){this.AutoCompleteTextBox.DropdownStyles("none")}}ClearDefaultSearchText()};AutoCompleteTextBox.prototype.OnKeyDown=function(A){if(!A){A=window.event}var B=A.keyCode;if(B==13){if(actb.Div.style.display=="block"){if(selectedItem!=null){SetAutoCompleteClickedCookie("true")}return false}else{$("search").click();this.cancelBubble=true;return false}}SetAutoCompleteClickedCookie("false");if(B==9){if(selectedItem!=null){AutoCompleteTextBox.prototype.MouseDown(selectedItem)}actb.HideSuggestions();autoCompleteActive=false}};AutoCompleteTextBox.prototype.OnKeyUp=function(B){getSearchBoxForm().action=actb.DefaultFormAction+getSpecialOfferParams();if(!B){B=window.event}var C=B.keyCode;if(C==13&&selectedItem!=null){AutoCompleteTextBox.prototype.MouseDown(selectedItem)}if(C==13||C==27){actb.HideSuggestions();return false}if(C==8||C==46){}else{if(C==40){divs=actb.Div.getElementsByTagName("div");index=mouseOverItem.index+1;if(index==divs.length){index=0}divs[index].onmousemove();return }else{if(C==38){divs=actb.Div.getElementsByTagName("div");index=mouseOverItem.index-1;if(index<0){index=divs.length-1}divs[index].onmousemove();return }else{if(C<32||(C>=33&&C<=46)){return }}}}actb.HideSuggestions();var A=actb.TextBox.value;if(A.length>0&&A!=oldValue){if(!cache[actb.TextBox.value.toLowerCase()]){window.clearTimeout(timerId);timerId=window.setTimeout("DoCallBack();",300)}else{actb.CreateList(cache[actb.TextBox.value.toLowerCase()])}}else{actb.HideSuggestions()}};var oldValue="";function DoCallBack(){if(oldValue!=actb.TextBox.value){var A;if(actb.TextBox.name=="hotels"){A="AutoComplete/GetHotels/"+encodeURI(actb.TextBox.value.toLowerCase())+".mvc"}else{A="AutoComplete/Index/"+encodeURI(actb.TextBox.value.toLowerCase())+".mvc"}new Request.JSON({url:A,onComplete:XHR_Complete}).send();oldValue=actb.TextBox.value}}function XHR_Complete(A){cache[A.SearchTerm.toLowerCase()]=A;actb.CreateList(A)}AutoCompleteTextBox.prototype.DropdownStyles=function(A){if($$("#ddlSort select").length>0){$$("#ddlSort select")[0].style.display=A}$("ddlDate").style.display=A;$("ddlNights").style.display=A;$("ddlRoomType").style.display=A};AutoCompleteTextBox.prototype.CreateList=function(C){$("suggestout").style.top=$("txtSearch").getCoordinates().bottom+"px";if(autoCompleteActive==true){if(Browser.Engine.trident4){this.DropdownStyles("none")}while(this.Div.childNodes.length>0){this.Div.removeChild(this.Div.firstChild)}var B;var E=parseInt(C.Results.length);if(E>0){for(B=0;B<E;B++){var A=document.createElement("div");A.index=B;this.Div.appendChild(A);try{if(isSpecialOffersPage()||actb.TextBox.name=="hotels"){A.innerHTML="<span>"+C.Results[B].Text+"</span>"}else{A.innerHTML="<b>"+C.Results[B].Count+" "+(C.Results[B].Count!=1?autoCompleteHotels:autoCompleteHotel)+"</b><span>"+C.Results[B].Text+"</span>"}}catch(D){alert(D);return }A.onmousemove=AutoCompleteTextBox.prototype.Div_MouseOver;A.onmousedown=AutoCompleteTextBox.prototype.Div_MouseDown;A.AutoCompleteTextBox=this;A.data=C.Results[B];if(B==E-1){mouseOverItem=A}}this.Div.style.display="block"}else{actb.HideSuggestions()}}else{actb.HideSuggestions()}};AutoCompleteTextBox.prototype.Div_MouseOver=function(){AutoCompleteTextBox.prototype.MouseOver(this)};AutoCompleteTextBox.prototype.Div_MouseDown=function(){AutoCompleteTextBox.prototype.MouseDown(this)};function getSpecialOfferParams(){if(window.location.href.indexOf("special-offers")!=-1){return"?q=10_special-offers"}else{return""}}function isSpecialOffersPage(){return window.location.href.indexOf("special-offers")!=-1}AutoCompleteTextBox.prototype.MouseDown=function(B){B.AutoCompleteTextBox.TextBox.value=B.data.Text;SetAutoCompleteClickedCookie("true");if(actb.TextBox.name=="hotels"){$("hotelId").value=(B.data.HotelId);getSearchBoxForm().action="HotelAwards/Submit.mvc"}else{var A=B.data.Url+".aspx"+getSpecialOfferParams();if(typeof (formSubmitpath)!="undefined"){A=formSubmitpath+A}}getSearchBoxForm().action=A};AutoCompleteTextBox.prototype.MouseOver=function(A){mouseOverItem.className="";A.className="hover";mouseOverItem=A;selectedItem=A};AutoCompleteTextBox.prototype.HideSuggestions=function(){selectedItem=null;this.Div.style.display="none";if(Browser.Engine.trident4){this.DropdownStyles("")}};function ResetDefaultSearchText(){if(actb.TextBox.value==""){actb.TextBox.value=townpostcodeattraction}}function ClearDefaultSearchText(){if(actb.TextBox.value==townpostcodeattraction){actb.TextBox.value=""}}function SetAutoCompleteClickedCookie(A){document.cookie="autocomplete="+A+";path=/;"};