Meetup.DomDeco.Attendance=function(){bindMethods(this)};Meetup.DomDeco.Attendance.prototype={decorate:function(){this._BASE_URL=Meetup.Data.grouphome.baseUrl+"calendar/"+muEvent.id+"/";this._BASE_PARAMS={__AJAX_FORM_FORWARD_NAME:"edit_attendance_include",listtype:"attendees"};this._START_ALPHA_SET={startletter:"a",endletter:"c"};this._ATTENDEES_EL=$("attendees");this._PAGING_MODE=hasElementClass($("J_attendance"),"J_attendance_pagingMode")?true:false;this._ATTENDEE_COUNT_EL=$("J_attendedCountApp");this._ATTENDEE_LIST_COUNT=$("J_attendedListCount");this._ATTENDEE_COUNT_MODE_TOGGLE=get1st("a","J_toggleAttendedCountMode",null);this._PAGING_THRESHOLD=100;this._attendedCount=muEvent.attendeeCount;this._attendedCountMode=hasElementClass(this._ATTENDEE_COUNT_EL,"displaynone")?"list":"manual";Meetup.DomDeco.MemberLiveSearch.prototype._method="memberSuggestionsExclude";Meetup.DomDeco.MemberLiveSearch.prototype._memberUrl="javascript:void(0);";Meetup.DomDeco.MemberLiveSearch.prototype._selectSugg=partial(this._markAttended,this);Meetup.DomDeco.applyByTagAndClass("input","D_memberLiveSearch",Meetup.DomDeco.MemberLiveSearch);if(this._PAGING_MODE){Meetup.AlphaSort.newSorter(this._ATTENDEES_EL,this._BASE_URL,this._BASE_PARAMS,this._connectGuestInputs);this._doXHR("list",merge(this._BASE_PARAMS,this._START_ALPHA_SET),null)}else{Meetup.AlphaSort.newSorter(this._ATTENDEES_EL);this._connectGuestInputs()}var attendanceDispatch=Meetup.Dispatcher.init($("J_attendance"));attendanceDispatch.registerFunc("J_attendance_mark",this._markAbsent);connect(this._ATTENDEE_COUNT_EL,"onkeyup",this._updateAttendedCount);connect(this._ATTENDEE_COUNT_MODE_TOGGLE,"onclick",this._toggleAttendedCountMode)},_debug:function(msg){return false},_doXHR:function(action,params,opts){switch(action){case"list":var url=Meetup.Data.grouphome.baseUrl+"calendar/"+muEvent.id+"/";var success=function(r){this._ATTENDEES_EL.innerHTML=r.responseText;if(opts&&opts.scrollToMember){Meetup.AlphaSort.scrollIntoView(this._ATTENDEES_EL,$("attendee_"+opts.scrollToMember))}this._connectGuestInputs();Meetup.Cache.bustCache("MemberSuggest");Meetup.MemberSuggestionData._excludeIds=$("excludeMemberList").value};break;case"absent":var url=Meetup.Data.grouphome.baseUrl+"api/";var success=function(r){Meetup.Cache.bustCache("MemberSuggest");MochiKit.Visual.fade($(opts.targetEl),{duration:0.7,afterFinish:function(){removeElement(opts.targetEl)}});this._attendedCount=opts.newAttendeesCount;this._updateCounts(opts.newAttendeesCount);Meetup.Cache.bustCache("MemberSuggest");var excludeArr=Meetup.MemberSuggestionData._excludeIds.split(",");var memberPos=findValue(excludeArr,opts.memberId);excludeArr.splice(memberPos,1);Meetup.MemberSuggestionData._excludeIds=excludeArr.join(",")};break;case"attended":var url=Meetup.Data.grouphome.baseUrl+"api/";var success=function(r){if(this._PAGING_MODE){this._doXHR("list",merge(this._BASE_PARAMS,{startletter:opts.startletter,endletter:opts.endletter}),{scrollToMember:params.arg_attendeeMemberId})}else{this._doXHR("list",this._BASE_PARAMS,{scrollToMember:params.arg_attendeeMemberId})}this._attendedCount=this._attendedCount+1;this._updateCounts(this._attendedCount)};break;case"attendee":var url=Meetup.Data.grouphome.baseUrl+"api/";var success=function(r){this._debug("successfully updated attended count")};break;case"guest":var url=Meetup.Data.grouphome.baseUrl+"api/";var success=function(r){this._debug("successfully updated guests count")};break;default:var fail=function(r){alert("sorry. there was a problem.")}}var d=doSimpleXMLHttpRequest(url,params);d.addCallbacks(bind(success,this),fail)},_markAbsent:function(e){if(hasElementClass(e.target(),"J_onClick")){removeElementClass(e.target(),"J_onClick")}var attendeeInfoStr=e.target().id.match(/(attendee_(\w+))_\w+/);setOpacity(attendeeInfoStr[1],0.8);var memberId=attendeeInfoStr[2];var guestCount=this._getMemberGuestCount(memberId);var newAttendeesCount=(guestCount>0)?this._attendedCount-(guestCount+1):this._attendedCount-1;this._doXHR("absent",this._getChangeAttendanceParamObj(memberId,0,0,newAttendeesCount),{targetEl:attendeeInfoStr[1],memberId:memberId,newAttendeesCount:newAttendeesCount})},_markAttended:function(self,el){var memberName=scrapeText(get1st("a","memberLink",el)).toLowerCase();var firstInitial=memberName.substring(0,1);if(!firstInitial.match(/[a-z]/)){firstInitial="#"}var alphaRange=Meetup.AlphaSort.alphaRanges[firstInitial];var params=self._attendedCount>self._PAGING_THRESHOLD?{startletter:alphaRange.start,endletter:alphaRange.end}:null;self._doXHR("attended",self._getChangeAttendanceParamObj(el.id,3,0,self._attendedCount+1),params)},_updateGuestCount:function(e){var guestEl=e.target();var oldGuestCount=getNodeAttribute(guestEl,"guestCount");var newGuestCount=guestEl.value;if(newGuestCount==""){return}else{if(newGuestCount.match(/\D+/)){this._debug("guest not numeric");guestEl.value=oldGuestCount;return}else{newGuestCount=parseInt(newGuestCount)}}setNodeAttribute(guestEl,"guestCount",newGuestCount);var guestsChange=parseInt(newGuestCount-oldGuestCount);var memberId=guestEl.id.match(/attendee_(\w+)_\w+/)[1];if(!guestsChange&&guestsChange!=0){this._attendedCount+=1+newGuestCount}else{this._attendedCount+=guestsChange}this._updateCounts(this._attendedCount);this._doXHR("guest",this._getChangeAttendanceParamObj(memberId,3,newGuestCount),null)},_updateAttendedCount:function(e){this._doXHR("attendee",this._getChangeAttendanceParamObj(0,0,0,e.target().value),null)},_getMemberGuestCount:function(id){return parseInt($("attendee_"+id+"_guests").value)},_connectGuestInputs:function(){forEach(getElementsByTagAndClassName("input","J_guestCount",this._ATTENDEES_EL),bind(function(item){connect(item,"onkeyup",this._updateGuestCount)},this))},_toggleAttendedCountMode:function(e){if(e){e.stop()}if(hasElementClass(this._ATTENDEE_COUNT_EL,"displaynone")){removeElementClass(this._ATTENDEE_COUNT_EL,"displaynone");addElementClass(this._ATTENDEE_LIST_COUNT,"displaynone");this._ATTENDEE_COUNT_MODE_TOGGLE.innerHTML="Use attendance list count ("+this._attendedCount+")";this._attendedCountMode="manual"}else{this._attendedCountMode="list";addElementClass(this._ATTENDEE_COUNT_EL,"displaynone");removeElementClass(this._ATTENDEE_LIST_COUNT,"displaynone");this._ATTENDEE_COUNT_MODE_TOGGLE.innerHTML=Meetup.Copy.recordADifferentAttendanceCount;this._doXHR("attendee",this._getChangeAttendanceParamObj(0,0,0,this._attendedCount),null)}},_updateCounts:function(count){if(this._attendedCountMode=="list"){this._ATTENDEE_COUNT_EL.value=count}else{this._ATTENDEE_COUNT_MODE_TOGGLE.innerHTML="Use attendance list count ("+this._attendedCount+")"}this._ATTENDEE_LIST_COUNT.innerHTML=count},_getChangeAttendanceParamObj:function(memberId,response,guests,attendedCount){if(this._attendedCountMode=="manual"){var attendedCount=this._ATTENDEE_COUNT_EL.value}return{method:"changeAttendance",rw:1,arg_memberId:Member.id,arg_attendeeMemberId:memberId,arg_eventId:muEvent.id,arg_response:response,arg_guests:guests,arg_attendeeCount:attendedCount||this._attendedCount}}};Meetup.DOMReady.ready(function(){Meetup.DomDeco.applyById("J_attendance",Meetup.DomDeco.Attendance);Meetup.DomDeco.applyById("attendanceWidget",Meetup.DomDeco.Dialog);Meetup.DomDeco.applyById("J_attendanceLink",Meetup.DomDeco.Signal);signal($("attendanceWidget"),"appear")});