
YUI.add('gallery-ac-plugin-v2',function(Y){function ACPlugin2(){ACPlugin2.superclass.constructor.apply(this,arguments)};var autocomplete="autocomplete",YLang=Y.Lang,YArrayeach=Y.Array.each,eventDefaultBehavior={query:function(e){var self=this,ds=self.get("dataSource"),query=e.value,handler=Y.bind(handleQueryResponse,self);if(ds)ds.sendRequest({request:self.get("queryTemplate")(query),callback:{success:handler,failure:handler}});}};Y.Plugin.ACPlugin2=Y.extend(ACPlugin2,Y.Plugin.Base,{initializer:function(){var self=this,host=self.get("host");attachHandles(self,host);var defaults=eventDefaultBehavior;YArrayeach(["query","load","show","hide","next","previous"],function(ev){self.publish("ac:"+ev,{broadcast:2,bubbles:1,context:self,preventable:true,defaultFn:defaults[ev]||null,prefix:"ac"})},self);manageBrowserAC(host);},destructor:function(){Y.detach(Y.stamp(this)+"|");},open:function(){this.fire("ac:show")},next:function(e){e.preventDefault();this.fire("ac:next")},previous:function(e){e.preventDefault();this.fire("ac:previous")},close:function(){this.fire("ac:hide")}},{NAME:"ACPlugin2",NS:"ac",ATTRS:{queryValue:{getter:function(){return this.get("host").get("value");},setter:function(q){this.get("host").set("value",q);return(this._cachedValue=q);}},dataSource:{validator:function(ds){return ds&&YLang.isFunction(ds.sendRequest);}},minQueryLength:{value:3,validator:YLang.isNumber},queryTemplate:{value:encodeURIComponent,setter:function(q){return(YLang.isFunction(q)?q:function(query){return q.replace(/(^|[^\\])((\\{2})*)\{query\}/,'$1$2'+encodeURIComponent(query)).replace(/(^|[^\\])((\\{2})*)\\(\{query\})/,'$1$2$4');});}}}});function attachHandles(self,host){var category=Y.stamp(this)+"|";Y.on("valueChange",valueChangeHandler,host,self);Y.on("key",self.next,host,"down:40",self);Y.on("key",self.previous,host,"down:38",self);Y.on("key",self.close,host,"down:27",self);Y.on("key",self.close,host,"down:9",self);Y.on('key',function(e){if(e.currentTarget.get("id")===host.get("id")){self.close();}},host,"down:13",self);Y.on("click",function(e){var el=e.target;if(el.get("id")!=host.get("id")){self.close();}},document);};function valueChangeHandler(e){var value=e.value;if(!value)return this.close();if(value===this._cachedValue||value.length<this.get("minQueryLength"))return;this._cachedValue=value;this.fire("ac:query",{value:e.value});};function browserACFixer(domnode){return function(){if(domnode)domnode.setAttribute(autocomplete,"on");domnode=null;}};function manageBrowserAC(host){var domnode=Y.Node.getDOMNode(host),bac=domnode.getAttribute(autocomplete);if((bac&&bac!=="off")||bac===null||bac===undefined){var bacf=browserACFixer(domnode);Y.on("beforeunload",bacf,window);Y.on("unload",bacf,window);}
domnode.setAttribute(autocomplete,"off");};function handleQueryResponse(e){var res=(e&&e.response&&e.response.results)?e.response.results:e;if(res&&!(res&&("length"in res)&&res.length===0))this.fire("ac:load",{results:cleanQueryResponse(res,this.get("queryValue")),query:this.get("queryValue"),total:e.response.meta.total});};function cleanQueryResponse(data,query){var copy=[];var regex=new RegExp(query,"i");for(var x=0;x<data.length;x++){var key=data[x].key;var label=data[x].label;if(key.match(regex)||label.match(regex))
copy[copy.length]=data[x];}
return copy;}},'@VERSION@',{requires:['node-base','node-pluginhost','plugin','gallery-value-change','event-key'],optional:['event-custom']});

