
YUI.add('gallery-ac-widget-v2',function(Y){function ACWidget2(){ACWidget2.superclass.constructor.apply(this,arguments)};var BOUND="_bound",selectedIndex="selectedIndex",_selectedIndex="_selectedIndex",_originalValue="_originalValue",YArrayeach=Y.Array.each,queryValue="queryValue";Y.ACWidget2=Y.extend(ACWidget2,Y.Overlay,{initializer:function(){var self=this;self.after({queryChanged:self.syncUI,dataChanged:self.syncUI});self.hide();this.publish("ac:selectedElement",{broadcast:2});this.publish("ac:show");this.publish("ac:hide",{broadcast:2});},renderUI:function(){var ac=this.get("ac");if(!ac){Y.log("Attach before attempting to render the widget","error","ac-widget");return;}
Y.one('body').prepend(this.get("boundingBox"));this.setSize();return;},setSize:function(){},bindUI:function(ac){var widget=this,cb=widget.get("contentBox"),currentAC=widget.get("ac"),category=Y.stamp(widget)+"|";if(ac&&currentAC!==ac&&widget[BOUND]){Y.detach(category);widget[BOUND]=0;}
ac=ac||currentAC;if(ac&&!widget[BOUND]){widget[BOUND]=1;cb.delegate("click",widget.click,"li",widget);Y.on("click",widget.hide,document);ac.on("ac:load",function(e){widget.setAttrs({query:e.query,data:e.results,total:e.total}).syncUI().show();},widget);ac.on("ac:query",function(e){widget.set("query",e.value).syncUI();});ac.on("ac:next",widget.next,widget);ac.on("ac:previous",widget.previous,widget);ac.on("ac:hide",widget.hide,widget);};return widget;},syncUI:function(){var self=this,data=self.get("data"),query=self.get("query");if(!data)return self;self[_selectedIndex]=-1;self[_originalValue]="";self.get("contentBox").setContent(self.getListMarkup(data));return self;},getListMarkup:function(data){var self=this,listTemplate=self.get("listTpl"),markup=[];YArrayeach(data,function(item){markup.push(self.getItemMarkup(item));});if(self.get("total")>self.get("data").length)
markup.push(self.get("moreTpl").replace("{message}",self.get('moreTxt')));return listTemplate.replace(/\{list\}/g,markup.join(""));},getItemMarkup:function(item){if(this.get("query").toLowerCase()===item.label.toLowerCase())
this.fire("ac:selectedElement",item);return this.get("itemTpl").replace(/\{id\}/g,item.id).replace(/\{className\}/g,item.className).replace(/\{term\}/g,item.label).replace(/\{hilite\}/g,this.getHiliteMarkup(item.label))},getHiliteMarkup:function(item){var self=this,queryTerms=regexpEscape(self.get("query")).split(/\s+/),out=item;var findRegexp=new RegExp("("+queryTerms.join("|")+")","gi");var replRegexp=self.get("hiliteTpl").replace(/\$/g,'\\$').replace(/\{term\}/g,'$1');return out.replace(findRegexp,replRegexp);},next:function(){var self=this;return(self.get("visible")?self.selectNext():self.get("data")?self.show():self);},selectNext:function(){return this.set(selectedIndex,this.get(selectedIndex)+1);},selectPrevious:function(){return this.set(selectedIndex,this.get(selectedIndex)-1);},previous:function(){return this.get("visible")?this.selectPrevious():this;},item:function(n){return this.get("contentBox").one(this.get("itemSelector").replace(/\{n\}/g,this.get("data")[n].id));},click:function(e){var self=this,ac=self.get("ac"),val=e.currentTarget.get("text"),id=e.currentTarget.get("id");if(id.indexOf('yui')>-1)
return;ac.set(queryValue,val);ac.set(queryValue,val);var data=self.get("data");for(var x=0;x<data.length;x++){if(data[x].id==id){self.set(selectedIndex,x);break;}}
self[_selectedIndex]=-1;self._currentValue=val;ac.get("host").focus();self.hide();Y.one('#searchForm').submit();}},{NAME:"ACWidget",ATTRS:{ac:{setter:function(ac){if(!this[BOUND])return;this.bindUI(ac);},validator:function(ac){return true}},data:{validator:function(d){return d&&d.length>0}},query:{value:""},total:{value:0},listTpl:{value:"<ul>{list}</ul>"},itemTpl:{value:"<li class=\"yui3-menuitem {className}\" id=\"{id}\"><span class=\"yui3-menuitemlabel\">{hilite}</span></li>"},moreTpl:{value:"<li class=\"yui3-menuitem\"><span class=\"yui3-menuitemlabel more\">{message}</span></li>"},itemSelector:{value:"ul li[id=\"{n}\"]"},hiliteTpl:{value:"<em>{term}</em>"},moreTxt:{value:'F&uuml;r weitere Ergebnisse mehr Zeichen eingeben...'}}});ACWidget2.ATTRS[selectedIndex]={value:-1,validator:function(si){var d=this.get("data");return d&&Y.Lang.isNumber(si);},getter:function(){return this[_selectedIndex]},setter:function(si){var self=this,current=self.get(selectedIndex),d=self.get("data"),l=d&&d.length,ac=self.get("ac"),selClass=this.getClassName("selected");if(isNaN(current))current=-1;if(!d||!l)return;while(si<-1)si+=l+1;si=(si+1)%(l+1)-1;current=(current+1)%(l+1)-1;self[_selectedIndex]=si;if(current===-1){self[_originalValue]=ac.get(queryValue);}
if(current===si)return;var curItem=self.get("contentBox").one("."+selClass);if(curItem)curItem.removeClass(selClass);if(si===-1){ac.set(queryValue,this[_originalValue]);}else{var newItem=self.item(si);if(newItem)newItem.addClass(selClass);ac.set(queryValue,d[si].label);self.fire("ac:selectedElement",d[si]);}
return si;}};function regexpEscape(text){return(""+text).replace(/([\^\/.*+?|()[\]{}\\])/g,'\\$1');}},'@VERSION@',{requires:['overlay','gallery-ac-plugin-v2']});

