Meetup.DomDeco.UrlPicker=function(){bindMethods(this)};Meetup.DomDeco.UrlPicker.prototype={minChars:6,maxChars:60,decorate:function(el){if(!el){LOG.error("no element passed in to Meetup.DomDeco.UrlPicker.decorate()");return}this._inputEl=getFirstElementByTagAndClassName("input",null,el);var lenMatch=this._inputEl.className.match(/.*?maxChars(\d+)/);if(lenMatch&&lenMatch[1]){this.maxChars=lenMatch[1]}if(this._inputEl.id.length>0){this._statusEl=DIV({"class":"url-advice",id:"charCount_"+this._inputEl.id})}else{this._statusEl=DIV({"class":"url-advice"})}this._msgEl=DIV({style:"visibility:hidden; position: absolute;"},this._statusEl);Meetup.Layout.positionOnElementEdge(this._msgEl,this._inputEl,Meetup.Layout.SOUTHWEST,{x:0,y:4});this._hide();connect(this._inputEl,"onkeyup",this._check);if(hasElementClass(el,"error")){var cn=connect(this._inputEl,"onkeydown",function(e){removeElementClass(el,"error");forEach($tagClass("p","error",el),removeElement);disconnect(cn)})}},_cache:Meetup.Cache.bindToBucket("urlpicker"),_hidden:false,_inputEl:null,_statusEl:null,_fieldRect:null,_hide:function(){this._msgEl.style.visibility="hidden";this._hidden=true},_show:function(){this._msgEl.style.visibility="visible";this._hidden=false},normalizeUrlname:function(urlname){if(!urlname.match(/(\r\n)/)){if(urlname.match(/(\r)/)){urlname=urlname.replace(/(\r)/g,"xx")}else{if(urlname.match(/(\n)/)){urlname=urlname.replace(/(\n)/g,"xx")}}}return Meetup.urlify(urlname)},_check:function(e){var statusEl=this._statusEl;var isValid=true;var inputStr=this.normalizeUrlname(this._inputEl.value);var currentLen=inputStr.length;if(currentLen<this.minChars){statusEl.innerHTML=Meetup.Copy.minimumChars.replace("{NUM_CHARS}",(this.minChars).toString());statusEl.className="url-warning";isValid=false;if(this._hidden){this._show()}}else{if(currentLen>this.maxChars){var charsLeft=this.maxChars-currentLen;statusEl.innerHTML=Meetup.Copy.charactersOver.replace("{NUM_CHARS}",(-charsLeft).toString());statusEl.className="url-error";isValid=false;if(this._hidden){this._show()}}else{if(currentLen==this.maxChars){statusEl.innerHTML=Meetup.Copy.noCharactersLeft;statusEl.className="url-warning";if(this._hidden){this._show()}}else{if(OFFLINE_MODE){if(!this._hidden){this._hide()}}else{statusEl.innerHTML=Meetup.Copy.checkAvail;statusEl.className="url-checking";if(this._hidden){this._show()}}}}}if(this._idleCheckInterval){clearInterval(this._idleCheckInterval);this._idleCheckInterval=null}this._idleCheckInterval=setInterval(partial(this._updateFieldIfIdle,inputStr,isValid),500);this._lastKeyPressTime=new Date().getTime()},_updateFieldIfIdle:function(inputStr,checkAvail){var now=new Date().getTime();if(this._lastKeyPressTime&&((now-this._lastKeyPressTime)>1000)){this._inputEl.value=inputStr;clearInterval(this._idleCheckInterval);this._idleCheckInterval=null}if(!OFFLINE_MODE&&checkAvail){this.checkAvailable(inputStr).addCallback(partial(this._processResponse,inputStr))}},_lastKeyPressTime:null,_idleCheckInterval:null,_deferreds:[],_lastReqMillisec:0,_abortAll:function(){forEach(this._deferreds,function(d){d.cancel()});this._deferreds=[]},checkAvailable:function(urlname){var key=urlname;var cached=this._cache.get(key);var now=new Date().getTime();if(cached){return succeed(cached)}else{if(this._lastReqMillisec!=0&&((now-this._lastReqMillisec)<100)){return succeed(null)}else{var d=Meetup.Http.post(Meetup.Http.rpcURL("urlTaken"),queryString({arg_urlname:urlname,arg_chapterId:Chapter.id}));d.addCallback(partial(this._cache.put,key));this._deferreds.push[d];this._lastReqMillisec=now;return d}}},_processResponse:function(urlname,resp){if(urlname!=this.normalizeUrlname(this._inputEl.value)){return}var nameTaken=(resp=="true"||resp=="True");if(nameTaken){var statusEl=this._statusEl;this._statusEl.innerHTML=Meetup.Copy.urlnameTaken.replace("{REQUESTED_NAME}",urlname);this._statusEl.className="url-error"}else{this._statusEl.innerHTML=Meetup.Copy.urlAvailable;this._statusEl.className="url-available"}},__repr__:function(){return"Meetup.DomDeco.UrlPicker"}};
