﻿function AutoCompleteControl(minimumprefixlength, autocompleteheight, autocompletewidth, autocompletetextid, progressbarimagepath, autocompletecssclass, rootpath, countrydropdownid, shouldredirecttocitypage, autocompleteholder) {
    if (!document.getElementById) { return; }
    this.AutoCompleteCachedResult = null;
    this.AutoCompleteFilteredResult = null;
    this.PreviousSearchedText = "";
    //this.MinimumPrefixLength = minimumprefixlength;
    this.MinimumPrefixLength = 2;
    this.ShouldAutoCompleteListClear = false;
    this.AutoCompleteProgressBar = null;
    this.AutoCompleteProgressBarImagePath = progressbarimagepath;
    this.AutoCompleteText = document.getElementById(autocompletetextid);
    this.AutoCompleteCssClass = autocompletecssclass;
    this.AutoCompleteListContainer = null;
    this.ShouldUseCachedResult = false;
    this.RootPath = rootpath;
    this.AutoCompleteListHeight = autocompleteheight;
    this.AssociatedCountryDropdown = null;
    this.ShouldUseCountryDropDown = true;
    if (countrydropdownid != "") {
        this.AssociatedCountryDropdown = document.getElementById(countrydropdownid);
    }
    else {
        this.ShouldUseCountryDropDown = false;
    }
    this.AutoCompleteTextWidth = autocompletewidth;
    this.ShouldRedirectToCityPage = shouldredirecttocitypage;
    this.IsListItemSelected = false;
    this.AutoCompleteHolder = document.getElementById(autocompleteholder);
    this.InitAutoComplete();
    this.ServiceLibrary = null;
}
AutoCompleteControl.prototype.InitAutoComplete = function() {
    var oThis = this;
    this.AutoCompleteText.setAttribute("autocomplete", "off");
    this.AutoCompleteText.onkeydown = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.HandleKeyEvent(oEvent);
    };
    this.AutoCompleteText.onkeyup = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.SearchCityCountry(oEvent);
    };
    this.AutoCompleteText.onblur = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.CheckAutoCompleteListToClear(oEvent);
        if (oThis.ShouldUseCountryDropDown == true) {
            if (oThis.AutoCompleteText.value == '') { oThis.AutoCompleteText.value = 'Enter City Name'; }
        }
    };
    this.AutoCompleteText.onkeypress = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.HandleKeyPress(oEvent);
    };
    if (this.ShouldUseCountryDropDown == true) {
        this.AutoCompleteText.onclick = function(oEvent) {
            if (oThis.AutoCompleteText.value == 'Enter City Name') { oThis.AutoCompleteText.value = ''; }
        };
    }
    this.WriteAutoCompleteContainer();
}
AutoCompleteControl.prototype.WriteAutoCompleteContainer = function() {
    var autocompletelist = this.WriteAutoCompleteProgressBar() + "<div id='" + this.AutoCompleteText.id + "AutoCompleteListContainer' class='autocompletelist' ></div>";
    this.AutoCompleteHolder.className = this.AutoCompleteCssClass;
    this.AutoCompleteHolder.innerHTML = autocompletelist;
    this.AutoCompleteListContainer = document.getElementById(this.AutoCompleteText.id + "AutoCompleteListContainer");
    this.AutoCompleteProgressBar = document.getElementById(this.AutoCompleteText.id + "AutoCompleteProgressBar");
    this.AutoCompleteListContainer.style.width = this.AutoCompleteTextWidth + "px";
    this.AutoCompleteProgressBar.style.width = this.AutoCompleteTextWidth + "px";
    var oThis = this;
    this.AutoCompleteListContainer.onmouseover = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.UpdateShouldAutoCompleteListClear('0');
    };
    this.AutoCompleteListContainer.onmouseout = function(oEvent) {
        if (!oEvent) {
            oEvent = window.event;
        }
        oThis.UpdateShouldAutoCompleteListClear('1');
    };
}


AutoCompleteControl.prototype.WriteAutoCompleteProgressBar = function() {
    var progressbarstr = "<div id='" + this.AutoCompleteText.id + "AutoCompleteProgressBar' class='autocompleteprogressbar' ><img alt='' src='" + this.AutoCompleteProgressBarImagePath + "' style='width:" + this.AutoCompleteTextWidth + "px' /></div>";
    return progressbarstr;
}

