/* --------- /javascripts/util.js --------- */ 

function $(element){return(typeof element=='string')?document.getElementById(element):element;}
var $A=function(iterable){if(!iterable)return[];var results=[];for(var i=0,length=iterable.length;i<length;i++)
results.push(iterable[i]);return results;};Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}};Function.prototype.bindAsEventListener=function(object){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}}
function hintText(element,label)
{var element=$(element);var label=$(label);var onFocus=function(){label.style.display="none";};var onBlur=function(){if(element.value==""){label.style.display="";}};element.addEventListener('focus',onFocus,false);element.addEventListener('blur',onBlur,false);if(element.value!=""){label.style.display="none";}}
function toggleVisibilty(element){var element=$(element);if(element.style.display=="none"){element.style.display="";}else{element.style.display="none";}}
var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
function showUpdateStatusForm(){$('current-user-status').style.display='none';$('update-status-form').style.display='inline';}
function hideUpdateStatusForm(){$('current-user-status').style.display='inline';$('update-status-form').style.display='none';}
function clearStatus(){$('status').value="";$('update-status-form').submit();}
function disableAppPromotion(disableUrl){ui.showPageByHref(disableUrl,{ajaxRequest:true});}
function getStyle(element,style){var value=element.style[style];if(!value){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;}
function cumulativeOffset(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];}
function onClickAlphabar(event){var alphabar=event.target;var groupNamePrefix=alphabar.getAttribute('alphabar_prefix');var pTopHeight=parseFloat(getStyle(alphabar,'paddingTop'));var pBottomHeight=parseFloat(getStyle(alphabar,'paddingBottom'));var charIndex="A".charCodeAt()+Math.floor((event.layerY-pTopHeight)/(alphabar.offsetHeight-pTopHeight-pBottomHeight)*26);var targetElement;for(var i="A".charCodeAt();i<=charIndex;i++){var element=$(groupNamePrefix+String.fromCharCode(i).toUpperCase());if(element&&element.style.display!="none"){targetElement=element;}}
if(targetElement){var offset=cumulativeOffset(targetElement);window.scrollTo(offset[0],offset[1]);}}
function refreshAlphabarHeight(alphabarElement){alphabarElement=$(alphabarElement);var MINOFFSET=70;var targetOffset=window.pageYOffset>MINOFFSET?window.pageYOffset:MINOFFSET;if(parseFloat(alphabarElement.style['top'])!=targetOffset)
alphabarElement.style['top']=targetOffset+'px';}
function findParent(node,tagName){while(node&&(node.nodeType!=1||node.tagName.toLowerCase()!=tagName)){node=node.parentNode;}
return node;}
function CreateActivityIndicator(elementOrID,spec)
{var indicatorElement=elementOrID;if(elementOrID.nodeType!=Node.ELEMENT_NODE){indicatorElement=document.getElementById(elementOrID);}
if(indicatorElement&&!indicatorElement.loaded){indicatorElement.loaded=true;indicatorElement.object=new ActivityIndicator(indicatorElement,spec);return indicatorElement.object;}}
function ActivityIndicator(element,spec){this.element=element;element.style.webkitAnimationName='activity-indicator';element.style.webkitAnimationDuration="1s";element.style.webkitAnimationIterationCount="infinite";element.style.webkitAnimationTimingFunction="linear";element.style.webkitAnimationPlayState="paused";this.startAnimation();}
ActivityIndicator.prototype.startAnimation=function(){this.element.style.webkitAnimationPlayState="running";}
ActivityIndicator.prototype.stopAnimation=function(){this.element.style.webkitAnimationPlayState="paused";}
addEventListener('load',function(){setTimeout(hideAddressBar,0);},false);function hideAddressBar(){window.scrollTo(0,1);}/* --------- /javascripts/ui.js --------- */ 

