function Autocomplete(t,e,s,i,o){function n(t,e){return e.contains(t)}if(this.field=document.getElementById(t),this.wrapper=document.getElementById(e)||document.querySelector(e),this.full=s,this.hideImages=!!o,i)this.position=i;else{const t=e.match(/\d$/);this.position=t?t[0]:""}this.MAKER_ID=0,this.PHONE_ID=1,this.PHONE_NAME=2,this.SEARCH_STR=3,this.THUMB=4,this.NAME_OVERRIDE=5;const h=37,a=39,l=38,c=40,r=27,p=13;Autocomplete.prototype.listURL=AUTOCOMPLETE_LIST_URL,AUTOCOMPLETE_GLOBAL_DATA[this.globalDataName]={},this.div=$gsm.tag("div",{class:"autocomplete autocomplete-search autocomplete-small autocomplete-hide"},"",this.wrapper),this.parent=this.div,this.position&&this.div.classList.add("autocomplete-compare"),this.reviewsDiv=$gsm.tag("div",{class:"reviews-results float-left"},"",this.div),$gsm.tag("span",{class:"autocomplete-desc"},"Reviews",this.reviewsDiv),this.reviewsList=$gsm.tag("ul",{},"",this.reviewsDiv);const d=$gsm.tag("li",{class:"permanent"},"",this.reviewsList);this.reviewsMore=$gsm.tag("a",{class:"more-news-link more-news-link-small",href:"#"},"More review results",d),this.phonesDiv=$gsm.tag("div",{class:"phone-results"},"",this.div),this.phoneLabel=$gsm.tag("span",{class:"autocomplete-desc"},"Last visited",this.phonesDiv),this.phonesList=$gsm.tag("ul",{class:"autocomplete-last-searched"},"",this.phonesDiv),this.full&&(this.phonesMoreLi=$gsm.tag("li",{class:"permanent",style:"display: none;"},"",this.phonesList),this.phonesMore=$gsm.tag("a",{class:"more-news-link more-news-link-small",href:"#"},"More device results",this.phonesMoreLi)),this.newsDiv=$gsm.tag("div",{class:"news-results float-left"},"",this.div),$gsm.tag("span",{class:"autocomplete-desc"},"News",this.newsDiv),this.newsList=$gsm.tag("ul",{},"",this.newsDiv);const u=$gsm.tag("li",{class:"permanent"},"",this.newsList);this.newsMore=$gsm.tag("a",{class:"more-news-link more-news-link-small",href:"#"},"More news results",u);const m=this.field.parentNode;this.position||(this.searchButtons=$gsm.tag("div",{class:"search-buttons"},"",m),this.goButton=$gsm.tag("a",{class:"go",href:"#"},"Go",this.searchButtons),this.advancedButton=$gsm.tag("a",{class:"advanced",href:"search.php3"},"Advanced",this.searchButtons)),i||(this.quickSearchButton=document.querySelector("#quick-search-button")),this.loadRecentPhones(),$gsm.addEventListener(document,"click",function(t){n(t.target,this.parent)||this.hide()}.bind(this),!0),$gsm.addEventListener(document,"touchend",function(t){n(t.target,this.parent)||this.div.classList.contains("autocomplete-hide")||this.hide()}.bind(this),!0),this.field.onclick=function(){this.list?this.searchPhones():this.loadList(),this.searchButtons&&(this.searchButtons.style.display="initial"),this.position||(this.quickSearchButton.style.display="none")}.bind(this),this.field.onkeyup=function(t){const e=this.field.value,s=this.div.querySelector(".autocomplete-selected");if(s&&s.classList.remove("autocomplete-selected"),t.which!=c)if(t.which!=l){if(t.which==h||t.which==a){if(!this.full)return;if(!s)return;if(0==e.length)return void s.classList.add("autocomplete-selected");const i=[this.reviewsList,this.phonesList,this.newsList],o=s.closest("ul");let n=0;for(;n=1?(this.searchPhones(),this.searchNewsAndReviews()):this.showRecentPhones():this.hide()}else{if(s){let t=s.parentNode.previousSibling;t||(t=s.parentNode.parentNode.lastChild),t.firstChild.classList.add("autocomplete-selected"),t.firstChild.scrollIntoViewIfNeeded()}else this.phonesMore?this.phonesMore.classList.add("autocomplete-selected"):s.parentNode.parentNode.lastChild.classList("autocomplete-selected");t.preventDefault()}else{if(s){let t=s.parentNode.nextSibling;t||(t=s.closest("ul").firstChild),t.firstChild.classList.add("autocomplete-selected"),t.scrollIntoViewIfNeeded()}else this.phonesList.firstChild&&(this.phonesList.firstChild.firstChild.classList.add("autocomplete-selected"),this.phonesList.firstChild.scrollIntoViewIfNeeded());t.preventDefault()}}.bind(this),this.field.onkeydown=function(t){const e=this.div.querySelector(".autocomplete-selected");if(t.which==p){if(e)return t.preventDefault(),t.stopPropagation(),"#"==e.getAttribute("href")?void e.onclick(t):void(window.location=e.href);if(this.ignoreEnterForSearch||this.field.lengthe.length;){if(i.classList.contains("permanent")){i=i.nextElementSibling;continue}const t=i.nextElementSibling;i.remove(),i=t}for(;s=AUTOCOMPLETE_MAX_LINES)break}else if(a.length>=AUTOCOMPLETE_MAX_SCROLL_LINES){l=!0;break}}this.phoneLabel.innerHTML=this.full?"Devices":(l?"More than ":"")+a.length+" devices found",this.setList(this.phonesList,a)},Autocomplete.prototype.searchNewsAndReviews=function(){if(!this.full)return;this.setList(this.newsList,[]),this.setList(this.reviewsList,[]);const t=this.field.value,e=NEWS_REVIEWS_URL+"?sSearch="+encodeURIComponent(t);t.length=1&&$gsm.xhr("GET",e,function(t){0!=this.field.value.length&&(this.div.classList.add("autocomplete-large"),this.div.classList.remove("autocomplete-small"),t.news.splice(AUTOCOMPLETE_MAX_LINES),t.reviews.splice(AUTOCOMPLETE_MAX_LINES),this.setList(this.newsList,t.news),this.setList(this.reviewsList,t.reviews))}.bind(this))}.bind(this),AUTOCOMPLETE_NEWS_REVIEWS_TIMEOUT))},Autocomplete.prototype.showRecentPhones=function(t){this.loadRecentPhones();const e=this._getGlobalData().recent,s=[];for(let i=0;i