AutoCompleteControl.prototype.HandleKeyEvent = function(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    var characterCode;
    if (e) { //if which property of event object is supported (NN4)
        if (e.which) {
            e = e
            characterCode = e.which //character code is contained in NN4's which property
        }
        else {
            characterCode = e.keyCode //character code is contained in IE's keyCode property
        }
    }
    else {
        characterCode = e.keyCode //character code is contained in IE's keyCode property
    }

    switch (characterCode) {
        case 13: // enter key
            e.returnValue = false;
            if (e.preventDefault) {
                e.preventDefault();
            }
            var highlighteditem = this.GetHighLightedListItem();
            if (highlighteditem) {
                this.SelectListItem(highlighteditem);
            }
            break;
        case 38: // up arrow
            this.HighLightPrevListItem();
            break;
        case 40: // down arrow
            this.HighLightNextListItem();
            break;
        case 27: // escape key
            this.ClearAutoCompleteList();
            break;
    }
}
AutoCompleteControl.prototype.HandleKeyPress = function(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    var characterCode;
    if (e) { //if which property of event object is supported (NN4)
        if (e.which) {
            e = e
            characterCode = e.which //character code is contained in NN4's which property
        }
        else {
            characterCode = e.keyCode //character code is contained in IE's keyCode property
        }
    }
    else {
        characterCode = e.keyCode //character code is contained in IE's keyCode property
    }

    switch (characterCode) {
        case 13: // enter key
            e.returnValue = false;
            if (e.preventDefault) {
                e.preventDefault();
            }
            break;
    }
}
AutoCompleteControl.prototype.SearchCityCountry = function(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    var characterCode;
    if (e) { //if which property of event object is supported (NN4)
        if (e.which) {
            e = e
            characterCode = e.which //character code is contained in NN4's which property
        }
        else {
            characterCode = e.keyCode //character code is contained in IE's keyCode property
        }
    }
    else {
        characterCode = e.keyCode //character code is contained in IE's keyCode property
    }
    if ((characterCode >= 'a'.charCodeAt() && characterCode <= 'z'.charCodeAt()) || (characterCode >= 'A'.charCodeAt() && characterCode <= 'Z'.charCodeAt()) || (characterCode == 8) || (characterCode == 32) || (characterCode == 46)) {
        this.IsListItemSelected = false;
        if (this.TrimSearchText(targ.value) != "Enter City Name") {
            if (this.TrimSearchText(targ.value) != "" && this.TrimSearchText(targ.value).indexOf(",") == -1) {
                if (this.TrimSearchText(targ.value).length >= this.MinimumPrefixLength) {
                    if (this.PreviousSearchedText != this.TrimSearchText(targ.value).substring(0, this.MinimumPrefixLength)) {
                        this.PreviousSearchedText = this.TrimSearchText(targ.value);
                        this.ShouldUseCachedResult = false;
                        if (this.ServiceLibrary == null) {
                            this.ServiceLibrary = new ServiceLibrary2(this);
                        }
                        var oThis = this;
                        if (this.ShouldUseCountryDropDown == true) {
                            this.ServiceLibrary.AbortRequest();
                            this.ServiceLibrary.SearchCitiesByCountry(this.TrimSearchText(targ.value), this.AssociatedCountryDropdown.value, function(response) {
                                if (response) {
                                    if (response.result) {
                                        if (response.result.Table) {
                                            oThis.ClearAutoCompleteList();
                                            oThis.ShouldUseCachedResult = true;
                                            oThis.AutoCompleteCachedResult = response.result.Table.serverInfo.initialData;
                                            oThis.ParseAutoCompleteResult();
                                            oThis.FilterCashedResult(oThis.TrimSearchText(targ.value));
                                            oThis.DisplayResult();
                                        }
                                    }
                                }
                            });
                        }
                        else {
                            this.ServiceLibrary.AbortRequest();
                            this.ServiceLibrary.SearchCityCountryByKeyword(this.TrimSearchText(targ.value), function(response) {
                                if (response) {
                                    if (response.result) {
                                        if (response.result.Table) {
                                            oThis.ClearAutoCompleteList();
                                            oThis.ShouldUseCachedResult = true;
                                            oThis.AutoCompleteCachedResult = response.result.Table.serverInfo.initialData;
                                            oThis.ParseAutoCompleteResult();
                                            oThis.FilterCashedResult(oThis.TrimSearchText(targ.value));
                                            oThis.DisplayResult();
                                        }
                                    }
                                }
                            });
                        }
                    }
                    else {
                        this.ClearAutoCompleteList();
                        this.FilterCashedResult(this.TrimSearchText(targ.value));
                        this.DisplayResult();
                    }
                }
                else if (this.TrimSearchText(targ.value).length < this.MinimumPrefixLength) {
                    this.ClearAutoCompleteList();
                    this.UpdateProgressBar(false);
                }
            }
            else {
                this.ClearAutoCompleteList();
                this.UpdateProgressBar(false);
            }
        }
    }
}
AutoCompleteControl.prototype.CheckAutoCompleteListToClear = function() {
    if (this.ShouldAutoCompleteListClear) {
        this.ClearAutoCompleteList();
    }
}
AutoCompleteControl.prototype.DisplayResult = function() {
    if (this.TrimSearchText(this.AutoCompleteText.value).length >= this.MinimumPrefixLength) {
        if (this.TrimSearchText(this.AutoCompleteText.value).indexOf(",") == -1) {
            this.ClearAutoCompleteList();
            this.AutoCompleteListContainer.style.height = this.AutoCompleteListHeight + "px";
            var list = "<ul>";
            if (this.ShouldUseCountryDropDown == true) {
                if (this.AssociatedCountryDropdown.value == "-1" || this.AssociatedCountryDropdown.value == "0" || this.AssociatedCountryDropdown.value == "") {
                    list += "<li class='hover'>" + "Please select a country" + "</li>";
                }
                else if (this.AutoCompleteFilteredResult.length == 0) {
                    list += "<li class='hover'>" + "City not found.Please try a different spelling" + "</li>";
                }
                else {
                    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
                        list += "<li class='' id='" + this.AutoCompleteFilteredResult[i]["CityID"] + "'  >" + this.AutoCompleteFilteredResult[i]["Location"] + "</li>";
                    }
                }
            } else {
                if (this.AutoCompleteFilteredResult.length == 0) {
                    list += "<li class='hover'>" + "City not found.Please try a different spelling" + "</li>";
                }
                else {
                    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
                        list += "<li class='' id='" + this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"] + "'  >" + this.AutoCompleteFilteredResult[i]["CityName"] + this.AutoCompleteFilteredResult[i]["CountryName"] + this.AutoCompleteFilteredResult[i]["StateName"] + "</li>";
                    }
                }
            }
            list += "</ul>";
            this.FillAutoCompleteList(list);
            this.HighLightFirstListItem();
        }
    }
}
AutoCompleteControl.prototype.ClearAutoCompleteList = function() {
    this.AutoCompleteListContainer.innerHTML = "";
    this.AutoCompleteListContainer.style.borderBottom = "0px solid #ccc";
    this.AutoCompleteListContainer.style.height = "0px";
    //this.UpdateProgressBar(false);
}
AutoCompleteControl.prototype.FillAutoCompleteList = function(elements) {
    if (this.ShouldUseCachedResult == true) {
        this.AutoCompleteListContainer.innerHTML = elements;
    }
    if (this.AutoCompleteListContainer.scrollHeight > 100) {
        this.AutoCompleteListContainer.style.borderBottom = "1px solid #ccc";
    }
    if (this.AutoCompleteFilteredResult.length > 0) {
        var oThis = this;
        for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
            var listitem = null;
            if (this.ShouldUseCountryDropDown == true) {
                listitem = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"]);
            } else {
                listitem = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"]);
            }
            if (listitem) {
                listitem.onmouseover = function(oEvent) {
                    if (!oEvent) {
                        oEvent = window.event;
                    }
                    oThis.FocusListItem(this);

                };
                listitem.onclick = function(oEvent) {
                    if (!oEvent) {
                        oEvent = window.event;
                    }
                    oThis.SelectListItem(this);
                };
            }
        }
    }
}
AutoCompleteControl.prototype.FocusListItem = function(item) {
    this.BlurAllListItem();
    if (item) {
        item.className = 'hover';
    }
}
AutoCompleteControl.prototype.BlurListItem = function(item) {
    if (item) {
        item.className = '';
    }
}
AutoCompleteControl.prototype.SelectListItem = function(item) {
    if (this.ShouldUseCountryDropDown == true) {
        this.AutoCompleteText.value = item.innerHTML;
        this.IsListItemSelected = true;
        if (this.ShouldRedirectToCityPage == true) {
            var cityid = item.id;
            var url = "";
            var txt = item.innerHTML.split(",");
            var cityname = "";
            var namearr = txt[0].split(" ");
            for (i = 0; i < namearr.length; i++) {
                if (i == 0) {
                    cityname += namearr[i];
                }
                else {
                    cityname += "-" + namearr[i];
                }
            }
            url = cityname + "-" + cityid + "/Travel-Guide.aspx";
            var url = this.RootPath + url;
            this.ClearAutoCompleteList();
            location.href = url;
        }
        else {
            this.ClearAutoCompleteList();
        }
    }
    else {
        this.AutoCompleteText.value = item.innerHTML;
        var cityid = item.id.split('~')[0];
        var countryid = item.id.split('~')[1];
        var url = "";
        if (Number(cityid) == 0) {
            var countryname = "";
            var namearr = item.innerHTML.split(" ");
            for (i = 0; i < namearr.length; i++) {
                if (i == 0) {
                    countryname += namearr[i];
                }
                else {
                    countryname += "-" + namearr[i];
                }
            }
            url = countryname + "-" + countryid + "/general.aspx";
        }
        else {
            var txt = item.innerHTML.split(",");
            var cityname = "";
            var namearr = txt[0].split(" ");
            for (i = 0; i < namearr.length; i++) {
                if (i == 0) {
                    cityname += namearr[i];
                }
                else {
                    cityname += "-" + namearr[i];
                }
            }
            url = cityname + "-" + cityid + "/general.aspx";
        }
        var url = this.RootPath + url;
        this.ClearAutoCompleteList();
        location.href = url;
    }
}
AutoCompleteControl.prototype.ValidateAutoCompleteControl = function() {
    var returnval = false;
    if (this.AutoCompleteFilteredResult != null) {
        for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
            if (this.TrimSearchText(this.AutoCompleteFilteredResult[i]["Location"]) == this.TrimSearchText(this.AutoCompleteText.value)) {
                return true;
            }
        }
    }
    return returnval;
}
AutoCompleteControl.prototype.HighLightFirstListItem = function() {
    if (this.AutoCompleteFilteredResult.length > 0) {
        var item = null;
        if (this.ShouldUseCountryDropDown == true) {
            item = document.getElementById(this.AutoCompleteFilteredResult[0]["CityID"]);
        } else {
            item = document.getElementById(this.AutoCompleteFilteredResult[0]["CityID"] + "~" + this.AutoCompleteFilteredResult[0]["CountryID"]);
        }
        this.BlurAllListItem();
        this.FocusListItem(item);
    }
}
AutoCompleteControl.prototype.BlurAllListItem = function() {
    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
        var item = null;
        if (this.ShouldUseCountryDropDown == true) {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"]);
        } else {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"]);
        }
        if (item != null) {
            this.BlurListItem(item);
        }
    }
}
AutoCompleteControl.prototype.GetHighLightedListItem = function() {
    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
        var item = null;
        if (this.ShouldUseCountryDropDown == true) {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"]);
        } else {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"]);
        }
        if (item) {
            if (item.className == 'hover') {
                return item;
            }
        }
        else {
            return null;
        }
    }
}
AutoCompleteControl.prototype.HighLightNextListItem = function() {
    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
        var item = null;
        if (this.ShouldUseCountryDropDown == true) {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"]);
        }
        else {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"]);
        }
        if (item.className == 'hover') {
            if ((i + 1) != (this.AutoCompleteFilteredResult.length)) {
                var nextitem = null;
                if (this.ShouldUseCountryDropDown == true) {
                    nextitem = document.getElementById(this.AutoCompleteFilteredResult[i + 1]["CityID"]);
                }
                else {
                    nextitem = document.getElementById(this.AutoCompleteFilteredResult[i + 1]["CityID"] + "~" + this.AutoCompleteFilteredResult[i + 1]["CountryID"]);
                }
                if (nextitem) {
                    this.FocusListItem(nextitem);
                    var scrollnum = nextitem.clientHeight;
                    var version = 0;
                    if (navigator.appVersion.indexOf("MSIE") != -1) {
                        var temp = navigator.appVersion.split("MSIE");
                        version = parseFloat(temp[1]);
                    }
                    if (version == 7 || version == 6) {//NON IE browser will return 0
                        scrollnum = nextitem.offsetHeight;
                    }
                    this.AutoCompleteListContainer.scrollTop += scrollnum;
                    return;
                }
            }
        }
    }
}
AutoCompleteControl.prototype.HighLightPrevListItem = function() {
    for (var i = 0; i < this.AutoCompleteFilteredResult.length; i++) {
        var item = null;
        if (this.ShouldUseCountryDropDown == true) {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"]);
        } else {
            item = document.getElementById(this.AutoCompleteFilteredResult[i]["CityID"] + "~" + this.AutoCompleteFilteredResult[i]["CountryID"]);
        }
        if (item.className == 'hover') {
            if (i != 0) {
                var previtem = null;
                if (this.ShouldUseCountryDropDown == true) {
                    previtem = document.getElementById(this.AutoCompleteFilteredResult[i - 1]["CityID"]);
                }
                else {
                    previtem = document.getElementById(this.AutoCompleteFilteredResult[i - 1]["CityID"] + "~" + this.AutoCompleteFilteredResult[i - 1]["CountryID"]);
                }
                if (previtem) {
                    this.FocusListItem(previtem);
                    var scrollnum = previtem.clientHeight;
                    var version = 0;
                    if (navigator.appVersion.indexOf("MSIE") != -1) {
                        var temp = navigator.appVersion.split("MSIE");
                        version = parseFloat(temp[1]);
                    }
                    if (version == 7 || version == 6) {//NON IE browser will return 0
                        scrollnum = previtem.offsetHeight;
                    }
                    this.AutoCompleteListContainer.scrollTop -= scrollnum;
                    return;
                }
            }
        }
    }
}
AutoCompleteControl.prototype.FilterCashedResult = function(filterkeyword) {
    filterkeyword = filterkeyword.toLowerCase();
    var FilteredResult = new Array();
    if (this.AutoCompleteCachedResult != null) {
        for (var i = 0; i < this.AutoCompleteCachedResult.length; i++) {
            if (this.ShouldUseCountryDropDown == true) {
                var location = this.AutoCompleteCachedResult[i][1].toLowerCase().split(",");
                var cityname = location[0];
                if (cityname.indexOf(filterkeyword) != -1) {
                    FilteredResult.push({ "CityID": this.AutoCompleteCachedResult[i][0], "Location": this.AutoCompleteCachedResult[i][1] });
                }
            }
            else {
                if (this.AutoCompleteCachedResult[i][2] != "") {
                    if (this.AutoCompleteCachedResult[i][2].toLowerCase().indexOf(filterkeyword) != -1) {
                        FilteredResult.push({ "CityID": this.AutoCompleteCachedResult[i][0], "CountryID": this.AutoCompleteCachedResult[i][1], "CityName": this.AutoCompleteCachedResult[i][2], "CountryName": this.AutoCompleteCachedResult[i][3], "StateName": this.AutoCompleteCachedResult[i][4] });
                    }
                }
                else {
                    if (this.AutoCompleteCachedResult[i][3].toLowerCase().indexOf(filterkeyword) != -1) {
                        FilteredResult.push({ "CityID": this.AutoCompleteCachedResult[i][0], "CountryID": this.AutoCompleteCachedResult[i][1], "CityName": this.AutoCompleteCachedResult[i][2], "CountryName": this.AutoCompleteCachedResult[i][3], "StateName": this.AutoCompleteCachedResult[i][4] });
                    }
                }
            }
        }
    }
    this.AutoCompleteFilteredResult = FilteredResult;
}
AutoCompleteControl.prototype.ParseAutoCompleteResult = function() {
    var ParsedResult = new Array();
    for (var i = 0; i < this.AutoCompleteCachedResult.length; i++) {
        if (this.ShouldUseCountryDropDown == true) {
            ParsedResult.push({ "CityID": this.AutoCompleteCachedResult[i][0], "Location": this.AutoCompleteCachedResult[i][1] });
        } else {
            ParsedResult.push({ "CityID": this.AutoCompleteCachedResult[i][0], "CountryID": this.AutoCompleteCachedResult[i][1], "CityName": this.AutoCompleteCachedResult[i][2], "CountryName": this.AutoCompleteCachedResult[i][3], "StateName": this.AutoCompleteCachedResult[i][4] });
        }
    }
    this.AutoCompleteFilteredResult = ParsedResult;
}
AutoCompleteControl.prototype.UpdateProgressBar = function(IsVisible) {
    if (this.AutoCompleteProgressBar) {
        if (IsVisible == true) {
            this.AutoCompleteProgressBar.style.display = "block";
        }
        else {
            this.AutoCompleteProgressBar.style.display = "none";
        }
    }
}
AutoCompleteControl.prototype.TrimSearchText = function(stringtotrim) {
    stringtotrim = stringtotrim.replace(new RegExp(/^\s+/), ""); // remove blank space from start
    stringtotrim = stringtotrim.replace(new RegExp(/\s+$/), ""); // remove blank space from end
    return stringtotrim;
}
AutoCompleteControl.prototype.UpdateShouldAutoCompleteListClear = function(status) {
    switch (status) {
        case "0":
            this.ShouldAutoCompleteListClear = false;
            break;
        case "1":
            this.ShouldAutoCompleteListClear = true;
            break;
    }
}
AutoCompleteControl.prototype.CountryDropDownValueChanged = function(e) {
    this.AutoCompleteText.value = "Enter City Name";
    this.PreviousSearchedText = "";
    this.ClearAutoCompleteList();
    this.ShouldUseCachedResult = false;
}

