
var Spry;if(!Spry)Spry={};if(!Spry.Widget)Spry.Widget={};Spry.Widget.SimpleAutoSuggest=function(textElement,suggestRegion,queryFunc)
{this.textElement=Spry.$(textElement);this.region=Spry.$(suggestRegion);this.queryFunc=queryFunc;this.timerID=0;var self=this;this.addEventListener(this.textElement,"keyup",function(e){self.handleKeyUp(e);},false);var regionID=this.getElementID(suggestRegion);Spry.Data.Region.addObserver(regionID,{onPostUpdate:function(notifier,data){self.attachClickBehaviors();}});this.attachClickBehaviors();};Spry.Widget.SimpleAutoSuggest.prototype.getElementID=function(ele)
{if(ele&&typeof ele=="string")
return ele;return ele.getAttribute("id");};Spry.Widget.SimpleAutoSuggest.prototype.getValue=function()
{if(!this.textElement)
return"";return this.textElement.value;}
Spry.Widget.SimpleAutoSuggest.prototype.setValue=function(str)
{if(!this.textElement)
return;this.textElement.value=str;this.showSuggestions(false);}
Spry.Widget.SimpleAutoSuggest.prototype.focus=function()
{if(!this.textElement)
return;this.textElement.focus();}
Spry.Widget.SimpleAutoSuggest.prototype.showSuggestions=function(doShow)
{if(this.region)
this.region.style.display=(doShow?"block":"none");};Spry.Widget.SimpleAutoSuggest.KEY_ESC=27;Spry.Widget.SimpleAutoSuggest.prototype.handleKeyUp=function(e)
{if(this.timerID)
{clearTimeout(this.timerID);this.timerID=null;}
if(e.keyCode==Spry.Widget.SimpleAutoSuggest.KEY_ESC||!this.getValue())
{this.showSuggestions(false);return;}
var self=this;this.timerID=setTimeout(function(){self.timerID=null;self.queryFunc(self,self.getValue());},100);};Spry.Widget.SimpleAutoSuggest.prototype.addEventListener=function(element,eventType,handler,capture)
{try
{if(element.addEventListener)
element.addEventListener(eventType,handler,capture);else if(element.attachEvent)
element.attachEvent("on"+eventType,handler);}
catch(e){}};Spry.Widget.SimpleAutoSuggest.prototype.addClickListener=function(node,suggestionValue)
{var self=this;this.addEventListener(node,"click",function(e){self.setValue(suggestionValue);self.focus();},false);};Spry.Widget.SimpleAutoSuggest.prototype.attachClickBehaviors=function()
{var self=this;var valNodes=Spry.Utils.getNodesByFunc(this.region,function(node){if(node.nodeType==1)
{var attr=node.attributes.getNamedItem("spry:suggestion");if(attr)
self.addClickListener(node,attr.value);}
return false;});};Spry.Widget.SimpleAutoSuggest.escapeRegExp=function(rexp)
{return rexp.replace(/([\.\/\]\[\{\}\(\)\\\$\^\?\*\|\!\=\+\-])/g,'\\$1');};