var ui={version:'1.0',slideMode:false,slideSpeed:50,loader:"loader",slideInterval:100,checkInterval:300,currentPage:null,currentWidth:0,currentHash:location.hash,hashPrefix:"#_",pageHistory:[],newPageCount:0,checkTimer:null,scriptFragment:'<script[^>]*>([\u0001-\uFFFF]*?)</script>',slidePageTimeout:10,evalScriptTimeout:10,callbackTimeout:100,updatePageTimeout:0,checkTimer:null,currentClassName:'show',backButtonId:'back-button',backButtonLabel:'Back',cacheLinkPostfix:'-link',progressClass:'progress',replaceProgressClass:'replace-progress',replaceClass:'replace',mainContainerId:'main',hideBackClass:'nav-root',cacheClass:'cache',noHandleLinkClass:'normal',showPage:function(page,backwards){page=$(page);if(page){document.body.className=page.id;var fromPage=ui.currentPage;ui.setCurrentPage(page);if(fromPage){setTimeout(ui.slidePages,ui.slidePageTimeout,fromPage,page,backwards);}else{ui.updatePage(page);}}},showPageById:function(pageId){var page=$(pageId);if(page){var index=ui.pageHistory.indexOf(pageId);var backwards=index!=-1;if(backwards){ui.pageHistory.splice(index,ui.pageHistory.length);}
ui.showPage(page,backwards);}},showPageByCache:function(page){if($(page)){ui.showPageById(page);return true;}else{return false;}},preloadPage:function(href,options){options=options||{};options['cache']=true;ui.showPageByHref(href,options);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||elementClassName.match(new RegExp("(^|\\s)"+className+"(\\s|$)"))));},addClassName:function(element,className){if(!(element=$(element)))return;if(!ui.hasClassName(className))
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ');return element;},slidePages:function(fromPage,toPage,backwards){clearInterval(ui.checkTimer);var percent=100;if(ui.slideMode){scrollTo(0,1);var timer=setInterval(slide,ui.slideInterval);slide();}else{slideComplete();}
function slideComplete(){ui.removeClassName(fromPage,ui.currentClassName);ui.checkTimer=setInterval(ui.checkOrientAndLocation,ui.checkInterval);setTimeout(ui.updatePage,ui.updatePageTimeout,toPage,fromPage);}
function slide(){percent-=ui.slideSpeed;if(percent<=0){percent=0;clearInterval(timer);slideComplete();}
fromPage.style.left=(backwards?(100-percent):(percent-100))+"%";toPage.style.left=(backwards?-percent:percent)+"%";}},generatePageId:function(page){if(!page.id)
page.id="__"+(++ui.newPageCount)+"__";return page.id;},updatePage:function(page,fromPage){if(fromPage&&page.id==fromPage.id)
return;scrollTo(0,1);ui.generatePageId(page);location.href=ui.currentHash=ui.hashPrefix+page.id;ui.pageHistory.push(page.id);var forms=page.getElementsByTagName("form");for(var i=0;i<forms.length;i++){ui.showForm(forms[i]);}
var backButton=$(ui.backButtonId);if(backButton){var prevPage=$(ui.pageHistory[ui.pageHistory.length-2]);if(prevPage&&!ui.hasClassName(page,ui.hideBackClass)){}else{backButton.style.display="none";}}},showPageByHref:function(href,options){var req=new XMLHttpRequest();options=options||{};req.onerror=function(){if(options.callback)options.callback(false);};req.onreadystatechange=function(){if(req.readyState==4){if(options.replace){ui.replace(options.replace,req.responseText);if(!ui.getCurrentPage()){var page=$(options.replace);ui.setCurrentPage(page);}}else if(!options.ajaxRequest){var element=document.createElement("div");element.innerHTML=ui.stripScripts(req.responseText);ui.insertPages(element.childNodes,options);}
setTimeout(function(){ui.evalScripts(req.responseText);},ui.evalScriptTimeout);if(options.callback){setTimeout(function(){options.callback(ui.stripScripts(req.responseText));},ui.callbackTimeout,true);}}};if(options.args){if(options.method&&options.method.toLowerCase!="post")
href=href+'?'+options.args.join("&");req.open(options.method||"GET",href,true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.send(options.args.join("&"));}
else{req.open(options.method||"GET",href,true);req.send(null);}},insertPages:function(elements,options){var targetPage;options=options||{};for(var i=0;i<elements.length;i++){var element=elements[i];if(element.nodeType==1){ui.generatePageId(element);var clone=$(element.id);var main=$(ui.mainContainerId);if(clone)
clone.parentNode.replaceChild(element,clone);else
main.appendChild(element);if(ui.hasClassName(element,ui.currentClassName)||!targetPage)
targetPage=element;}}
if(!options.cache&&targetPage)
ui.showPage(targetPage);},getCurrentPage:function(){var main=$(ui.mainContainerId);for(var child=main.firstChild;child;child=child.nextSibling){if(child.nodeType==1&&ui.hasClassName(child,ui.currentClassName))
return child;}},setCurrentPage:function(page){page=$(page);var currentPage=ui.getCurrentPage();if(currentPage&&currentPage!=page){ui.removeClassName(currentPage,ui.currentClassName);}
ui.addClassName(page,ui.currentClassName);ui.currentPage=page;},replace:function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();if(element.outerHTML){element.outerHTML=ui.stripScripts(html);}else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(ui.stripScripts(html)),element);}
return element;},showForm:function(form){var origOnSubmit;if(form.onsubmit)
origOnSubmit=form.onsubmit;form.onsubmit=function(event){event.preventDefault();if(origOnSubmit&&origOnSubmit(event))
ui.submitForm(form);else if(!origOnSubmit)
ui.submitForm(form);}},submitForm:function(form){var oncomplete=form.hasAttribute('oncomplete')?form.getAttribute('oncomplete'):'';ui.showPageByHref(form.action,{args:ui.encodeForm(form),method:form.method||"POST",callback:oncomplete});},encodeForm:function(form){function encode(inputs){for(var i=0;i<inputs.length;++i){if(inputs[i].name){args.push(encodeURIComponent(inputs[i].name)+"="+encodeURIComponent(inputs[i].value));}}}
var args=[];encode(form.getElementsByTagName("input"));encode(form.getElementsByTagName("select"));encode(form.getElementsByTagName("textarea"));return args;},handleClick:function(element){var progressElement=ui.progressElement(element)
function onComplete(){ui.hideLoader(progressElement);}
if(element==$(ui.backButtonId)){history.back();}else if(ui.hasClassName(element,ui.replaceClass)||ui.hasClassName(element,ui.replaceProgressClass)){ui.showLoader(progressElement);var replaceElement=element;if(ui.hasClassName(element,ui.replaceProgressClass)){replaceElement=progressElement;}
ui.showPageByHref(element.href,{callback:onComplete,replace:replaceElement});}else if(!element.target){ui.showLoader(progressElement);if(ui.hasClassName(element,ui.cacheClass)&&ui.handleCacheLink(element)){onComplete();}else{ui.showPageByHref(element.href,{callback:onComplete});}}},handleCacheLink:function(element){var regex=new RegExp(ui.cacheLinkPostfix+"$");pageId=element.id?element.id.replace(regex,''):null;return ui.showPageByCache(pageId);},progressElement:function(element){return findParent(element,"li")||findParent(element,"div")||element;},hideLoader:function(element){ui.removeClassName(element,ui.progressClass);var loader=$(ui.loader);if(loader){loader.style.display="none";}},showLoader:function(element){ui.addClassName(element,ui.progressClass);var loader=$(ui.loader);if(loader){loader.style.display="inline";}},stripScripts:function(html){return html.replace(new RegExp(ui.scriptFragment,'img'),'');},evalScripts:function(html){var matchAll=new RegExp(ui.scriptFragment,'img');var matchOne=new RegExp(ui.scriptFragment,'im');var allScripts=html.match(matchAll);if(allScripts){for(var i=0;i<allScripts.length;i++){var script=allScripts[i].match(matchOne);if(script)
eval(script[1]);}}},checkOrientAndLocation:function(){if(window.innerWidth!=ui.currentWidth){ui.currentWidth=window.innerWidth;var orient=ui.currentWidth==320?"profile":"landscape";document.body.setAttribute("orient",orient);setTimeout(scrollTo,100,0,1);}
if(location.hash!=ui.currentHash){var pageId=location.hash.substr(ui.hashPrefix.length);ui.showPageById(pageId);}},handleLiClick:function(event,nameAnchor){ui.handleClick(nameAnchor);event.preventDefault();event.cancelBubble=true;},init:function(){addEventListener("load",function(event){var page=ui.getCurrentPage();if(page)
ui.showPage(page);ui.checkTimer=setInterval(ui.checkOrientAndLocation,ui.checkInterval);},false);addEventListener("click",function(event){var link=findParent(event.target,"a");if(link&&!ui.hasClassName(link,ui.noHandleLinkClass)){ui.handleClick(link);event.preventDefault();}},false);}};/* --------- /javascripts/connection_widget.js --------- */ 

