jQuery.fn.addSearchLocationEvent=function(){var c;var b;var g;var f=this.find("input[name=locationIdentifier]",this);var d=this.find("input[name=useLocationIdentifier]",this);var h=this.find("input[name=searchLocation]",this);var i=this;var a=function(){if(h[0]){if(jQuery.trim(h.val()).length<2){alert("Please enter an area, postcode or train station.");return true}else{if(!jQuery.trim(h.val()).match(new RegExp("([a-zA-Z0-9])*([a-zA-Z0-9])([a-zA-Z0-9])*"))){alert("Please enter an area, postcode or train station.");return true}else{if(jQuery.trim(h.val()).length>200){alert("Please enter an area, postcode or train station.");return true}}}}return false};var e=function(){if(a()){return false}if(h.val()===b){f.val(c);d.val("true")}else{d.val("false");var k=rightmove_autocomplete_getMatchingRegionIds(h.val());if(k.length>0){$("<input />").attr("type","hidden").attr("name","topMatchPersistRegIds").attr("value",k.join(",")).appendTo(i)}var j=RIGHTMOVE.UTIL.typeAheadPersister.getLatestItemFromHistory();if(j!==null){$("<input />").attr("type","hidden").attr("name","lastPersistLocId").attr("value",j.locationIdentifier).appendTo(i)}}return true};this.submit(function(){return e()});h.result(function(j,k,l){c=l;b=k})};function rightmove_autocomplete_replaceWeirdCharsWithSpace(a){a=a.replace(/'/g,"");a=a.replace(/[^A-Z0-9&]/g," ");return a.replace(/\s+/g," ")+""}function rightmove_autocomplete_convertTerm(a){a=a.replace(/&/g,"AND")+"";a=a.replace(/ ST\./g," SAINT ")+"";a=a.replace(/ ST /g," SAINT ")+"";a=a.replace(/^ST\./g,"SAINT ")+"";a=a.replace(/^ST /g,"SAINT ")+"";a=rightmove_autocomplete_replaceWeirdCharsWithSpace(a);return a}function rightmove_autocomplete_filterOutNonMatchingLocations(a,b){return jQuery.grep(a,function(e,c){if(!e.displayName){return false}var d=rightmove_autocomplete_convertTerm(e.displayName.toUpperCase());return(d.indexOf(b)===0)})}function rightmove_autocomplete_getMatchingRegionIds(b){var d="REGION^".length;var a=rightmove_autocomplete_convertTerm(b.toUpperCase());var c=RIGHTMOVE.UTIL.typeAheadPersister.getHistory(a);c=rightmove_autocomplete_filterOutNonMatchingLocations(c,a);var e=jQuery.grep(c,function(g,f){return g.locationIdentifier&&g.locationIdentifier.match(/^REGION/)});return jQuery.map(e,function(g,f){return g.locationIdentifier.substring(d,g.locationIdentifier.length)})}(function($){function isTermStartWithOutcode(term){return(term.length)<=2||term.match(/^[a-zA-Z]{1,2}[0-9].*$/)}function getOptions(){return{itemLengthLimit:35,delay:1,width:300,minChars:1,max:10,scroll:false,selectFirst:false,matchSubset:false,extraParams:false,mustMatch:false,cacheLength:100,formatItem:function(data,counter,max,value,term,options){var termToMatch=rightmove_autocomplete_convertTerm(term.toUpperCase());var dataToMatch=rightmove_autocomplete_convertTerm(data.toUpperCase());var itemSizeLimit=options.itemLengthLimit;if(dataToMatch.indexOf(termToMatch)===0){if(data.length>itemSizeLimit){return data.substr(0,itemSizeLimit)+"..."}return data}return false},formatMatch:function(rawValue,counter,length){return false},parse:function parse(data,originalTerm,myInput){var parsed=[];var evaluatedData=eval(data);if(evaluatedData){var locations=evaluatedData.typeAheadLocations;var i;var j;var location;var myclientpersister=RIGHTMOVE.UTIL.typeAheadPersister;var termToMatch=rightmove_autocomplete_convertTerm(originalTerm.toUpperCase());var arr=myclientpersister.getHistory(originalTerm);arr=rightmove_autocomplete_filterOutNonMatchingLocations(arr,termToMatch);for(i=0;i<arr.length;i++){arr[i].historical=true}if(locations){locations=rightmove_autocomplete_filterOutNonMatchingLocations(locations,termToMatch);for(i=0;i<locations.length;i++){location=locations[i];var unique=true;for(j=0;j<arr.length;j++){if(location.locationIdentifier==arr[j].locationIdentifier){unique=false}}if(unique){arr.push(location)}}}locations=arr;if(locations){var lastHistorical=-1;for(i=0;i<locations.length;i++){location=locations[i];if(location){parsed[parsed.length]={data:location.displayName,value:location.locationIdentifier,result:location.displayName,historical:(location.historical===true)};if(location.historical===true){lastHistorical=i}}}if(lastHistorical>-1){parsed[lastHistorical].lastHistorical=true}}else{}}return parsed},highlight:function(value,term){var termToMatch=rightmove_autocomplete_replaceWeirdCharsWithSpace(term.toUpperCase());if(getStOrSaintFromTerm(termToMatch)){termToMatch=getTermSoItMatchesValue(termToMatch,value,getStOrSaintFromTerm)}if(getAndOrSign(termToMatch)){termToMatch=getTermSoItMatchesValue(termToMatch,value,getAndOrSign)}var highlightToLength=getHighlightToLength(value,termToMatch);return"<span class='highlightLetter'>"+value.substr(0,highlightToLength)+"</span>"+value.substr(highlightToLength,value.length)}}}$.fn.extend({rightmoveautocomplete:function(urlOrData,form){var options=getOptions();var isUrl=typeof urlOrData=="string";options=$.extend({},$.Autocompleter.defaults,{url:isUrl?urlOrData:null,data:isUrl?null:urlOrData,delay:isUrl?$.Autocompleter.defaults.delay:10,delay:isUrl?$.Autocompleter.defaults.delay:10,max:options&&!options.scroll?10:150},options);options.highlight=options.highlight||function(value){return value};options.formatMatch=options.formatMatch||options.formatItem;return this.each(function(){autoCompleter=new $.Autocompleter(this,options,form)})},result:function(handler){return this.bind("result",handler)},search:function(handler){return this.trigger("search",[handler])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(options){return this.trigger("setOptions",[options])},unautocomplete:function(){return this.trigger("unautocomplete")}});$.Autocompleter=function(input,options,form){var KEY={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var $input=$(input).attr("autocomplete","off").addClass(options.inputClass);var timeout;var currentValue;var previousValue="";var cache=$.Autocompleter.Cache(options);function getCurrentStatus(){return currentStatus}var hasFocus=0;var lastKeyPressCode;var config={mouseDownOnSelect:false};var select=$.Autocompleter.Select(options,input,selectCurrent,config,form);var blockSubmit;$.browser.opera&&$(input.form).bind("submit.autocomplete",function(){if(blockSubmit){blockSubmit=false;return false}});function selectCurrent(){var selected=select.selected();if(!selected){return false}var v=selected.result;previousValue=v;if(options.multiple){var words=trimWords($input.val());if(words.length>1){v=words.slice(0,words.length-1).join(options.multipleSeparator)+options.multipleSeparator+v}v+=options.multipleSeparator}$input.val(v);hideResultsNow();$input.trigger("result",[selected.data,selected.value]);return true}function onChange(crap,skipPrevCheck){if(lastKeyPressCode==KEY.DEL){select.hide();return}var currentValue=$input.val();if(!skipPrevCheck&&currentValue==previousValue){return}previousValue=currentValue;currentValue=lastWord(currentValue);if(currentValue.length>=options.minChars){$input.addClass(options.loadingClass);if(!options.matchCase){currentValue=currentValue.toLowerCase()}request(currentValue,receiveData,hideResultsNow)}else{stopLoading();select.hide()}}$input.bind(($.browser.opera?"keypress":"keydown")+".autocomplete",function(event){lastKeyPressCode=event.keyCode;switch(event.keyCode){case KEY.UP:event.preventDefault();if(select.visible()){select.prev(currentValue)}else{onChange(0,true)}break;case KEY.DOWN:event.preventDefault();if(select.visible()){select.next(currentValue)}else{onChange(0,true)}break;case KEY.PAGEUP:event.preventDefault();if(select.visible()){select.pageUp(currentValue)}else{onChange(0,true)}break;case KEY.PAGEDOWN:event.preventDefault();if(select.visible()){select.pageDown(currentValue)}else{onChange(0,true)}break;case options.multiple&&$.trim(options.multipleSeparator)==","&&KEY.COMMA:case KEY.TAB:case KEY.RETURN:if(selectCurrent()){event.preventDefault();blockSubmit=true;return false}break;case KEY.ESC:select.hide();break;default:clearTimeout(timeout);timeout=setTimeout(function(){select.resetSelectedCounter();currentValue=$input.val();onChange()},options.delay);break}}).focus(function(){hasFocus++}).blur(function(){hasFocus=0;if(!config.mouseDownOnSelect){hideResults()}}).click(function(){if(hasFocus++>1&&!select.visible()){onChange(0,true)}}).bind("hideAutoComplete",function(){hideResults()}).bind("search",function(){var fn=(arguments.length>1)?arguments[1]:null;function findValueCallback(q,data){var result;if(data&&data.length){for(var i=0;i<data.length;i++){if(data[i].result.toLowerCase()==q.toLowerCase()){result=data[i];break}}}if(typeof fn=="function"){fn(result)}else{$input.trigger("result",result&&[result.data,result.value])}}$.each(trimWords($input.val()),function(i,value){request(value,findValueCallback,findValueCallback)})}).bind("flushCache",function(){cache.flush()}).bind("setOptions",function(){$.extend(options,arguments[1]);if("data" in arguments[1]){cache.populate()}}).bind("unautocomplete",function(){select.unbind();$input.unbind();$(input.form).unbind(".autocomplete")});function trimWords(value){if(!value){return[""]}var words=value.split(options.multipleSeparator);var result=[];$.each(words,function(i,value){if($.trim(value)){result[i]=$.trim(value)}});return result}function lastWord(value){if(!options.multiple){return value}var words=trimWords(value);return words[words.length-1]}function autoFill(q,sValue){if(options.autoFill&&(lastWord($input.val()).toLowerCase()==q.toLowerCase())&&lastKeyPressCode!=KEY.BACKSPACE){$input.val($input.val()+sValue.substring(lastWord(previousValue).length));$.Autocompleter.Selection(input,previousValue.length,previousValue.length+sValue.length)}}function hideResults(){clearTimeout(timeout);timeout=setTimeout(hideResultsNow,200)}function hideResultsNow(){var wasVisible=select.visible();select.hide();clearTimeout(timeout);stopLoading();if(options.mustMatch){$input.search(function(result){if(!result){if(options.multiple){var words=trimWords($input.val()).slice(0,-1);$input.val(words.join(options.multipleSeparator)+(words.length?options.multipleSeparator:""))}else{$input.val("")}}})}if(wasVisible){$.Autocompleter.Selection(input,input.value.length,input.value.length)}}function receiveData(q,data){if(data&&data.length&&hasFocus){stopLoading();select.display(data,q);autoFill(q,data[0].value);select.show()}else{hideResultsNow();select.display(data,q);if(!isTermStartWithOutcode(q)){select.show()}}}function request(originalTerm,success,failure){var term=originalTerm;if(!options.matchCase){term=term.toUpperCase()}term=rightmove_autocomplete_convertTerm(term);if(term!=null&&term.length<1){failure(originalTerm)}var data=cache.load(term);if(data){success(originalTerm,options.parse(data,originalTerm,$input))}else{if((typeof options.url=="string")&&(options.url.length>0)){var extraParams={};$.ajax({mode:"abort",port:"autocomplete"+input.name,dataType:options.dataType,url:options.url,data:$.extend({q:lastWord(term)},extraParams),success:function(data){var parsed=options.parse(data,originalTerm,$input);cache.add(term,data);success(originalTerm,parsed)}})}else{select.emptyList();failure(originalTerm)}}}function stopLoading(){$input.removeClass(options.loadingClass)}};$.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(row){return row[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(value,term){return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};$.Autocompleter.Cache=function(options){var data={};var length=0;function matchSubset(s,sub){if(!options.matchCase){s=s.toLowerCase()}var i=s.indexOf(sub);if(i==-1){return false}return i==0||options.matchContains}function add(q,value){if(length>options.cacheLength){flush()}if(!data[q]){length++}data[q]=value}function populate(){if(!options.data){return false}var stMatchSets={},nullData=0;if(!options.url){options.cacheLength=1}stMatchSets[""]=[];for(var i=0,ol=options.data.length;i<ol;i++){var rawValue=options.data[i];rawValue=(typeof rawValue=="string")?[rawValue]:rawValue;var value=options.formatMatch(rawValue,i+1,options.data.length);if(value===false){continue}var firstChar=value.charAt(0).toLowerCase();if(!stMatchSets[firstChar]){stMatchSets[firstChar]=[]}var row={value:value,data:rawValue,result:options.formatResult&&options.formatResult(rawValue)||value};stMatchSets[firstChar].push(row);if(nullData++<options.max){stMatchSets[""].push(row)}}$.each(stMatchSets,function(i,value){options.cacheLength++;add(i,value)})}setTimeout(populate,25);function flush(){data={};length=0}return{flush:flush,add:add,populate:populate,load:function(q){if(!options.cacheLength||!length){return null}if(data[q]){return data[q]}else{var currentKey=getParentKey(q);var item;while(currentKey.length>=options.minChars){item=data[currentKey];if(item){if(eval(item).isComplete){return item}else{return null}}currentKey=getParentKey(currentKey)}return null}}}};function getAndOrSign(input){var theString=input.toUpperCase();if(theString.indexOf("&")!=-1){return" & "}if(theString.indexOf(" AND ")!=-1){return" AND "}}function getStOrSaintFromTerm(input){var theString=input.toUpperCase();var saintExpressionsTheTermCouldStartWith=["ST. ","ST.","ST ","SAINT.","SAINT "];var saintExpressionsTheTermCouldContain=[" ST. "," ST "," SAINT. "," SAINT "];for(var count=0;count<=saintExpressionsTheTermCouldStartWith.length;count++){if(theString.indexOf(saintExpressionsTheTermCouldStartWith[count])===0){return saintExpressionsTheTermCouldStartWith[count]}}for(count=0;count<=saintExpressionsTheTermCouldContain.length;count++){if(theString.indexOf(saintExpressionsTheTermCouldContain[count])!=-1){return saintExpressionsTheTermCouldContain[count]}}return null}function getHighlightToLength(valueToHighlight,termToMatch){var currentlyMatching=true;var currentTermCharIndex=0;var currentTermChar;var highlightToLength=0;var currentValueToHighlightChar;while(highlightToLength<valueToHighlight.length&&currentTermCharIndex<=termToMatch.length&&currentlyMatching){currentTermChar=termToMatch.charAt(currentTermCharIndex);currentValueToHighlightChar=valueToHighlight.charAt(highlightToLength);if(currentTermChar==currentValueToHighlightChar.toUpperCase()){highlightToLength++;currentTermCharIndex++}else{if(currentTermChar==" "){currentTermCharIndex++;var isCurrentHighlightCharNonAlphaNumeric=true;while(isCurrentHighlightCharNonAlphaNumeric){highlightToLength++;isCurrentHighlightCharNonAlphaNumeric=(/[^A-Z'0-9]/g.test(valueToHighlight.charAt(highlightToLength))&&highlightToLength<=valueToHighlight.length)}}else{currentlyMatching=false}}}return highlightToLength}function getTermSoItMatchesValue(termToMatch,value,replaceFunction){var term=replaceFunction(termToMatch);var data=replaceFunction(value.toUpperCase());if(data!=term){return termToMatch.replace(term,data)}return termToMatch}function getParentKey(key){return key.substr(0,key.length-1)}$.Autocompleter.Select=function(options,input,select,config,form){var CLASSES={ACTIVE:"ac_over"};var listItems,active=-1,data,term="",needsInit=true,element,list,currentlyDisplayedData,mouseMoved=false;function init(){if(!needsInit){return}element=$("<div/>").hide().addClass(options.resultsClass).css("position","absolute").appendTo(document.body);if($.browser.msie&&parseInt($.browser.version)==6){element.append("<iframe></iframe>")}list=$("<ul id='typeAheadResult'  />").appendTo(element).mouseover(function(event){if(mouseMoved&&target(event).nodeName&&target(event).nodeName.toUpperCase()=="LI"){selectItem(event,list)}}).mousemove(function(event){if(!mouseMoved&&target(event).nodeName&&target(event).nodeName.toUpperCase()=="LI"){selectItem(event,list);mouseMoved=true}}).click(function(event){$(target(event)).addClass(CLASSES.ACTIVE);if($(target(event))[0].id=="moreLink"){return true}select();input.focus();return false}).mousedown(function(){config.mouseDownOnSelect=true}).mouseup(function(){config.mouseDownOnSelect=false});if(options.width>0){element.css("width",options.width)}needsInit=false}function selectItem(event,list){active=$("li",list).removeClass(CLASSES.ACTIVE).index(target(event));$(target(event)).addClass(CLASSES.ACTIVE)}function target(event){var element=event.target;while(element&&element.tagName!="LI"){element=element.parentNode}if(!element){return[]}return element}function moveSelect(step,currentValue){var activeItem;listItems.slice(active,active+1).removeClass(CLASSES.ACTIVE);movePosition(step);var textToDisplay;if(active===-1){textToDisplay=currentValue}else{activeItem=listItems.slice(active,active+1).addClass(CLASSES.ACTIVE);textToDisplay=currentlyDisplayedData[active].data}$(input).attr("value",textToDisplay);if(options.scroll){var offset=0;listItems.slice(0,active).each(function(){offset+=this.offsetHeight});if((offset+activeItem[0].offsetHeight-list.scrollTop())>list[0].clientHeight){list.scrollTop(offset+activeItem[0].offsetHeight-list.innerHeight())}else{if(offset<list.scrollTop()){list.scrollTop(offset)}}}}function movePosition(step){active+=step;if(active<-1){active=listItems.size()-1}else{if(active>=listItems.size()){active=-1}}}function limitNumberOfItems(available){return options.max&&options.max<available?options.max:available}function fillList(){mouseMoved=false;list.empty();var max=limitNumberOfItems(data.length);var isEmpty=true;var count;currentlyDisplayedData=new Array();for(count=0;count<max;count++){if(!data[count]){continue}var formatted=options.formatItem(data[count].data,count+1,max,data[count].value,term,options);if(formatted===false){continue}isEmpty=false;var liHtml=$("<li/>").html(options.highlight(formatted,term)).addClass(count%2==0?"ac_even":"ac_odd");if(data[count].historical){liHtml.addClass("ac_hist")}if(data[count].lastHistorical){liHtml.addClass("ac_lasthist")}var li=liHtml.appendTo(list)[0];$.data(li,"ac_data",data[count]);currentlyDisplayedData[currentlyDisplayedData.length]=data[count]}listItems=list.find("li");if(options.selectFirst){listItems.slice(0,1).addClass(CLASSES.ACTIVE);active=0}if(isEmpty){var li=null;if(!isTermStartWithOutcode(term)){li=$("<li class='nomatch'>no matches found</li>").addClass(count%2==0?"ac_even":"ac_odd").appendTo(list)[0];$.data(li,"ac_data",null)}}else{if(count===10){var moreLinkLi=$("<li id ='moreLink'></li>").html("<a class='more' href='#'>More...</a>").addClass(count%2==0?"ac_even":"ac_odd").appendTo(list)[0];$.data(moreLinkLi,"ac_data",null);$("#moreLink").click(function(){return form.submit()})}}if($.fn.bgiframe){list.bgiframe()}}return{display:function(d,q){init();data=d;term=q;fillList()},next:function(currentValue){moveSelect(1,currentValue)},prev:function(currentValue){moveSelect(-1,currentValue)},pageUp:function(currentValue){if(active!=0&&active-8<0){moveSelect(-active,currentValue)}else{moveSelect(-8,currentValue)}},pageDown:function(currentValue){if(active!=listItems.size()-1&&active+8>listItems.size()){moveSelect(listItems.size()-1-active,currentValue)}else{moveSelect(8,currentValue)}},hide:function(){element&&element.hide();listItems&&listItems.removeClass(CLASSES.ACTIVE);active=-1},visible:function(){return element&&element.is(":visible")},current:function(){return this.visible()&&(listItems.filter("."+CLASSES.ACTIVE)[0]||options.selectFirst&&listItems[0])},show:function(){var offset=$(input).offset();element.css({width:typeof options.width=="string"||options.width>0?options.width:$(input).width(),top:offset.top+input.offsetHeight,left:offset.left}).show();if(options.scroll){list.scrollTop(0);list.css({maxHeight:options.scrollHeight,overflow:"auto"});if($.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var listHeight=0;listItems.each(function(){listHeight+=this.offsetHeight});var scrollbarsVisible=listHeight>options.scrollHeight;list.css("height",scrollbarsVisible?options.scrollHeight:listHeight);if(!scrollbarsVisible){listItems.width(list.width()-parseInt(listItems.css("padding-left"))-parseInt(listItems.css("padding-right")))}}}},selected:function(){var selected=listItems&&listItems.filter("."+CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);return selected&&selected.length&&$.data(selected[0],"ac_data")},emptyList:function(){list&&list.empty()},unbind:function(){element&&element.remove()},resetSelectedCounter:function(){active=-1}}};$.Autocompleter.Selection=function(field,start,end){if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.select()}else{if(field.setSelectionRange){field.setSelectionRange(start,end)}else{if(field.selectionStart){field.selectionStart=start;field.selectionEnd=end}}}field.focus()}})(jQuery);