Meetup.UrlPicker=(function(){var minChars=6,_cache=Meetup.Cache.bindToBucket("urlpicker"),_hidden=false,_inputEl=null,_lastKeyPressTime=null,_idleCheckInterval=null,_deferreds=[],_lastReqMillisec=0,$inputEl=null,_statusEl=null,_fieldRect=null,maxChars=60;var decorate=function(el){$inputEl=$("input",el);_inputEl=$inputEl[0];var lenMatch=_inputEl.className.match(/.*?maxChars(\d+)/);if(lenMatch&&lenMatch[1]){maxChars=lenMatch[1]}if(_inputEl.id.length>0){_statusEl='<div class="url-advice" id="charCount_'+_inputEl.id+'"></div>'}else{_statusEl='<div class="url-advice"></div>'}_msgEl=$('<div style="position: absolute;">'+_statusEl+"</div>");$(document.body).append(_msgEl);_position();_hide();$inputEl.bind("keyup",_check);$inputEl.bind("check",function(e,urlname){checkAvailable(urlname)});if($(el).hasClass("error")){var cn=$inputEl.bind("keydown",function(e){$(el).removeClass("error");$("p.error",el).remove();$inputEl.unbind("keydown",cn)})}};var _position=function(){_msgEl.position({of:_inputEl,my:"left top",at:"left bottom",offset:"0 5"})};var _hide=function(){_msgEl.css({visibility:"hidden"});_hidden=true};var _show=function(){_msgEl.css({visibility:"visible"});_position();_hidden=false};var 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)};var _check=function(e){_statusEl=$get("charCount_"+_inputEl.id);var isValid=true;var inputStr=normalizeUrlname(_inputEl.value);var currentLen=inputStr.length;if(currentLen<minChars){_statusEl.innerHTML=Meetup.Copy.minimumChars.replace("{NUM_CHARS}",(minChars).toString());_statusEl.className="url-warning";isValid=false;if(_hidden){_show()}}else{if(currentLen>maxChars){var charsLeft=maxChars-currentLen;_statusEl.innerHTML=Meetup.Copy.charactersOver.replace("{NUM_CHARS}",(-charsLeft).toString());_statusEl.className="url-error";isValid=false;if(_hidden){_show()}}else{if(currentLen==maxChars){_statusEl.innerHTML=Meetup.Copy.noCharactersLeft;_statusEl.className="url-warning";if(_hidden){_show()}}else{if(OFFLINE_MODE){if(!_hidden){_hide()}}else{_statusEl.innerHTML=Meetup.Copy.checkAvail;_statusEl.className="url-checking";if(_hidden){_show()}}}}}if(_idleCheckInterval){clearInterval(_idleCheckInterval);_idleCheckInterval=null}_idleCheckInterval=setInterval(partial(_updateFieldIfIdle,inputStr,isValid),500);_lastKeyPressTime=new Date().getTime()};var _updateFieldIfIdle=function(inputStr,checkAvail){var now=new Date().getTime();if(_lastKeyPressTime&&((now-_lastKeyPressTime)>1000)){_inputEl.value=inputStr;clearInterval(_idleCheckInterval);_idleCheckInterval=null}if(!OFFLINE_MODE&&checkAvail){checkAvailable(inputStr)}};var checkAvailable=function(urlname){if(typeof urlname==="undefined"){return}var cached=_cache.get(urlname);var now=new Date().getTime();if(cached){_processResponse(urlname,cached)}else{if(_lastReqMillisec!==0&&((now-_lastReqMillisec)<100)){_processResponse(null)}else{var d=jQuery.ajax({type:"POST",url:"/api/",data:{method:"urlTaken",arg_urlname:urlname,arg_chapterId:chapterId},success:function(data){_cache.put(urlname,data);_processResponse(urlname,data)}});_lastReqMillisec=now}}};var _processResponse=function(urlname,resp){$inputEl.trigger("response",resp);if(urlname!=normalizeUrlname(_inputEl.value)){return}if(resp.toLowerCase()=="true"){var statusEl=_statusEl;_statusEl.innerHTML=Meetup.Copy.urlnameTaken.replace("{REQUESTED_NAME}",urlname);_statusEl.className="url-error"}else{_statusEl.innerHTML=Meetup.Copy.urlAvailable;_statusEl.className="url-available"}};return{init:decorate,normalizeUrlname:normalizeUrlname,checkAvailable:checkAvailable}})();