ConnectionWidget=Class.create();ConnectionWidget.STEP=50;ConnectionWidget.INITSIZE=50;ConnectionWidget.prototype={initialize:function(users,connectionsDiv,size,url,alphaGroup){this._users=users;this._connectionsDiv=$(connectionsDiv);this._userLists={};this._alphaLists={};this._size=size;this._url=url;this._alphaGroup=alphaGroup;},requestRemainingUsers:function(){for(var i=ConnectionWidget.INITSIZE;i<this._size;i=i+ConnectionWidget.STEP){ui.showPageByHref(this._url,{ajaxRequest:true,args:["start="+i,"limit="+ConnectionWidget.STEP],method:"GET"});}},update:function(users){for(var i=0;i<users.length;i++){this._users.push(users[i]);this._renderUser(users[i]);}},render:function(){this._renderAlphaSeparators();this._renderUserEntries();},_renderUser:function(user){var lastNameInitial=user.last_name.charAt(0).toUpperCase();var userEntry=document.createElement("li");userEntry.className="vcard";var name=document.createElement("h4");var nameAnchor=document.createElement("a");nameAnchor.className="fn cache";nameAnchor.innerHTML=user.first_name+" "+user.last_name;nameAnchor.href="/members/"+user.id+"/profile";nameAnchor.id="profile_"+user.id+"-link";userEntry.onclick=function(event){ui.handleLiClick(event,nameAnchor);}
name.appendChild(nameAnchor);var title=document.createElement("p");title.className="title";title.innerHTML=user.headline;userEntry.appendChild(name);userEntry.appendChild(title);if(user.location&&user.location.name){var locality=document.createElement("p");locality.className="locality";locality.innerHTML=user.location.name;userEntry.appendChild(locality);}
var group=this._userLists[lastNameInitial]?lastNameInitial:"#";this._userLists[group].appendChild(userEntry);if(user.email_address){var userEmailEntry=document.createElement("li");userEmailEntry.className="email";userEmailEntry.innerHTML="<a class='email normal' href='mailto:"+user.email_address+"'>"+user.email_address+"</a>"
this._userLists[group].appendChild(userEmailEntry);}
this._alphaLists[group].style.display="inline";},_renderUserEntries:function(){for(var i=0;i<this._users.length;i++){this._renderUser(this._users[i]);}},_renderAlphaSeparators:function(){for(i="A".charCodeAt();i<="Z".charCodeAt();i++){this._createGroup(i);}
this._createGroup("#".charCodeAt());},_createGroup:function(charCode){var list=document.createElement("li");list.id=this._alphaGroup+String.fromCharCode(charCode);list.style.display="none";var header=document.createElement("h3");this._userLists[String.fromCharCode(charCode)]=document.createElement("ul");this._alphaLists[String.fromCharCode(charCode)]=list;header.innerHTML=String.fromCharCode(charCode);list.appendChild(header);list.appendChild(this._userLists[String.fromCharCode(charCode)]);this._connectionsDiv.appendChild(list);}};/* --------- /javascripts/auto_suggest.js --------- */ 

