Meetup.DiscreteMemberSearch=function(){return this.initialize(Meetup.DiscreteMemberSearch,this,arguments)};Meetup.DiscreteMemberSearch.prototype=new Meetup.DiscreteBase();Meetup.DiscreteMemberSearch.prototype.init=function(){var parent=this.parent,G1=MochiKit.DOM.getFirstElementByTagAndClassName,connect=MochiKit.Signal.connect,ELMS=this.elements,root=ELMS.root,PTS=this.evPointers,BINDED=this.bindedFunctions;if(Meetup.Copy&&Meetup.Copy.noMembersMatch){this.copy=Meetup.Copy.noMembersMatch}else{LOG.error("No default copy has found.");this.copy="No members match for: <strong>__MEMBER_NAME__</strong>"}this.members={};this.viewStruct=[];this.cache=Meetup.Cache.bindToBucket(parent.NAME);this.listLength=Meetup.DiscreteMemberSearch.DEFAULT_LIST_LENGTH;ELMS.head=G1("div","head",root);ELMS.input=G1("input",undefined,ELMS.head);ELMS.icon=G1("div","icon",ELMS.head);ELMS.iconLoupe=G1("div","loupe",ELMS.icon);ELMS.iconLoading=G1("div","loading",ELMS.icon);ELMS.iconX=G1("div","x",ELMS.icon);ELMS.iconInteract=G1("div","interact",ELMS.icon);ELMS.errorOut=G1("div","errorOut",root);ELMS.errorDisplay=G1("div","display",ELMS.errorOut);ELMS.arrowPrev=G1("div","arrowPrev",root);ELMS.body=G1("div","body",root);ELMS.list=G1("ul",undefined,ELMS.body);ELMS.arrowNext=G1("div","arrowNext",root);this.retrieveDimension();ELMS.input.style.width=(this.w-2)+"px";ELMS.errorOut.style.width=(this.w-22)+"px";this.parent.swapElementsBackgroundToFilter(ELMS.iconLoupe,ELMS.iconX);this.bindEvents();PTS.onInputKeyDown=connect(ELMS.input,"onkeydown",BINDED.onInputKeyDown);PTS.onInputKeyUp=connect(ELMS.input,"onkeyup",BINDED.onInputKeyUp);PTS.onInputKeyRepeat=connect(ELMS.input,"onkeypress",BINDED.onInputKeyRepeat);PTS.onArrowNextClick=connect(ELMS.arrowNext,"onclick",BINDED.onArrowNextClick);PTS.onArrowPrevClick=connect(ELMS.arrowPrev,"onclick",BINDED.onArrowPrevClick);PTS.onIconClick=connect(ELMS.iconInteract,"onclick",BINDED.onIconClick);PTS.lists=[];this.clear();return this.publicMethods()};Meetup.DiscreteMemberSearch.NAME="Meetup.DiscreteMemberSearch";Meetup.DiscreteMemberSearch.ROOT_CLASS_NAME="J_discreteMemberSearch";Meetup.DiscreteMemberSearch.DEFAULT_LIST_LENGTH=5;Meetup.DiscreteMemberSearch.EVENT_NAMES=["onError","onSelect","onNoMatch","onIconClick","onUpdateStruct","onBeforeRequest","onAfterRequest","onBeforeShow","onAfterShow","onBeforeHide","onAfterHide"];Meetup.DiscreteMemberSearch.ICON_LOUPE=0;Meetup.DiscreteMemberSearch.ICON_LOADING=1;Meetup.DiscreteMemberSearch.ICON_X=2;Meetup.DiscreteMemberSearch.PUBLIC_METHODS=["attach","clear","detach","discard","focus","getList","getRoot","hide","injectListItem","isShowing","setCopy","opacity","dimension","position","show","zIndex","getViewStruct","getMemberById"];Meetup.DiscreteMemberSearch.REGEX_NO_MEMBER_FOUND=new RegExp(/__MEMBER_NAME__/);Meetup.DiscreteMemberSearch.SERIALIZED_HTML='<div class="head"><input type="text" value="" /><div class="icon"><div class="bg loupe"></div><div class="bg loading"></div><div class="bg x"></div><div class="interact"></div></div></div><div class="errorOut"><div class="display"></div></div><div class="arrowPrev"></div><div class="body"><ul></ul></div><div class="arrowNext"></div>';Meetup.DiscreteMemberSearch.prototype.isNavedByCursor=false;Meetup.DiscreteMemberSearch.prototype.isLast=false;Meetup.DiscreteMemberSearch.prototype.listLength=0;Meetup.DiscreteMemberSearch.prototype.offset=0;Meetup.DiscreteMemberSearch.prototype.repeatCount=0;Meetup.DiscreteMemberSearch.prototype.copy="";Meetup.DiscreteMemberSearch.prototype.cache=null;Meetup.DiscreteMemberSearch.prototype.deferred=null;Meetup.DiscreteMemberSearch.prototype.focusIndex=null;Meetup.DiscreteMemberSearch.prototype.members=null;Meetup.DiscreteMemberSearch.prototype.viewStruct=null;Meetup.DiscreteMemberSearch.prototype.clear=function(){this.resetStruct();this.elements.input.value="";this.elements.list.style.display="none";this.elements.errorOut.style.display="none";this.elements.arrowNext.style.display="none";this.elements.arrowPrev.style.display="none";this.changeIcon(this.parent.ICON_LOUPE);if(!this.boolMSIE){this.parent.clearChildElements(this.elements.list)}};Meetup.DiscreteMemberSearch.prototype.dimension=function(w){if(arguments.length!==0){this.w=w;this.resetPosition()}return{w:this.w,h:this.h}};Meetup.DiscreteMemberSearch.prototype.focus=function(){this.elements.input.focus()};Meetup.DiscreteMemberSearch.prototype.getList=function(){var i,len,result=[];for(i=0,len=this.viewStruct.length;i<len;++i){result[i]=this.members[this.viewStruct[i].memberId]}return result};Meetup.DiscreteMemberSearch.prototype.hide=function(){var i,len,afterFunc,self=this,root=this.elements.root,time=this.parent.SEC_FADE_OUT,before=this.events.onBeforeHide,after=this.events.onAfterHide;if(before){for(i=0,len=before.length;i<len;++i){before[i]()}}if(after){afterFunc=function(){self.clear();self.boolShowing=false;self.elements.root.style.display="none";for(i=0,len=after.length;i<len;++i){after[i]()}}}else{afterFunc=function(){self.clear();self.boolShowing=false;self.elements.root.style.display="none"}}if(this.boolHasTweener){Meetup.Tweener.addTween(root,{opacity:0,time:time,transition:this.parent.TRANS_FADE_OUT});window.setTimeout(afterFunc,(time*1040))}else{afterFunc()}};Meetup.DiscreteMemberSearch.prototype.injectListItem=function(li){var LiEvs=this.evPointers.lists;this.elements.list.appendChild(li);LiEvs[LiEvs.length]={onmouseover:connect(li,"onmouseover",this.bindedFunctions.onLIMouseIn),onclick:connect(li,"onclick",this.bindedFunctions.onLIClick)}};Meetup.DiscreteMemberSearch.prototype.position=function(x,y){var result;if(x!==undefined){this.x=x;this.y=y;this.resetPosition()}result=[this.x,this.y];result.x=this.x;result.y=this.y;return result};Meetup.DiscreteMemberSearch.prototype.setCopy=function(msg){this.copy=msg};Meetup.DiscreteMemberSearch.prototype.show=function(){var i,len,afterFunc=function(){},before=this.events.onBeforeShow,after=this.events.onAfterShow,root=this.elements.root,time=this.parent.SEC_FADE_IN,trans=this.parent.TRANS_FADE_IN;if(before){for(i=0,len=before.length;i<len;++i){before[i]()}}if(after){afterFunc=function(){for(i=0,len=after.length;i<len;++i){after[i]()}}}this.offset=0;this.boolShowing=true;if(this.boolHasTweener){if(Meetup.UserAgent.isIE()){root.style.filter="alpha(opacity=0)"}else{root.style.opacity="0"}root.style.display="block";Meetup.Tweener.addTween(root,{opacity:1,time:time,transition:trans});window.setTimeout(afterFunc,(time*1010))}else{root.style.display="block";afterFunc()}};Meetup.DiscreteMemberSearch.prototype.getViewStruct=function(){return this.viewStruct};Meetup.DiscreteMemberSearch.prototype.getMemberById=function(id){var result=this.members[id];if(result===undefined){result=null}return result};Meetup.DiscreteMemberSearch.prototype.changeIcon=function(access){switch(access){case this.parent.ICON_LOUPE:this.elements.iconLoupe.style.display="block";this.elements.iconLoading.style.display="none";this.elements.iconX.style.display="none";break;case this.parent.ICON_LOADING:this.elements.iconLoupe.style.display="none";this.elements.iconLoading.style.display="block";this.elements.iconX.style.display="none";break;case this.parent.ICON_X:this.elements.iconLoupe.style.display="none";this.elements.iconLoading.style.display="none";this.elements.iconX.style.display="block";break}};Meetup.DiscreteMemberSearch.prototype.enhanceSelected=function(){var i,len,lis=MochiKit.DOM.getElementsByTagAndClassName("li",undefined,this.elements.list);if(!lis){return}for(i=0,len=lis.length;i<len;++i){if(this.focusIndex===null){MochiKit.DOM.removeElementClass(lis[i],"selected")}else{if(i===this.focusIndex){MochiKit.DOM.addElementClass(lis[i],"selected")}else{MochiKit.DOM.removeElementClass(lis[i],"selected")}}}};Meetup.DiscreteMemberSearch.prototype.resetPosition=function(){this.elements.root.style.left=this.x+"px";this.elements.root.style.top=this.y+"px";this.elements.root.style.width=this.w+"px";this.elements.input.style.width=(this.w-2)+"px";this.elements.errorOut.style.width=(this.w-22)+"px"};Meetup.DiscreteMemberSearch.prototype.resetStruct=function(){this.cleanupLiEvents()};Meetup.DiscreteMemberSearch.prototype.selectBySelectedLi=function(li){var memberId,memberObj,index=parseInt(li.getAttribute("index"),10);memberId=this.viewStruct[index];if(memberId!==undefined){memberObj=this.members[memberId]}else{memberObj=this.parent.stringify(li.getAttribute("title"))}this.onSelect(memberObj)};Meetup.DiscreteMemberSearch.prototype.cleanupLiEvents=function(){if(this.evPointers.lists.length>0){var pts,i,len,LiEvs=this.evPointers.lists,DISCON=MochiKit.Signal.disconnect;for(i=0,len=LiEvs.length;i<len;++i){pts=LiEvs[i];DISCON(pts.onmouseover);DISCON(pts.onclick)}}this.evPointers.lists=[]};Meetup.DiscreteMemberSearch.prototype.updateViewStruct=function(){this.cleanupLiEvents();var each,memberId,i,len,LiEvs=this.evPointers.lists;this.elements.list.innerHTML="";if(this.viewStruct.length){this.elements.list.style.display="block";for(i=0,len=this.viewStruct.length;i<len;++i){memberId=this.viewStruct[i];if(memberId===undefined){break}each=this.parent.buildLi(i,this.members[memberId]);this.elements.list.appendChild(each);LiEvs[i]={onmouseover:connect(each,"onmouseover",this.bindedFunctions.onLIMouseIn),onclick:connect(each,"onclick",this.bindedFunctions.onLIClick)}}this.elements.errorOut.style.display="none";if(this.offset>0){this.elements.arrowPrev.style.display="block"}else{this.elements.arrowPrev.style.display="none"}if(!this.isLast){this.elements.arrowNext.style.display="block"}else{this.elements.arrowNext.style.display="none"}this.onUpdateStruct()}else{this.elements.list.style.display="none";this.elements.errorOut.style.display="block";this.elements.arrowPrev.style.display="none";this.elements.arrowNext.style.display="none";var copy=this.copy.replace(this.parent.REGEX_NO_MEMBER_FOUND,this.elements.input.value);this.elements.errorDisplay.innerHTML=copy;this.onNoMatch()}};Meetup.DiscreteMemberSearch.prototype.onArrowNextClick=function(ev){ev.stop();var i,len,normalized=this.parent.trim(this.elements.input.value),before=this.events.onBeforeRequest,after=this.events.onAfterRequest;if(normalized.length<2){return}++this.offset;if(before){for(i=0,len=before.length;i<len;++i){before[i]()}}this.changeIcon(this.parent.ICON_LOADING);this.deferred=this.parent.query(this.cache,normalized,this.offset,this.bindedFunctions.onQuerySuccess,this.bindedFunctions.onQueryError);if(after){for(i=0,len=after.length;i<len;++i){after[i]()}}};Meetup.DiscreteMemberSearch.prototype.onArrowPrevClick=function(ev){ev.stop();if(this.offset<1){return}var i,len,normalized=this.parent.trim(this.elements.input.value),before=this.events.onBeforeRequest,after=this.events.onAfterRequest;if(normalized.length<2){return}--this.offset;if(before){for(i=0,len=before.length;i<len;++i){before[i]()}}this.changeIcon(this.parent.ICON_LOADING);this.deferred=this.parent.query(this.cache,normalized,this.offset,this.bindedFunctions.onQuerySuccess,this.bindedFunctions.onQueryError);if(after){for(i=0,len=after.length;i<len;++i){after[i]()}}};Meetup.DiscreteMemberSearch.prototype.onIconClick=function(ev){ev.stop();this.hide()};Meetup.DiscreteMemberSearch.prototype.onInputKeyDown=function(ev){var code=ev.key().code;switch(code){case 13:case 27:case 38:case 40:ev.stop();return this.onKeyboardNavigation(ev);break;case 8:case 12:case 37:case 39:case 46:return false;break}var normalized=this.parent.trim(this.elements.input.value);if(normalized.length>50){ev.stop()}};Meetup.DiscreteMemberSearch.prototype.onInputKeyRepeat=function(ev){++this.repeatCount;if(this.repeatCount>3){ev.stop()}};Meetup.DiscreteMemberSearch.prototype.onInputKeyUp=function(ev){var i,len,code=ev.key().code,normalized=this.parent.trim(this.elements.input.value),before=this.events.onBeforeRequest,after=this.events.onAfterRequest;this.repeatCount=0;switch(code){case 0:case 9:case 12:case 13:case 16:case 17:case 18:case 19:case 20:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 44:case 91:case 92:case 93:case 144:case 145:ev.stop();return false}if(normalized.length===0){ev.stop();this.clear();return false}if(normalized.length<2){ev.stop();return false}this.offset=0;if(before){for(i=0,len=before.length;i<len;++i){before[i]()}}this.changeIcon(this.parent.ICON_LOADING);this.deferred=this.parent.query(this.cache,normalized,this.offset,this.bindedFunctions.onQuerySuccess,this.bindedFunctions.onQueryError);if(after){for(i=0,len=after.length;i<len;++i){after[i]()}}};Meetup.DiscreteMemberSearch.prototype.onKeyboardNavigation=function(ev){var list,max,memberObj,memberId,code=ev.key().code;if(code===13){if(this.focusIndex!==null){list=MochiKit.DOM.getElementsByTagAndClassName("li",undefined,this.elements.list);this.selectBySelectedLi(list[this.focusIndex]);return false}else{this.onSelect(this.elements.input.value);return false}}else{if(code===27){this.hide();this.elements.input.blur();return false}else{if(code===38){list=MochiKit.DOM.getElementsByTagAndClassName("li",undefined,this.elements.list);if(list.length!==0){if(this.focusIndex!==null){if(this.focusIndex>0){--this.focusIndex}else{if(this.focusIndex===0){if(this.offset>0){this.isNavedByCursor=1;this.onArrowPrevClick(ev)}else{this.focusIndex=null;this.focus()}}}}}}else{if(code===40){list=MochiKit.DOM.getElementsByTagAndClassName("li",undefined,this.elements.list);if(list.length!==0){if(this.focusIndex===null){this.focusIndex=0}else{max=list.length-1;if((this.focusIndex==max)&&!this.isLast){this.isNavedByCursor=-1;this.onArrowNextClick(ev)}else{if(this.focusIndex<max){++this.focusIndex}}}}}}}}this.enhanceSelected();return false};Meetup.DiscreteMemberSearch.prototype.onLIClick=function(ev){ev.stop();var target=ev.src();this.selectBySelectedLi(target)};Meetup.DiscreteMemberSearch.prototype.onLIMouseIn=function(ev){ev.stop();var target=ev.src();this.focusIndex=parseInt(target.getAttribute("index"),10);this.enhanceSelected()};Meetup.DiscreteMemberSearch.prototype.onNoMatch=function(){var i,len,key=this.parent.trim(this.elements.input.value),onnomatch=this.events.onNoMatch,elm=this.elements.errorDisplay;if(onnomatch){for(i=0,len=onnomatch.length;i<len;++i){onnomatch[i](elm,key)}}};Meetup.DiscreteMemberSearch.prototype.onQueryError=function(evaled){LOG.error("onQueryError: "+serializeJSON(evaled));this.changeIcon(this.parent.ICON_X);var i,len,onerror=this.events.onError;if(onerror){for(i=0,len=onerror.length;i<len;++i){onerror[i](evaled)}}this.clear()};Meetup.DiscreteMemberSearch.prototype.onQuerySuccess=function(deferred,evaled){if(deferred!==this.deferred){return}this.changeIcon(this.parent.ICON_X);this.viewStruct=[];var member,i,len;if(this.listLength>=evaled.length){len=evaled.length;this.isLast=true}else{len=this.listLength;this.isLast=false}for(i=0;i<len;++i){member=evaled[i];this.members[member.id]=member;this.viewStruct[i]=member.id}if(this.isNavedByCursor){if(this.isNavedByCursor>0){this.focusIndex=this.viewStruct.length-1}else{this.focusIndex=0}this.isNavedByCursor=false}else{if(len!==1){this.focusIndex=null}else{this.focusIndex=0}}this.updateViewStruct();this.enhanceSelected()};Meetup.DiscreteMemberSearch.prototype.onSelect=function(member){var i,len,slct=this.events.onSelect;if(slct){for(i=0,len=slct.length;i<len;++i){slct[i](member)}}};Meetup.DiscreteMemberSearch.prototype.onUpdateStruct=function(member){var i,len,key=this.parent.trim(this.elements.input.value),onupdatestruct=this.events.onUpdateStruct;if(onupdatestruct){for(i=0,len=onupdatestruct.length;i<len;++i){onupdatestruct[i](this.elements.list,key)}}};Meetup.DiscreteMemberSearch.buildLi=function(index,member){var li,spanImg,spanText,spanName,spanTitle;li=LI({index:index,title:member.name});spanImg=SPAN({"class":"img"});if(member.photo){spanImg.style.backgroundImage=["url(",member.photo,")"].join("")}li.appendChild(spanImg);spanText=SPAN({"class":"text"});spanName=SPAN({"class":"name"});spanName.innerHTML=member.name;spanText.appendChild(spanName);spanText.appendChild(document.createTextNode(" "));spanTitle=SPAN({"class":"title"});if(member.title){spanTitle.innerHTML=member.title}spanText.appendChild(spanTitle);li.appendChild(spanText);return li};Meetup.DiscreteMemberSearch.onRootClick=function(ev){ev.stop()};Meetup.DiscreteMemberSearch.query=function(cache,token,offset,funcSucess,funcError){var query=MochiKit.Base.queryString({method:"memberSuggestions",arg_memberId:Meetup.Data.member.id,arg_chapter:Meetup.Data.chapter.id,arg_token:token,arg_offset:offset});var def,cached=cache.get(query);if(cached){window.setTimeout(function(){funcSucess(cached,cached)},45);def=cached}else{def=Meetup.Http.post(Meetup.Data.chapter.url+"api/",query);def.addCallbacks(function(evaled){cache.put(query,evaled);funcSucess(def,evaled)},funcError)}return def};