Meetup.DomDeco.Attendance=function(){bindMethods(this)};Meetup.DomDeco.Attendance.prototype={decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.Attendance.decorate()");return}this._attendedCountAppEl=$("J_attendedCountApp");this._attendedCountListEl=$("J_attendedCountList");this._attendedCount=ATTENDEESSIZE;this._mainEl=el;this._attendedEl=$("attendees");this._absentEl=$("nonattendees");if(!this._attendedCountAppEl||!this._attendedCountListEl||!this._attendedEl||!this._absentEl){LOG.error("missing required element in DomDeco.Attendance");return false}removeEmptyTextNodes(this._attendedEl);removeEmptyTextNodes(this._absentEl);this._attendedMemberCount=parseInt(getNodeAttribute(this._attendedEl,"memberCount"));this._absentMemberCount=parseInt(getNodeAttribute(this._absentEl,"memberCount"));this._prepare(this._attendedEl);this._prepare(this._absentEl);this._sprinkleGuestFields();if(hasElementClass(el,"J_attendance_pagingMode")){this._pagingMode=1;this._generatePager(this._attendedEl);this._generatePager(this._absentEl);this._attendedAlpha=this._alphabetShort[1];this._absentAlpha=this._alphabetShort[1];setTimeout(bind(function(){this._getAlphaChunk(this._attendedEl,this._attendedAlpha);this._getAlphaChunk(this._absentEl,this._absentAlpha)},this),500)}},_sprinkleGuestFields:function(){connect(this._attendedEl,"onclick",partial(this._mark,false));connect(this._absentEl,"onclick",partial(this._mark,true));map(partial(function(ch_func,input_el){connect(input_el,"onchange",ch_func)},this._detectNumberChange),$tagClass("input","captureKeyPress",this._mainEl));map(partial(function(ch_func,input_el){connect(input_el,"onkeyup",ch_func)},this._detectNumberChange),$tagClass("input","captureKeyPress",this._mainEl))},_prepare:function(targetEl){if(targetEl.id==this._attendedId){var emptyMsg=(this._pagingMode)?Meetup.Copy.noMembersMarkedAttendedDynam.replace("__GROUPING__",this._attendedAlpha.label):Meetup.Copy.noMembersMarkedAttended}else{var emptyMsg=(this._pagingMode)?Meetup.Copy.noMembersMarkedAbsentDynam.replace("__GROUPING__",this._absentAlpha.label):Meetup.Copy.noMembersMarkedAbsent}appendChildNodes(targetEl,DIV({"class":"D_hasNoneMsg",sortby:""},emptyMsg));this._checkIfEmpty()},_indicateSaving:function(){this._highlight(this._attendedCountAppEl,{afterFinish:bind(function(){this._attendedCountAppEl.style.background="transparent"},this)})},_indicateLoading:function(targetEl){addElementClass(targetEl,"disabled")},_stopIndicateLoading:function(targetEl){removeElementClass(targetEl,"disabled")},_drop:function(targetEl,options){targetEl.style.display="none";options.afterFinish()},_add:function(targetEl,options){targetEl.style.display="block";options.afterFinish()},_mark:function(attended,e){var button=e.target();if(hasElementClass(button,"J_attendance_url")||!hasElementClass(button,"J_attendance_mark")){return}e.stop();var attendeeInfoStr=button.id.match(/(attendee_(\w+))_\w+/);var targetEl=$(attendeeInfoStr[1]);var memberId=attendeeInfoStr[2];var guestEl=getFirstElementByTagAndClassName("INPUT","J_guestCount",targetEl);var guestCount=parseInt(getNodeAttribute(guestEl,"guestCount"));var removedEl=removeElement(targetEl);if(!attended){button.value=Meetup.Copy.markAsAttended;var changedEl=this._absentEl;var state=0;var attendedCnt=-1;var absentCnt=1}else{button.value=Meetup.Copy.markAsAbsent;var changedEl=this._attendedEl;var state=3;var attendedCnt=1;var absentCnt=-1}var afterFinishFunc=function(){this._alphaInsertNode(changedEl,removedEl);this._add(removedEl,{afterFinish:bind(function(){this._reveal(changedEl,removedEl);this._absentMemberCount+=absentCnt;this._attendedMemberCount+=attendedCnt;var guestEl=getFirstElementByTagAndClassName("INPUT","J_guestCount",targetEl);var guestCount=getNodeAttribute(guestEl,"guestCount");this._checkIfEmpty();this._doCall(memberId,state,guestCount)},this)})};this._drop(targetEl,{afterFinish:bind(afterFinishFunc,this)})},_checkIfEmpty:function(){var conform=function(el,memberCount){if(memberCount<1){addElementClass(el,"D_hasNone")}else{removeElementClass(el,"D_hasNone")}};conform(this._attendedEl,this._attendedMemberCount);conform(this._absentEl,this._absentMemberCount)},_conformCount:function(){this._attendedCountListEl.innerHTML=this._attendedCount;this._attendedCountAppEl.value=this._attendedCount},_detectNumberChange:function(e){if(e.target()==this._attendedCountAppEl){this._overrideAttendance()}else{this._updateGuests(e)}},_overrideAttendance:function(){var newCount=this._attendedCountAppEl.value;if(!newCount.match(/\d+/)){return false}else{newCountInt=parseInt(newCount);this._attendedCountListEl.innerHTML=newCountInt;var succeed=function(req){this._indicateSaving()};var fail=function(error){};var d=doSimpleXMLHttpRequest(CHAPTERURL+"api/",{method:"changeAttendance",arg_memberId:ORGID,arg_attendeeMemberId:0,arg_eventId:EVENTID,arg_response:0,arg_guests:0,arg_attendeeCount:newCountInt}).addCallbacks(bind(succeed,this),bind(fail,this))}},_updateGuests:function(e){var guestEl=e.target();var oldGuestCount=getNodeAttribute(guestEl,"guestCount");var newGuestCount=guestEl.value;if(newGuestCount==""){return}else{if(newGuestCount.match(/\D+/)){guestEl.value=oldGuestCount;return}else{newGuestCount=parseInt(newGuestCount)}}setNodeAttribute(guestEl,"guestCount",newGuestCount);if(isChildNode(guestEl,this._attendedEl)){var guestsChange=parseInt(newGuestCount-oldGuestCount);var attendedStatus=3}else{var attendedStatus=0;var guestsChange=0}var memberId=guestEl.id.match(/attendee_(\w+)_\w+/)[1];this._doCall(memberId,attendedStatus,newGuestCount,guestsChange)},_alphaInsertNode:function(parentEl,insertEl){if(isChildNode($(insertEl.id),parentEl)){return}if(parentEl.childNodes.length==1){appendChildNodes(parentEl,insertEl)}var insertKey=getNodeAttribute(insertEl,"sortby");var top=0;var bottom=parentEl.childNodes.length-2;if(this._pagingMode){var thisAlpha=(parentEl.id==this._attendedId)?this._attendedAlpha:this._absentAlpha;if(thisAlpha.start>insertKey.toLowerCase()||thisAlpha.bottom<insertKey.toLowerCase()){this._indicateLoading(parentEl);var alphabet=this._alphabetShort;for(var i=0;i<alphabet.length;i++){if(alphabet[i].start>insertKey.toLowerCase()){thisAlpha=alphabet[i-1];break}else{if(alphabet.length-1==i){thisAlpha=alphabet[i];break}}}this._getAlphaChunk(parentEl,thisAlpha,insertEl);return}}if(insertKey.toLowerCase()<getNodeAttribute(parentEl.childNodes[top],"sortby").toLowerCase()){insertSiblingNodesBefore(parentEl.childNodes[top],insertEl)}else{if(insertKey.toLowerCase()>getNodeAttribute(parentEl.childNodes[bottom],"sortby").toLowerCase()){insertSiblingNodesAfter(parentEl.childNodes[bottom],insertEl)}else{var finding=0;while(bottom-top>1){finding++;test=Math.ceil((bottom-top)/2)+top;if(insertKey.toLowerCase()>=getNodeAttribute(parentEl.childNodes[test],"sortby").toLowerCase()){top=test}else{bottom=test}}insertSiblingNodesAfter(parentEl.childNodes[top],insertEl)}}},_reveal:function(parentEl,targetEl){var targetTop=targetEl.offsetTop-targetEl.offsetHeight;if(!(targetTop>parentEl.scrollTop&&targetTop<parentEl.scrollTop+parentEl.offsetHeight)){parentEl.scrollTop=targetTop}this._highlight(targetEl)},_doCall:function(memberId,response,guests,guestsChange){if(!guestsChange&&guestsChange!=0){this._attendedCount+=(response==3)?1+parseInt(guests):-(1+parseInt(guests))}else{this._attendedCount+=guestsChange}var d=doSimpleXMLHttpRequest(CHAPTERURL+"api/",{method:"changeAttendance",arg_memberId:ORGID,arg_attendeeMemberId:memberId,arg_eventId:EVENTID,arg_response:response,arg_guests:guests,arg_attendeeCount:this._attendedCount});var succeed=function(req){if(guestsChange!=0){this._indicateSaving();this._conformCount()}};var fail=function(error){};d.addCallbacks(bind(succeed,this),bind(fail,this))},_getAlphaChunk:function(targetEl,alpha,insertedEl){if(targetEl.id==this._attendedId){this._attendedAlpha=alpha}else{this._absentAlpha=alpha}var alphaLinks=$tagClass("A",null,$(targetEl.id+"_pager"));for(var i=0;i<alphaLinks.length;i++){if(alpha.label==alphaLinks[i].innerHTML){addElementClass(alphaLinks[i],"selected")}else{removeElementClass(alphaLinks[i],"selected")}}var succeed=function(req){this._stopIndicateLoading(targetEl);targetEl.innerHTML=req.responseText;removeEmptyTextNodes(targetEl);map(partial(function(ch_func,input_el){connect(input_el,"onchange",ch_func)},this._detectNumberChange),$tagClass("input","captureKeyPress",targetEl));map(partial(function(ch_func,input_el){connect(input_el,"onkeyup",ch_func)},this._detectNumberChange),$tagClass("input","captureKeyPress",targetEl));if(targetEl.id==this._attendedId){this._attendedMemberCount=targetEl.childNodes.length}else{this._absentMemberCount=targetEl.childNodes.length}this._prepare(targetEl);if(insertedEl){this._alphaInsertNode(targetEl,insertedEl);this._reveal(targetEl,$(insertedEl.id))}};var fail=function(error){};var d=doSimpleXMLHttpRequest(CHAPTERURL+"calendar/"+EVENTID+"/",{__AJAX_FORM_FORWARD_NAME:"edit_attendance_include",listtype:targetEl.id,startletter:alpha.start,endletter:alpha.end}).addCallbacks(bind(succeed,this),bind(fail,this))},_changeAlphaChunk:function(targetEl,alpha){this._indicateLoading(targetEl);this._getAlphaChunk(targetEl,alpha)},_generatePager:function(targetEl){var alphabet=this._alphabetShort;var alphaLinks=new Array();for(var i=0;i<alphabet.length;i++){alphaLinks.push(A({href:"JAVASCRIPT:void(0);"},alphabet[i].label));if(i==0){addElementClass(alphaLinks[i],"selected")}connect(alphaLinks[alphaLinks.length-1],"onclick",partial(this._changeAlphaChunk,targetEl,alphabet[i]))}insertSiblingNodesAfter(targetEl,DIV({id:targetEl.id+"_pager","class":"D_jumpto"},alphaLinks))},_highlight:function(targetEl,options){var elms=MochiKit.DOM.getElementsByTagAndClassName("div","D_rolodexItem",targetEl.parentNode);var targetBgColor="#ffffff";for(var i=0,len=elms.length;i<len;++i){if(targetEl.id!=elms[i].id){targetBgColor=MochiKit.Color.Color.fromBackground(elms[i]).toHexString();break}}var natBkg=MochiKit.Color.Color.fromBackground(targetEl).toHexString();var hiBkg="#ffffcc";if(natBkg!=hiBkg){targetEl.style.backgroundColor=hiBkg;setTimeout(function(){targetEl.style.backgroundColor=targetBgColor},2000)}},_mainEl:null,_attendedCountAppEl:null,_attendedCountListEl:null,_attendedCount:null,_attendedMemberCount:null,_absentMemberCount:null,_attendedEl:null,_absentEl:null,_attendedId:"attendees",_absentId:"nonattendees",_pagingMode:null,_alphabetShort:[{label:"#",start:"#",end:"#",bottom:"a"},{label:"a-c",start:"a",end:"c",bottom:"d"},{label:"d-f",start:"d",end:"f",bottom:"g"},{label:"g-i",start:"g",end:"i",bottom:"j"},{label:"j-l",start:"j",end:"l",bottom:"m"},{label:"m-o",start:"m",end:"o",bottom:"p"},{label:"p-r",start:"p",end:"r",bottom:"s"},{label:"s-u",start:"s",end:"u",bottom:"v"},{label:"v-x",start:"v",end:"x",bottom:"y"},{label:"y-z",start:"y",end:"z",bottom:"."}],_attendedAlpha:null,_absentAlpha:null,__repr__:function(){return"Meetup.DomDeco.Attendance"}};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)});