AutoSuggester=Class.create();AutoSuggester.prototype={initialize:function(element,update,url,options){this._element=$(element);this._update=$(update);this._hasFocus=false;this._changed=false;this._active=false;this._url=url;this._setOptions(options);this._initEventListeners();this._lastInput="";this._observer=null;this._lastUpdateText="";},_setOptions:function(options){this._options=options||{};this._options.frequency=this._options.frequency||1.0;this._options.minChars=this._options.minChars||2;this._options.scrollToTimeout=this._options.scrollToTimeout||500;},_initEventListeners:function(){this._element.addEventListener("blur",this._onBlur.bind(this),false);this._element.addEventListener("focus",this._onFocus.bind(this),false);this._element.addEventListener("keypress",this._onKeyPress.bind(this),false);this._update.addEventListener("mousedown",this._onUpdateMouseDown.bind(this),false);},_onUpdateMouseDown:function(){this._active=true;},_onBlur:function(){this._hasFocus=false;},_onFocus:function(){this._hasFocus=true;this._active=false;setTimeout(this._scrollToElement.bind(this),this._options.scrollToTimeout);if(this._element.value.length>=this._options.minChars){this._update.style.display="inline";}else{this._update.style.display="none";}},_onKeyPress:function(){this._hasFocus=true;this._active=false;if(this._observer)clearTimeout(this._observer);this._observer=setTimeout(this._onObserverEvent.bind(this),this._options.frequency*1000);},_onObserverEvent:function(){var newValue=this._element.value?this._element.value.replace(/^\s+/,'').replace(/\s+$/,''):null;if(newValue&&this._lastInput!=newValue){this._lastInput=newValue;this._changed=true;}else{this._changed=false;}
if(this._element.value.length>=this._options.minChars){this._update.style.display="inline";if(this._changed){this._getUpdateChoices(newValue);}}else{this._update.style.display="none";}},_scrollToElement:function(){var offset=cumulativeOffset(this._element);window.scrollTo(0,offset[1]);},_getUpdateChoices:function(updateText){this._lastUpdateText=updateText;var _this=this;var params=this._options.form?ui.encodeForm($(this._options.form)):["value = "+encodeURIComponent(updateText)];ui.showPageByHref(this._url,{args:params,method:"GET",ajaxRequest:true,callback:function(responseText){if(_this._lastUpdateText==updateText){_this._updateElement.bind(_this)(responseText);}}});},_updateElement:function(responseText,updateText){this._update.innerHTML=responseText;}}
